Möglichkeiten zur Erweiterung der Java Implementation in MuPAD
==============================================================

1) Automatische Auswahl aller verfügbaren JVM's durch Registry
   (In Dipl. erläutert, warum dieser Ansatz nicht verfolgt wurde -> Linux !)

Question  Am using JNI_CreateJavaVM to embed a VM in my application. 
But i want to allow users to set switch between "hotspot", "classic" and "server". 
How does java.exe and javaw.exe implement this?  
Topics  Java:API:JNI  
Author  Davanum Srinivas PREMIUM  
Created  Jul 28, 2001  
 

Answer:
"HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" has a CurrentVersion key. 
If the value of this key is "1.3.1", then "\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.3.1\JavaHome" has 
the directory where this version of JRE is installed (say "C:\Program Files\JavaSoft\JRE\1.3.1"). 
Relative to this path a file called "jvm.cfg" in directory "lib" is read. 
This file contains a list of available JVM versions. On my machine this file contains three lines: 
-hotspot
-server
-classic

2) Automatischer Zugriff auf Konstanten innerhalb von Java-Klassen 
   Bsp.: java.awt.Color.RED => java::java::awt::Color::RED

3) Anstatt UseObject=xyz als Parameter zu benutzen könnte direkt ein Objekt benutzt werden 
   (dafür müssten die Java Objekte auf "echte" MuPAD Objekte gemappt werden und die literale 
    Speicherung geändert werden.)
   Bsp.: a := java.awt.Frame("Test");
         Bisher: java.awt.Frame.setWidth(100, UseObject=a)
	 Besser: a::setWidth(100);

4) Zur Zeit wächst der Speicher mit jedem Aufrauf beinahe linear an.
   Dieses Verhalten zeigt sich schon, sobald ein Aufruf in die JVM gemacht wird und nicht erst nach
   Abarbeitung der kompletten "invoke" Funktion in der C/C++ Klasse.
   (Hier müßte auf allen Ebenen eingehendst untersucht werden, ob es sich um Speicherlöcher oder
    aber um zu "fehlertollerantes" Verhalten der JVM handlet, welche Objekte nicht entfernen will.
    Grundsätzlich gilt ja: Ich kann der JVM "vorschlagen" ein Objekt zu entfernen. Ob das geschieht
    entscheidet die JVM dann selber.)

5) Fortsetzung des "mucs" Konzeptes.
6) Möglichkeiten aus Java Programmen heraus MuPAD Objekte zu manipulieren und zu benutzen (also der umgekehrte Weg).
7) Konkrete Umsetzung auf den MAC
8) Geschachtelte Aufrufe ermöglichen
   Bsp.: Frame.getContentPane.get... 
   (zuerst wird ContentPane zurückgeliefert auf der dann direkt eine Methode ausgeführt wird.)

   