ITPub博客

首页 > Linux操作系统 > Linux操作系统 > IBM i 与 J9 VM

IBM i 与 J9 VM

原创 Linux操作系统 作者:qingcheng_yuan 时间:2011-09-06 09:04:44 0 删除 编辑
 

J9 VM 与 Classic JVM 的不同

除 32 位与 64 位版本的区别外,J9 VM 与 Classic JVM 相比还有一些方面的不同,例如:

  1. JVM 实现和运行环境不同

    与 Classic JVM 不同,IBM J9 VM 是运行在 IBM i Portable Application Solutions Environment(PASE)中的一个应用。而 Classic JVM 是运行在 IBM i Technology Independent Machine Interface(TIMI)层之下,SLIC 层的产品。

  2. IBM i 工具支持的不同:

    IBM i 提供了一些运行和分析 Java 应用及任务的命令行命令。这些命令有些只支持 Classic JVM,有些只支持 J9 VM。例如,只支持 Classic JVM 的有:ANZJVM,DMPJVM;只支持 J9 VM 的有:GENJVMDM,PRTJVMJOB,和 WRKJVMJOB。

  3. JVM 上开发和运行 Java 应用的不同:

    • 对环境变量(Environment Variable)的支持不同。如对于 file.encoding,Classic JVM 选择与当前运行 job 的 CCSID 一致,而 J9 VM 则是通过环境变量 PASE_LANG 和 QIBM_PASE_CCSID 的值来确定。
    • 系统属性(System Property)的支持不同。例如对一些 Classic JVM 支持的系统属性(如 os400.define.class.cache.file),J9 VM 不再支持。
    • IBM i 相关特性的支持不同。这方面的区别包括,J9 VM 不再支持“Adopted Authority”,J9 VM 需要本地方法必须编译为 TERASPACE ENABLED 等。
    • 其他关于开发和运行 Java 应用差异的详细内容请参考”IBM JVM in IBM i5/os 红皮书”。
  4. 性能方面的不同。经 IBM 测试,J9 VM 在性能上平均比 Classic JVM 提高了 7%-10%。

虽然 Classic JVM 与 J9 VM 存在上述的一些不同,对客户的影响并不大,运行在 Classic JVM 的 Java 应用仍然很容易移植到 J9 VM 上,因为这两种 JVM 都符合 Java 规范的要求。对未受 JVM 运行环境不同影响的 Java 应用,可以不做修改直接运行在 J9 VM 上。对受到影响的,也可以按照 IBM 提供的方案修改后运行在 J9 VM 上(“IBM JVM in IBM i5/os 红皮书”中有关于如何修改应用程序的详细信息)。因为两种 JVM 都能够支持 Java 应用的良好运行,IBM i 经过 V5R4 和 V6R1 两个版本的过渡后,逐渐取消了对 Classic JVM 的支持(从 IBM i V7R1 开始,Classic JVM 已经不再支持)。为什么最终要用 J9 VM 取代 Classic JVM 呢?考虑起来,最主要有以下两个因素:

  1. J9 VM 在性能上更优于 Classic JVM。上文总结两种 JVM 的不同时,已经提到 J9 VM 性能的改善。特别需要提到的是 J9 VM 提供的 32 位的版本 JVM,它更加适用于中小型应用。有研究表明对于中小型应用,32 位 JVM 在堆占用上比 64 位少近 40%,性能最高有 20% 的提高。这于 IBM i 面向中小企业的市场定位更为相合;
  2. J9 VM 是 IBM 多个平台共用的,IBM 集中了最好的研究和开发团队,使得 J9 VM 缺陷的修改和新技术的应用更加及时和高效。此外多平台共用,也表明 J9 VM 的通用性更好。而 Classic JVM 作为 IBM i 独有的 JVM 需要单独的投入才能保证及时的更新。

总结

至此,我们初步介绍了 J9 VM,比较了它与 Classic JVM 的差异,也总结了为什么 IBM i 要以 J9 VM 来取代 Classic JVM。最后,再简单介绍一下 IBM i 上如何使用 J9 VM 运行 Java 应用。J9VM 是运行在 IBM i PASE 中的一个应用,而 IBM i 的 PASE 提供的是类似 AIX 的运行环境,这使得 J9 VM 在IBM i QSHELL 环境下的使用与 AIX 中非常相近。下面的示例就是一个简单的使用 J9 VM 的过程。

  1. 通过 QSH 命令进入 shell 环境;
  2. 通过环境变量 JAVA_HOME 来设置要使用的 JDK 版本,假设我们使用 JDK60 32bit:export JAVA_HOME=/QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit,需要注意大小写,/QOpenSys 下大小写敏感;
  3. 随 JDK 发布会有一个 QIBMHello 类,执行这个类会在控制台输出 QIBMHello 几个字符;通过执行它就可以验证 JDK 是否安装正确,运行命令:java QIBMHello

关于 J9 VM 在 IBM i QSHELL 中使用和支持的详细资料,以及 IBM i ILE 环境中的支持,请参考 IBM i 信息中心。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/507279/viewspace-706714/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-24

  • 博文量
    12
  • 访问量
    32524