使用Java本机代码或C++;(QT、WxWidgets等) 我问自己,如果用java编程多平台应用程序,并将其编译成本地二进制文件(伊柯丽斯编写的方式)或使用QT等跨平台C++框架,会更容易、更灵活。优点/缺点在哪里?

使用Java本机代码或C++;(QT、WxWidgets等) 我问自己,如果用java编程多平台应用程序,并将其编译成本地二进制文件(伊柯丽斯编写的方式)或使用QT等跨平台C++框架,会更容易、更灵活。优点/缺点在哪里?,java,c++,cross-platform,platform-independent,Java,C++,Cross Platform,Platform Independent,我只想让JVM编译本机代码 您可能会认为预编译更好,但98%的情况下不是这样,只是更难、更复杂。您会发现Java的平台特定问题更少,但是: 一些较少的公有平台有C++编译器/工具包,但没有JRE。 使用C/C++通常可以访问所有本机资源。对于Java,情况并非总是如此 这取决于您的偏好。如果你有C++的丰富经验,那就坚持下去吧。平台独立性本身并不是一个论据,因为Qt在保证平台独立的代码方面做得很好,每个人都可以在另一个系统上重新编译程序(实际上,这也是Java程序要做的)。但是预编译Java运

我只想让JVM编译本机代码


您可能会认为预编译更好,但98%的情况下不是这样,只是更难、更复杂。

您会发现Java的平台特定问题更少,但是:

  • 一些较少的公有平台有C++编译器/工具包,但没有JRE。
  • 使用C/C++通常可以访问所有本机资源。对于Java,情况并非总是如此

这取决于您的偏好。如果你有C++的丰富经验,那就坚持下去吧。平台独立性本身并不是一个论据,因为Qt在保证平台独立的代码方面做得很好,每个人都可以在另一个系统上重新编译程序(实际上,这也是Java程序要做的)。

但是预编译Java运行得更快,因为Java虚拟机不再需要解析代码。@很好,实际上它应该运行得更慢,因为热点编译器拥有编译器在预编译时所没有的所有运行时信息,允许更积极的优化。JVM可以根据实际使用的方式编译代码,不仅仅是编译时的静态分析。这会使启动时间变慢,但会使代码变快。@good_component只会加速启动,这对短时间运行的程序很好。jit编译器可以内联虚拟方法调用,并根据运行时信息优化分支,如果优化无效,则可以重新编译—对任何运行时间较长的操作都有好处;它由编译的Java类组成。部分(SWT)需要本地库,但那些是用C或C++编写的。