Transpilatori Bytecode
Grasshopper può prendere un bytecode CLR e trasferirlo per JVM. Destinato principalmente alle app Web, non fornisce, ad esempio, l'implementazione JVM delle classi Windows Forms. Sembra un po 'datato, però. Il web parla di ASP.NET 2.0, Visual Studio 2008 e così via. Menzionato per la prima volta da @alex
XMLVM può prendere il bytecode CLR o JVM come input e produrlo come output. Inoltre può generare Javascript o Objective-C. Nessun rilascio ancora, solo Subversion. "Versione di sviluppo sperimentale che non deve essere utilizzata in un ambiente di produzione."
IKVM va nella direzione opposta rispetto a quanto vuole OP. Fornisce un'implementazione JVM in esecuzione su CLR, un transpiler bytecode da JVM a CLR e un generatore di stub del metodo della libreria CLR per Java. http://www.ikvm.net/uses.html Menzionato da @Jon Skeet
RPC
Perché non far funzionare CLR e JVM insieme e rendere la comunicazione il più semplice possibile? Questo non è ciò che vuole l'OP, ma alcune altre risposte sono già abbastanza fuori tema in modi diversi, quindi copriamolo.
RabbitMQ , ha un'opzione gratuita, è un server RPC scritto in Erlang con librerie API per C #, Java e altro.
jnBridge , la licenza potrebbe essere troppo costosa per alcuni potenziali utenti.
gRPC e librerie RPC moderne simili offrono ampio supporto linguistico, generazione di codice per librerie client in questi linguaggi, formato wire indipendente dalla lingua per i dati, funzionalità avanzate come l'annullamento delle chiamate a cascata e così via.
Linguaggi di programmazione
Scrivi una volta, corri ovunque;)
Haxe , compila in C # / CLR, Java / JVM, Javascript, Flash, Python, ... Fornisce meccanismi di interoperabilità per ciascuno dei linguaggi di destinazione. Può essere considerato in una certa misura un successore di ActionScript3. Sembra roba abbastanza solida, con almeno un'azienda che dipende da essa. Molto più affidabile di Stab, menzionato dopo.
Stab offre alcune funzionalità C # e l'interoperabilità di Java. Non molto utile, ottieni alcune funzionalità C #, ma ciò con cui interagisci è il codice Java che non le utilizza. https://softwareengineering.stackexchange.com/a/132080/45826 Il linguaggio è relativamente oscuro, forse abbandonato, con poche promesse di miglioramento. Menzionato per la prima volta qui da @Vns.
Raffica di aria fresca per la piattaforma JVM;)
Scala , Kotlin , altri, sono linguaggi abbastanza carini in esecuzione su JVM che offrono funzionalità che un programmatore C # potrebbe perdere in Java. Soprattutto Kotlin sembra una ragionevole alternativa a C # nel mondo JVM. Scala potrebbe essere un linguaggio un po 'troppo vasto per un programmatore con cui sentirsi a proprio agio in breve tempo.
Mono
Anche questa è certamente un'opzione. Perché transpile in JVM se Mono può eseguirlo così com'è. Menzionato per la prima volta da @ferhrosa
NEW YORK - 12 novembre 2014 - Mercoledì, Microsoft Corp. ha rafforzato il proprio impegno a favore di esperienze di sviluppo multipiattaforma rendendo open source l'intero stack .NET lato server e espandendo .NET per l'esecuzione su piattaforme Linux e Mac OS.
Secondo questo comunicato stampa da cui proviene la citazione, Visual Studio 2015 aggiungerà Linux / Mono come piattaforma supportata.
Questo è un blog scritto dalle persone del progetto Mono sull'argomento, dall'altra parte: .NET Source Code Integration (novembre 2014).
.NET Core
Una versione multipiattaforma Windows / Linux di (alcuni di) .Net governata da Microsoft. 'nuff ha detto https://github.com/dotnet/core .
Conclusione
Sarebbe ora necessario provare questi strumenti / framework e vedere quanto attrito c'è. L'OP vuole scrivere in C # per la JVM, che potrebbe effettivamente funzionare abbastanza bene usando Grasshopper.
Fare questo con l'obiettivo di combinare le librerie del mondo C # e Java in una singola base di codice potrebbe non funzionare così bene.
Fonti
http://blog.pluralsight.com/new-course-making-java-and-c-work-together-jvm-and-net-clr-interop