Bộ chuyển mã Bytecode
Grasshopper có thể lấy một mã bytecode CLR và chuyển nó cho JVM. Chủ yếu dành cho các ứng dụng web, nó không cung cấp triển khai JVM ví dụ như các lớp Windows Forms. Có vẻ hơi cũ, mặc dù. Trang web nói về ASP.NET 2.0, Visual Studio 2008, v.v. Được đề cập lần đầu bởi @alex
XMLVM có thể lấy CLR hoặc JVM bytecode làm đầu vào và sản xuất dưới dạng đầu ra. Ngoài ra, nó có thể xuất ra Javascript hoặc Objective-C. Chưa có bản phát hành nào, chỉ có Subversion. "Phiên bản phát triển thử nghiệm không được sử dụng trong môi trường sản xuất."
IKVM đi theo hướng khác mà OP muốn. Nó cung cấp một triển khai JVM chạy trên CLR, một trình vận chuyển mã bytecode JVM sang CLR và một trình tạo sơ khai phương thức thư viện CLR cho Java. http://www.ikvm.net/uses.html Được đề cập bởi @Jon Skeet
RPC
Tại sao không để CLR và JVM chạy cùng và làm cho việc giao tiếp trở nên dễ dàng nhất có thể? Đây không phải là những gì OP muốn, nhưng một số câu trả lời khác đã khá lạc đề theo những cách khác nhau, vì vậy hãy đề cập đến nó.
RabbitMQ , có một tùy chọn miễn phí, nó là một máy chủ RPC được viết bằng Erlang với các thư viện API cho C #, Java và hơn thế nữa.
jnBridge , giấy phép có thể quá đắt đối với một số người dùng tương lai.
gRPC và các thư viện RPC hiện đại tương tự cung cấp hỗ trợ ngôn ngữ rộng rãi, tạo mã cho thư viện khách bằng các ngôn ngữ này, định dạng dây độc lập ngôn ngữ cho dữ liệu, các tính năng nâng cao như hủy cuộc gọi theo tầng, v.v.
Ngôn ngữ lập trình
Viết một lần, chạy khắp nơi;)
Haxe , biên dịch sang C # / CLR, Java / JVM, Javascript, Flash, Python,… Cung cấp cơ chế tương tác cho từng ngôn ngữ đích. Có thể được coi như một người kế nhiệm ActionScript3 ở một mức độ nào đó. Có vẻ như những thứ khá chắc chắn, với ít nhất một công ty thực sự phụ thuộc vào nó. Đáng tin cậy hơn nhiều so với Stab, được đề cập tiếp theo.
Stab mang đến một số tính năng C # và khả năng tương tác Java. Không hữu ích lắm, bạn nhận được một số tính năng C #, nhưng những gì bạn tương tác với là mã Java không sử dụng chúng. https://softwareengineering.stackexchange.com/a/132080/45826 Ngôn ngữ tương đối tối nghĩa, có thể bị bỏ rơi, ít hứa hẹn sẽ trở nên tốt hơn. Lần đầu tiên được đề cập ở đây bởi @Vns.
Luồng không khí trong lành cho nền tảng JVM;)
Scala , Kotlin , những ngôn ngữ khác, là những ngôn ngữ khá đẹp chạy trên JVM mang lại các tính năng mà một lập trình viên C # có thể bỏ lỡ trong Java. Đặc biệt Kotlin cảm thấy như một sự thay thế hợp lý cho C # trong thế giới JVM. Scala có thể là một ngôn ngữ hơi quá lớn đối với một lập trình viên để sử dụng trong thời gian ngắn.
Bệnh tăng bạch cầu đơn nhân
Đó chắc chắn cũng là một lựa chọn. Tại sao lại chuyển sang JVM nếu Mono có thể chạy nó như hiện tại. Được đề cập lần đầu bởi @ferhrosa
NEW YORK - Ngày 12 tháng 11 năm 2014 - Hôm thứ Tư, Microsoft Corp. đã củng cố cam kết của mình đối với trải nghiệm của nhà phát triển đa nền tảng bằng cách mở nguồn cung cấp đầy đủ ngăn xếp .NET phía máy chủ và mở rộng .NET để chạy trên nền tảng Linux và Mac OS.
Theo thông cáo báo chí có trích dẫn này, Visual Studio 2015 sẽ thêm Linux / Mono làm nền tảng được hỗ trợ.
Đây là một blog được viết bởi những người của dự án Mono về nó, từ phía bên kia: Tích hợp mã nguồn .NET (tháng 11 năm 2014).
.NET Core
Phiên bản đa định dạng Windows / Linux của (một số) .Net do Microsoft quản lý. 'nuff nói https://github.com/dotnet/core .
Phần kết luận
Bây giờ sẽ là cần thiết để thử các công cụ / khuôn khổ này và xem có bao nhiêu ma sát. OP muốn viết bằng C # cho JVM, có thể thực sự hoạt động khá tốt khi sử dụng Grasshopper.
Làm điều này với mục tiêu trộn các thư viện thế giới C # và Java trong một cơ sở mã duy nhất có thể không hoạt động tốt.
Nguồn
http://blog.pluralsight.com/new-course-making-java-and-c-work-together-jvm-and-net-clr-interop