- Packaging of your MATLAB programs as C/C++ shared libraries, Microsoft® .NET assemblies, and Java® classes
- Royalty-free distribution of software components to users who do not need MATLAB
- Development and test framework for MATLAB Production Server for integration with web and enterprise systems
- Encryption of MATLAB code to protect your intellectual property
Choosing a Language – C/C++, .NET, Java, or Python
For developers who want to integrate MATLAB® based programs into their own custom applications, MATLAB Compiler SDK offers a comprehensive toolkit for working with applications written in C/C++, .NET, Java®, and Python®. When creating an application with MATLAB Compiler SDK, you can follow the same basic process regardless of the programming language:
- Create your MATLAB application code.
- Package the MATLAB code into a language-specific component using either an interactive app or a command line option.
- Integrate the component with the host application using your preferred development environment, such as Visual Studio®, Eclipse®, Xcode, or others.
- Complete your application and install it on the target computer—a local installation for desktop applications, or a centralized installation for server-based applications.
MATLAB Compiler SDK offers language-specific features to help software developers integrate MATLAB based components with the language best suited to their needs.
For applications written in C/C++, MATLAB Compiler SDK provides features to:
- Create thread-safe libraries
- Create a dynamic library file to seamlessly integrate with Visual Studio (for Windows® applications)
- Produce function signatures in a header file and encrypted code in the library file to include in a C or C++ application
You can also convert your MATLAB programs to readable and portable C/C++ code and libraries using MATLAB Coder™.
A comparison of the MATLAB Compiler SDK and MATLAB Coder approaches to integrating C/C++ code is available in MATLAB Answers.
.NET and COM Applications
For applications written in .NET or COM, MATLAB Compiler SDK provides features to:
- Generate .NET or COM wrappers around MATLAB programs so they can be accessed just like native .NET and COM components
- Add and access MATLAB code files and MEX-files as public methods of your component
- Call .NET components from Common Language Specification (CLS)-compliant languages, including C#, F#, VB.NET, or ASP.NET
- Call COM objects from COM-compliant technology, including Visual Basic® or ASP
- Use a type-safe interface to integrate with existing interfaces in your .NET application
- Pass .NET objects directly to and from a compiled MATLAB function
- Use data conversion classes to manually convert data and manage output data
- Support Windows Communication Foundation (WCF) with web or enterprise service-oriented architecture (SOA)
- Support the .NET remoting API so you can run your class as a persistent service or execute your component across multiple processes
For Java applications, MATLAB Compiler SDK offers features to:
- Generate a Java wrapper around MATLAB programs so they behave just like any other Java class (It also creates a Javadoc to identify the properties and methods of the class.)
- Add MATLAB files and MEX-files to serve as externally visible class methods of your component
- Ensure that Java classes are portable and run on all platforms supported by MATLAB
(Note that some toolbox functions are implemented as platform-dependent MEX-files or native libraries, making these functions and any Java components that use them platform-specific.)
- Pass native Java data types to MATLAB functions and automatically convert to MATLAB data types or explicitly select the data type to use
- Access MATLAB web applications deployed as Java components with SOAs, SOAP services, WSDL, RMI interfaces, HTTP services, Java servlets, and JSPs
- Use the remote method invocation (RMI) interface to run your class as a persistent service or spread processing across multiple processes or computers
For Python applications, MATLAB Compiler SDK offers features to:
- Generate Python packages for MATLAB programs, including MEX-files, to be accessed by a Python application or interactive session.
- Pass native Python data types to and from MATLAB functions with automatic conversion.
- Pass multidimensional arrays to and from MATLAB functions in the deployable archives, using the included Python classes.
- Integrate your MATLAB code with a Python application using the MATLAB Engine API. You can then debug and deploy to either MATLAB Production Server™ or custom Python applications built with MATLAB Compiler SDK.
Choosing Your Platform – Desktop, Web, or Enterprise
MATLAB Compiler SDK lets you deploy MATLAB based applications to a wide range of platforms—from standalone desktop applications for individual users all the way to large-scale web and enterprise systems. You can select your preferred platform based on implementation effort, maintainability, programming languages, and your organization’s preferences.
All deployed applications and components use the MATLAB Runtime for royalty-free distribution to users who do not have MATLAB. For desktop platforms, the application and runtime are installed directly on the target computer, while web and enterprise applications, and the associated runtime, can be installed on a centralized server for easier management and distribution.
Choosing Your Infrastructure – Custom or MATLAB Production Server
For web and enterprise systems, MATLAB Compiler SDK lets you choose your preferred method for implementing an application server, either developing a custom infrastructure or taking advantage of MATLAB Production Server for secure and scalable deployment.
In both cases, the workflow is similar, as illustrated below.
MATLAB Compiler SDK provides tools for developing your own custom infrastructure or taking advantage of MATLAB Production Server for secure, scalable web and enterprise applications.
Developing a Custom Infrastructure
MATLAB Compiler SDK creates components and libraries that can be integrated with a wide range of languages used by your organization.
Implementing MATLAB Production Server
For developers who want the most efficient path to a secure, scalable server-based application, MATLAB Compiler SDK provides a full toolkit for developing applications that will run on MATLAB Production Server. Tools provided by MATLAB Compiler SDK include:
- An interactive app to debug algorithms before packaging
- Lightweight client libraries for C/C++, .NET, Java, and Python
- An app to package MATLAB algorithms as add-ins for Microsoft® Excel®
Once your programs have been debugged, you can package and deploy them directly to MATLAB Production Server without recoding or creating a custom infrastructure to manage them. MATLAB Production Server has built-in scalability, achieved by having multiple instances of the MATLAB Runtime (or “workers”) running and ready to respond to requests from the server. For added reliability and scalability, multiple instances of MATLAB Production Server can be combined. The workers are shared among instances to maximize performance and minimize response time.
Packaging and Deploying Components
MATLAB Compiler SDK enables you to package MATLAB components for integration with applications developed in other programming languages. You designate a MATLAB program, and MATLAB Compiler SDK determines which MATLAB functions and files are necessary to support the program. It then encrypts and packages the code.
To provide the best experience for users of your application, MATLAB Compiler SDK lets you:
- Specify whether to provide the MATLAB Runtime with the installation package or download it automatically during installation
- Add any supplemental files that are not found through dependency checking, such as data files or images
- Capture component metadata such as software version number, author information, and default installation directory