2008-09-30 8 views

Antwort

4

Nein, kann man nicht. Es sei denn, Sie sind bereit, einige „J #“ Bibliotheken zu verwenden oder IKVM (die nicht annähernd die gleiche wie Java ist), die eine Java-Implementierung ist, die auf der .NET läuft, aber wie ihre Dokumentation sagt:

IKVM. OpenJDK.ClassLibrary.dll: kompilierte Version der Java-Klassenbibliotheken, die von der OpenJDK-Klassenbibliothek abgeleitet sind, wobei einige Teile mit Code aus GNU Classpath und IcedTea gefüllt sind, sowie einige zusätzliche IKVM.NET-spezifischen Codes.

So ist es nicht der wirkliche Deal.

+0

+1 für IKVM verwenden wir es, um schön zwischen unserer .NET UI und dem Java-Server über RMI-Stubs zu kommunizieren, die von IKVM-Assemblys umschlossen sind. – Matt

+0

Tatsächlich funktioniert IKVM gut, solange die Komponenten nicht AWT/Swing-basiert sind. – jsight

1

Nichts aus der Box.

Die meisten Java/.net Interop, die ich kenne, verwendet Webdienste.

1

Wenn Sie COM-Komponenten mit Java erstellen können, können Sie mit tlbimp eine Interop-Assembly für die Verwendung in VB.Net erstellen.

Wenn Sie Standard-DLLs erstellen können, die aus C++ mit Java verwendet werden können, können Sie P/Invoice-Deklarationen schreiben und sie von VB.Net aufrufen.

Wenn Sie einen Webdienst mit Java erstellen können, können Sie eine Proxyklasse aus der WSDL generieren und sie aus VB.Net aufrufen.

In jedem Fall besteht die Möglichkeit, dass die Java-Komponente in einem separaten Prozess lebt. Ich bezweifle, dass Sie sowohl die Java VM als auch die CLR im selben Prozess laden können.

1

Wenn Sie den Quellcode haben und kompilieren Sie ihn mit dem J # -Compiler, dann ist die Antwort ja. Wenn Sie irgendwelche vor-Java 2 (alias 1.2) Bibliotheken aufrufen wollen, dann sind diese ziemlich wörtlich mit J # enthalten. Neuere Sachen werden jedoch schwierig (d. H. Es ist nicht da).

Ein Beispiel, wo dies kommerziell verwendet wird, sind die yFiles Graphlayout-Algorithmen von yWorks. Diese waren ursprünglich nur eine Java-Bibliothek, aber seit einigen Jahren bieten sie eine .NET-Version an, bei der es sich nur um die mit Visual J # kompilierte Java-Version handelt.

Es ist nicht ohne Probleme, und es gibt einige Einschränkungen, die Sie nicht umgehen können, aber es kann getan werden. Also ... leider sieht diese Antwort auch ziemlich zwielichtig aus.

0

könnten Sie JNI verwenden, um eine virtuelle Maschine zu instanziieren und dann Java-Klassen verwenden. Es wird jedoch etwas Spaß machen, weil Sie C++ als Brücke zwischen VB.Net und Java verwenden müssen.

Dieser Artikel in Java World hat eine kurze Anleitung zur Verwendung von Java aus C++ und umgekehrt.

http://www.javaworld.com/javaworld/javatips/jw-javatip17.html

0

Wenn Sie die Quelle haben, wird Visual Studio können Sie Java-Code in C# konvertieren.

3

Ich bin Autor von jni4net, Open-Source-Intra-Prozess-Brücke zwischen JVM und CLR. Es ist auf JNI und PInvoke aufgebaut. Kein C/C++ Code benötigt. Ich hoffe es hilft dir.

Verwandte Themen