编写最新或兼容的代码是更好的做法吗?

时间:2014-04-21 07:46:23

标签: java netbeans backwards-compatibility

我是一名使用NetBeans IDE的业余爱好者java程序员。我在Java编程中遇到的一个问题是选择正确的目标JRE版本。我知道我的大多数朋友至少拥有java 6,但很少有我编译的完全最新版本。我知道如何在NetBeans上编译特定的目标运行时环境;问题是通过使用早期的Java目标版本,编译器需要使用该版本编写的代码。

对于一个特定的例子,我偶尔会使用Java 8 lambda而不是new Runnable(){},但是编译器(或者至少是NetBeans)并不接受这种现代的#la;码。另一个例子是使用菱形运算符,或使用多异常catch语句,Java 6都不支持这种语句。语言不断发展,编译器也在不断发展,但旧版本的Java无法处理这种变化。为了分发我的代码,我被迫使用一些可能认为过时的代码。

我的问题是:为过时的目标版本编写Java以提供兼容性是一种良好的做法还是常见做法?是否有某种形式的翻译'或Java代码的交叉编译器?

3 个答案:

答案 0 :(得分:0)

  

我的问题是:为过时的目标版本编写Java以提供兼容性是否为良好做法或惯例?

这是常见的做法。

是否是"良好做法"是否依赖于上下文。在支持开发人员不想(或不能)升级的旧应用程序之间存在务实的权衡,并且通过不使用新的(并且可能是有益的)功能来阻止应用程序的开发。

没有普遍的"最好的"答案。

  

是否有某种形式的翻译'或Java代码的交叉编译器?

实际上,没有。对于旧版本的Java,有#34; retro-weavers"这让你可以跑更新的" Java on" old"平台。但是,这种方法似乎已经被Java 6淘汰了。

答案 1 :(得分:0)

要回答您的第一个问题,这实际上取决于您所工作的公司/办公室设定的标准。

根据我的经验,大多数时候大公司试图保持成熟和完善的开发平台,他们可能不会提供新语言的最前沿功能,但公司希望基础平台首先是稳定和安全的。如果代码库很大并且项目已经开发了很长时间,他们通常不会费心进入新平台,因为这意味着他们可能需要投入更多资源来重写/重构大量代码,这在经济上并不总是有利可图。

我喜欢使用您在个人项目中提到的那些功能,但在我的办公室工作中,我们仍在使用JDK6。

关于第二个问题,我认为现在没有可行的事情可以做"翻译"你提到过。

答案 2 :(得分:0)

根据我的经验,这不是行业中的大问题。 Java主要用在服务器上,而不是桌面上。设置具有所需Java版本的服务器并不是什么大问题。对于桌面应用程序,我也看到了使用该应用程序发布JRE的方法。使用60 MB JRE运送一个小应用程序(比如5 MB)有点难看,但在“企业环境”中它并不重要,并且是提供正确JRE的实用方法。但是,我不喜欢这种方法,因为它留下了一些悬而未决的问题,比如如何将安全更新发送到JRE。

顺便说一下:Java 6仍然受支持吗?使用旧的JRE是一个非常大的安全问题。