如何确定我的Java应用程序的最低JRE版本和系统要求

18

我用Eclipse IDE使用Java编写了一个应用程序,现在需要知道运行该应用程序所需的最低JRE版本!我知道某些方法只能在较高的JRE下使用,但我想知道确定我的应用程序的最高要求的最简单方法是什么,因此任何建议都将不胜感激...

另外,当谈到要求时,我希望获得有关确定软件一般的最低系统要求(即最小RAM数量)的任何建议或方法...

提前感谢。


3
你知道工程师如何确定一座桥能承受多少重量吗?他们通过驾驶越来越重的卡车来测试直到桥塌掉,然后再重新修建。现在反过来做...从JDK 7开始编译你的应用程序,并使用更早期的JDK直到它不能编译为止。内存也是如此...逐渐减少内存使用直至崩溃。是的,这有点玩笑 :) - Paul
2
单纯编译并不足够——我差点也给出了这个答案。因为 JDK/JRE 的旧版本可能包含当前版本中没有的错误,仅仅编译并不能保证程序能正确执行。你需要 (1) 编译,并且 (2) 让你的整个测试套件通过特定 JRE 的测试。如果你没有测试套件,那么支持旧版 JRE 将会更加复杂。 - jefflunt
@Paul 我有点怀疑会有人回答这样的问题,我想这是有很好的理由的;似乎没有简单的方法来计算这些需求。谢谢你的回答 Paul,但请看看 normalocity 的回答,我认为他提出了一个很好的观点,我同意我应该劝阻使用旧的 JRE。 - Andy
1个回答

11
  • 方法一:关于最低的JRE版本,这会比较困难。最简单的方法是要求使用与你构建项目相同或更高版本的JRE,例如JRE 6.x.x或更高版本。
  • 方法二:安装多个JDK,在Eclipse中使它们都可用,并且每次更改构建版本时运行应用程序测试套件,确保所有测试都通过。允许所有测试通过的JDK最早版本就是可以运行的最低JRE版本。仅仅成功编译你的应用程序是不够的,因为之前的JRE / JDK版本可能存在错误,虽然允许编译成功,但无法允许正确的程序执行。
  • 方法三:客户端始终要求最新的版本,因为Oracle不断修补安全漏洞,如果你有这种控制能力,最好要求客户端使用最新版本。

至于内存方面,很简单。当JVM启动时,它设置了'最大'内存量(我相信默认值可能为128MB),这是一个硬性限制,你的应用程序不能超过这个限制而不崩溃。随着时间的推移,对你的应用程序进行剖析,调整JVM的内存设置,并找出运行你的应用程序需要的(a)具有可接受性能和(b)不会抛出OutOfMemoryError所需的最小内存量,这样就完成了。

参考:如何配置JVM选项和内存?

对于其他要求,例如CPU的要求,情况变得有些模糊了。市面上有很多种CPU,系统产生的吞吐量不仅取决于CPU速度,还取决于硬盘速度、系统中安装的内存数量、网络接口的速度(如果你正在编写网络应用程序)以及其他因素。对于这样的要求,您需要在各种系统上进行测试,并划定一个线,然后说:“如果您的硬件至少与X、Y、Z同等强大,您可以期望获得可接受的性能。”

另一件事是构建基准测试或某种性能记录,并将该性能数据发送回给您。许多应用程序都这样做。安装某些软件时会出现“我们可以向母船发送匿名使用数据吗?”这个问题你知道吗?常见的数据包括系统特定的细节,如RAM、CPU、硬盘型号和其他硬件细节(您确定与您的应用程序相关的任何数据),以及性能日志数据。采用这种方法,您可以从许多不同的系统配置中获得大量的性能数据,而无需在内部拥有大量不同配置的计算机。

您也可以为程序崩溃和错误发生相同的事情-将堆栈跟踪、系统信息和其他相关数据转储到发送给您的日志文件中-但是,当然,只有当您的用户同意将这些数据发送回给您时


感谢你的回答normalocity,虽然我不太确定你在说什么RAM。你是指我应该将RAM的最低要求设置为安装的JRE的最低要求吗?实际上理论上每个要求应该都是相同的!至于JRE,我想我会坚持使用JRE 6,但始终建议使用最新版本。 - Andy
是的,我认为你已经解决了RAM的问题。当你启动JVM时,你可以指定,“嘿,不要占用超过32MB的RAM”,或者任何你喜欢的任意数量的RAM。所以,用不同的最小值多次运行你的应用程序(我提供了一个设置JVM内存设置的链接),并且允许(1)你的应用程序以可接受的性能运行,和(2)不会因为内存耗尽而崩溃的最小值,就成为你的最小RAM要求。 - jefflunt
谢谢,这是一个有趣且信息丰富的见解。我认为我已经得出结论,最低JRE版本应该是JRE 6,最小RAM要求为128MB,因为这是安装Java所必需的,而且我相信Java将在Windows 200及以上版本上运行!如果Java需要安装,我看不出在我的应用程序上进一步调查这些要求的意义,特别是因为我没有合适的测试设施。 - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接