ByteCode transpilers
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 для CLR байт-кода transpiler и CLB-библиотечный метод-заглушка для Java. http://www.ikvm.net/uses.html Упомянутые @ Джон тарелочки
RPC
Почему нет CLR и JVM работают вместе и сделать коммуникацию как много трений, как это возможно? Это не то, чего хочет OP, но некоторые другие ответы уже совершенно не соответствуют теме, поэтому давайте рассмотрим это.
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.
Порыв свежего воздуха для виртуальной машины Java платформы;)
Scala, Kotlin, другие, довольно хорошие языки работает поверх виртуальной машины Java, которые приносят функции, которые C# программист может пропустить в Java. Особенно Kotlin чувствует себя разумной альтернативой C# в мире JVM. Scala может быть слишком большим языком для программиста, чтобы получить удобство в течение короткого времени.
Моно
Это, безусловно, вариант. Зачем переходить на JVM, если Mono может запускать его так, как есть. Во-первых упоминается @ferhrosa
Нью-Йорк - 12 ноября 2014 - В среду Microsoft Corp. укрепила свою приверженность кроссплатформенных опыта разработчиков по открытым снабжаем полный серверный стек .NET и расширение .NET для работы на платформах Linux и Mac OS.
В соответствии с this press release, из которого следует цитата, Visual Studio 2015 добавит Linux/Mono в качестве поддерживаемой платформы.
Это блог, написанный людьми из проекта Mono, с другой стороны: .NET Source Code Integration (ноябрь 2014 г.).
.NET Ядро
под управлением Windows/Linux мультиплатформенная версия (некоторые) .Net управляется Microsoft. '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
Я также написал много, много полноплатформенных приложений на Java - это повседневная вещь для меня и моей команды. Обычно мы запускаем план тестирования на каждой платформе, которую мы официально «квалифицируем», но я думаю, что прошло много лет с тех пор, как тестовая ошибка была отнесена к разнице в платформе. – Jared
Наш основной продукт работает на Windows, OS X и Linux без изменений. Это действительно не сложно. –
Я сделал внештатное развитие с помощью java, и это было потрясающе. Мой партнер использовал linux, я использовал mac, и наш клиент был на windows ... что еще я могу сказать? – graffic