Java程序和JVM生成的exe
Java是平台独立的,因为它使用依赖于平台的JVM来启动Java程序。JVM理解字节代码并执行程序。我知道做这件事的老办法是翻译。但是现在JVM正在使用JIT。但我并不清楚JIT的概念。我认为,jVM可以将字节码转换为exe(对于Windows),然后我可以在没有jVM的情况下运行这个转换后的程序。但我可以在.NETJIT中看到生成的exe,但在Java中看不到生成的exeJava程序和JVM生成的exe,java,jvm,Java,Jvm,Java是平台独立的,因为它使用依赖于平台的JVM来启动Java程序。JVM理解字节代码并执行程序。我知道做这件事的老办法是翻译。但是现在JVM正在使用JIT。但我并不清楚JIT的概念。我认为,jVM可以将字节码转换为exe(对于Windows),然后我可以在没有jVM的情况下运行这个转换后的程序。但我可以在.NETJIT中看到生成的exe,但在Java中看不到生成的exe 我如何才能做到这一点(从Java创建本机exe文件) 与同一个C应用程序相比,JVM生成的exe的性能如何 Java将如何
我建议不要走这条路。如果将代码作为“.exe”文件分发非常重要,那么您可能不应该使用Java 我如何才能做到这一点(从Java创建本机exe文件) 有一种常见的错误观念,认为这在某种程度上会更好。然而,我还没有看到好的情况。有像Excelsior JET这样的产品可以编译二进制文件。GCC可以为Java1.4编译二进制文件,但这不是AFAIK当前的项目 与同一个C应用程序相比,JVM生成的exe的性能如何 你无法将两者进行比较。如果你想要一个面向对象的程序,你不能很容易地用C语言编写,而且如果不运行的话,编写的速度肯定会慢得多。如果你想写一个C风格的程序,就用C写吧 Java将如何处理静态链接和动态链接
JVM执行动态延迟链接。事实上,它可以在加载和卸载类加载器时多次链接和重新链接代码。我不确定,但我认为您无法从java创建本机代码。Java是一种解释性语言,不能用本机代码编译。@Thomas Uhrig我也认为Java是解释性语言,但为什么不在程序启动后永远使用allready解释性代码时只解释一次呢?就像编译Java是面向对象的,c是结构化的一样,我也知道这一点。但面向对象是必须的在编写源代码时,让开发软件变得容易。但生成的输出不必是面向对象的jvm代码优化可以利用这一点。