如何从 Classic JVM 迁移到 IBM J9 JVM

简介

从 IBM i 7.1 开始,IBM Classic Java Virtual Machine 不再被 IBM i 支持了。IBM Technology for Java Virtual Machine(又名 IBM J9 JVM)成为了唯一被支持的 JVM。这篇文章旨在阐述这两种 JVM 的区别,同时帮助用户和开发人员把他们的应用程序从 Classic JVM 移植到 J9 JVM。在 IBM i 上,所有版本的 Java 开发包(JDK)都以 Java 许可程序的 option 的形式发布(例如:IBM i 7.1 上的 5761JV1 产品)。

尽管这篇文档很细致和全面的讨论了 Classic JVM 和 J9 JVM 的区别,这并不意味着从 Classic JVM 到 J9 JVM 的迁移是很困难的,或者需要对应用程序进行很大的修改。对于大多数用户来说,从 Classic JVM 到 J9 JVM 的改变是一个非常简单的过程。大多数情况下,只需要改变一下 JAVA_HOME,他们的应用程序就能工作。这篇文档的目的是给那些出现问题的用户,此文档可以帮助他们快速了解问题是什么,并且尽快将问题解决。

用户界面的区别

选择想要的 JDK 版本

过去,当使用 Classic JVM 时,系统属性"Java.version"被用来为 Java 应用程序设置特定版本的 JDK。例如,使用命令"Java -DJava.version=1.5 HelloWorld"后, Classic JVM 会用 JDK 1.5 运行 HelloWorld。

对于 J9 JVM,系统属性"java.version"不被支持。唯一设置 JDK 版本的方式,是设置环境变量 JAVA_HOME。例如,如果把 JAVA_HOME 设置成 "/QOpenSys/QIBM/ProdData/JavaVM/JDK50/32bit",我们可以让 J9 JVM 在 JDK 1.5 32bit 上运行。J9 为每个 JDK 提供了 32bit 和 64bit 两个版本。

CL 命令

与关联 Java 程序相关的命令

Direct execution(直接执行) 是一种从 Java 类文件,jar 文件或 zip 文件中创建 Java 程序的技术。当使用 Classic JVM 的时候,所有的 jar 文件或 class 文件都被要求附带一个 *JVAPGM 对象。 这个对象包含了 2 个主要部分:一个是预先验证过的字节码,另一个是 direct execution 产生的代码。

从 IBM i 6.1 开始,在 direct execution(DE)模式下运行 Java 程序的功能不再被支持了,direct execution 的代码不能再被运行,但是 Classic JVM 依然要求 *JVAPGM,因此我们依然可以受惠于这种预先验证的字节码。

在 IBM i 7.1,一些 Classic JVM 的命令依然可用。这些命令是: ANZJVAPGM、CRTJVAPGM、DSPJVAPGM、CHGJVAPGM 和 DLTJVAPGM。在 i 7.1 上,jar 和 class 文件可以有 *JVAPGM 对象,但是这些对象会被 JVM 完全忽略掉。在 i 7.2 上,任何 jar 或 class 文件只要有 *JVAPGM 对象,这个 *JVAPGM 对象都会被删除。

JVM 作业管理和分析的命令

在 IBM i 上,有一些命令用来帮助管理 JVM 作业和调试问题。有的命令适用于 Classic JVM,有的适用于 J9 JVM,有的两个都适用。下面是这些命令的列表:

ANZJVM: 只适用于 Classic JVM。

DSPJVMJOB: 对 Classic 和 J9 JVM 都适用。

DMPJVM: 只适用于 Classic JVM。

GENJVMDMP: 从 i 6.1 开始存在,只适用于 J9 JVM。

PRTJVMJOB: 从 i 6.1 开始存在,只适用于 J9 JVM。

WRKJVMJOB: 从 i 6.1 开始存在,只适用于 J9 JVM。

JAVA 和 RUNJVA

JAVA 命令和 RUNJAVA 命令的 GCHMAX 选项的取值 *NOMAX 只适用于 Classic JVM。J9 JVMs 不支持 *NOMAX 值,而是用 -Xmx 设定的值作为最大的堆大小。如果不设置 -Xmx,J9 JVM 使用 2G 作为默认值。

"Java Hello"和"Java QIBMHello"

Classic JVM 提供了一个"Hello"类文件在它类路径的根目录下,而 J9 JVM 提供了 QIBMHello.

System Properties

在 IBM i 的以前版本中,Classic JVM 支持一些特定的系统属性,这些属性在 J9JDK 中不再被支持。使用这些系统属性的用户需要找到在 J9 JVM 中相应的系统属性 ( 或者方法 ) 来实现他们的需求。表 1 是这些不再被 J9 支持的属性列表:

时间: 2024-11-16 18:37:21

如何从 Classic JVM 迁移到 IBM J9 JVM的相关文章

从Classic JVM迁移到J9 JVM的参考依据和技术指导

从 IBM i 7.1 开始,IBM Classic Java Virtual http://www.aliyun.com/zixun/aggregation/39569.html">Machine 不再被 IBM i 支持了.IBM Technology for Java Virtual Machine(又名 IBM J9 JVM)成为了唯一被支持的 JVM.这篇文章旨在阐述这两种 JVM 的区别,同时帮助用户和开发人员把他们的应用程序从 Classic JVM 移植到 J9 JVM.在

IBM 开源J9 JVM

在今年的 JavaOne 上,IBM J9 JVM 团队负责人 Dan Heidinga 分享了主题为< J9: Under the Hood of the Next Open Source JVM>的演讲,其中有提到 IBM 计划提供开源版本的 J9--OpenJ9.具体开源时间没有公布,不过有表示会尽量和 Java 9 同期. https://yqfile.alicdn.com/94b347c1fa7b866e874867d660447045d39f7466.png" >

从IBM SmartCloud Enterprise安全迁移到IBM SoftLayer

本文向您展示将 IBM WebSphere Application Server V8.0 BYOL 64 位实例迁移到 SoftLayer 环境的过程. 先决条件 迁移过程的先决条件包括: 一个 Cloud Path for IBM 帐户.将服务器迁移到 SoftLayer 的 IBM 云客户可在 Cloud Path 注册页面 上注册一个免费帐户. 一个 IBM SmartCloud Enterprise 帐户. 一个 SoftLayer 帐户. 成功完成 "将实例从 IBM SmartCl

将J2EE项目迁移到IBM Lotus Expeditor V6.1

简介:使用 IBM Lotus Expeditor Toolkit 将 J2EE 项目迁移到 IBM Lotus Expeditor V6.1,然后 把迁移后的项目部署在 Lotus Expeditor 运行时上.本文讲解迁移 J2EE 项目所需的步骤以及 Lotus Expeditor 不支持的 J2EE 特性. IBM Lotus Expeditor 这种 IBM 产品支持用熟悉的编程模型将 J2EE 应用程序迁移到客户机上.IBM Lotus Expeditor Toolkit 使开发人员

WebSphere迁移: 从JBoss v4.x迁移到IBM WASCE v2.x

WebSphere 迁移: 从 JBoss v4.x 迁移到 IBM WebSphere Application Server Community Edition v2.x 简介 Java Enterprise Edition 5(Java EE5)是面向开发和运行分布式.多层 Java 应用程序的编程平台.已开发的应用程序运行在其中一个 Java EE 容器上.两个容器实现相同的规范,因此可以无缝地将针对一个应用服务器开发的应用程序迁移到另一个应用服务器.然而,由于类加载器机制.应用程序打包方

从Apache Tomcat迁移到IBM WebSphere Application Server的说明

Apache Tomcat 是一个 HTTP 服务器和 servlet 容器,常用于简单的 Web 应用程序,以及使用不需要完整的 Java EE 服务器的框架的应用程序.然而,用户经常会发现,当对 Apache Tomcat 有更多需求时,其最初的简单性就会变得复杂且不实用. 例如,也许 Apache Tomcat 安装的占用空间会变得太大,因为您需要添加第三方库来提供所需的功能.或者,服务器的启动时间也可能是一个问题,因为对 server.xml 文件的任何配置更改都需要重新启动 Apach

从IBM SmartCloud Enterprise迁移到IBM SoftLayer

本文介绍了将 IBM DB2 Enterprise Developer V9.7.1 64 位实例迁移到 http://www.aliyun.com/zixun/aggregation/13727.html">SoftLayer 环境的过程. 先决条件 实现该迁移过程的先决条件是: 一个 Cloud Path for IBM 帐户.正在将服务器迁移到 SoftLayer 的 IBM 云客户可以在 Cloud Path 注册页面 上注册一个免费帐户. 一个 IBM SmartCloud En

BYOL实例从IBM SmartCloud Enterprise迁移到IBM SoftLayer

本文向您展示了将 IBM Cognos Business Intelligence V10.2 64 位 BYOL 实例安全迁移到 http://www.aliyun.com/zixun/aggregation/13727.html">SoftLayer 环境的过程. 先决条件 迁移过程的先决条件包括: 一个 Cloud Path for IBM 帐户.将服务器迁移到 SoftLayer 的 IBM 云客户可在 Cloud Path 注册页面 上注册一个免费帐户. 一个 IBM Smart

了解Java虚拟机JVM的基本结构及JVM的内存溢出方式_java

JVM内部结构图 Java虚拟机主要分为五个区域:方法区.堆.Java栈.PC寄存器.本地方法栈.下面 来看一些关于JVM结构的重要问题. 1.哪些区域是共享的?哪些是私有的? Java栈.本地方法栈.程序计数器是随用户线程的启动和结束而建立和销毁的, 每个线程都有独立的这些区域.而方法区.堆是被整个JVM进程中的所有线程共享的. 2.方法区保存什么?会被回收吗? 方法区不是只保存的方法信息和代码,同时在一块叫做运行时常量池的子区域还 保存了Class文件中常量表中的各种符号引用,以及翻译出来的