Main Content

Ensure Multiplatform Portability for Java

Compiled MATLAB® code containing only MATLAB files are platform independent, as are Java® .jar files. You can use these files on any platform, provided that the platform has either MATLAB or MATLAB Runtime installed. However, if your compiled MATLAB code contains MEX files, which are platform dependent, do the following:

  1. Compile your MEX file once on each platform where you want to run your application.

    For example, if you are running the application on a Windows® machine, and you want it to run on the Linux® 64-bit platform, compile my_mex.c twice, once on a PC to get my_mex.mexw64 and then again on a Linux 64-bit machine to get my_mex.mexa64.

  2. Compile the package on one platform using the -a flag of mcc or the AdditionalFiles option in a compiler.build function to include the MEX file compiled on the other platform(s).

    In the case above, you run mcc on Windows and include the -a flag to include my_mex.mexa64. It is not necessary to explicitly include my_mex.mexw64. In this step , the mcc command would be:

    mcc -W 'java:mycomp,myclass' my_matlab_file.m -a my_mex.mexa64 

    For example, if you are running mcc on a Windows machine and you want to ensure portability of the generated package that invokes the yprimes.c file (from matlabroot\extern\examples\mex) on the Linux 64-bit platform, execute the following mcc command:

    mcc -W 'java:mycomp,myclass' callyprime.m -a yprime.mexa64 
    
    callyprime.m can be a simple MATLAB function, as follows:
    function callyprime 
    disp(yprime(1,1:4)); 
    
    Ensure that the yprime.mexa64 file is in the same folder as your Windows MEX file.

Tip

If you are unsure if your JAR file contains MEX files, do the following:

  1. Run mcc with the -v option to list the names of the MEX files, or enable the Verbose option in a compiler.build function.

  2. Obtain appropriate versions of these files from the version of MATLAB installed on your target operating system.

  3. Include these versions in the archive by running mcc with the -a option, or use the AdditionalFiles options in a compiler.build function.

Caution

Toolbox functionality that runs seamlessly across platforms when executed from within the MATLAB desktop environment will continue to run seamlessly across platforms when deployed. However, if a particular toolbox functionality is designed to run on a specific platform, then that functionality will run only on that specific platform when deployed. For example, functionality from the Data Acquisition Toolbox™ runs only on Windows.

JAR files produced by MATLAB Compiler SDK™ are tested and qualified to run on platforms supported by MATLAB. For more information, see the Platform Roadmap for MATLAB.