Eine Möglichkeit JLink zu laden ist:
Eine andere Variante wäre, wenn man JLink sowieso oft benutzt, einfach das init.m folgendermassen zu ergänzen (die folgende Zelle ist keine Input sondern eine Program Zelle und wird somit nicht evaluiert).
If[FileNames[ToFileName[$PreferencesDirectory,"Kernel"]]==={},
CreateDirectory[ToFileName[$PreferencesDirectory,"Kernel"]]];
Export[ #, Import[#,"Text"]<>"\nNeeds[\"JLink`\"];\nOff[General::spell1];\n","Text"], "Text"]&[
ToFileName[{$PreferencesDirectory,"Kernel"},"init.m"] ]
J/Link 2.0 hat eine Reihe von Verbesserungen, unter anderem:
• JLink.jar ist im JLink Verzeichnis und nicht mehr in JLink/SystemAdditions.
• Grosse Geschwindigkeitsverbesserungen beim Aufrufen von Java Methoden.
• Eine neue Klasse com.wolfram.jlink.ui.MathSessionPane implementiert ein komplettes In/Out Fenster, aber mit mehr Eigenschaften.
• Eine neue Klasse MathGraphicsJPanel für die Wiedergabe von Mathematica Graphik und mathematischen Ausdrücken.
• Die JavaBlock Funktion ist verbessert worden hinsichtlich der Kontrolle über welche Objekte freigegeben werden am Ende des JavaBlocks, sodass weniger explizite Aufrufe von ReleaseObject nötig sind.
• Die neue KeepObjects Option von JavaBlock erlaubt die Spezifizierung einer Liste von Objekten die bis zum Schluss nicht freigegeben werden.
• Die neue ImplementInterface Funktion erlaubt die vollständige Implementierung eines jeden Java Interfaces mit der Mathematica Sprache.
• Die neue SetInternetProxy Funktion erlaubt die Spezifizierung von Proxy Port und Host Informationen falls ein Proxyserver benutzt wird.
• Die neue MakeJavaExpr[] Funktion erlaubt von Mathematica aus die Konstruktion eines Java Expr Objekts.
• Der neue JLink`Information` Kontext definiert Variablen mit Versionsinformationen.
• Für Java Programmierer: die MLGetType, MLGetNext Methoden angewendet auf ein KernelLink Objekt geben jetzt ein KernelLink.MLTKOBJECT was bedeutet dass der Ausdruck am Link eine Java Objekt Referenz ist und mit getObject() gelesen werden kann.
• Die MathLink connect() Method hat einen optionalen timeout Parameter der die Anzahl Millisekunden bestimmt die auf die Verbindung gewartet wird bevor eine Exception erfolgt.
• Informationen können an die Java Konsole gesendet werden.
Im folgenden Beispiel wird Mathematica von einem einfachen Java Programm BeispielProgramm.java aus aufgerufen. Es werden alle notwendigen Schritte unter Linux gezeigt. Auf anderen Betriebssystemen ist die Prozedur ähnlich.
[rolf@colossos Part2]$ uname -a
Linux colossos 2.4.7-10smp #1 SMP Thu Sep 6 17:09:31 EDT 2001 i686 unknown
[rolf@colossos Part2]$ java -version
java version "1.4.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92)
Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)
[rolf@colossos Part2]$ cat BeispielProgramm.java
import com.wolfram.jlink.*;
public class BeispielProgramm {
public static void main(String[] argv) {
KernelLink ml = null;
try {
ml = MathLinkFactory.createKernelLink(argv);
} catch (MathLinkException e) {
System.out.println("Fatal error opening link: " + e.getMessage());
return;
}
try {
ml.discardAnswer();
String strResult = ml.evaluateToOutputForm("N[Pi, 137]", 0);
System.out.println("Pi auf 137 Stellen = " + strResult);
} catch (MathLinkException e) {
System.out.println("MathLinkException occurred: " + e.getMessage());
} finally {
ml.close();
}
}
}
[rolf@colossos Part2]$ cat ~/bin/jljavac
#!/bin/sh
#
# jljavac SampleProgram.java
javac -classpath .://usr/local/Wolfram/Mathematica/4.2/AddOns/JLink/JLink.jar $1
[rolf@colossos Part2]$ cat ~/bin/jljava
#!/bin/sh
#
# jljava SampleProgram
java -classpath .://usr/local/Wolfram/Mathematica/4.2/AddOns/JLink/JLink.jar $1 -linkmode launch -linkname 'math -mathlink'
[rolf@colossos Part2]$ jljavac BeispielProgramm.java
[rolf@colossos Part2]$ jljava BeispielProgramm
Pi auf 137 Stellen = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822
Mehr Beispiele und zusätzliche Informationen über sind erhältlich auf http://www.wolfram.com und http://library.wolfram.com/conferences/devconf2001/#web .
Unter Linux kann man das Standardbeispiel GraphicsApp wie folgt aufrufen:
[rolf@colossos GraphicsApp]$ java -classpath GraphicsApp.jar:../../../JLink.jar GraphicsApp 'math -mathlink'
Es erscheint eine reines Java Fenster dass das Mathematica FrontEnd und den Kernel von Java aus ansteuert und die Graphik erzeugt.
Ein anderes interessantes mitgeliefertes J/Link 2.0 Beispiel ist das SimpleFrontEnd, ein alternatives völlig in Java geschriebenes FrontEnd für Mathematica.
Unter Linux:
[rolf@colossos SimpleFrontEnd]$ pwd
/usr/local/Wolfram/Mathematica/4.2/AddOns/JLink/Examples/Part2/SimpleFrontEnd
[rolf@colossos SimpleFrontEnd]$ java -classpath SimpleFrontEnd.jar:../../../JLink.jar SimpleFrontEnd
Dies startet das SimpleFrontEnd in dem dann wie gewohnt (allerdings nur linear) Mathematica Befehle eingegeben werden können.
Converted by Mathematica (June 25, 2002)