Hallo!
Von der Beta halte ich nicht viel. Die hat mit Eclipse ziemlich rumgezickt.
Außerdem scheint sie erheblich langsamer zu sein und ungefähr doppelt
soviel Speicher für das gleiche Programm zu benötigen, als es die
JRE 1.4.2 tut.
Also Netbeans läuft damit und davon, dass sie langsamer ist, habe ich nichts gemerkt.
Intern werden enums auf Klassen gemapped. Auch die Generics werden
intern in "alten" Java-Code umgewandelnt. Na gut, immerhin kommt eine gewisse Typsicherheit hinzu.
Das enums auch Klassen sind, ist eigentlich ja nur konzequent. Auch dass bei generische Klassen nur automatisch Casts eigefügt werden halte ich aber für keinen Nachteil. Geschickter kann man das eigentlich nicht implementieren.
Einige Bytecodeerweiterungen gab es ja auch, damit Reflections zusammen mit Generischen Klassen und Annotations funktionieren.
Grundsätzlich ist das ja nicht problematisch. Leider wird dadurch aber auch keine Performance-Verbesserung erreicht.
Die erreicht man auch eher durch Verbesserung des Bytecodeinterpreters/compilers. Evt. natürlich auch durch einen besseren Bytecode aber ganz sicher nicht durch neue Sprachfeatures.
Außerdem soll 1.5.0 auch mehrere Anwendungen mit der selben VM laufen lassen können und die Standardklassen zwischen allen Anwendungen geteilt werden.
Klassisches Beispiel:
meinArray.length <-> meineArrayList.size() <-> meinString.length()
Naja, das Methoden bei unterschiedlichen Schnittstellen unterschiedlich heißen, auch wenn sie etwas ähnliches tun, ist kein ausreichender Grund, eine inkompatible Version zu schaffen.
Und dann bitte gleich mit anständiger Kontrolle über den Garbage
Collector. (Ich will Speicherbereiche von Hand freigeben können. Man
kann einen Compiler durchaus so bauen, dass man trotzdem keine speicherzugriffsfehler ins Programm einbauen kann.)
Den Kompiler kann man nicht so bauen, aber die Laufzeitumgebung.
Um mit Knappen Resourcen klar zu kommen, brauch man das aber eigentlich nicht mehr. Java läuft ja auch auf Handies und ähnlichen Geräten gut.
Interessant könnte es höchstens noch bei Echtzeitsystemen sein, da da die Gefahr besteht, dass der GC zur falschen Zeit aufräumen will und das Hauptprogramm zu lange unterbrochen wird.
Mit speziellen VMs, deren GC mit sehr niedriger priorität läuft, soll aber auch dieses Problem gelöst werden können.
Grüße
Daniel