mxj
Description
Execute Java classes as Max objects. The Java classes must be specially written for Max, but work identically within the JVM (Java Virtual Machine) on both Windows and Macintosh.
Examples
Discussion
The mxj object and its MSP equivalent mxj~ instantiate specially-written Java classes and act as a Max-level peer object, passing data that originates in Max to the Java object and vice versa. The form that the mxj / mxj~ object takes (the number of inlets, outlets and the messages it understands), is determined by the Java class that it instantiates. Using mxj requires that the host computer have a recent version of the Java Virtual Machine (JVM) installed. Macintosh users can ensure that they have the most up-to-date version of the JVM by running Software Update from the System Preferences.
By default, neither Mac M1 machines nor Windows XP have a version of the JVM installed. As of the writing of this document the most recent version of the JVM can be downloaded from this
link.
Using the mxj object requires that the host computer have a current version of the Java Virtual Machine (JVM) installed.
Max includes a directory called "java-doc", which can be found in the Max application folder.
The following important subdirectories are in the java-doc directory:
contains the source code and class files of the example Java classes that are included with Max.
contains the help files that are associated with the example Java classes. Exploring these patches is a good, quick way to see how mxj has extended and will extend the Max universe.
contains a step-by-step tutorial that leads you through the process of creating your first Java class to the application of advanced mxj programming techniques. The tutorial is in HTML format.
contains html files that specify the mxj object's Application Programming Interface (API). These pages will serve as an invaluable resource when you are coding your own Java classes.
contains example projects for some of the Integrated Development Environments (IDEs) we think you may want to use to create Java classes.
contains the code libraries that the mxj object uses to bridge the worlds of Max and Java.
In addition, a file named max.java.config.txt. also is located in the java directory This file allows you to specify which directories should be in Java's classpath -- a concept roughly analogous to the Max search path.
Arguments
Java-class [symbol]
The mxj object must be given the name of a valid Java class as the first argument. The Java class file must exist somewhere within the classpath, and it must be a class that was designed for use with the mxj object (the class must subclass com.cycling74.max.MaxObject.).
The number of inlets that an instance of mxj creates and the messages that it will respond to are determined by declarations made in the peer Java class.
attributes [list]
The mxj object supports the definition of attributes within the Java code for a peer class. The attributes that are settable at the time of instantiation using the @ paradigm. For instance, if a particular class Foo defined an integer attribute called intBar, one could create an instance of the class with the attribute set to the value 74 by typing in an object box.
Attributes
Common Box Attributes
annotation [symbol]
Sets the text that will be displayed in the Clue window when the user moves the mouse over the object.
background [int] (default: 0)
Adds or removes the object from the patcher's background layer.
adds the object to the background layer, removes it. Objects in the background layer are shown behind all objects in the default foreground layer.color [4 floats]
Sets the color for the object box outline.
fontface [int]
Sets the type style used by the object. The options are:
plain
bold
italic
bold italic
Possible values:
0 = 'regular'
1 = 'bold'
2 = 'italic'
3 = 'bold italic'
fontname [symbol]
Sets the object's font.
fontsize [float]
Sets the object's font size (in points).
Possible values:
'8'
'9'
'10'
'11'
'12'
'13'
'14'
'16'
'18'
'20'
'24'
'30'
'36'
'48'
'64'
'72'
hidden [int] (default: 0)
Toggles whether an object is hidden when the patcher is locked.
hint [symbol]
Sets the text that will be displayed in as a pop-up hint when the user moves the mouse over the object in a locked patcher.
ignoreclick [int] (default: 0)
Toggles whether an object ignores mouse clicks in a locked patcher.
jspainterfile [symbol]
JS Painter File
patching_rect [4 floats] (default: 0. 0. 100. 0.)
Sets the position and size of the object in the patcher window.
position [2 floats]
Sets the object's x and y position in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its size unchanged.
presentation [int] (default: 0)
Sets whether an object belongs to the patcher's presentation.
presentation_rect [4 floats] (default: 0. 0. 0. 0.)
Sets the x and y position and width and height of the object in the patcher's presentation, leaving its patching position unchanged.
rect [4 floats]
Sets the x and y position and width and height of the object in both patching and presentation modes (if the object belongs to its patcher's presentation).
size [2 floats]
Sets the object's width and height in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its position unchanged.
textcolor [4 floats]
Sets the color for the object's text in RGBA format.
textjustification [int]
Sets the justification for the object's text.
Possible values:
0 = 'left'
1 = 'center'
2 = 'right'
varname [symbol]
Sets the patcher's scripting name, which can be used to address the object by name in pattr, scripting messages to thispatcher, and the js object.
Messages
bang
int
Arguments
float
Arguments
list
Arguments
anything
Arguments
(mouse)
get
Arguments
viewsource
zap
Output
various
The number of outlets that an instance of mxj creates is determined by declarations made in the constructor of the peer Java class. The furthest outlet to the right may or may not be an info outlet whose sole responsibility is to report information about the attributes when queried.
See Also
Name | Description |
---|---|
Using Max with other applications | Using Max with other applications |
js | Execute Javascript |
Tutorial 51: Jitter Java | Tutorial 51: Jitter Java |