Транспілятори байт-кодів
Коник може взяти байт-код CLR і перевести його для JVM. Призначений переважно для веб-програм, він не передбачає, наприклад, реалізацію класів Windows Forms у JVM. Здається, дещо застаріле. В Інтернеті йдеться про ASP.NET 2.0, Visual Studio 2008 тощо. Вперше згадується @alex
XMLVM може приймати байт-код CLR або JVM як вхідні дані та створювати їх як вихідні. Крім того, він може виводити Javascript або Objective-C. Поки що немає випусків, лише Subversion. "Експериментальна версія для розробки, яка не повинна використовуватися у виробничому середовищі."
IKVM йде в іншому напрямку, ніж OP хоче. Він забезпечує реалізацію JVM, що працює на CLR, перетворювач байт-коду від JVM до CLR та генератор заглушок методів бібліотеки CLR для Java. http://www.ikvm.net/uses.html Згадує @Jon Skeet
RPC
Чому б не запустити CLR та JVM поруч і не зробити комунікацію якомога більшим тертям? Це не те, що хоче ОП, але деякі інші відповіді вже по-різному не відповідають темі, тож давайте це висвітлимо.
RabbitMQ , має безкоштовну опцію, це RPC-сервер, написаний на Erlang з бібліотеками API для C #, Java та інших.
jnBridge , ліцензія може бути занадто дорогою для деяких майбутніх користувачів.
gRPC та подібні сучасні бібліотеки RPC пропонують широку підтримку мов, генерацію коду для клієнтських бібліотек на цих мовах, незалежний від мови провідний формат даних, розширені функції, такі як каскадне скасування дзвінків тощо.
Мови програмування
Пишіть один раз, біжіть скрізь;)
Haxe , компілюється на C # / CLR, Java / JVM, Javascript, Flash, Python, ... Надає механізми взаємодії для кожної з цільових мов. Можна певною мірою вважати наслідником ActionScript3. Здається цілком солідним матеріалом, принаймні одна компанія насправді залежить від цього. Набагато більш довірливим, ніж Стеб, згаданий далі.
Stab забезпечує деякі функції C # та сумісність Java. Не дуже корисно, ви отримуєте деякі функції C #, але те, з чим ви взаємодієте, це код Java, який їх не використовує. https://softwareengineering.stackexchange.com/a/132080/45826 Мова є відносно неясною, можливо, покинутою, мало обіцяючи стати кращою. Вперше згадується тут @Vns.
Порив свіжого повітря для платформи JVM;)
Scala , Kotlin та інші - це досить симпатичні мови, що працюють поверх JVM, що надає функції, які програміст C # може втратити в Java. Особливо Котлін відчуває себе розумною альтернативою C # у світі JVM. Scala може бути занадто великою мовою для програміста, щоб за короткий час почути себе комфортно.
Мононуклеоз
Це, звичайно, теж варіант. Навіщо транспілювати в JVM, якщо Mono може запустити його як є. Вперше згадується @ferhrosa
НЬЮ-ЙОРК - 12 листопада 2014 р. - У середу корпорація Microsoft зміцнила свою прихильність досвіду розробників міжплатформенних платформ, відкривши джерело повного стеку .NET на стороні сервера та розширивши .NET для роботи на платформах Linux і Mac OS.
Згідно з цим прес-релізом, з якого випливає цитата, Visual Studio 2015 додасть Linux / Mono як підтримувану платформу.
Це блог, написаний людьми з проекту Mono з іншого боку: Інтеграція вихідного коду .NET (листопад 2014 р.).
.NET Core
Мультиплатформна версія Windows / Linux (деякі) .Net, керована корпорацією Майкрософт. 'nuff сказав https://github.com/dotnet/core .
Висновок
Зараз потрібно було б спробувати ці інструменти / фреймворки і подивитися, наскільки велике тертя. OP хоче писати на C # для JVM, який насправді може працювати досить добре, використовуючи Grasshopper.
Зробити це з метою поєднання бібліотек світу C # та Java в одній кодовій базі може не працювати так добре.
Джерела
http://blog.pluralsight.com/new-course-making-java-and-c-work-together-jvm-and-net-clr-interop