相信大多数的研发人员都遇到过关于jdk7 升级 jdk8 的情况,对于企业应用在升级的时候需要特别注意:
1- 从jdk7 升级 jdk8 后,机器的JVM内存参数要进行调整,否则会出现报错,原因是JDK7 与JDK8 的内存模型发生了变化。
比如一版jdk7 的jvm参数为如下:
JAVA_OPTIONS=“-Xms2048M -Xmx2048 -XX:MaxNewSize=1024M -XX:MaxNewSize=1024m -XX:PermSize=512M -XX:MaxPermSize= 512M -XX:survivorRetio=8 -XX....”
jdk8:
JAVA_OPTIONS=“-Xms2048M -Xmx2048 -XX:MaxNewSize=1024M -XX:MaxNewSize=1024m -XX:MetaspaceSize=512M -XX:survivorRetio=8 -XX....”
由于jdk7的关于参数区,需要预先指定空间,若超过后会报outOfMemeryError PermGen space ,而jdk8 原本在堆空间中的 常量池与方法区 被转移到了元数据区中去了,这样就不需要指定permSIze 的最小与最大内存空间,而实际当中往往很难精准的判断出这个空间的有效值,因此jdk8废除了这样的模式,把参数与方法区的内测独立到了元数据区,而元数据区默认是与机器剩余的内存空间共享的,若不指定则最大值未机器的剩余内测空间的最大值。但建议还是要设置。
JVM 的演变历史https://blog.csdn.net/tlk20071/article/details/77841841
2- 个别开源工具,在升级jdk8 后,比如cglib,由于本身jdk7、jdk8的反射机制有差异,在非规范的POJO写法,若遇到ibaties 的动态DYNAMIC 化实例化动态类会出现异常,而cglib在遇到异常的情况却未抛出而转用jdk代理方式来初始化属性。
非规范写法如下:
public Object setNameId(String Id) {
this.productId = nameId;
}
public Object setCustId(String Id) {
this.custId = custId;
}
正确的做法:
public void setNameId(String Id) {
this.productId = nameId;
}
public void setCustId(String Id) {
this.custId = custId;
}
相关推荐
而JDK7和JDK8虽然在安全性上有增强,但仍然可能存在与旧版JDK不兼容的情况,特别是在处理特定的加密密钥长度时。 为了解决这个问题,"jdk7-8兼容包(微信企业号接入JDK6和JDK7及JDK8加解密失败处理)"提供了针对不同...
Spring 5.0和4.2.0是两个重要的版本,分别对应不同的Java Development Kit (JDK) 版本,即JDK 8和JDK 7。在选择Spring版本时,与所使用的JDK兼容性是关键因素。 首先,让我们详细了解一下Spring 4.2.0。这个版本是...
使用这个版本的JAR包意味着你的开发环境或服务器必须是基于JDK7的,否则可能会遇到兼容性问题。 JDK8版的Kettle JAR包: 随着JDK8的发布,Kettle也进行了相应的更新以支持新特性。JDK8引入了lambda表达式、方法引用...
### WAS 8.5.5.0 升级至 8.5.5.13 及配置 JDK1.8 手册 #### 一、背景介绍 在 IT 领域,系统的稳定性和兼容性至关重要。随着技术的发展,软件环境也需要不断升级以满足新的需求。IBM WebSphere Application Server...
8. **异常链**:JDK 7允许在捕获异常时保留原始异常信息,形成异常链,方便调试和问题定位。 9. **改进的Switch语句**:在JDK 7中,switch语句可以接受字符串作为参数,使得代码更加简洁。 10. **集合改进**:对`...
总结一下,本篇文章主要介绍了如何在Linux环境中使用JDK 8的RPM包安装Java开发环境,并利用FastDFS搭建图片服务器。通过这两个关键组件的结合,你可以构建一个高效、稳定的图片存储和访问系统。记住,每个步骤都需要...
总结起来,"java.security.InvalidKeySize"异常是由于Java的加密策略限制,而JDK8的“jce_policy-8.zip”文件提供了解除这些限制的手段。通过更新策略文件,开发者可以使用更强大的加密算法,提升系统的安全性。在...
总结来说,JDK8在Windows 64位系统上的应用,不仅提供了强大的开发工具,还引入了一系列提升开发效率和代码质量的新特性。Lambda表达式、新日期时间API、函数式接口、默认方法、Optional类以及并行处理的优化,都是...
在本文中,我们将详细讨论如何在Linux环境中安装`jdk-8.rpm`安装包,以及安装过程中可能遇到的问题和解决方法。 首先,你需要确保你的Linux系统支持RPM包管理器。大多数基于Red Hat的系统如CentOS、RHEL都内建了这...
**Java Development Kit (JDK) 7 for Windows 10 64位...总的来说,JDK 7在某些特定情况下,例如解决Eclipse与数据库的连接问题,仍然具有重要的实际价值。了解其特性并正确配置,可以有效地提升开发效率和解决问题。
《Dubbo Admin 2.5.4:JDK7与JDK8的双重选择》 在分布式服务框架领域,Dubbo无疑是中国开源界的瑰宝,它由阿里巴巴开发并维护,致力于提供高性能、轻量级的服务治理方案。而本文将重点讨论的是Dubbo的服务管理工具...
- **升级JDK**:如果有新的版本,可以使用`sudo rpm -Uvh jdk的新rpm包`来升级。 - **卸载JDK**:使用`sudo rpm -e jdk`移除已安装的JDK。 3. **配置环境变量:** - **编辑配置文件**:通常需要修改`/etc/...
在实际测试中,"初步测试可以运行通过"表明升级后的RuoYi框架在JDK 21和Spring Boot 3.2.5环境下能够正常启动和运行,但全面的兼容性和性能测试仍然是必要的。这包括但不限于数据库连接、API接口调用、定时任务、...
此外,JDK 8u321还包括了安全性更新和性能优化,因此定期升级到最新版本对于保障系统安全和提升应用性能具有重要意义。 在分布式环境中,JDK 8u321同样扮演着关键角色。例如,在分布式数据库、微服务架构或者Hadoop...
总结来说,JDK是Java开发的基石,JDK 8u144是专为Linux和Windows系统设计的一个版本,它提供了一整套开发和运行Java程序所需的工具和环境,是每一个Java开发者不可或缺的工具。通过不断升级和优化,JDK确保了Java...
总之,JDK8的JCE支持256位加密是一个重大的安全升级,它为开发者提供了更强大的加密工具,增强了Java平台上的数据保护能力。这不仅提升了应用程序的安全性,也为满足日益严格的合规性要求提供了可能。
总之,当Spring 3.2.0与JDK 1.8发生冲突时,需要理解两者在语言特性、API支持和性能优化方面的差异,并通过升级、配置或调整代码来解决冲突。同时,保持框架和JDK的同步更新,可以避免许多潜在的兼容性问题。
然而,"Maven 3.0.5"特别强调了与JDK 1.7的兼容性,这意味着使用此版本的Maven可以顺利处理基于Java 7的项目,无需升级JDK,这对于那些无法或不想升级JDK的团队来说是理想的选择。 **Maven 3.0.5特性**: 1. **改进...
在文件名称列表中提到了"jdk-8u181-linux-x64.rpm",这是实际的安装文件,用户可以通过执行相应的RPM命令来安装JDK,例如使用`sudo rpm -ivh jdk-8u181-linux-x64.rpm`。这会将JDK的组件安装到系统的指定路径,并...
由于JDK 1.6已经不再受到官方支持,所以在新的开发环境中可能需要考虑升级JDK版本。 ojdbc7.jar:此驱动适用于JDK 1.7及以上版本,并且同样支持Oracle数据库12c。随着JDK版本的提升,ojdbc7.jar引入了一些新特性,...