我应该为小程序指定什么版本的Java?

我最近部署了一个似乎需要Java 6 Update 24的applet。我假设这个需求的原因是我用来创建applet的匹配的JDK版本(我是Java新手)。

我的applet需要为已经安装了某个版本的Java的用户提供Java下载/更新这一事实是我的一个重要问题。 我正在创建的小程序转成networking漫画,所以非常具有破坏性。 在使用了最新版本的Java之后,似乎我能够假设我所获得的大多数读者将不得不更新Java以继续阅读/播放。

是否有一个最佳实践,使用哪个版本的Java来使最终用户容易使用applet? 任何关于此的阅读材料都会非常有帮助。 如果我不需要新function,是否应该使用旧版本的Java? 我使用Slick进行2D游戏。

主要的兼容性问题通常在主要版本之间。 如果您为Java 6编译,它将不会在Java 5上运行,但会抛出java.lang.UnsupportedClassVersionError 。

因此,Java 6 Update 24上编写的程序应该可以在较低版本的Java 6上运行。但是,调用在次要版本中添加的方法的风险很小,导致java.lang.IncompatibleClassChangeError或其子类。 发生这种情况的可能性非常小,通常在没有明确地testing旧版本的情况下就可以逃脱。

Stendhal的目标是Java 6,但是试图与Java 5大体上兼容。在过去的一年中,拥有Java 5的用户数量下降了很多。 我认为这是因为Sun对Java的自动更新所做的巨大改进。 现在我们已经达到了0.1%左右,所以我们正在考虑完全放弃对Java 5的支持。

从理论上讲,如果您不想要任何人下载新的JVM(如果已经有JVM),则必须定位Java 1.0。 实际上,如果不是所有的访问者,你可能都会期望至less有一个1.4的JVM,最可能的是1.5或更高。

顺便说一句。 如果使用1.6.0_24进行编译,那么在任何1.6 JVM上都可以正常运行,而不需要JVM更新。

就个人而言,我不会再打扰1.4或更早的JVM。 那些不在Oracle(以前称为Sun)的支持之下,用户应该升级(如果不是使用小程序的话,将会被迫访问其他网站)。

Java se6已经有一段时间了,但是它的资源非常less,所以如果你可以开发java五本书,比如java中的杀手游戏编程和java开发游戏,那么你应该没问题,因为它们是为java se5编写的并在其领域中被认为是最好的。

另外,如果你使用的是slick2d,我认为它大部分可以和java 5一起工作,没有任何交互,所以我会说java 5的目标。

另一件要考虑的事情是,java自动更新,如果用户有Java 4 +,他们将升级到Java 6。

考虑到Java 6于2006年12月发布,并且运行在几乎所有主要的操作系统上。 考虑到Java 6并没有在Java 5上真的添加任何语言function,如果您不使用任何Java 6function,则可以返回。 不过考虑到Sun在2009年11月停止了对Java 5的支持,因此对Windows 9x的支持我不会写。

强制你的用户至less有Java 6有其他的好处,以及它:

  • 保证您的用户不会因使用过时的库而导致性能下降。
  • 减less您需要支持的JVM数量。 我曾经参与过因次要版本不兼容而失败的项目。 这很less见,但当它发生的时候很糟糕。 因此,最好定位你正在开发的版本或更好的版本,礼貌地询问用户升级,而不是直接让应用程序崩溃,因为你没有testing版本1.5 Update 6。
  • 改进您的编码风格和标准。 在风格上,Java有一个最光荣的枚举实现之一,但你至less需要使用版本1.5来访问它。
  • 消除实施弃用function的可能性。 (没有多less,但是确实存在。)
  • 把你的升级path简化到1.7,这个function已经很久了。
  • 一些较旧的JVM有安全问题。 强制用户进行升级有助于保护他们免受恶意程序的攻击,这些恶意程序当然是由其他人编写的。

有很多其他的理由来强迫用户拥有1.6,但是如果不知道你的具体要求,需要花几天的时间才能列出。 最后,虽然他们是没有什么理由针对较旧的Java版本,除非你特别必须。