Транспилеры байт-кода
Кузнечик может взять байт-код CLR и перенести его для JVM. Предназначенный в первую очередь для веб-приложений, он не предоставляет, например, JVM-реализацию классов Windows Forms. Хотя кажется несколько устаревшим. В сети рассказывают об 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 одновременно и сделать общение максимально простым? Это не то, что хочет 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.
Порыв свежего воздуха для платформы JVM;)
Scala , Kotlin и другие - довольно хорошие языки, работающие поверх JVM, которые предоставляют функции, которые программист на C # может упустить в Java. Особенно Kotlin кажется разумной альтернативой 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, управляемая Microsoft. 'Нуфф сказал https://github.com/dotnet/core .
Вывод
Теперь было бы необходимо попробовать эти инструменты / фреймворки и посмотреть, сколько там трения. OP хочет писать на C # для JVM, которая может действительно хорошо работать с Grasshopper.
Выполнение этого с целью смешивания мировых библиотек C # и Java в одной кодовой базе может не работать так хорошо.
Источники
http://blog.pluralsight.com/new-course-making-java-and-c-work-to General-jvm-and-net-clr-interop