使用 Nailgun 与 netcat 为 Java 应用程序提供快速 CLI 的优缺点是什么?

vit*_*aut 5 java performance jvm netcat

此处此处已经讨论了减少 Java 和 Scala 应用程序启动时间的方法。建议的解决方案之一是使用客户端 - 服务器方法与Nailgun或简单的手写服务器通过 TCP 套接字与netcat通信。

一方面,Nailgun 就是为此目的而设计的。另一方面,它的最后一个版本 0.7.1 是在 2005 年,我有点担心开发是否停止以及它的稳定性。netcat 似乎是一个非常标准的工具,可在许多 Linux/Unix 系统上使用。但是这两个系统对我来说都是新的,所以我想知道我的观察是否正确,以及使用 Nailgun 与 netcat 为 Java 应用程序提供快速命令行界面的其他优点和缺点是什么?

PS 您可能想知道为什么要改进启动时间,因为它已经很合理(在我的机器上大约为 100 毫秒),或者为什么不使用 C/C++ 来代替。第一个是因为应用程序将被执行多次(例如从 bash 脚本中的循环)并且不幸的是这个使用场景不能改变,第二个是因为这个控制台程序将只是现有部分的替代接口(CLI)用Java编写的软件。

Pet*_*Mmm 4

我的建议是现在就使用钉枪,并证明这种解决方案确实对启动时间有积极的影响。

如果您已经确认瓶颈是启动时间,那么您可以实现一个非常简单的客户端/服务器,其优点是可以自由使用任何通信程序(netcat、wget、curl、perl 等)并完全控制协议。

  • 你好,这里是钉枪作者。如果您愿意将应用程序编写为服务器并处理套接字通信,并且 netcat 方法满足您的需求,那么确实没有理由使用指甲枪。使用nailgun 的一些原因包括自动重定向应用程序的System.in/out/err、客户端返回退出代码、将客户端环境传输到服务器、在同一虚拟机中运行多个应用程序的能力以及在nailgun 中运行现有应用程序的能力根本没有修改。它非常稳定并且用于商业产品,尽管如果有时间我会添加一些功能。干杯! (11认同)