байт-код транспортеров
Grasshopper может взять байт-код CLR и передать его для JVM. Предназначен главным образом для веб-приложений, он не обеспечивает, например, Реализация JVM классов Windows Forms. Кажется, несколько устарела. В Интернете говорится о ASP.NET 2.0, Visual Studio 2008 и так далее. Впервые упоминается @ alex
XMLVM может принимать байт-код CLR или JVM в качестве входных данных и производить либо в качестве выходных данных. Кроме того, он может выводить Javascript или Objective-C. Релизов пока нет, только Subversion. «Экспериментальная версия разработки, которая не должна использоваться в производственной среде».
IKVM идет в другом направлении, чем хочет ОП. Он обеспечивает реализацию JVM, работающую на CLR, транспортер байт-кода JVM to 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 может быть слишком большим языком для программиста, чтобы освоиться за короткое время.
Mono
Это, конечно, тоже вариант. Зачем переходить на JVM, если Mono может запустить его как есть. Впервые упоминается @ ferhrosa
НЬЮ-ЙОРК - 12 ноября 2014 г. - В среду Microsoft Corp. усилила свою приверженность кросс-платформенному взаимодействию с разработчиками, открыв полный комплект серверного стека .NET и расширяя .NET для работы. на платформах Linux и Mac OS.
Согласно этого пресс-релиза , из которого взята цитата, Visual Studio 2015 добавит Linux / Mono в качестве поддерживаемой платформы.
Это блог, написанный людьми из проекта Mono, с другой стороны: Интеграция исходного кода .NET (ноябрь 2014).
.NET Core
Мультиплатформенная версия Windows / Linux (некоторые из) .Net, управляемая Microsoft. Нуфф сказал https://github.com/dotnet/core.
Заключение
Теперь необходимо попробовать эти инструменты / рамки и посмотреть, сколько трения существует. ОП хочет написать на C # для JVM, которая на самом деле вполне может работать при использовании Grasshopper.
Выполнение этого с целью объединения мировых библиотек C # и Java в одной кодовой базе может работать не так хорошо.
Источники
http://blog.pluralsight.com/new-course-making-java-and-c-work-together-jvm-and-net-clr-interop