Bytecode-Transpiler
Grasshopper kann einen CLR-Bytecode für JVM transpilieren. Es ist hauptsächlich für Web-Apps gedacht und bietet keine zB JVM-Implementierung von Windows Forms-Klassen. Scheint allerdings etwas veraltet zu sein. Das Web spricht über ASP.NET 2.0, Visual Studio 2008 und so weiter. Erstmals erwähnt von @alex
XMLVM kann CLR- oder JVM-Bytecode als Eingabe verwenden und entweder als Ausgabe erzeugen. Zusätzlich kann Javascript oder Objective-C ausgegeben werden. Noch keine Veröffentlichungen, nur Subversion. "Experimentelle Entwicklungsversion, die nicht in einer Produktionsumgebung verwendet werden soll."
IKVM geht in die andere Richtung als OP will. Es bietet eine JVM-Implementierung, die auf CLR ausgeführt wird, einen JVM-zu-CLR-Bytecode-Transpiler und einen CLR-Bibliotheksmethoden-Stubgenerator für Java. http://www.ikvm.net/uses.html Erwähnt von @Jon Skeet
RPC
Warum nicht CLR und JVM nebeneinander laufen lassen und die Kommunikation so reibungslos wie möglich gestalten? Dies ist nicht das, was das OP will, aber einige andere Antworten sind auf unterschiedliche Weise bereits ziemlich unangebracht. Lassen Sie uns dies behandeln.
RabbitMQ hat eine kostenlose Option, es ist ein in Erlang geschriebener RPC-Server mit API-Bibliotheken für C #, Java und mehr.
jnBridge , die Lizenz kann für einige potenzielle Benutzer zu teuer sein.
gRPC und ähnliche moderne RPC-Bibliotheken bieten umfassende Sprachunterstützung, Codegenerierung für Clientbibliotheken in diesen Sprachen, sprachunabhängiges Drahtformat für Daten, erweiterte Funktionen wie kaskadierende Anrufunterbrechung usw.
Programmiersprachen
Einmal schreiben, überall laufen lassen;)
Haxe , kompiliert zu C # / CLR, Java / JVM, Javascript, Flash, Python, ... Bietet Interop-Mechanismen für jede der Zielsprachen. Kann bis zu einem gewissen Grad als ActionScript3-Nachfolger betrachtet werden. Scheint ziemlich solide zu sein, wobei mindestens eine Firma tatsächlich davon abhängt. Viel vertrauenswürdiger als Stab, der als nächstes erwähnt wird.
Stab bringt einige C # -Funktionen und Java-Interoperabilität. Nicht sehr nützlich, Sie erhalten einige C # -Funktionen, aber Sie interagieren mit Java-Code, der sie nicht verwendet. https://softwareengineering.stackexchange.com/a/132080/45826 Die Sprache ist relativ dunkel, möglicherweise aufgegeben, und verspricht wenig, besser zu werden. Erstmals hier erwähnt von @Vns.
Frischluftstoß für die JVM-Plattform;)
Scala , Kotlin und andere sind ziemlich nette Sprachen, die auf JVM laufen und Funktionen bieten, die ein C # -Programmierer in Java möglicherweise vermisst. Besonders Kotlin scheint eine vernünftige Alternative zu C # in der JVM-Welt zu sein. Scala ist möglicherweise eine etwas zu große Sprache, als dass sich ein Programmierer in kurzer Zeit damit vertraut machen könnte.
Mono
Das ist sicherlich auch eine Option. Warum auf JVM transpilieren, wenn Mono es so ausführen kann, wie es ist? Erstmals erwähnt von @ferhrosa
NEW YORK - 12. November 2014 - Am Mittwoch verstärkte Microsoft Corp. sein Engagement für plattformübergreifende Entwicklererfahrungen durch Open Sourcing des gesamten serverseitigen .NET-Stacks und die Erweiterung von .NET für die Ausführung auf Linux- und Mac OS-Plattformen.
Laut dieser Pressemitteilung, aus der das Zitat stammt, wird Visual Studio 2015 Linux / Mono als unterstützte Plattform hinzufügen.
Dies ist ein Blog, das von den Leuten des Mono-Projekts darüber geschrieben wurde, von der anderen Seite: .NET Source Code Integration (November 2014).
.NET Core
Eine Windows / Linux-Multiplattform-Version von (einigen) .Net, die von Microsoft verwaltet wird. 'nuff sagte https://github.com/dotnet/core .
Fazit
Es wäre jetzt notwendig, diese Tools / Frameworks auszuprobieren und festzustellen, wie viel Reibung vorhanden ist. Das OP möchte in C # für die JVM schreiben, was mit Grasshopper möglicherweise recht gut funktioniert.
Dies mit dem Ziel zu tun, C # - und Java-Weltbibliotheken in einer einzigen Codebasis zu mischen, funktioniert möglicherweise nicht so gut.
Quellen
http://blog.pluralsight.com/new-course-making-java-and-c-work-together-jvm-and-net-clr-interop