jdk6 迁移到jdk8
就是这样,伙计们! “是时候进行升级了,”昆汀·亚当在谈到Java 8业务用户的“公共更新”龙头将于2019年1月关闭这一事实时说。 马丁·汤普森(Martin Thompson)也解释说:“ Java 11有一些不错的改进,但没有杀手级功能来推动采用。”
Java 11是下一个计划的LTS (长期支持)版本。 这是开发人员可能想要尝试的唯一原因吗? 让我们找出答案!
![载入中... Loading ...](https://i-blog.csdnimg.cn/blog_migrate/31abce032fdaf6b812dd519e247ec016.gif)
不要错过这个Java影响者访谈系列的前两个部分:
您认为Java 11是否重要或足够大,足以使他们希望放弃Java 8?
认识有影响力的人
![](https://i-blog.csdnimg.cn/blog_migrate/12e208ba044f9b1821cb2de4c7602b04.png)
Jessica Kerr( @ jessitron )是Atomist的首席工程师。
![](https://i-blog.csdnimg.cn/blog_migrate/c69df7dbcfd0269682c42bc5e427958b.png)
Guillaume Laforge( @ glaforge )是Google Cloud Platform的开发倡导者,Apache Software Foundation的Apache Groovy PMC主席和Java Champion。
![](https://i-blog.csdnimg.cn/blog_migrate/b155561b71cd86b22a98525f8a7ee75d.png)
Lukas Eder( @ lukaseder )是Data Geekery GmbH的创始人兼研发负责人,该公司是jOOQ背后的公司和Java冠军。
![](https://i-blog.csdnimg.cn/blog_migrate/4edec7a4822f3ecd349b6cfe9967bc15.png)
Josh Long( @ starbuxman )是Pivotal的Spring Developer Advocate。 他是5本书和3本畅销视频培训的作者。 他还是Java冠军。
![](https://i-blog.csdnimg.cn/blog_migrate/518460093f9ca5b35587813188d2b862.png)
Martin Thompson( @ mjpt777 )是一名顾问,培训师和教练,专门设计高性能和低延迟的系统。 他还是Java冠军。
![](https://i-blog.csdnimg.cn/blog_migrate/188d9e2599b8f28e07ec19f1eeaf6764.png)
昆汀·亚当(Quentin Adam)( @ waxzce )是Clever Cloud的首席执行官。
Markus Eisele: 这种特殊情况与开发人员的“重要性”不完全相同。 我认为可行性是更大的挑战。 由于模块系统的复杂性,公司已将迁移从8推迟到9。 这也是零点发布,几乎无法投入生产。
如果他们已切换,则完全不用模块化就可以使用它。 对于10而言,情况也是如此。有了11个强制性模块化,这将是许多项目的第一个真正的迁移里程碑。 现在,我们在使用模块系统以及如何迁移和构建新软件方面拥有相当丰富的经验。 我的猜测是,直到需要这些项目并从一开始就使用Java 11设置新项目之前,Java 8到10都将被视为遗留项目。
杰西卡·科尔(Jessica Kerr): 不。 他们可以跟上公司选择前进的步伐。
Guillaume Laforge: 开发人员和企业可能会坚持使用长期支持版本,并将这些版本定位为下一次升级,而不是每6个月升级一次。
开发人员和企业可能会坚持使用长期支持版本,并将这些版本作为下一次升级的目标。
在与我合作过的客户公司中,迁移到JDK的较新版本通常是一项重大的IT决定。 但是,情况可能会越来越少,因为越来越多的公司将其工作负载容器化并越来越多地使用云。
因此,我们必须查看更广泛的DevOps实践,Cloud Native方法是否还可以帮助公司更快地升级,或者他们是否仍将坚持较慢的升级速度。
我没有水晶球,对不起!
Lukas Eder: 并不是从功能的角度来看,但是Oracle即将结束的免费Java 8 LTS将会产生影响。 我已经从很多客户那里听说他们正在考虑尽快使用OpenJDK,但是这种企业变更所带来的运营影响是巨大的,因此我不确定在2019年初会发生什么。
乔什·朗(Josh Long): 我是这样认为的。 许多组织将其旧应用程序停在Java 8上,因为它得到了支持。 Java 11汇总了早期发行版中所有有趣的功能,并且代表了合理的平台重构位置,并确保了发行版的稳定性。
Eberhard Wolff: 由于Java 11具有长期的支持,即使是保守的 开发人员也可能最终会迁移到Java11。 从开发人员的角度来看, 这些新功能并不是 那么庞大,因此我认为它们没有 足够的动力来迁移到 Java 11。 立即发布新版本。
马丁·汤普森(Martin Thompson): Java 11有一些不错的改进,但没有杀手级功能来推动采用。 Java 5具有泛型,而Java 8具有Lambda。 在Java的历史中,这是我见过的让人兴奋的仅有的两个版本。 没有主要功能,人们需要非常平滑的升级路径,否则他们将等待。 现在,我看到人们已经完成了向Java 8的迁移,他们对任何不容易的升级都没有兴趣。
还请参见: 权力列表:2018年Java最具影响力的20名
昆汀·亚当(Quentin Adam): Java 9引入了Jigsaw,它很棒而且有用,但是所有的营销信息都在此之上,以及使用这些模块有多困难。 许多用户只关注于此,而将迁移视为一个非常困难的项目,从而降低了采用速度。
我认为许多使用替代语言,构建器工具或CI项目的Java生态系统领导者对此负有很多责任。 因为与传统的Java应用程序相比,语言移植的难度要高得多。 但是ZGC等新功能和更短的发布周期将恢复更新周期,几个月后,我们将看到新版本的采用率再次增长。
您对此有何看法?
Markus Eisele: 对于 已经 是Oracle客户的公司来说,这不是什么大问题 。 我可以想像公司许可证和捆绑包。 这个问题将为他们解决。 Red Hat或IBM的其他替代产品指日可待。 将有某种方式获得对Java遗留物的支持。 这是一个过程的变化,但是我认为这不会破坏Java。
使软件随着计算机和人们的变化而运行是昂贵的。
杰西卡·克尔(Jessica Kerr): 如果说“破坏Java”是指“夺走我永远活在过去的能力,并期望一切继续进行下去”,那么是的,他们是对的。 使软件随着计算机和人们的变化而运行是昂贵的。 软件不是资本支出,只要我们以这种方式进行建模,我们就会感到不和谐。
Lukas Eder: 那些“很多Java开发人员”是谁? 因为我还没遇见他们。
有OpenJDK,其他供应商可以免费将安全更新应用于任何旧Java版本。 此外,为此类服务付费是完全可以的,毕竟,如果您不想付费,只需升级到仍免费的最新版本即可。
我认为这些更改将使Java和社区受益。
Josh Long: Java 8于2014年发布,资源有限。 我认为永久支持旧版本的软件是不合理的。 我们的Spring团队一直在发布新版本,并尝试尽可能适应新版本。 在某个时候,您只希望人们能从您所做的工作和升级中看到价值。 Java的最新发行版中没有任何更改会威胁生产应用程序的稳定性。 当然,有些问题将需要花费十到十五分钟的时间进行谷歌搜索,但是这些问题是可以解决的,并且是易于理解的问题。
Eberhard Wolff: 我们拭目以待。 生产中过时的Java版本实际上很 常见。 当然,最好在 更长的时间内 获得免费的受支持的Java版本 。 但是,要继续Java的成功,它 必须是一个商业上可行的平台。 这意味着必须有一些 收入来证明投资的合理性。 因此,我认为 为额外的支持时间 要求 金钱 是公平的 。
此外,仍然存在 OpenJDK,因此如果他们 对Oracle的工作 不满意 , 则社区可以解决该问题 。
还请参见: Meet Jib:打包Java应用程序从未如此简单
Martin Thompson: 这是Java策略中一个有趣的变化。 Java作为平台一直可以免费获得,这就是我认为它取得成功的原因之一。 我可以看到Oracle希望从Java中获得商业利益,但他们需要谨慎并明智地选择。
生产中过时的Java版本实际上很常见。
鉴于.Net Core现在可以在Linux上使用并且可以免费使用,那么对于Java来说这是一个危险的时期。 C#当前是一种更优雅的语言,但是它没有Java生态系统。 微软正在采取措施开放.Net并扩展其生态系统,它证明了Serverless的一个不错的平台。 Java很难受到Oracle外部的影响,并且随着提议的更改而变得越来越不可用。
昆汀·亚当: Oracle在做Oracle。 他们是在这里赚钱,为旧版本支付支持费用是一种久经考验的商业模式。 但是无论如何,这是迫使组织迁移到下一个Java版本的好方法。 如果对旧版本的支持时间过长,则有可能会停止采用它,而且没人会希望Java 8成为我们的Python 2。 现在该升级了!
下周,我们将讨论即将弃用的Nashorn JavaScript引擎和ZGC。
如果您想与Java推动者和摇动者见面,请于10月在伦敦加入我们。
JDK 11的17个功能
为了刷新您的记忆,JDK 11包含以下功能 :
引入nests ,这是一种与Java编程语言中嵌套类型的现有概念一致的访问控制上下文。 嵌套允许类在逻辑上属于同一代码实体,但被编译为不同的类文件,可以访问彼此的私有成员,而无需编译器插入可访问性增强的桥接方法。
309:
扩展Java类文件格式以支持新的常量池形式CONSTANT_Dynamic
。 加载CONSTANT_Dynamic
会将创建委托委派给bootstrap方法,就像将调用动态调用站点链接到bootstrap方法一样。
315:
改进现有的字符串和数组内部函数,并在AArch64处理器上为java.lang.Math
sin,cos和log函数实现新的内部函数。
318:
开发一个可以处理内存分配但不实现任何实际内存回收机制的GC。 一旦可用的Java堆耗尽,JVM将关闭。
320:
从Java SE平台和JDK中删除Java EE和CORBA模块。 这些模块已在Java SE 9中弃用,并声明要在将来的版本中删除它们。
321:
通过JEP 110标准化JDK 9中引入的,在JDK 10中更新的已孵化的 HTTP客户端API。
323:
在声明隐式类型的lambda表达式的形式参数时,允许使用var
。
324:
如RFC 7748中所述,使用Curve25519和Curve448实现密钥协议。
327:
328:
提供低开销的数据收集框架,以对Java应用程序和HotSpot JVM进行故障排除。
329:
实现RFC 7539中指定的ChaCha20和ChaCha20-Poly1305密码。 ChaCha20是一种相对较新的流密码,可以代替较旧的,不安全的RC4流密码。
330:
增强Java启动器以运行作为Java源代码的单个文件提供的程序,包括通过“ shebang”文件和相关技术从脚本内部使用该程序。
331:
提供一种可通过JVMTI访问的Java堆分配采样的低开销方法。
332:
实现传输层安全性(TLS)协议的1.3版。
333:
Z垃圾收集器(也称为ZGC)是可伸缩的低延迟垃圾收集器。
335:
弃用Nashorn JavaScript脚本引擎和API,以及jjs工具,以在将来的发行版中删除它们。
336:
在java.util.jar
弃用pack200
和unpack200
工具以及Pack200 API。
翻译自: https://jaxenter.com/java-influencers-series-part-3-148682.html
jdk6 迁移到jdk8