Jon*_*eet 92
CLR和JVM之间存在非常显着的差异.
几个例子:
你可以移植很多 C# - 但你会留下一个非常令人不满意的经历,IMO.
走另一条路,你知道IKVM吗?它允许您在.NET中运行Java代码.
小智 41
访问http://code.google.com/p/stab-language
如果是JVM的Stab语言代码,下面的代码
using java.lang;
using stab.query;
public class Test {
public static void main(String[] args) {
// Sorts the arguments starting with "-" by length and then using the default
// string comparison
var query = from s in Query.asIterable(args)
where s.startsWith("-")
orderby s.length(), s
select s;
foreach (var s in query) {
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
use*_*610 12
Grasshopper可以获取CLR字节码并将其转换为JVM.主要用于Web应用程序,它不提供例如Windows Forms类的JVM实现.但有点过时了.该网站讨论了ASP.NET 2.0,Visual Studio 2008等.首先由@alex提及
XMLVM可以将CLR或JVM字节码作为输入,并作为输出生成.此外,它可以输出Javascript或Objective-C.还没有版本,只有Subversion."不在生产环境中使用的实验开发版本."
IKVM走向了另一个方向,而不是OP想要的.它提供了在CLR上运行的JVM实现,JVM到CLR字节码转换器以及用于Java的CLR库方法存根生成器.http://www.ikvm.net/uses.html由@Jon Skeet提及
为什么不让CLR和JVM同时运行并使通信尽可能无摩擦?这不是OP想要的,但其他一些答案已经以不同的方式完全脱离主题,所以让我们来讨论它.
RabbitMQ有一个免费选项,它是一个用Erlang编写的RPC服务器,带有用于C#,Java等的API库.
jnBridge,对于一些潜在用户而言,许可证可能过于昂贵.
gRPC和类似的现代RPC库提供广泛的语言支持,这些语言的客户端库代码生成,数据的语言无关的有线格式,级联呼叫取消等高级功能.
写一次,到处跑;)
Haxe,编译为C#/ CLR,Java/JVM,Javascript,Flash,Python,...为每种目标语言提供互操作机制.可以在某种程度上将其视为ActionScript3的后继者.看起来非常可靠,至少有一家公司实际依赖它.接下来提到的比Stab更值得信赖.
Stab带来了一些C#功能和Java互操作性.不太有用,你得到一些C#功能,但你与之交互的是不使用它们的Java代码.https://softwareengineering.stackexchange.com/a/132080/45826这种语言相对模糊,可能被遗弃,几乎没有希望变得更好.这里首先提到@Vns.
JVM平台的新鲜空气;)
Scala,Kotlin,其他人,是在JVM之上运行的相当不错的语言,它带来了C#程序员可能在Java中遗漏的功能.特别是Kotlin在JVM世界中感觉像是C#的合理替代品.Scala可能是一个太大的语言,程序员可以在短时间内适应.
这当然也是一种选择.如果Mono可以按原样运行它,为什么要转换到JVM.首先由@ferhrosa提及
纽约 - 2014年11月12日 - 周三,微软公司通过开放整个服务器端.NET堆栈并扩展.NET以在Linux和Mac OS平台上运行,加强了对跨平台开发人员体验的承诺.
根据这篇引用的新闻稿,Visual Studio 2015将添加Linux/Mono作为支持平台.
这是由Mono项目人员撰写的关于它的博客,另一方面:.NET源代码集成(2014年11月).
由Microsoft管理的(某些).Net的Windows/Linux多平台版本.'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
将转换器从IL写入字节码可能更简单.这样,您就可以自动获得对JVM上任何.NET语言的支持.
然而,这是一个显而易见的想法,如果还没有这样做,那可能非常困难,或者很难做得很好/有用.
归档时间: |
|
查看次数: |
24450 次 |
最近记录: |