Seit kurzem ist für das Microsoft .NET Framework eine Java Erweiterung erhältlich. Auf der Visual J++ Seite der MSDN kann man das JUMP Kit Beta 1 herunterladen: http://msdn.microsoft.com/visualj/jsharp/beta.asp
Damit ist es für Java Entwickler nun möglich Anwendungen zu schreiben, die innerhalb des .NET Frameworks laufen, und das beste ist man muss seine Scheuklappen nicht abnehmen und eine neue Sprache wie C# lernen. Der wesentlich Punkt dabei ist: Anwendungen innerhalb des .NET Frameworks, also nicht für eine Java Virtual Machine!
Microsoft bietet in dem 7 Mb großen Package verschiedene Tools um eine volle Integration in das Visual Studio.NET zu bieten, eine volle Integration in das Framework zu liefern und verschiedene Update Tools. Die wichtigsten Punkte seien hier kurz erwähnt:
- Visual J# .NET compiler (jc.exe)
- Visual J# .NET Binary Converter Tool (jbimp.exe)
- Klassenbibliotheken, welche die Funktionalitäten des JDK 1.1.4 bieten
- Unterstützung für die Microsoft Visual J++ 6.0 Erweiterungen inklusive der WFC
Generell ergibt sich da die Frage wie es sich mit der Portierung ?alter? J++ Anwendungen auf J# aussieht. Es wird bei der Installation des Packages unteranderem auch Visual Studio.NET erweitert, so dass man in der IDE volle Unterstützung hat. Somit kann man also problemlos alte Visual J++ 6.0 Projekte öffnen und es wird ein Update Assistent gestartet welcher den Quellcode an das Framework anpasst. Meine ersten Erfahrungen mit dem JUMP Kit erwiesen sich als etwas holprig:
- Eine einfache Windows Anwendung mit simplen Code lies sich ohne weiteres nach J# portieren
- Eine Visual J++ Datenbankanwendung, die eine Master / Detail Darstellung liefert und das DataGrid ActiveX Control verwendet lies sich nur schwer migrieren, da der Update Assistent nichts von ActiveX Controls hält und diese auch nicht migriert.
Wichtig für die Portierung:
Die WFC Klassen sind ab jetzt in einem .NET assembly namesn WFC.dll untergebracht und es muss eine Referenz auf dieses Assemly gesetzt werden wenn eine VJ++ Anwendung nach J# portiert werden soll. Finden kann man die dll normalerweise hier:
C:\Program Files\Microsoft Visual J# .NET\Framework\sdk
Weitere Infos:
- Inner classes können nicht von subclasses referenziert werden, die mehr als einen Level entfernt sind.
class Granpa { class Inner { } } class Parent extends Granpa { } class Child extends Parent { void foo() { new Inner(); } }
|
o Verschachtelte anonymus innerclasses können nicht auf final stack variablen verweisen
abstract class Foo { public abstract Object test(); } class Bar { void foo() { final Object o = ""; new Foo() { public Object test() { new Foo() { public Object test() { return o; } }; return o; } }; } } |
- Die Anchor Eigenschaft für Controls auf einer Form in Visual J#, verhindert das kompilieren des Projektes.
- * Pre Processor Symbole werden von dem Compiler ignoriert. Wenn Sie einige Präprozessorsymbole in den Projekteigenschaften spezifizieren, betrachtet der Compiler nur, dass welches als erstes definiert wurde. Die anderen werden ignoriert. Die merkwürdige Sache ist, dass der Editor in Visual Studio.NET die Präprozessorsymbole richtig anfasst (Code ist ?grayed?, wie man ihn erwarten würden) aber der Compiler nimmt nur das erste Symbol.
- Wenn eine Variable vor einer if() Bedingung erklärte wurde, aber nur im If()( Zweig verwendet wird, erhalten Sie ein WARNING über eine unbenutzte Variable. Sie erhalten dieses WARNING nicht, wenn die Variable nur im dann Zweig verwendet wird. Bsp. :
int bar(boolean test) { int foo = 1; if (test) { return 0; } else { return foo; } } |
- com.ms.jdbc.odbc.JdbcOdbcDriver() Konstruktor ?wirft? eine
- SQLException in VJ#, jedoch nicht in VJ++.
- Visual J#.NET unterstützt J/Direct, aber es ist wirklich mehr die Javaweise für das Verwenden von .NET Plattform Invoke Diensten.