选择运行 Java 程序的方式

简介: 在运行 Java(TM) 程序时,您可以选择希望使用的方式。所有方式都验证代码并创建 Java 程序对象来存放预验证格式的程序。

在运行 Java(TM) 程序时,您可以选择希望使用的方式。所有方式都验证代码并创建 Java 程序对象来存放预验证格式的程序。可使用下列任何一种方式:

  • 解释方式
  • 直接处理
  • “及时”(JIT)编译
  • “及时”(JIT)编译并直接处理
选择方式 详细信息
解释方式

在运行时对每个字节码进行解释。

有关以解释方式运行 Java 程序的信息,参见运行 Java(RUNJVA)命令

直接处理

方法的机器指令在首次调用该方法期间生成并保存下来,以供程序下次运行时使用。并且,整个系统还共享一个副本。

有关使用直接处理方式来运行 Java 程序的信息,参见运行 Java(RUNJVA)命令

“及时”(JIT)编译

方法的机器指令在首次调用该方法期间生成,并在 Java 虚拟机的运行期间得到保存。

要使用“及时”编译器,需要将编译器值设置为 jitc。可以通过添加环境变量或设置 java.compiler 系统属性来设置该值。请从以下列表中选择一种方法来设置编译器值:

  • 从 iSeries 服务器的命令行提示符下,通过使用“添加环境变量”(ADDENVVAR)命令来添加环境变量。然后,使用“运行 Java”(RUNJVA)命令或 JAVA 命令来运行 Java 程序。例如,使用:
    ADDENVVAR ENVVAR (JAVA_COMPILER) VALUE(jitc)
    JAVA CLASS(Test)
    
  • 在 iSeries 命令行上设置 java.compiler 系统属性。例如,输入 JAVA CLASS(Test) PROP((java.compiler jitc))
  • 在 Qshell Interpreter 命令行上设置 java.compiler 系统属性。例如,输入 java -Djava.compiler=jitc Test
在设置此值之后,JIT 编译器便在运行 Java 代码之前对所有 Java 代码执行优化。
“及时”(JIT)编译并直接处理

最常见的使用“及时”(JIT)编译器的方法是使用 jit_de 选项。当使用此选项运行时,已对直接处理进行了优化的程序会以直接处理方式运行。未对直接优化进行优化的程序以 JIT 方式运行。

要将 JIT 方式与直接处理方式配合使用,您需要将编译器值设置为 jitc_de。可以通过添加环境变量或设置 java.compiler 系统属性来设置该值。请从以下列表中选择一种方法来设置编译器值:

  • 通过在 iSeries 命令行上输入“添加环境变量”(ADDENVVAR)命令来添加环境变量。然后,使用“运行 Java”(RUNJVA)命令或 JAVA 命令来运行 Java 程序。例如,输入
    ADDENVVAR ENVVAR (JAVA_COMPILER) VALUE(jitc_de)
    JAVA CLASS(Test)
    
  • 在 iSeries 命令行上设置 java.compiler 系统属性。例如,输入 JAVA CLASS(Test) PROP((java.compiler jitc_de))
  • 在 Qshell Interpreter 命令行上设置 java.compiler 系统属性。例如,输入 java -Djava.compiler=jitc_de Test
在设置此值之后,将使用为直接处理而创建的类文件的 Java 程序。如果该 Java 程序不是为直接处理创建的,则 JIT 在运行之前优化类文件。有关更多信息,参见“及时”编译器与直接处理的比较

运行 Java 程序的方法有三种(CL、QSH 和 JNI)。每一种方法都有唯一的方法来指定方式。下表显示了如何完成此操作。

方式 CL 命令 QShell 命令 JNI 调用 API
解释 INTERPRET(*YES) -Djava.compiler=NONE -interpret os400.run.mode="interpret"
DE INTERPRET(*NO) -Djava.compiler=NONE
  • os400.run.mode=
    "program_created=pc"
  • os400.create.type=
    "direct"
JIT INTERPRET(*JIT) -Djava.compiler="jitc" os400.run.mode="jitc"
JIT_DE(缺省) INTERPRET(*OPTIMIZE) OPTIMIZE(*JIT) -Djava.compiler="jitc_de" os400.run.mode="jitc_de"
 
目录
相关文章
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
1月前
|
存储 Java
Java:编写程序,计算两个数的和、差、积、商和余数。docx
Java:编写程序,计算两个数的和、差、积、商和余数。docx
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
25 0
|
7天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
30 3
|
20天前
|
Java Maven Spring
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
27 0
|
22天前
|
Java Maven
运行maven项目出现Error:java: JDK isn‘t specified for module ‘XXX‘
运行maven项目出现Error:java: JDK isn‘t specified for module ‘XXX‘
11 0
|
22天前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
29天前
|
Java
java程序
re是java运行时的环境,包含jvm和运行时所需要的类库 jdk是java开的程序包,包含jre和开发人员使用的工具 jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程
16 0
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
58 0