6

当我坐在这里修改PircBot时,我刚刚注意到整个后端都是为支持 Java 1.1而编写的。它有一个自定义队列实现,使用哈希表,基于 wait() 和 notify() 信号的自定义生产者/消费者实现等。即使是 Commons-lang 也缺乏对 Java 5 带来的泛型等事物的任何支持。您可以提取大量其他非常流行的框架示例,它们尽可能地支持 1.1。

我的问题是为什么?为什么 Java 社区的某些部分拒绝支持新版本?我遵循这个理论:旧版本使用旧版本的框架和旧 JVM,新版本使用升级的框架和 JVM。您可以使用软件升级所有内容。

现在我可以部分理解人们仍在运行 Java 1.5,但是 1.1?如果您在此之前运行任何东西,那么您显然不会因为愚蠢的政策/害怕未知而升级 JVM,因此不会升级到较新版本的软件。那我们为什么还要支持他们呢?

在相关的说明中,如果您正在编写一个新框架,您是否应该支持 <1.5 的任何内容?您是否应该尝试分叉现有框架,将其升级到 1.5,然后与维护人员讨论使用它?

更具体的讨论(这是关于一般支持的): 是否还有充分的理由支持 JDK 1.4?

放弃对 JRE 1.3 的支持

4

4 回答 4

2

因为它很容易!从 Java 1.1 到 Java 1.4,只引入了微小的语言特性(strictfp例如)。那么,如果你不需要,为什么要限制自己。因此,假设您编写一个StringUtil类或解析 Word 文件,那么就没有关系了。从 Java 5 开始,您就有了语言改进,当然还有从 Java 1.0 到 Java 1.1 的内部类。

这仅适用于语言,而不适用于库。当然还有一些有趣的补充。

于 2010-08-01T07:53:52.447 回答
1

我认为最常见的原因是,后来版本中引入的新功能无论如何都没有使用。我的意思是,如果一个库不使用泛型或高级并发特性等新特性,那么根本就没有兼容性开销。

于 2010-08-01T08:00:55.573 回答
1

向后兼容?

更改 JVM 支持的级别,应该保证一个主要版本。即版本 1.x 转到 2.x 以表明这一点。

另外,我相信已经阅读过要获得手机的最大覆盖范围,您需要以 1.1 为目标。不过那可能是旧的。

于 2010-08-01T08:24:24.953 回答
1

我知道至少有一家商业企业决定他们永远不会超越 1.1,以便他们可以使用相同的源代码在 java JVMS 和 .NET 上永远运行。

于 2010-08-01T10:37:56.243 回答