在一天中,我必须执行一系列小型和小型的快速Java命令行程序。在Windows上,要从命令行(如Hello World)运行简单的Java程序,由于启动java.exe进程的开销,有时需要大约5秒钟。程序需要一秒钟才能执行,但启动程序的开销在总执行时间中占主导地位。有没有办法优化这个?
是否有类似Java shell的东西我可以用来执行进程中的程序?类似于Python shell?
答案 0 :(得分:2)
这可能有些过分,但您可以设置像Tomcat或Glassfish这样的应用程序服务器,并在服务器中运行您的程序。据我所知,Java Servlets最初的目的之一就是消除与传统CGI程序相关的创业。
我对Java知之甚少,所以我不知道是否有更简单的解决方案。但是Tomcat等已经可以使用了,所以你不需要编写自己的服务器程序。
编辑:其他人指出了一个类似的问题,How to speed up Java VM (JVM) startup time?该问题的答案之一提及Nailgun,这看起来像是一个近乎完美的问题解决方案。
答案 1 :(得分:1)
一种替代方法可能是尝试运行Groovy shell以动态调用类中的main
方法。它同样运行纯Java和Groovy语法代码。
答案 2 :(得分:0)
您可以编写自己的shell。您可以编写一个命令行程序,嵌入这些“实用程序”的所有功能。你启动它,保持它运行,然后通过你决定的一些语法进行查询。
答案 3 :(得分:0)
启动时间慢是java长期存在的问题之一;但它一直在改善。有一件事是可行的(但很复杂)是保持一个长时间运行的java进程来处理命令。使用较轻的客户端(可能是脚本编写)将命令发送到长时间运行的服务器。