Transpilery kodu bajtowego
Grasshopper może pobrać kod bajtowy CLR i przetransponować go do JVM. Przeznaczony głównie dla aplikacji webowych, nie zapewnia m.in. implementacji JVM klas Windows Forms. Wydaje się jednak nieco przestarzały. W sieci Web można znaleźć informacje o ASP.NET 2.0, Visual Studio 2008 i tak dalej. Pierwsza wzmianka o @alex
XMLVM może pobierać kod bajtowy CLR lub JVM jako dane wejściowe i generować jako dane wyjściowe. Dodatkowo może wyświetlać Javascript lub Objective-C. Nie ma jeszcze żadnych wydań, tylko Subversion. „Eksperymentalna wersja rozwojowa, która nie jest przeznaczona do użytku w środowisku produkcyjnym”.
IKVM idzie w innym kierunku niż chce OP. Zapewnia implementację JVM działającą w środowisku CLR, transpiler kodu bajtowego JVM do CLR oraz generator skrótów metody biblioteki CLR dla języka Java. http://www.ikvm.net/uses.html Wspomniane przez @Jon Skeet
RPC
Dlaczego nie mieć CLR i JVM działających równolegle i uczynić komunikację tak bezproblemową, jak to tylko możliwe? Nie tego chce PO, ale niektóre inne odpowiedzi są już całkiem poza tematem na różne sposoby, więc omówmy to.
RabbitMQ , ma darmową opcję, jest to serwer RPC napisany w Erlang z bibliotekami API dla C #, Java i nie tylko.
jnBridge , licencja może być zbyt droga dla niektórych potencjalnych użytkowników.
gRPC i podobne nowoczesne biblioteki RPC oferują obsługę wielu języków, generowanie kodu dla bibliotek klienckich w tych językach, format przewodowy danych niezależny od języka, zaawansowane funkcje, takie jak kaskadowe anulowanie połączeń i tak dalej.
Języki programowania
Napisz raz, biegnij wszędzie;)
Haxe , kompiluje do C # / CLR, Java / JVM, Javascript, Flash, Python,… Zapewnia mechanizmy międzyoperacyjne dla każdego z języków docelowych. Do pewnego stopnia można go traktować jako następcę ActionScript3. Wydaje się, że to całkiem solidna sprawa, przynajmniej jedna firma faktycznie od tego zależy. Znacznie bardziej godny zaufania niż wspomniany dalej Stab.
Stab wprowadza niektóre funkcje C # i interoperacyjność Java. Niezbyt przydatne, masz pewne funkcje C #, ale to, z czym wchodzisz w interakcję, to kod Java, który ich nie używa. https://softwareengineering.stackexchange.com/a/132080/45826 Język jest stosunkowo niejasny, prawdopodobnie porzucony, z niewielką szansą na poprawę. Po raz pierwszy wspomniano tutaj przez @Vns.
Podmuch świeżego powietrza dla platformy JVM;)
Scala , Kotlin i inni to całkiem przyjemne języki działające na bazie JVM, które oferują funkcje, których programista C # może przegapić w Javie. Szczególnie Kotlin wydaje się rozsądną alternatywą dla C # w świecie JVM. Scala może być trochę za dużym językiem, aby programiści mogli się z nim swobodnie pogodzić w krótkim czasie.
Mononukleoza
To z pewnością też opcja. Po co transponować do JVM, skoro Mono może go uruchomić tak, jak jest. Pierwsza wzmianka o @ferhrosa
NOWY JORK - 12 listopada 2014 r. - W środę firma Microsoft Corp. wzmocniła swoje zaangażowanie w tworzenie wieloplatformowych doświadczeń deweloperów, udostępniając na zasadach open source pełny stos .NET po stronie serwera i rozszerzając .NET tak, aby działał na platformach Linux i Mac OS.
Zgodnie z tym komunikatem prasowym, z którego pochodzi cytat, Visual Studio 2015 doda Linux / Mono jako obsługiwaną platformę.
To jest blog napisany o tym przez ludzi z projektu Mono, z drugiej strony: .NET Source Code Integration (listopad 2014).
.NET Core
Wieloplatformowa wersja (niektórych) .Net dla systemów Windows / Linux zarządzana przez firmę Microsoft. 'nuff powiedział https://github.com/dotnet/core .
Wniosek
Należałoby teraz wypróbować te narzędzia / ramy i zobaczyć, jak duże są tarcia. OP chce pisać w języku C # dla maszyny JVM, która może faktycznie działać całkiem dobrze przy użyciu Grasshopper.
Robienie tego w celu połączenia bibliotek świata C # i Java w jednej bazie kodu może nie działać tak dobrze.
Źródła
http://blog.pluralsight.com/new-course-making-java-and-c-work-together-jvm-and-net-clr-interop