Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting help on MATLAB's com.mathworks internals

Tags:

java

matlab

It is possible to access bits of MATLAB's internal java code to programmatically change MATLAB itself. For example, you can programmatically open a document in the editor using

editorServices = com.mathworks.mlservices.MLEditorServices;
editorServices.newDocument()  %older versions of MATLAB seem to use new()

You can see the method signatures (but not what they do) using methodsview.

methodsview(com.mathworks.mlservices.MLEditorServices)

I have a few related questions about using these Java methods.

Firstly, is there any documentation on these things (either from the Mathworks or otherwise)?

Secondly, how do you find out what methods are available? The ones I've come across appear to be contained in JAR files in matlabroot\java\jar, but I'm not sure what the best way to inspect a JAR file is.

Thirdly, are there functions for inspecting the classes, other than methodsview?

Finally, are there any really useful methods that anyone has found?

like image 282
Richie Cotton Avatar asked Apr 06 '10 14:04

Richie Cotton


3 Answers

There is no official documentation nor support for these classes. Moreover, these classes and internal methods represent internal implementation that may change without notice in any future Matlab release. This said, you can use my uiinspect and checkClass utilities to investigate the internal methods, properties and static fields. These utilities use Java reflection to do their job, something which is also done by the built-in methodsview function (I believe my utilities are far more powerful, though). In this respect, I believe we are not crossing the line of reverse-engineering which may violate Matlab's license.

If you are looking for documentation, then my UndocumentedMatlab.com website has plenty of relevant resources, and more is added on a regular basis so keep tuned.

I am also working on a book that will present a very detailed overview of all these internal classes, among other undocumented stuff - I hope to have publication news later this year.

like image 103
Yair Altman Avatar answered Nov 13 '22 08:11

Yair Altman


I am an eclipse fan. If you use that as your IDE, the jar can be imported into one of your projects and you can inspect the methods in there.

like image 24
whatnick Avatar answered Nov 13 '22 07:11

whatnick


To find out more about java objects, I use uiinspect.

The only place I know that is documenting the Matlab hidden Java stuff is Undocumented Matlab by Yair Altman. His site lists plenty of very useful tricks. Being able to use Java to format text in list boxes has come in very handy for me, for example.

EDIT

The man has spoken. Listen to him, since I don't think there's anyone outside MathWorks who knows more about Matlab's internal java code.

like image 1
Jonas Avatar answered Nov 13 '22 08:11

Jonas