java 迁移数据_Java 10迁移建议

java 迁移数据

你好,再一次到另一个热点。 我的名字是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支持。 Building Java 9 Modules包含所有详细信息,如果您现在想在团队的构建中获得Java 9模块的支持,请阅读。

堆栈依赖关系–最大的障碍是库的依赖关系。 如果它们是开源的,那么可能即将收到Java 9支持,并且很快就会推出。 许多专业的服务器端团队依赖Hibernate,Spring Framework,Spring Boot和Java EE的其他方面。 最糟糕的是,由于每个工程都依赖于其中的一个,因此实际的servlet容器可与Java 10一起使用。因此,强烈建议您亲自验证Tomcat,Payara和WildFly在Java 10运行时环境中执行。 它应在未部署任何WAR文件的情况下以vanila状态执行。 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模块
  • Gradle的状态和未来
  • 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

java 迁移数据

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

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

相关文章

IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录

按下组合键 Command ; 打开【项目结构】配置窗口;然后选择左侧菜单栏的【Modules】;然后在右侧的模块列表中,选择你要配置的模块;接着选择右侧界面中的【Sources】标签。 首先添加内容根目录(Content Root&#xff0…

c语言动态内存分配数组,【C】动态内存分配

## 动态内存分配的意义C语言中的一切操作都是基于内存的变量和数组都是内存的别名内存分配由编译器在编译期间决定定义数组的时候必须指定数组长度数组长度是在编译期就必须确定的需求:程序在运行过程中,可能需要使用一些额外的内存空间malloc和freemall…

javafx 调用java_Java“地铁”表(JavaFX)

javafx 调用java再次嗨,这次,TableView“ Metro”样式被添加到JMetro JavaFX主题。 这会将JMetro版本放大到3.1.0。 我之所以没有添加表格样式,是因为奇怪的是在Fluent设计系统(以前是Metro)中还没有表格的定义。 有一…

IntelliJ IDEA for Mac 修改项目模块的名称

按下组合键 Command ; 打开项目结构窗口,选择左侧边栏的菜单【Modules】,然后选择你要修改的模块,在右侧的【Name】输入框可以修改名称,具体操作如下图所示: 注:模块名称虽然修改了,但是模块的…

二分查找算法举例说明C语言,C语言快速排序与二分查找算法示例

本文实例讲述了C语言二分排序与查找算法。分享给大家供大家参考,具体如下:题目:首先产生随机数,再进行快速排序,再进行二分查找。实现代码:#include #include #include void quiksort(int a[],int low,int …

gradle跟pom_Gradle多项目构建–父pom式结构

gradle跟pom当您来自Maven背景时,很可能已经习惯了父pom结构。 现在,在进行gradle时,情况有所不同。 想象一下有一个包含接口和各种其他实现的项目的场景。 这将是我们的项目结构。 multi-project-gradle -- specification -- core -- i…

java streams_使用Stream.peek在Java Streams内部进行窥视

java streams对于刚接触JDK 8的管道和流的Java开发人员而言, Stream接口提供的peek(Consumer)方法可以是有用的工具,有助于可视化流操作的行为。 即使是更熟悉Java流和聚合操作的Java开发人员,有时也会发现Stream.peek…

算法提高 日期计算c语言,算法提高 日期计算

//规定年份2017年1月1日 星期7#includeusing namespace std;int rn(int n) //判断是否是润年{if (n%40 && n%100!0 || n%4000)return 1;return 0;}int md[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){int year,month,day;int i,sum0,td0;while (cin>>…

IntelliJ IDEA for Mac 模块源文件的编译输出路径配置

按下组合键 Command ; 打开【项目结构】窗口,接着在左侧菜单栏中选择【Modules】,接着在右侧模块列表中选择要设置的模块,接着选择右侧的【Paths】标签,如下图所示: 不知道搞个【test ouput path】的好处在哪里&…

IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块

文章目录添加模块的入口创建新的项目模块添加模块的入口 添加新的模块的入口有两个,如下图所示: 第一种方式,【File】 --> 【New】 --> 【Module】: 第二种方式,打开【Project Structure】窗口,然后…

react api_使用Java EE 8中的React式API加速服务

react api服务通常可以通过异步处理进行优化,即使不改变其对外界的行为。 某些服务效率不高的原因是,它们需要等待其他服务提供结果才能继续下去。 让我们看一下如何在不等待外部REST服务的情况下调用它们,并独立进行多个并行调用&#xff…

android申请权限一次性申请多个,android 6.0以上动态一次申请多个权限-最美解决方案...

目录背景危险权限申请权限思路申请权限流程干货后续一.背景android23 API新增危险权限校验,需要手动获取:二.危险权限:日历数据android.permission-group.CALENDARandroid.permission.READ_CALENDARandroid.permission.WRITE_CALENDAR相机and…

IntelliJ IDEA for Mac 直接将模块硬盘上的根目录删除会怎么样

不通过 IDEA 删除模块文件,而是直接手动从硬盘删除模块文件,造成的结果如下图所示: 【模块内容导航窗格】的内容是根据以下两个配置文件的信息从硬盘中加载进来的: 项目根目录/.idea/modules.xml 这个文件记载了配置文件【模块名…

java 谓词_谓词::不适合Java

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

android root权限函数,android 4.4下app永久获取root权限的方法

本帖最后由 jackson 于 2017-4-16 20:55 编辑通过参照[FAQ11414]android KK 4.4 版本后,user 版本su 权限严重被限制问题说明http://www.voidcn.com/blog/wds1181977/article/p-6157006.html明确要修改三个地方:(1)把dalvik/vm/native/dalvik_system_Zyg…

IntelliJ IDEA 项目开发中各个目录的关系

项目根目录(Project Root):本地硬盘中存放项目内容的根目录 项目名称(Project Name):IDEA 保存的项目名称,默认和项目根目录的名称相同,可以修改。有啥作用?通过 IDEA 部…

apache spark_Apache Spark中的自定义日志

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

android中暂停服务,Android 装逼技术之暗码启动应用

前言喜欢的小伙伴欢迎关注,我会定期分享Android知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿。什么是暗码?在拨号盘中输入*#*##*#*后,APP 可以监控到这些输入&am…

JShell 详解

文章目录一、简介二、为什么使用 JShell三、参考示例启动 JShell退出 JShell声明定义基本类型的变量声明定义一个方法覆盖已存在的变量、方法、类的定义查看 JShell 默认导入的包自动补全功能列出所有键入的源列出已声明方法及其签名加载外部的源代码查看 JShell 提供的所有指令…

graphql_GraphQL在Wildfly群上

graphql“ GraphQL是API的查询语言,是用于使用现有数据完成这些查询的运行时。 GraphQL为您的API中的数据提供了完整且易于理解的描述,使客户能够准确地询问他们所需的内容,仅此而已,使随着时间的推移更容易开发API并启用强大的开…