Java 10迁移建议

你好,再一次到另一个热点。 我的名字是Java Champions平台工程师兼DevOps专家Peter Pilgrim。

如您所知,Java 9引入了模块系统。 您可能正在将服务迁移到JDK 10或更高版本,或者至少在考虑中。 我对企业的一般建议是,您越早迁移,技术债务就越好。 在2018年9月发布Java 11时,更容易适应变化。

在撰写本文时,我建议在传统的单片系统上迁移作为严格的微服务编写的软件体系结构要容易得多。 为什么会这样呢? 可以一对一或定义的工作组来适应和更改微服务。 为此,您的微服务必须彼此独立,这意味着它们依赖于REST API或XML over SOAP over HTTP通信或其他远程调用协议。

迁移的最大障碍是工具,堆栈依赖项以及专有技术。 让我们对其中的每一个进行一些包装。

工具–所有主要的IDE现在都支持Java10。它们是NetBeans,Eclipse和IntelliJ2018。因此,编译基本Java程序应该没有问题。 我们大多数专业人士倾向于使用Gradle和Apache Maven等构建工具。 如果您依赖Maven,则需要更改编译器插件版本3.7.0或更高版本。 Gradle交付团队可以使用便捷的指南,其中介绍了如何为示例项目添加手动支持。 请注意,在撰写本文时,当前的Gradle发行版4.6不具有一流的支持。 不幸的是,Gradle需要花很多力气才能获得Java 9支持。 “构建Java 9模块”具有所有详细信息,如果您现在希望在团队的构建中获得Java 9模块的支持,请阅读本书。

堆栈依赖关系–最大的障碍是库的依赖关系。 如果它们是开源的,那么可能即将收到Java 9支持,并且很快就会推出。 许多专业的服务器端团队都依赖于Hibernate,Spring Framework,Spring Boot和Java EE的其他方面。 最糟糕的是,由于每个工程都依赖于其中的一个,因此实际的servlet容器可与Java 10一起使用。因此,强烈建议您亲自验证Tomcat,Payara和WildFly在Java 10运行时环境中执行。 它应在没有任何已部署WAR文件的状态下执行。 Pivotal在其最新版本的Spring Boot 2.0中已经为OpenJDK 9编写了轶事支持,您可能很幸运。

最后,从长远来看,对Java模块系统的了解会有所帮助。 因为最终所有最重要的框架和库都将被模块化,所以开发运维人员/平台工程师为什么会延迟对模块系统的学习。

工程师将不得不根据这些概念

  • 拆分包 – Java 9中的每个模块都必须包含唯一的包。 工作遗留和当前代码库中的许多JAR可能都有拆分的程序包,同一程序包显示一个或多个JAR。 这可能包括开源和商业第三方库。 然后,您的主要工作是重构和重新架构您拥有的模块,第三方供应商和图书馆团队将对他们的软件负责,他们将自己做。
  • 自动模块 – Java 9的这一概念自动从类路径中将JAR导出为模块
  • 未命名模块 –这种将类加载到模块系统之外但从类路径加载的概念。 不属于“命名模块”成员的类被认为是称为未命名模块的特殊模块的成员
  • 服务发现 – JDK 9中的服务API进行了改进,可以跨模块加载类。
  • 开放式模块 –此概念允许在运行时检查模块
  • 供应模块 –此概念定义模块之间的传递依赖
  • 模块化资源 –这个概念定义了加载资源,现在仅限于模块。 您需要另一个模块中的资源,然后必须在module-info.java文件中明确配置
  • 模块和类路径 -不幸的是,库编写者必须跨模块路径和类路径针对Java 8(非模块)和Java 10(模块)测试其代码库。 这是迁移的最大缺点。

我的第一个建议是找到这些拆分包。 我写了一段shell脚本和Python来帮助我编写一份总体报告。

就这样。 享受车程

这里是对本文内信息的引用:

  • 在Gradle中构建Java 9模块
  • 摇篮的状态和未来
  • Spring Boot和Java 9
  • 本周insSpring(2017年9月26日)
  • Hibernate对Java 9的支持
  • Tomcat JDK 9要求和下载
  • WildFly 11和OpenJDK 9可以一起使用

翻译自: https://www.javacodegeeks.com/2018/05/migration-advice-for-java-10.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《调制解调算法》专栏导航贴

关注公号【逆向通信猿】更精彩!!! 通信方面有关信号处理算法的MATLAB仿真,包含博主的一些宝贵经验,不定期更新!!! 本系列博克力求从简到繁,无论是刚接触通信的小白&…

Office系列完全干净卸载工具合集(最全)

使用 Microsoft Fix it 卸载 Microsoft Office 套件 一、Windows 7、Windows Vista或Windows XP下卸载Office 1.MicrosoftEasyFix50416 工具用来卸载office 2003 MicrosoftEasyFix50416_Office2003.msi 2.MicrosoftEasyFix50154 工具用来卸载office 2007 MicrosoftEasyFix50…

谓词::不适合Java

Jim Laskey在OpenJDK core-libs-dev邮件列表上最近的消息“ RFR:CSR – JDK-8203428 Predicate :: not ”指出了JDK Bug JDK-8203428 [“ Predicate :: not”]。 JDK-8203428的“摘要”指出:“引入新的静态方法Predicate :: not,这将使开发人…

缓冲区溢出漏洞攻击之用户登录

登录程序模拟 在以下程序中,可以使用三种不同的方法检查用户输入的账号和密码是否与存储的用户名和密码匹配。通过编译生成可执行文件,并对其进行测试。该程序会将用户输入的账号、密码与名为password.txt的文件中的账号、密码进行比对,如果二者匹配,则授予访问权限。而实…

【锁相环系列1】锁相环的基本原理

关注公号【逆向通信猿】更精彩!!! 基本概念 相位同步 指两个信号的频率相等,相位差为一个固定值。当 ω i = ω 0 \omega_i=\omega_0 ω

【锁相环系列2】数字判决反馈环之BPSK信号解调MATLAB仿真(含环路滤波器参数设置)

关注公号【逆向通信猿】更精彩!!! 仿真结果 频偏补偿之前的星座图,是一个“环”。 频偏补偿后的BPSK信号星座图 解调误码率曲线 <

hadoop emr_在Amazon EMR上运行Hadoop MapReduce作业

hadoop emr不久前&#xff0c;我发布了如何使用CLI设置EMR群集的信息。 在本文中&#xff0c;我将展示如何使用适用于AWS的Java SDK来设置集群。 展示如何使用Java AWS开发工具包执行此操作的最佳方法是展示我认为完整的示例&#xff0c;因此让我们开始吧。 设置一个新的Maven…

Apache Spark中的自定义日志

您是否曾经对运行了几个小时的Spark作业感到沮丧&#xff0c;但由于基础设施问题而失败了。 您会很晚才知道此故障&#xff0c;并浪费了数小时的时间&#xff0c;当Spark UI日志也无法用于事后检查时&#xff0c;它会更加痛苦。 你不是一个人&#xff01; 在这篇文章中&…

【MFC系列1】之简单Win32程序

一、位运算 标志位组合&#xff1a;wParam MK_RBUTTON|MK_CONTROL|MK_SHIFT 标志位的判断&#xff1a;wParam & MK_LBUTTON 标志位的分离&#xff1a;wParam & ~MK_RBUTTON; 二、调用约定 __cdecl_stdcall是C Declaration的缩写&#xff08;declaration&#xff0c…

【MFC系列2】Win32项目转换为MFC项目

关注公号【逆向通信猿】更精彩&#xff01;&#xff01;&#xff01; 一、MFC的组成 a)必须有一个CWinApp的派生类&#xff1b; b)必须用派生类在全局定义一个对象theApp; c)在派生类中必须重写InitInstance虚函数&#xff1b; d)MFC程序就用CWinApp派生类中的InitInstance虚…

servlet面试常问问题_50个Servlet面试问答

servlet面试常问问题Servlet是Java EE的一个非常重要的主题&#xff0c;所有Web应用程序框架&#xff08;例如Spring和Struts&#xff09;都建立在它之上。 这使servlet成为Java访谈中的热门话题。 在这里&#xff0c;我提供了50个servlet面试问题的列表&#xff0c;并提供了答…

Win10图片查看器打不开图片,报错内存不足

关注公号【逆向通信猿】更精彩&#xff01;&#xff01;&#xff01; 按如下设置即可

学习Java的最佳方法

Java是某些人可能会说很难学习的语言之一&#xff0c;而其他人则认为它与其他语言具有相同的学习曲线。 两种观察都是正确的。 但是&#xff0c;由于Java具有平台无关性&#xff0c;因此在语言方面具有相当大的优势。 Java是一种低级语言&#xff0c;它以一种简单的方式来实现…

【MFC系列3】永远点不到的按钮

变量的声明与定义 全局变量theApp的定义 CXXXXApp theApp; // 定义在其他类中想要访问全局变量theApp时&#xff0c;需在stdafx.h中进行声明 #include "XXXX.h" extern CXXXXApp theApp; // 声明三个被系统接管的消息&#xff08;缺省&#xff0c;虚函数回调&…

CSAPP:Attack lab

关注公号【逆向通信猿】更精彩&#xff01;&#xff01;&#xff01; 原文地址&#xff1a;https://www.jianshu.com/p/db731ca57342 本文介绍的是CSAPP书籍中的第三个lab: Attack lab。通过这个lab我们能够更加清楚和深入的了解到缓冲区溢出的隐患&#xff0c;以及如何利用缓…

antlr java_使用ANTLR和Java创建外部DSL

antlr java在我以前的文章中&#xff0c;有一段时间我写了关于使用Java的内部DSL的文章。 在Martin Fowler撰写的《 领域特定语言 》一书中&#xff0c;他讨论了另一种称为外部DSL的DSL&#xff0c;其中DSL是用另一种语言编写的&#xff0c;然后由宿主语言进行解析以填充语义模…

【MFC系列-第7天】MFC类库封装原理

关注公号【逆向通信猿】更精彩&#xff01;&#xff01;&#xff01; 运算符重载 operator RECT* () {return this; }CString类库 例1 CString str;int n str.GetLength();::GetSystemDirectory(str.GetBuffer(1000), 1000);n str.GetLength();str.ReleaseBuffer();//必须…

【MFC系列-第8天】小型软件项目开发

第8天 小型软件项目开发 8.1 记事本开发 小技巧&#xff1a;用VC6新建工程&#xff0c;以资源方式打开系统自带notepad.exe中的MENU资源&#xff0c;加入到自己新建的工程中&#xff1b;然后再添加到VS工程中&#xff0c;即可获取现有exe的菜单资源。 EndDialog中传入的参数…

Spring休眠教程

1.简介 在本文中&#xff0c;我们将演示如何利用最流行的ORM&#xff08;对象关系映射&#xff09;工具之一的Hibernate的功能 &#xff0c;该工具可将面向对象的域模型转换为传统的关系数据库。 Hibernate是目前最流行的Java框架之一。 由于这个原因&#xff0c;我们在Java Co…

【MFC系列-第9天】MFC消息映射机制的原理

关注公号【逆向通信猿】更精彩&#xff01;&#xff01;&#xff01; 第9天 MFC消息映射机制的原理 9.1 对话框常用的回调函数 a)窗口创建时的消息和虚函数包括&#xff1a;WM_CREATE&#xff0c;WM_INITDIALOG,和PreSubclassWindow等&#xff1b; b)窗口关闭时的消息和虚函…