如何加速Java应用程序?

如何加速Java应用程序?,java,Java,我需要将Java用于桌面应用程序。我听说有很多工具可以本地编译java,这是真的吗?这些工具是否将java程序编译成机器代码 谢谢大家! 你是在编写应用程序还是别人的应用程序 看起来您正在尝试运行一个速度较慢的java应用程序。运行时请尝试增加内存。您可以更改指定以下参数的shell脚本: java-Xms64m-Xmx512m由于(Sun/Oracle)java VM有一个好的JIT(实时)编译器,您不必自己将java程序编译成机器代码。编译器将在必要时动态地执行此操作 因此:像其他程序一样加

我需要将Java用于桌面应用程序。我听说有很多工具可以本地编译java,这是真的吗?这些工具是否将java程序编译成机器代码


谢谢大家!

你是在编写应用程序还是别人的应用程序

看起来您正在尝试运行一个速度较慢的java应用程序。运行时请尝试增加内存。您可以更改指定以下参数的shell脚本: java-Xms64m-Xmx512m

由于(Sun/Oracle)java VM有一个好的JIT(实时)编译器,您不必自己将java程序编译成机器代码。编译器将在必要时动态地执行此操作

因此:像其他程序一样加速Java程序:

  • 降低算法复杂度
  • 利用并行性
  • 适时计算
  • 查找并删除瓶颈

因为Java是一种垃圾收集语言,所以提高速度有一个要点:减少分配!减少分配至少有两个好处:分配本身没有完成,垃圾收集器需要做的工作更少(这将节省时间)。

我同意其他人的观点,编译机器代码没有多大意义:请注意,无C/malloc与Java new/垃圾收集的成本相同或更高

NetBeans IDE带有内置的探查器;因此,您可以在该IDE中分析应用程序以发现瓶颈

我需要将Java用于桌面应用程序。我听说有 许多编译java的工具都是本地的,这是真的吗?这些工具有用吗 把java程序编译成机器代码

这样的程序确实存在,但在使用Java平台的一些更具动态性的功能时,可能会有一些折衷,比如您可能会失去在运行时加载新类的能力。JVM的启动速度可能很慢,但一旦启动,速度就足够快了


也就是说,我在这里没有看到任何人提到的一个解决方案是用替换在Swing中编写的代码。SWT工具包在底层使用本机代码。

您的Java应用程序是否真的存在性能问题,或者您是否只是听到有人说“Java很慢”?所有现代JVM都使用JIT编译器在运行时以本机方式编译代码。@GregHewgill,我确实听到许多开发人员说“java很慢”,所以将其编译为本机机器代码可能会大大提高应用程序的性能。java并不慢!对于非常旧的Java版本,这在一定程度上是正确的。跨语言基准:和。但是:通常情况下,它不会让一个快速的程序成为一个快速的程序,或者让一个缓慢的程序成为一个缓慢的程序。我们中的一些人已经为Java编写桌面应用程序多年了。它很好用。放松许多开发人员建议我使用C#而不是JAVA(用于windows应用程序)。我不知道是否有C#vs JAVA基准测试,但没有人建议我使用JAVA。。。。我喜欢它,因为我也使用Netbeans来开发GUI。Java(Java虚拟机)和C#(CLR)的技术非常相似。。。他们的虚拟机模型都是堆栈机器,并且充分利用了JIT编译…您想开发什么样的应用程序?根据类型,速度不是您需要关注的主要功能。你已经知道Java或C了吗?我会选择Java,因为我已经知道如何为它开发。是的,你是对的,但是如果我可以一次性编译应用程序,而不必永远在运行中编译它,我认为这样更好,不是吗?@Dail:不是。JIT有很多关于运行时使用的实际代码路径的信息,因此,它可以比静态编译代码更好地进行优化。它并不总是做得更好,但也不总是做得更糟。即时编译并不是“永远在运行中编译它”。@Dail,这里有一个例子:如果您有一个
if/else
语句,并且在运行时
else
案例比
if
案例更常见,那么JIT可以优先考虑更常见的案例。静态编译看不出哪种情况在实践中更常见,所以只能猜测。这太简单了,但希望它能让您了解为什么JIT比静态编译有优势。是的,我非常喜欢NetBeans!但是我不明白为什么如果你让100个开发者85%说“java很慢”。如果我不得不发布一个软件,我会担心,我想我不会把你们大多数的“85%”开发者称为“开发者”。这是荒谬的,我敢打赌,一个好的java程序员可以写出比任何语言都要快的Java代码。java已经在同一个位置上(考虑C++的替代品),剖析常常显示出瓶颈,比如XML处理。5%的代码占95%的时间,不是吗?我希望你对Johannes Weiß的回答感到满意,这很好。