Java 7已经存在了一段时间了。现在,如果要将应用程序迁移到Java 7而不进行任何更改(代码/配置),是否存在任何固有的优点或缺点?我很想知道这种迁移过程中遇到的问题。
修改: 通过迁移我的意思是代码将保持不变但运行时将更改为Java 7正如我提到的没有代码/配置更改,因此我认为应该影响应用程序的是新的编译器/ VM级别默认优化。所以我一直在寻找任何会影响整体应用程序行为的东西。
答案 0 :(得分:8)
目前我发现我的应用程序(用Java 7开头编写)的明显缺点是,大多数人没有7,并且需要花费一点力气才能获得它。写入时的默认Java download page仍然指向Java 6,而不是7,并且大多数当前的Linux发行版似乎也默认安装了6个。 Ubuntu 11.10是第一个在其存储库中拥有Java的人。
同样在Ubuntu方面,我注意到的一件事是,即使安装了Java 7,I haven't found a clean way to check if it's the default yet(再次,很可能不是。)我只是使用一个shell脚本解析update-alternatives --query java
的输出并适当地启动它。
我有意识地决定使用7,因为我可以利用其中的一些新功能,并且当应用程序实际上达到我认为它的时候alpha / beta我希望Java 7无论如何都会获得更多的立足点!
优点几乎都围绕使用添加的功能 - 我发现使用资源构造的尝试已经使我的许多代码使用IO东西更容易阅读(没有更多嵌套的try / finally在try / catches中)和我也在使用一些额外的API,比如filewatcher API。我也更喜欢事实上JComboBox和基础模型现在是通用的,这样可以在Swing应用程序中节省大量的内容。
简而言之,如果你实际上没有利用Java 7的任何功能,而你只是为了升级它,那么在Java 7至少变得有点之前没有什么动力去做更成熟。它使我的代码更加清晰,并且对一些额外的库有所帮助,但它也引起了一些令人头疼的问题。
答案 1 :(得分:3)
我还会考虑在java 6或更低版本中运行新代码(java 7)的概率/需求变化,因为某些功能将无法编译如下:
确保在切换之前不太可能强制执行您考虑的项目中使用的java版本。
答案 2 :(得分:2)
问题实际上是“何时”,而不是“如果”。如果您迫切需要一些新的Java 7功能(可疑),那么很明显。
否则我个人会等一年左右才能淘汰任何其他可能的showstoppers&在认真考虑迁移生产和UAT环境之前,头疼。
但是,你应该已经拥有一个运行Java 7的环境,只是为了了解你将要做什么。 Java 6将在某个时候退役,你应该做好准备进行转换。
答案 3 :(得分:1)
我认为大多数情况下你会很好地进行迁移,尽管你应该查看Oracle提供的有关Java 1.6和Java 7之间不兼容性的链接。 http://www.oracle.com/technetwork/java/javase/compatibility-417013.html
源代码级别不兼容,例如Java 7中的“改进的异常处理”,可能会导致一些问题
答案 4 :(得分:0)
这是一个很好的问题,我的答案完全基于java 7提供的经验和新功能。