在 Tomcat 6-Java 7/8 中运行 Tomcat 6-Java 6 WebApps
Posted
技术标签:
【中文标题】在 Tomcat 6-Java 7/8 中运行 Tomcat 6-Java 6 WebApps【英文标题】:Run Tomcat6-Java6 WebApps in Tomcat6-Java7/8 【发布时间】:2015-08-06 18:49:46 【问题描述】:我有运行 Java6 的 Tomcat6。它运行的 WebApp 也是用 Java 6 编译的。
目前,无法使用 Java7/8 编译 WebApp,也无法迁移到 Tomcat7/8。唯一可能的举措是将 Tomcat6 的 JRE 更改为 Java7/8。
使用 Java7/8 运行相同的 Tomcat6 会以任何方式提高性能吗?或者,相反,它会导致麻烦和/或降低性能吗?
在此先致谢并致以最诚挚的问候。
【问题讨论】:
【参考方案1】:如果您打算安装新应用程序或重新编译现有应用程序,这很有意义。较新版本的 Java 是向后兼容的,它们带来了新的语言特性(Java 7 - multicatch、资源尝试、String switch-case...、Java 8 - Lambdas 和 Stream API),一些安全问题得到了解决等,但老实说,我怀疑您是否会通过升级 JRE 体验到任何性能改进。关于可能的风险,使用旧版本 Java 编译的应用程序应该可以在较新的 JVM 上顺利运行,但是如果您尝试反过来,您将遇到著名的major.minor version error。
如果可能,请考虑至少将 Tomcat 升级到版本 7,这将使您的应用程序能够使用例如Servlet 3.0 功能。
另请参阅:
JDK7 release notes JDK7u6 bug fixes【讨论】:
谢谢米伦。您对内存管理、垃圾收集或内存泄漏有意见吗?我同意仅通过升级 JRE 来提高 WebApp 的性能是不可能的,但通常可能会获得“更好”的 JVM。减少垃圾收集时间,改进内存管理等等。感谢你的宝贵时间。最好的问候,费德里科。 @FedericoAlvarez 欢迎您!关于垃圾收集和内存管理,在 JDK 7 中引入了新的 G1 垃圾收集器(检查 oracle.com/technetwork/java/javase/tech/…),而在 JDK 8 中不再有 PermGen 空间(检查 ***.com/questions/18339707/…)。最好的问候! 非常感谢。最重要的方面是在 java8 中运行 java6 编译代码没有“可见的”惩罚。也许我们会从这个新的垃圾收集器中得到提升。所以,会试一试。再次感谢。 @FedericoAlvarez - 如果您决定有一天重新编译您的应用程序,环境就会准备就绪。祝你好运!以上是关于在 Tomcat 6-Java 7/8 中运行 Tomcat 6-Java 6 WebApps的主要内容,如果未能解决你的问题,请参考以下文章