在使用本资料及其支持的产品之前,请阅读声明中的信息。
此版本的用户指南适用于 IBM 32-bit SDK and Runtime Environment for Windows, Java Technology Edition, V6 以及所有后续发行版、修订版和服务更新,直到在新版本中另有声明为止。
(C) Copyright Sun Microsystems, Inc. 1997, 2007, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.
本用户指南提供有关 IBM(R) 32-bit SDK and Runtime Environment for Windows(R), Java(TM) Technology Edition, V6 的一般信息,以及关于 IBM 实现与 Sun 实现相比较所具有的差异的特定信息。
请阅读本用户指南及以下 Sun Web 站点上的更多详尽文档:http://java.sun.com。
SDK 和 Runtime Environment 在以下产品上受支持:
支持以下虚拟环境:
请注意 IPv6 只有在 Windows XP 和 Windows Server 2003 上才受支持。
Diagnostics Guide 提供有关 IBM Java 虚拟机的更多详细信息。
本用户指南是发行版的一部分,只适用于该特定发行版。请确保拥有与所用发行版相对应的用户指南。
术语"Runtime Environment"和"Java 虚拟机"在本用户指南中可互换使用。
对本版本的用户指南所作的技术更改(除了那些轻微或明显的更改之外):通过信息中心查看时,将以蓝色 V 形标出;通过 HTML 或彩色打印副本查看时,将以红色标出并在更改的左侧标有竖线;或者,通过 PDF 查看时,将在更改的左侧标有竖线。
程序代码并非设计用于或旨在用于实时应用程序,如(包括但不限于)飞机、飞机流量、飞机导航和飞机通信的联机控制;也不用于任何核设施的设计、构造、操作或维护。
IBM SDK 是一个开发环境,用于编写和运行符合 Java 6 核心应用程序接口(API)的 applet 和应用程序。
SDK 包含 Runtime Environment for Windows,专门让您能运行 Java 应用程序。如果安装了 SDK,那么表示已包括 Runtime Environment。
Runtime Environment 包含 Java 虚拟机以及包括类文件的支持文件。Runtime Environment 只包含 SDK 中找到的类的子集,允许在运行时支持 Java 程序,但不支持编译 Java 程序。Runtime Environment for Windows 不包含任何开发工具,如 appletviewer.exe 或 Java 编译器(javac.exe)或仅用于开发系统的类。
另外,提供了 Java Communications 应用程序编程接口(API)程序包以与 Runtime Environment for Windows 一起使用。可以在使用 Java 通信 API(JavaComm)中找到它的相关信息。
通常,使用先前版本的 SDK 运行的任何 applet 或应用程序都应可以使用 IBM 32-bit SDK for Windows, V6 正确运行。但不保证使用本发行版编译的类可以在先前的发行版上工作。
IBM 32-bit SDK for Windows V6 是使用 Microsoft Visual Studio .NET 2003 构建的。
有关发行版之间的兼容性问题的信息,请访问以下 Sun Web 站点:
http://java.sun.com/javase/6/webnotes/compatibility.html
http://java.sun.com/j2se/5.0/compatibility.html
http://java.sun.com/j2se/1.4/compatibility.html
http://java.sun.com/j2se/1.3/compatibility.html
如果要将 SDK 用作其他产品(例如 IBM WebSphere(R) Application Server)的一部分,并且从先前级别的 SDK(可能为 V5.0)升级,那么串行化类可能不兼容。然而,类在服务更新之间可以兼容。
自 V5.0 起,IBM Runtime Environment for Windows 包含新版本的 IBM Java 虚拟机和 Just-In-Time(JIT)编译器。
如果您要从较早的 IBM Runtime Environment 进行迁移,请注意:
SDK 包含多个开发工具和一个 Java Runtime Environment(JRE)。本节描述 SDK 工具和 Runtime Environment 的内容。
完全以 Java 编写的应用程序不得依赖于 IBM SDK 目录结构(或那些目录中的文件)。任何对 SDK 目录结构(或那些目录中的文件)的依赖性都可能导致应用程序的可移植性问题。Java 本机接口(JNI)应用程序将有一些微小的依赖性。
用户指南、Javadoc 以及随附的许可证、版权文件、javadoc 以及演示目录是该 SDK for Windows 附带的仅有文档。您可以通过访问以下 Sun Web 站点查看 Sun 的软件文档,也可以从该站点下载 Sun 的软件文档包:http://java.sun.com。
有一系列类和工具可与标准 Runtime Environment 一起使用。
标准 SDK 附带的工具和参考信息的列表。
许可证文件(C:\Program Files\IBM\Java60\docs\content\<locale>\LA_<locale>)包含 SDK for Windows 软件的许可证协议(其中 <locale> 是语言环境的名称,例如 en)。要查看或打印许可协议,请在 Web 浏览器中打开此文件。
使用安装向导或压缩文件可安装 SDK。使用环境变量、命令行选项和属性文件来配置 SDK。
要安装 SDK 或 Runtime Environment 程序包,请下载相关的安装程序包。请确保将所有程序包下载到同一目录中且临时目录有足够空间。
这些程序包和它们的文件名列出在安装程序包中;请勿更改程序包的文件名。
在开始安装之前,请确保在您的 C:\WINDOWS\TEMP 目录中有足够的空间供安装过程中使用。安装过程中,在 TEMP 目录中所需的临时空间量为:
如果没有足够的临时空间,安装程序将生成错误并终止安装。如果确实具有足够的临时空间,但仍然看到此消息,那么请验证是否完全下载了正在尝试安装的程序包。可以通过将程序包的大小与下载程序包的来源 Web 页面上显示的文件大小比较来进行验证。
您可以独立安装多个程序包,包括 SDK、Runtime Environment、Javacomm、文档和演示。
您可以安装的程序包有:
其他程序包作为压缩文件提供:
如果从压缩的程序包安装 SDK 或 Runtime Environment,您将无法使用 Web Start 或 Java Plug-in,并且控制面板所包含的更新选项卡将不起作用。
可使用照管安装将 SDK 或 JRE 安装在单个客户机上。
缺省情况下,Runtime Environment 安装在目录 C:\Program Files\IBM\Java60\jre 中。
如果下载了 SDK 可安装程序包,可以选择安装哪些组件:
在安装向导中,将对您提供以下选项:
在 Windows Vista 上,选择安装语言之后可能会有延迟。
如果安装失败并带有错误消息"应用转换时出错",那么 Windows Installer 配置信息已损坏。要修正该错误,请使用 http://support.microsoft.com/kb/290301 的 Windows Installer Cleanup Utility 除去已损坏的 Windows Installer 配置信息。
当您(作为 SDK 可安装程序包的一部分或从 Runtime Environment 可安装程序包)安装 Runtime Environment 时,系统将询问您是否要将 Runtime Environment 安装为系统 Java 虚拟机(JVM)。如果将其安装为系统 JVM,那么安装程序会将 java.exe、javacpl.cpl、javaws.exe 和 javaw.exe 启动程序复制到 Windows 系统目录中。
如果 java.exe 或 javaw.exe 的某一版本当前存在于 Windows 系统目录中,系统将提示您以当前版本覆盖现有版本。将这些文件安装到 Windows 系统目录中会使该 Runtime Environment 成为系统的缺省 JVM。此外,『Current Version』注册表键将设置为与该安装匹配。
可使用无人照管的安装将 SDK 或 JRE 安装在多个客户机上。
要创建无人照管的安装,必须首先完成照管安装,并创建响应文件(setup.iss)来记录安装过程中作出的选择。创建的响应文件对于您计划使用该文件的计算机,必须是正确的。如果必要,可创建几个响应文件,来用于在多台有不同配置的计算机上安装程序包。
要在运行安装时创建响应文件,请在命令提示符下输入:
ibm-java-sdk-60-win-i386 /r
或
ibm-java-jre-60-win-i386 /r
取决于 Windows 产品,将在 C:\Windows 或 C:\Winnt 目录中创建响应文件(setup.iss)。
在交互式安装的过程中可能产生以下消息:
另一个 Java Runtime Environment 当前已安装为系统 JVM。选择"是"覆盖此版本,或选择"否"退出此安装。
如果显示该消息,请单击否并退出安装。转至 Windows 系统目录并删除以下两个文件:
删除这些文件之后,请使用本节开始处显示的命令重新启动交互式安装。
在将要运行无人照管安装的系统上,将 setup.iss 响应文件复制到 C:\Windows 目录中。复制该文件之后,在命令提示符下输入:
ibm-java-sdk-60-win-i386 /s /f1c:\Windows\setup.iss /f2c:\setup.log ibm-java-jre-60-win-i386 /s /f1c:\Windows\setup.iss /f2c:\setup.log
如果安装成功,日志文件将包含字符串 ResultCode=0。如果安装未成功,日志文件将包含不同的结果代码。
IBM Accessibility Bridge 已安装,但缺省情况下是禁用的。要启用 IBM Accessibility Bridge,请取消注释 Accessibility.properties 文件中的 assistive_technologies 条目。
Accessibility.properties 文件位于 jre/lib 目录中。从以下行的开头删除 #:
#assistive_technologies=JawBridge
以下 Web 站点可告诉您关于辅助功能选项实用程序的更多信息:
http://java.sun.com/products/jfc/accessibility.html
您可以禁用 Java 辅助功能选项支持,以提高那些不提供 Java 辅助技术支持的 Java 应用程序的 JVM 装入性能(特别是通过网络链接)。要禁用 Java 辅助功能选项支持,请将 JAVA_ASSISTIVE 环境变量设置为 OFF。
如果该环境变量设置为 OFF,那么即使辅助技术(例如 JawBridge)已在 Accessibility.properties 文件中启用,该辅助技术也不可用。
在 Windows 上,一个进程有两个代码页:ANSI(或 Windows)代码页和 OEM(或 DOS)代码页。javaw 命令始终使用 ANSI 代码页,除非设置了 console.encoding 系统属性。
命令窗口通常使用 OEM 代码页。Java 控制台输出使用从中启动 Java 的命令窗口的代码页。但是,javaw 命令始终使用 ANSI 代码页。通过在 java 或 javaw 启动程序上使用 -Dconsole.encoding 选项,来指定用于控制台输出的代码页。例如,-Dconsole.encoding=Cp1252 使所有的控制台输出都使用 Windows ANSI Latin1 代码页(1252)。
如果更改 PATH 环境变量,将覆盖路径中任何现有的 Java 启动程序。
PATH 环境变量使 Windows 能够从任何当前目录中查找程序和实用程序,例如 javac、java 和 javadoc。要显示 PATH 的当前值,请在命令提示符处,输入以下命令:
echo %PATH%
要将 Java 启动程序添加到路径,请执行以下操作:
设置路径之后,可以通过从任何目录的命令提示符处输入工具名称来运行工具。例如,要在命令提示符处编译文件 Myfile.Java,请输入:
javac Myfile.Java
类路径告知 SDK 工具(如 java、javac 和 javadoc)在何处可以找到 Java 类库。
仅当以下某个情况适用时,才需要显式设置类路径:
要显示 CLASSPATH 环境变量的当前值,请在命令提示符处输入以下命令:
echo %CLASSPATH%
如果您要开发或运行使用不同运行时环境的应用程序,包括已经单独安装的其他版本,那么必须为每个应用程序显式设置 CLASSPATH 和 PATH。如果您要同时运行多个应用程序并使用不同运行时环境,那么每个应用程序都必须其自己的命令提示符中运行。
可使用 Windows"添加/删除程序"实用程序卸载 SDK 或 Runtime Environment。
要卸载 SDK(无论原先是使用照看安装还是使用无人照管安装进行安装的):
此过程将除去使用安装程序安装的所有程序包。该过程不会除去 Java 通信 API 程序包(请参阅卸载 Java 通信 API)或任何其他从压缩程序包抽取的文件。
如果您不具有卸载 SDK 或 Runtime Environment 所必需的许可权,"Error1325.launchpad 不是有效的短文件名"。要卸载 SDK 或 Runtime Environment,请恢复正确的许可权。
当在 IBM 32-bit SDK for Windows, V6 和 V1.3.1 或更早版本之间维护多个安装时,如果您卸载较早的版本,而保留版本 V6 安装在系统上,那么 V1.3.1 卸载程序将除去以下注册表键和所有子键,而这些注册表键和子键又是 V6 版本所必需的,因此就会破坏 V6 的安装:
因而,请在卸载 V1.3.1 版本之后,重新安装 V6。在 V1.4.0 和所有后续发行版中已经修正了这个卸载程序限制。
Java 应用程序可以使用 java 启动程序或通过 JNI 启动。设置将通过命令行参数、环境变量和属性文件传递到 Java 应用程序。
java 和 javaw 命令的简短概述。
java 和 javaw 工具通过启动 Java Runtime Environment 并装入指定类来启动 Java 应用程序。
javaw 命令与 java 相似,除了 javaw 没有关联的控制台窗口。如果不希望显示命令提示窗口,请使用 javaw。如果启动失败,javaw 启动程序将显示一个带有错误信息的对话框。
JVM 在以下三组位置中搜索初始类(和使用的其他类):引导类路径、安装的扩展和用户类路径。在类名或 jar 文件名之后指定的参数被传递给主函数。
java 和 javaw 命令具有以下语法:
java [ options ] <class> [ arguments ... ] java [ options ] -jar <file.jar> [ arguments ... ] javaw [ options ] <class> [ arguments ... ] javaw [ options ] -jar <file.jar> [ arguments ... ]
在 Java 安装过程中使用的 IBM 构建号和版本号将通过使用 -version 选项获取。您还可以通过使用 -Xjarversion 选项,获取类路径上所有 jar 文件的版本信息。
java -version将看到类似如下的信息:
java version "1.6.0-internal" Java(TM) SE Runtime Environment (build 20070227_01) IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260-20070226_11758 (JIT enabled) J9VM - 20070226_11758_lHdSMR JIT - dev_20070215_1800 GC - 20070208_AA)精确的构建日期和版本将更改。
还可以列出类路径上、引导类路径上和扩展目录中所有可用 jar 文件的版本信息,请输入以下命令:
java -Xjarversion
将看到类似如下的信息:
... C:\Program Files\IBM\Java60\jre\lib\ext\ibmpkcs11impl.jar VERSION: 1.0 build_20070125 C:\Program Files\IBM\Java60\jre\lib\ext\dtfjview.jar C:\Program Files\IBM\Java60\jre\lib\ext\xmlencfw.jar VERSION: 1.00, 20061011 LEVEL: -20061011 ...
每个 jar 文件的可用信息都不尽相同,这些信息来自 jar 文件的清单中 Implementation-Version 和 Build-Level 属性。
通过使用选项文件或使用环境变量,可以在命令行上指定 Java 选项和系统属性。
以下指定 Java 选项的方法按优先顺序列出:
java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump MyJavaClass
set IBM_JAVA_OPTIONS="-Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump"
命令行上最右边的选项优先于最左边的选项;例如,如果指定:
java -Xint -Xjit myClass
那么 -Xjit 选项优先。
标准选项的定义。
java 和 javaw 启动程序接受参数名和类名,这些名称可包含当前语言环境字符集中的任意字符。您还可以通过使用 Java 换码序列在类名和参数中指定任何 Unicode 字符。
要执行此操作,必须指定 -Xargencoding 命令行选项。
例如,要使用两个大写字母组成的 Unicode 编码来指定称为"HelloWorld"的类,请使用以下命令:
java -Xargencoding '\u0048ello\u0057orld'
java 和 javaw 命令提供翻译过的消息。这些消息根据运行 Java 的语言环境不同而有所不同。详细的错误描述和 java 返回的其他 调试信息都是以英文显示的。
要设置 Java 类或 jar 文件以从 Windows 资源管理器自动启动,请使用 Windows 资源管理器的工具 -> 文件夹选项 -> 文件类型选项。
或者,可以在命令提示符处输入:
assoc .class=javaclass ftype javaclass=C:\Program Files\IBM\Java60\jre\bin\java.exe''%l''%*'
Sun 提供了 Java Access Bridge,这样本机 Windows 辅助技术(如屏幕阅读器)就能访问 Java 应用程序中的 Java 辅助功能支持。这些本机 Windows 辅助技术必须支持对 Java Access Bridge 的调用。
Sun 提供的 Java Access Bridge 包含一个安装程序,它将下列五个文件放到正确的目录中:access-bridge.jar、jaccess.jar、accessibility.properties、JavaAccessBridge.dll 和 WindowsAccessBridge.dll。IBM 在相应目录中提供了 jaccess.jar 的副本,以便与 JawBridge 一起使用。
如果已经启用 IBM Accessibility Bridge(JawBridge)(它允许 Windows 2000 Magnifier 与 Swing 应用程序一起运行),并希望同时启用 JawBridge 与 Java Access Bridge,请按以下信息编辑 accessibility.properties 文件中的行:
assistive_technologies=com.sun.java.accessibility.AccessBridge,JawBridge
通过在开头插入 # 停用这两个桥,来注释掉该行。该 Web 站点告诉您如何下载 Java Access Bridge:
http://java.sun.com/products/jfc/accessibility.html。
在 Java 应用程序和 applet 运行期间,IBM Just-In-Time(JIT)编译器为它们中频繁使用的字节码序列动态生成机器代码。JIT V6 编译器经过编译器研究,提供新的优化,改进了先前版本 JIT 中实现的优化,同时提供更好的硬件运用。
IBM SDK 和 Runtime Environment 都包含 JIT;缺省情况下,在用户应用程序和 SDK 工具中启用 JIT。通常无需显式调用 JIT;Java 字节码到机器代码的编译是透明进行的。您可以禁用 JIT 以帮助隔离问题。如果在执行 Java 应用程序或 applet 时发生问题,可以禁用 JIT 以帮助隔离问题。禁用 JIT 只是临时办法;为了优化性能,JIT 是必需的。
有关 JIT 的更多信息,请参阅 Diagnostics Guide。
JIT 可以采用许多不同的方式禁用。这两个命令行选项都将覆盖 JAVA_COMPILER 环境变量。
在调试 Java 应用程序时关闭 JIT 是一种临时措施,可帮助隔离问题。
set JAVA_COMPILER=NONE还可使用图形用户界面永久设置 JAVA_COMPILER。打开控制面板,选择系统,然后在高级选项卡上,选择环境变量。
java -Djava.compiler=NONE <class>
java -Xint <class>
缺省情况下将启用 JIT。您可以采用许多不同方式显式启用 JIT。这两个命令行选项都将覆盖 JAVA_COMPILER 环境变量。
set JAVA_COMPILER=jitc还可使用图形用户界面永久设置 JAVA_COMPILER。打开控制面板,选择系统,然后在高级选项卡上,选择环境变量。 如果将 JAVA_COMPILER 环境变量设置为空字符串,JIT 仍保持禁用。要禁用环境变量,在命令提示符处,输入:
set JAVA_COMPILER=
java -Djava.compiler=jitc <class>
java -Xjit <class>
可以使用 -version 选项确定 JIT 的状态。
运行带 -version 选项的 java 启动程序。 在命令提示符处输入以下命令:
java -version
如果 JIT 没在使用,将显示一条包含以下内容的消息:
(JIT 已禁用)
如果 JIT 正在使用,将显示一条包含以下内容的消息:
(JIT 已启用)
有关 JIT 的更多信息,请参阅 Diagnostics Guide。
垃圾收集器管理 Java 和 JVM 中运行的应用程序所使用的内存。
当垃圾收集器收到存储请求时,堆中未使用的内存将在称为"分配"的进程中留出。垃圾收集器还检查不再引用的内存区域,并释放它们以进行复用。这称为"收集"。
收集阶段可以由内存分配故障(当没有剩余空间可用于存储请求时发生此故障)或显式 System.gc() 调用进行触发。
垃圾回收可能显著影响应用程序性能,所以 IBM 虚拟机提供各种优化执行垃圾回收的方法,这样可以潜在降低对应用程序的影响。
有关垃圾回收的更详细的信息,请参阅 Diagnostics Guide。
-Xgcpolicy 选项控制垃圾收集器的行为。这些选项在应用程序和整个系统的吞吐量与因垃圾回收引起的暂停时间之间进行权衡。
选项的格式及其值是:
当堆中的可用空间无法立即满足应用程序创建对象的尝试时,垃圾收集器将负责标识未引用的对象(垃圾)、删除它们并使堆返回到可以快速满足立即和后继分配请求的状态。
这样的垃圾回收循环在应用程序代码执行中引起了偶发的意外暂停。因为应用程序的大小和复杂程度不断增长,堆也相应不断扩大,垃圾收集暂停时间长度和影响方面一般也会有所增加。
缺省的垃圾回收值 -Xgcpolicy:optthruput 向应用程序传递非常高的吞吐量,但要以这些偶发的暂停为代价,这些暂停可能从几毫秒到许多秒不等,取决于堆的大小和无用数据的数量。
JVM 使用两种技术来缩减暂停时间:并发垃圾回收和分代垃圾回收
-Xgcpolicy:optavgpause 命令行选项请求使用并发垃圾回收来显著缩减在垃圾回收暂停上所耗费的时间。并发 GC 通过随正常的程序执行并发地执行一些垃圾回收活动,来最大程度地减少由堆收集导致的中断,从而缩减暂停时间。-Xgcpolicy:optavgpause 选项还限制增长堆大小对垃圾回收暂停长度的影响。-Xgcpolicy:optavgpause 选项对于有大堆的配置最有用。随着暂停时间的缩减,应用程序的吞吐量可能会有一定程度的减少。
在并发垃圾回收的过程中,大量时间被浪费在识别持续时间相对长而又最终无法回收的对象上。如果垃圾回收只是集中于那些最可能回收的对象,那么可以进一步减少某些应用程序的暂停时间。分代 GC 通过将堆分为两"代"("短期存在"区域和"永久占有"区域)来实现此目标。对象根据它们的年龄,被放在其中一个区域中。"短期存在"是二者中较小的一个,包含较年轻的对象;"永久占有"较大,包含较老的对象。对象首先分配给"短期存在"区域;如果它们生存足够长的时间,将最终提交到"永久占有"区域。
大多数对象的分代 GC 不会持续很久。分代 GC 通过将精力集中在回收"短期存在"区域的存储上(因为它有可回收性最高的空间),而缩减暂停时间。与回收整个堆所产生的偶尔但冗长的暂停时间不同,回收"短期存在"区域更加频繁,而如果"短期存在"区域足够小,暂停时间就相对较短。但是,分代 GC 有缺点:随着时间的过去,如果有太多对象持续太长时间,永久占有区域就可能会变满。要在这种情况发生时使暂停时间最小化,请组合使用并发 GC 和分代 GC。-Xgcpolicy:gencon 选项请求组合使用并发 GC 和分代 GC,来帮助使在任何垃圾回收暂停中耗费的时间最小化。
如果 Java 堆接近满的状态,并且几乎没有要回收的垃圾,请求新对象可能不会很快得到满足,因为没有立即可用的空间。
如果在容量接近于满时对堆进行操作,那么无论使用哪个垃圾回收选项,应用程序的性能都可能受影响;另外,如果继续请求更多的堆空间,那么应用程序就可能接收到 OutOfMemoryError,如果未捕获和处理该异常,将导致 JVM 终止。此时,JVM 生成 Javadump 文件以供诊断期间使用。在这些情况下,建议使用 -Xmx 选项增加堆大小,或者减少正在使用的对象数。
请参阅 Diagnostics Guide 获取更多信息。
IBM SDK 和 Runtime Environment 将欧元设置为自 2002 年 1 月 1 日起欧洲货币联盟(EMU)中那些国家或地区的缺省货币。自 2008 年 1 月 1 日起,塞浦路斯和马耳他也将欧元作为缺省货币。
要使用原有的国家或地区标准货币,请在 Java 命令行上指定 -Duser.variant=PREEURO。
如果正在运行英国英语、丹麦语或瑞典语语言环境并要使用欧元,请在 Java 命令行上指定 -Duser.variant=EURO。
从 V6 起,缺省情况下印度语和泰国语输入方法不可用。必须手动将此输入方法 jar 文件包含到 Java 扩展路径才能使用印度语和泰国语输入方法。
在 V5.0 中,输入方法 jar 文件包含在 jre\lib\ext 目录中,并被 JVM 自动装入。在 V6 中,输入方法 jar 文件包含在 jre\lib\im 目录中,必须手动添加到 Java 扩展才能启用印度语和泰国语输入方法。这可以使用以下某个方法实现:
java -Djava.ext.dirs=C:\Program Files\IBM\Java60\jre\lib\ext;C:\Program Files\IBM\Java60\jre\lib\im <class>
如果已将 SDK 或 Runtime Environment 安装在不同的目录中,请将 C:\Program Files\IBM\Java60\ 替换为安装 SDK 或 Runtime Environment 的目录。
SDK for Windows 包含 Java 软件开发所需的许多工具和库。
请参阅 SDK 工具和参考信息获取可用工具的详细信息。
IBM SDK 包含 XML4J 和 XL XP-J 解析器、XL TXE-J 1.0 XSLT 编译器以及 XSLT4J XSLT 解释器。 这些工具使您能够独立于任何给定的 XML 处理实现,来对 XML 文档进行语法分析、验证、转换和串行化。
使用工厂查找函数来定位抽象工厂类的实现,如选择 XML 处理器中所述。 通过使用工厂查找函数,您可以选择其他 XML 库而无需更改 Java 代码。
IBM SDK for Java 包含以下 XML 库。
XML4J 是验证解析器,提供对以下标准的支持:
XML4J 4.5 基于 Apache Xerces-J 2.9.0。有关更多信息,请参阅 http://xerces.apache.org/xerces2-j/。
XL XP-J 1.1 是高性能非验证解析器,它提供对 StAX 1.0(JSR 173)的支持,是对 XML 1.0 和 XML 1.1 文档进行拉式解析和流式串行化的双向 API。请参阅XL XP-J 参考信息一节,以获取关于受 XL XP-J 1.1 支持的标准的更多详细信息。
对于 V5.0,IBM SDK for Java 包含了 XSLT4J 编译器和解释器。 缺省情况下使用 XSLT4J 解释器。
对于 V6,IBM SDK for Java 包含 XL TXE-J。XL TXE-J 包含 XSLT4J 2.7.8 解释器和新的 XSLT 编译器。 缺省情况下使用新的编译器。IBM SDK for Java 不再附带 XSLT4J 编译器,请参阅迁移到 XL-TXE-J 以获取有关迁移到 XL TXE-J 的信息。
XL TXE-J 提供对以下标准的支持:
XML 处理器的选择使用服务供应者执行。当使用工厂查找函数时,Java 在以下位置查找要使用的服务提供者:
以下服务提供者控制由 Java 使用的 XML 处理库:
XL TXE-J 编译器已代替 XSLT4J 解释器作为缺省 XSLT 处理器。请遵循以下步骤使应用程序准备好使用新库。
当多次应用相同的变换时,XL TXE-J 编译器比 XSLT4J 解释器快。 如果各个变换只执行一次,由于编译和优化的开销,XL TXE-J 编译器比 XSLT4J 解释器慢。
要继续将 XSLT4J 解释器用作 XSLT 处理器,请将 javax.xml.transform.TransformerFactory 服务提供者设置为 org.apache.xalan.processor.TransformerFactoryImpl。
要迁移到 XL-TXE-J 编译器,请遵循以下步骤:
XSL4J 编译器属性 | XL TXE-J 编译器属性 |
---|---|
translet-name | http://www.ibm.com/xmlns/prod/xltxe-j/translet-name |
destination-directory | http://www.ibm.com/xmlns/prod/xltxe-j/destination-directory |
package-name | http://www.ibm.com/xmlns/prod/xltxe-j/package-name |
jar-name | http://www.ibm.com/xmlns/prod/xltxe-j/jar-name |
generate-translet | http://www.ibm.com/xmlns/prod/xltxe-j/generate-translet |
auto-translet | http://www.ibm.com/xmlns/prod/xltxe-j/auto-translet |
use-classpath | http://www.ibm.com/xmlns/prod/xltxe-j/use-classpath |
debug | http://www.ibm.com/xmlns/prod/xltxe-j/debug |
indent-number | http://www.ibm.com/xmlns/prod/xltxe-j/indent-number |
enable-inlining | 在新编译器中已废弃 |
XL XP-J 和 XL TXE-J XML 库对于 SDK V6 是新的。该参考信息描述受这些库支持的功能。
XL XP-J 1.1 是高性能非验证解析器,它提供对 StAX 1.0(JSR 173)的支持,是对 XML 1.0 和 XML 1.1 文档进行拉式解析和流式串行化的双向 API。
以下可选的 StAX 功能不受 XL XP-J 支持:
javax.xml.stream.XMLInputFactory 实现支持以下属性,如 XMLInputFactory Javadoc 中所述。
属性名称 | 受支持 |
---|---|
javax.xml.stream.isValidating | 否。XL XP-J 扫描程序不支持验证。 |
javax.xml.stream.isNamespaceAware | 是(支持 true 和 false)。对于从 DOMSource 创建的 XMLStreamReader,名称空间处理取决于用来创建 DOM 树的方法,并且该值不起作用。 |
javax.xml.stream.isCoalescing | 是 |
javax.xml.stream.isReplacingEntityReferences | 是。对于从 DOMSource 创建的 XMLStreamReader,如果 DOM 树中的实体已被替换,那么设置该参数将无效。 |
javax.xml.stream.isSupportingExternalEntities | 是 |
javax.xml.stream.supportDTD | 否。DTD 始终受支持。将该值设置为 false 将无效。 |
javax.xml.stream.reporter | 是 |
javax.xml.stream.resolver | 是 |
XL XP-J 还支持可选方法 createXMLStreamReader(javax.xml.transform.Source),该方法允许从 DOM 和 SAX 源创建 StAX 读程序。
javax.xml.stream.XMLStreamReader 实现支持以下属性,如 XMLStreamReader Javadoc 中所述。
属性名称 | 受支持 |
---|---|
javax.xml.stream.entities | 是 |
javax.xml.stream.notations | 是 |
XL XP-J 还支持 javax.xml.stream.isInterning 属性,它返回一个布尔值,用于指示由 API 调用返回的 XML 名称和名称空间 URI 是否已由解析器保留。
javax.xml.stream.XMLOutputFactory 实现支持以下属性,如 XMLOutputFactory Javadoc 中所述。
属性名称 | 受支持 |
---|---|
javax.xml.stream.isRepairingNamespaces | 是 |
javax.xml.stream.XMLStreamWriter 实现支持以下属性,如 XMLStreamWriter Javadoc 中所述。
属性名称 | 受支持 |
---|---|
javax.xml.stream.isRepairingNamespaces | 是 |
XMLStreamWriter 对象上的属性都是只读的。
XL TXE-J 是包含 XSLT4J 2.7.8 解释器和 XSLT 编译器的 XSLT 库。
功能部件 | XSLT4J 解释器(包含) | XSLT4J 编译器(不包含) | XL TXE-J 编译器(包含) |
---|---|---|---|
http://javax.xml.transform.stream.StreamSource/feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.stream.StreamResult/feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.dom.DOMSource/feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.dom.DOMResult/feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.sax.SAXSource/feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.sax.SAXResult/feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.stax.StAXSource/feature 功能部件 | 是 | 否 | 是 |
http://javax.xml.transform.stax.StAXResult/feature 功能部件 | 是 | 否 | 是 |
http://javax.xml.transform.sax.SAXTransformerFactory /feature 功能部件 | 是 | 是 | 是 |
http://javax.xml.transform.sax.SAXTransformerFactory /feature/xmlfilter 功能部件 | 是 | 是 | 是 |
http://javax.xml.XMLConstants/feature/secure-processing 功能部件 | 是 | 是 | 是 |
http://xml.apache.org/xalan/features/incremental 属性 | 是 | 否 | 否 |
http://xml.apache.org/xalan/features/optimize 属性 | 是 | 否 | 否 |
http://xml.apache.org/xalan/properties/source-location 属性 | 是 | 否 | 否 |
translet-name 属性 | 不适用 | 是 | 是(用新名称) |
destination-directory 属性 | 不适用 | 是 | 是(用新名称) |
package-name 属性 | 不适用 | 是 | 是(用新名称) |
jar-name 属性 | 不适用 | 是 | 是(用新名称) |
generate-translet 属性 | 不适用 | 是 | 是(用新名称) |
auto-translet 属性 | 不适用 | 是 | 是(用新名称) |
use-classpath 属性 | 不适用 | 是 | 是(用新名称) |
enable-inlining 属性 | 否 | 是 | 否(在 TL TXE-J 中已废弃) |
indent-number 属性 | 否 | 是 | 是(用新名称) |
debug 属性 | 否 | 是 | 是(用新名称) |
Java 扩展 | 是 | 是(仅为简略语法,不支持 xalan:component/xalan:script 构造) | |
JavaScript 扩展 | 是 | 否 | 否 |
扩展元素 | 是 | 否 | 否 |
EXSLT 扩展功能 | 是 | 是(排除动态) | 是(排除动态) |
redirect 扩展 | 是 | 是(排除 redirect:open 和 redirect:close) | 是 |
output 扩展 | 否 | 是 | 是 |
nodeset 扩展 | 是 | 是 | 是 |
NodeInfo 扩展功能 | 是 | 否 | 否 |
SQL 库扩展 | 是 | 否 | 否 |
pipeDocument 扩展 | 是 | 否 | 否 |
evaluate 扩展 | 是 | 否 | 否 |
tokenize 扩展 | 是 | 否 | 否 |
XML 1.1 | 是 | 是 | 是 |
对于 Process 命令:要通过 StAX 流处理进行转换,使用 -FLAVOR sr2sw;要进行 StAX 事件处理,使用 -FLAVOR er2ew。
新编译器不会查找 org.apache.xalan.xsltc.dom.XSLTCDTMManager 服务提供者。相反,如果使用 StreamSource,编译器会切换到高性能的 XML 解析器。
内联在 XL TXE-J 中已废弃。
不再支持 org.apache.xalan.xsltc.trax.SmartTransformerFactoryImpl 类。
如果您在许可的覆盖中使用较早版本的 Xerces(早于 2.0)或 Xalan(早于 2.3),可能会在启动应用程序时,获得 NullPointerException。发生该异常是因为这些较早的版本无法正确处理 jaxp.properties 文件。
为避免这种情况,请使用以下变通方法之一:
set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory= org.apache.xerces.jaxp.SAXParserFactoryImpl或
set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory= org.apache.xerces.jaxp.DocumentBuilderFactoryImpl或
set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory= org.apache.xalan.processor.TransformerFactoryImpl
要调试 Java 程序,可以使用 Java 调试器(JDB)应用程序或其他使用 SDK for Windows 提供的 Java 平台调试器体系结构(JPDA)进行通信的调试器。
有关使用 Java 进行问题诊断的更多信息可以在 Diagnostics Guide 中找到。
Java 调试器(JDB)包含在 SDK for Windows 中。该调试器由 jdb 命令调用;它使用 JPDA 连接到 JVM。
要调试 Java 应用程序:
java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,address=<port> <class>此时 JVM 将启动,但在它启动 Java 应用程序之前将暂挂执行。
jdb -attach <port>调试器将连接到 JVM,现在可以发出一系列命令来检查和控制 Java 应用程序;例如,输入 run 允许启动 Java 应用程序。
有关 JDB 选项的更多信息,请输入:
jdb -help
有关 JDB 命令的更多信息:
还可以使用 JDB 设置在远程机器上运行的 Java 应用程序。JPDA 使用 TCP/IP 套接字连接到远程 JVM。
java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,address=<port> <class>此时 JVM 将启动,但在它启动 Java 应用程序之前将暂挂执行。
jdb -connect com.sun.jdi.SocketAttach:hostname=<host>,port=<port>
Java 虚拟机调试接口(JVMDI)在本发行版中不受支持。它已被 Java 虚拟机工具接口(JVMTI)替换。
有关 JDB 和 JPDA 及其用法的更多信息,请参阅以下 Web 站点:
有些 Java 应用程序必须能够确定它们是在 32 位 JVM 还是在 64 位 JVM 上运行。例如,如果应用程序具有本机代码库,对于同时支持 32 位和 64 位操作方式的平台,就必须分别以 32 位和 64 位格式编译该库。在这种情况下,应用程序必须在运行时装入正确的库,因为不能混合 32 位和 64 位代码。
系统属性 com.ibm.vm.bitmode 允许应用程序确定 JVM 运行的方式。它返回以下值:
您可以使用以下调用从应用程序代码内部检查 com.ibm.vm.bitmode 属性:
System.getProperty("com.ibm.vm.bitmode");
当出现一个 JVM 所关注的信号时,将调用一个信号处理程序。该信号处理程序判断它是被 Java 还是非 Java 线程调用。
如果信号是用于 Java 线程,那么 JVM 将接管对信号处理的控制。如果安装了该信号的应用程序处理程序,但没有指定 -Xnosigchain 命令行选项,那么在 JVM 完成处理之后将调用该信号的应用程序处理程序。
如果信号是非 Java 线程的,并且安装 JVM 的应用程序以前安装过自己的信号处理程序,那么控制权将交给该处理程序。否则,如果信号是由 JVM 或 Java 应用程序请求,那么该信号会被忽略或执行缺省操作。
当信号是在外部生成的(例如当输入 CTRL-BREAK 时),将为信号处理程序创建一个新线程。在这种情况下,JVM 信号处理程序执行它的处理;如果安装了此信号的应用程序处理程序,但没有指定 -Xnosigchain 命令行选项,就会调用此信号的应用程序处理程序。
对于异常及错误信号,JVM 将执行下列两种操作之一:
对于中断信号,JVM 还输入一个受控的关闭序列,但是这次它将被视为符合以下条件的正常终止:
此关闭与由一个对 Java 方法 System.exit() 的调用所启动的关闭相同。
JVM 所使用的其他信号是用于内部控制用途的,并且不会导致该控制终止。唯一关注的控制信号是 SIGBREAK,它将导致生成一个 Javadump。
信号类型包括中断和控制。
下面的表 7 显示了 JVM 所使用的信号。 表中按类型或使用情况对信号进行了分组,如下所示:
信号名称 | 信号类型 | 描述 | 是否被 -Xrs 禁用 |
---|---|---|---|
SIGINT(2) | 中断 | 交互式注意信号(CTRL-C)。JVM 正常退出。 | 是 |
SIGTERM(15) | 中断 | 终止请求。JVM 将正常退出。 | 是 |
SIGBREAK | 控制 | 从终端发出的断开信号。缺省情况下,此选项会触发 Javadump。 | 是 |
IBM JVM 使用结构化异常处理 和 SetConsoleCtrlHandler() API。它们是使用 -Xrs 禁用的。-Xnosigchain 在 Windows 上被忽略。
使用 -Xrs(减少信号使用)选项来防止 JVM 处理大多数的信号。有关更多信息,请参阅 Sun 的 Java 应用程序启动程序页面。
JVM 线程上的信号 2(SIGINT)和 15(SIGTERM)导致 JVM 关闭;因此,应用程序信号处理程序不应该尝试从此信号恢复,除非它不再需要 JVM。
Runtime Environment 包含信号链接。信号链接使 JVM 能够更有效的同安装有自己信号处理程序的本机代码进行相互操作。
信号链接使应用程序能够在 msvcrt.dll 之前链接并装入共享库 jsig.dll。jsig.dll 库确保拦截对 signal() 的调用,以便它们的处理程序不会替换 JVM 的信号处理程序。反之,这些调用将保存新的信号处理程序,或者将它们"链接"到 JVM 安装的处理程序之后。然后,当这些信号中的任何信号出现且发现不是针对 JVM 时,预先安装的处理程序将被调用。
libjsig.dll 库还对应用程序隐藏 JVM 信号处理程序。因此,JVM 启动后所进行的调用(如 signal()、sigset() 和 sigaction())不再返回对 JVM 的信号处理程序的引用,但是取而代之的是返回任何 JVM 启动前所安装的处理程序。
环境变量 JAVA_HOME 应该设为 SDK 位置(例如 C:\Program Files\IBM\Java60\)。
要使用 jsig.dll,请将它与创建或嵌入 JVM 的应用程序链接。
本机程序可以在 JNI_CreateJavaVM() API 调用上指定的有效 JNI 版本号是:JNI_VERSION_1_2(0x00010002) 和 JNI_VERSION_1_4(0x00010004)。
此版本号仅确定要使用的 JNI 本机接口的等级。创建的 JVM 的实际等级由 JSE 库指定(即 V6)。JNI 接口 API 不影响 JVM 实现的语言规范、类库 API 或 JVM 行为的任何其他领域。有关更多信息,请参阅 http://java.sun.com/javase/6/docs/technotes/guides/jni/。
如果应用程序需要两个 JNI 库,一个为 32 位构建,另一个为 64 位构建,请使用 com.ibm.vm.bitmode 系统属性确定您正在运行的是 32 位 JVM 还是 64 位 JVM,然后选择适当的库。
您可以通过以 -Xlp 选项启动 Java,在支持大页面的系统上启用大页面支持。
使用大页面主要意在为分配许多内存并频繁访问这些内存的应用程序提高性能。 大页面性能提高主要由转换解析缓冲区(TLB)中减少的未命中数引起。TLB 映射较大的虚拟内存范围,因此产生这种改进。
要让 JVM 使用大页面,系统必须有足够数量的连续大页面可用。如果无法分配大页面(甚至当有足够页面可用时),那么可能大页面不是连续的。
大页面分配只在 JVM 用户的本地管理策略配置为允许"内存中锁定页"时才会成功。
Java Platform, Standard Edition(JSE)至少支持 Sun 在一致性文档中定义的规范。某些情况下, IBM JSE ORB 支持更新版本的规范。
支持的最低规范在 Java SE 6 中 CORBA 支持的官方规范中进行定义。
此 SDK 支持所有版本的 GIOP,如 OMG 文档 formal/99-10-07 的 CORBA 2.3.1 规范第 13 章和第 15 章所定义。
http://www.omg.org/cgi-bin/doc?formal/99-10-07
不支持双向 GIOP。
此 SDK 支持可移植拦截器,如 OMG 在文档 ptc/01-03-04 中所定义;可以从以下地址获得该文档:
http://www.omg.org/cgi-bin/doc?ptc/01-03-04
可移植拦截器是伸入 ORB 的挂钩,通过这些挂钩,ORB 服务可用于拦截 ORB 的正常执行流。
此 SDK 支持可互操作命名服务,如 OMG 在文档 ptc/00-08-07 中所定义;可以从以下地址获得该文档:
http://www.omg.org/cgi-bin/doc?ptc/00-08-07
在没有给定 ORBInitialPort 参数时,瞬态名称服务器(tnameserv 命令)使用的缺省端口已经从 900 更改为 2809,而该端口号正是为 CORBA 命名服务向 IANA(Internet Assigned Number Authority,因特网号码分配管理局)注册的端口号。依赖于此缺省值的程序可能必须更新以使用此版本。
从瞬态名称服务器返回的初始上下文现在为 org.omg.CosNaming.NamingContextExt。现有的限制对上下文 org.omg.CosNaming.NamingContext 引用的程序仍然起作用,而不需要重新编译。
ORB 支持由"可互操作命名服务"规范定义的 -ORBInitRef 和 -ORBDefaultInitRef 参数,而 ORB::string_to_object 操作现在支持由"可互操作命名服务"规范定义的 ObjectURL 字符串格式(corbaloc: 和 corbaname:)。
OMG 指定使用方法 ORB::register_initial_reference 向"可互操作命名服务"注册服务。但是,在 Sun Java 核心 API V6 中未提供此方法。需要在当前版本中注册服务的程序必须在 IBM 内部 ORB 实现类上调用此方法。例如,要注册服务"MyService":
((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MyService", serviceRef);
其中 orb 是从 ORB.init() 返回的 org.omg.CORBA.ORB 的一个实例,serviceRef 是连接到 ORB 的 CORBA 对象。这种机制是临时机制,并不与将来的版本兼容,也不可移植到非 IBM ORB 上。
这是提高可维护性的运行时调试功能部件。您可能发现它对于问题诊断很有用,或者 IBM 服务人员可能要求提供它。
例如,要跟踪事件和格式化的 GIOP 消息,请在命令行中输入:
java -Dcom.ibm.CORBA.Debug=true -Dcom.ibm.CORBA.CommTrace=true <myapp>
请勿打开对正常操作的跟踪,因为它可能会导致性能下降。即使已关闭跟踪,FFDC(首次故障数据捕获)仍保持工作,以便只报告严重错误。如果有调试输出文件生成,请检查该文件中的问题。例如,服务器可能没有执行 ORB.shutdown() 就停止了。
跟踪输出的内容和格式可能随版本而有所不同。
可调整 ORB 以便能与特定网络一起良好工作。此处描述了调整 ORB 所需的属性。
要禁用分段,请将分段大小设置为 0 字节。
java -Dcom.ibm.CORBA.FragmentSize=0 <myapp>
当与 Java SecurityManager 一起运行时,调用 CORBA API 类中的某些方法可能导致进行许可权检查,这可能产生 SecurityException。 如果程序使用这些方法中的任何一个,请确保它被授予必要的许可权。
类/接口 | 方法 | 需要的许可权 |
---|---|---|
org.omg.CORBA.ORB | init | java.net.SocketPermission resolve |
org.omg.CORBA.ORB | connect | java.net.SocketPermission listen |
org.omg.CORBA.ORB | resolve_initial_references | java.net.SocketPermission connect |
org.omg.CORBA. portable.ObjectImpl | _is_a | java.net.SocketPermission connect |
org.omg.CORBA. portable.ObjectImpl | _non_existent | java.net.SocketPermission connect |
org.omg.CORBA. portable.ObjectImpl | OutputStream _request (String, boolean) | java.net.SocketPermission connect |
org.omg.CORBA. portable.ObjectImpl | _get_interface_def | java.net.SocketPermission connect |
org.omg.CORBA. Request | invoke | java.net.SocketPermission connect |
org.omg.CORBA. Request | send_deferred | java.net.SocketPermission connect |
org.omg.CORBA. Request | send_oneway | java.net.SocketPermission connect |
javax.rmi. PortableRemoteObject | narrow | java.net.SocketPermission connect |
ORB 实现类的列表。
此发行版中的 ORB 实现类是:
这些是缺省值,建议您不要设置这些属性或直接引用这些实现类。出于可移植性,请只引用 CORBA API 类,而不要引用实现。在将来的发行版中可能更改这些值。
Java 远程方法调用(RMI)提供一种简单的机制来执行分布式 Java 编程。RMI over IIOP(RMI-IIOP)使用"公共对象请求代理体系结构"(CORBA)标准"因特网 ORB 间协议"(IIOP 协议)来扩展执行通信的基本 Java RMI。这允许与任何其他 CORBA"对象请求代理"(ORB)直接进行交互,无论它们是以 Java 编程语言还是以其他编程语言实现。
可获取以下文档:
缺省情况下,不启用 RMI 连接处理程序的线程池。
要启用 RMI TCPTransport 级别实现的连接池,请设置选项
-Dsun.rmi.transport.tcp.connectionPool=true
此版本的 Runtime Environment 不具有可用于限制连接池中线程数的设置。
从 Java 5.0 起,IBM BigDecimal 类已被 Sun 作为 java.math.BigDecimal 采用。com.ibm.math.BigDecimal 类由 IBM 保留以备将来之用,因此当前不推荐使用该类。迁移现有的 Java 代码以使用 java.math.BigDecimal。
新的 java.math.BigDecimal 使用与先前的 java.math.BigDecimal 和 com.ibm.math.BigDecimal 相同的方法。使用 java.math.BigDecimal 的现有代码继续正常工作。这两个类不会串行化。
要迁移现有的 Java 代码以使用 java.math.BigDecimal 类,请将 .java 文件顶部的 import 语句从 import com.ibm.math.*; 更改为 import java.math.*;。
Java Plug-in 用于在浏览器中运行 Java 应用程序。Applet 查看器用于测试在浏览器中运行的应用程序。Java Web Start 用于在网络上部署桌面 Java 应用程序,并提供机制以使这些应用程序保持最新。
Java Plug-in 是 Web 浏览器插件。使用 Java Plug-in 在浏览器中运行 applet。
必须使 applet 装入完毕,以防止浏览器挂起。 例如,如果您在装入 applet 时使用后退按钮,然后使用前进按钮,那么可能无法装入 HTML 页面。
Sun 在以下站点对 Java Plug-in 有所记载:http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/。
Java Plug-in 支持 Internet Explorer, Netscape、Mozilla、和 Mozilla Firefox。
浏览器 | 受支持的版本 |
---|---|
Internet Explorer | 6.0 SP1、7.0 |
Netscape(在 Windows Vista 上不受支持) | 7.2 |
Mozilla(在 Windows Vista 上不受支持) | 1.7、1.8 |
Firefox | 2.0 |
更新版本的浏览器的少数发行版也受支持。
Windows 2000 上的缺省浏览器 Internet Explorer 5.01 不受支持。
静态版本控制允许 applet 请求在其下运行的特定 JVM 版本。由于此功能还允许 applet 利用系统上已升级到新 JVM 的原有安全漏洞,因此现在可以在 Internet Explorer 上使用安全静态版本控制。
缺省情况下,所有 applet 都在最新安装的 JVM 下运行。要禁用 SSV,请将以下注册表键设置为 0:
HKEY_LOCAL_MACHINE\Software\IBM\Java Deployment\Policy\EnableSecureStaticVersioning
如果该注册表键不存在,那么 SSV 已启用。
如果 Internet Explorer 中禁用了第三方浏览器扩展,那么 SSV 将不会运行。要启用第三方浏览器扩展:
如果在使用 SSV 后禁用了第三方浏览器扩展,那么 SSV 将继续运行。
为了保护 Mozilla 和 Firefox 浏览器,Plug-in for Internet Explorer 将从 Mozilla 和 Firefox Plug-in 目录中自动除去所有 Java Plug-in。每当在 Internet Explorer 下运行 applet 时都会发生该情况。
要重新安装 Java Plug-in for Mozilla 或 Firefox,请使用 Java 控制面板。
由于特定浏览器的限制,可能无法实现 org.w3c.dom.html 程序包的所有函数。
将抛出以下某个错误:
Java Plug-in 支持将双字节字符(例如,繁体中文 BIG-5、韩语、日语)作为 <APPLET>、<OBJECT> 和 <EMBED> 标记的参数。必须为 HTML 文档选择正确的字符编码,以使 Java Plug-in 可以分析此参数。
如下在 <HEAD> 部分中使用 <META> 标记为 HTML 文档指定字符编码:
<meta http-equiv="Content-Type" content="text/html; charset=big5">
此示例指示浏览器使用中文 BIG-5 字符编码来解析 HTML 文件。
利用 Applet 查看器,您可以使用 APPLET 标记,运行在 Web 页面(HTML 文件)中以引用方式调用的一个或多个 applet。Applet 查看器在 HTML 文件中查找 APPLET 标记,然后如标记所指定,在单独的窗口中运行这些 applet。
因为 Applet 查看器只供查看 applet,所以它无法显示包含许多 HTML 标记的整个 Web 页面。它只解析 Web 页面上的 APPLET 标记,而不解析其他 HTML。
使用以下命令可通过 Applet 查看器运行 applet。
从命令提示符中,输入:
appletviewer <name>
其中 <name> 是以下之一:
例如,要在调用 applet 的 HTML 文件上调用 Applet 查看器,请在命令提示符处输入:
appletviewer <demo>\GraphLayout\example1.html
其中 <demo> 应替换为抽取演示程序包的完整目标路径。
要在 Web 页面上调用 Applet 查看器,请在命令提示符处输入:
appletviewer http://java.sun.com/applets/NervousText/example1.html
Applet 查看器不识别 <META> 标记的 charset 选项。如果 Applet 查看器装入的文件没有按系统缺省值编码,可能会发生 I/O 异常。为避免该异常,当运行 appletviewer 时,请使用 -encoding 选项。例如:
appletviewer -encoding JISAutoDetect sample.html
唯一的 CLSID 集已从 V6 添加到 IBM JVM。
以下是新的 CLSID:
1ACECAFE-0016-0000-0000-ABCDEFFEDCBA 1ACECAFE-0016-0000-0000-ABCDEFFEDCBB 1ACECAFE-0016-0000-0000-ABCDEFFEDCBC
可以在 applet 的 OBJECT 标记中引用上述 CLSID。
此外,出于兼容用途,还支持以下现有的 CLSID:
CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA CAFEEFAC-0016-0000-0000-ABCDEFFEDCBB CAFEEFAC-0016-0000-0000-ABCDEFFEDCBC
您可以使用 Applet 查看器的 -debug 选项调试 applet。
例如:
cd demo\applets\TicTacToe ..\..\..\bin\appletviewer -debug example1.html
您可以在以下 Sun Web 站点找到如何使用 Applet 查看器调试 applet 的相关文档:http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/debugger.html。
Java Web Start 用于 Java 应用程序部署。
Web Start 允许用户从 Web 直接启动和管理应用程序。应用程序被高速缓存以便安装时间最短。当新版本可用时,应用程序会自动升级。
Web Start 支持在 http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html#resources 上记录的以下 java-vm-args:
IBM Web Start 还支持设置垃圾回收策略的 -Xgcpolicy。
有关支持 Web Start 的浏览器的信息,请参阅支持的浏览器。
有关 Web Start 的更多信息,请参阅:
有关部署应用程序的更多信息,请访问:
Web Start 可通过 Web 页面或命令行运行。Web Start 应用程序存储在 Java 应用程序高速缓存中。
您可以采用许多不同的方式调用 Web Start。
javaws <URL>其中 <URL> 是 .jnlp 文件的位置。
C:\Program Files\IBM\Java60\jre\bin\javaws -viewer
所有 Java Web Start 应用程序存储在 Java 应用程序高速缓存中。仅当应用程序的最新版本不在高速缓存中时,才会下载应用程序。
静态版本控制允许 Web Start 请求在其下运行的特定 JVM 版本。由于此功能还允许应用程序利用系统上已升级到新 JVM 的原有的安全漏洞,因此现在缺省情况下可以使用安全静态版本控制。
使用 SSV,在运行请求使用特定 JVM 的任何未签名的 Web Start 应用程序之前,都将向用户发出警告。签名的应用程序和请求最新版本 JVM 的应用程序都将正常工作。
通过将 deployment.properties 文件中的 deployment.javaws.ssv.enabled 属性设置为 false,可以禁用 SSV。
Java 应用程序通常包含类、资源以及数据文件。
当提供 Java 应用程序时,程序包可能包含以下几部分:
用户需要 Runtime Environment for Windows,才能运行应用程序。SDK for Windows 程序包含 Runtime Environment。但是,您不能假定用户已经安装了 SDK for Windows 软件。
SDK for Windows 软件许可证不允许您随应用程序重新分发任何 SDK 文件。您应该确保在目标机器上安装了 SDK for Windows 的许可版本。
类数据共享允许多个 JVM 共享内存中的单一空间。
Java 虚拟机(JVM)通过将类数据存储在磁盘上内存映射的高速缓存文件中,允许在 JVM 之间共享这些数据。当多个 JVM 共享一个高速缓存时,共享会降低整体的虚拟内存耗用。当创建高速缓存后,类共享还会降低 JVM 的启动时间。共享类高速缓存独立于任何活动的 JVM,并且一直保存到被破坏为止。
共享高速缓存可能包括:
类数据共享提供一种透明方法来减少内存占用量并改进 JVM 启动时间。Java 6 提供了高速缓存管理、隔离和性能方面的新功能和改进功能。
启动 JVM 时,使用 -Xshareclasses 选项启用类数据共享。JVM 将连接到现有高速缓存或创建新高速缓存(如果一个高速缓存都不存在)。
缺省情况下,JVM 装入的所有引导程序和应用程序类都会共享。如果定制类装入器扩展应用程序类装入器,那么这些定制类装入器将自动共享类;否则,它们必须使用随 JVM 提供的 Java 助手 API 来访问高速缓存。(请参阅修改定制类装入器来共享类。)
对于某些方法,JVM 还可以将事先(AOT)编译的代码存储在高速缓存中,以提高后续 JVM 的启动时间。AOT 编译代码没有在 JVM 之间实际共享,但是将它高速缓存的目的是减少 JVM 启动时的编译时间。存储在高速缓存中的 AOT 代码量将进行试探性确定。您无法控制将哪些方法存储在高速缓存中,但是您可以为用于 AOT 代码的高速缓存空间量设置上限和下限,或可以选择完全禁用 AOT 高速缓存。 请参阅启用和配置类数据共享获取更多信息。
JVM 可以使用读写或只读访问权来访问高速缓存。 使用读写访问权连接到高速缓存的 JVM 可以更新高速缓存。任何数量的 JVM 可以从高速缓存并发读取,即使另一个 JVM 正在写入该高速缓存时也如此。
如果正在使用运行时字节码修改,那么您必须小心。请参阅运行时字节码修改获取更多信息。
因为共享类高速缓存持续存在时间超过任何 JVM 的生存期,所以会动态更新该高速缓存,来反映可能在文件系统上已对 JAR 或类作出的任何修改。动态更新使高速缓存对于使用它的应用程序保持透明。
对共享的类高速缓存的访问权受限于操作系统许可权和 Java 安全许可权。只有已注册了共享类数据的类装入器才能更新共享类高速缓存。
使用内存页保护来保护高速缓存内存免受偶然或故意的损坏。这不能绝对保证高速缓存内存不受损坏,因为 JVM 必须取消保护页面以对它们进行写访问。唯一可以保证高速缓存无法被修改的方式是以只读方式将它打开。
如果已安装 Java SecurityManager,必须通过将 SharedClassPermission 行添加到 java.policy 文件中,向类装入器(不包括缺省引导程序,应用程序和扩展类装入器)授予共享类的许可权。(请参阅使用 SharedClassPermission。)RuntimePermission『createClassLoader』限制新的类装入器的创建,从而还限制对高速缓存的访问。
一个系统上可以存在多个高速缓存;这些高速缓存是通过将名称作为 -Xshareclasses 命令的子选项来指定的。在任何时候,一个 JVM 一次都只能连接到一个高速缓存。
您可以使用 -Xscmx<n><size> 来覆盖启动时的缺省高速缓存大小,然后在高速缓存的生存期内都将固定使用该大小。高速缓存将一直存在,直到使用 -Xshareclasses 命令的子选项显式破坏它们,或者手动删除了高速缓存文件。
所有高速缓存实用程序都是 -Xshareclasses 命令的子选项。请参阅启用和配置类数据共享,或使用 -Xshareclasses:help 查看可用子选项的列表。
通过对 java 启动程序使用命令行选项来控制类数据共享和高速缓存管理实用程序。
对于采用 <size> 参数的选项,应该在数字后面加上"k"或"K"后缀来指示千字节,加上"m"或"M"后缀指示兆字节,或者加上"g"或"G"指示千兆字节。
某些高速缓存实用程序可以使用以前 Java 版本的高速缓存或者由不同位宽的 JVM 所创建的高速缓存。这些高速缓存也称为"不兼容"高速缓存。
可以将以下子选项与 -Xshareclasses 选项一起使用:
针对由 name、cacheDir 和 nonpersistent 子选项指定的高速缓存,显示详细信息。每个类都按时间顺序列出,同时指出装入该类的来源位置。还会列出类方法的 AOT 代码。
请参阅Diagnostics Guide,以获取更多信息。
概述了共享类数据高速缓存的生命周期,其中包括高速缓存管理实用程序的示例。
要启用类数据共享,请将 -Xshareclasses[:name=<name>] 添加到应用程序命令行中。
JVM 将连接到给定名称的现有高速缓存,或创建该名称的新高速缓存。如果已经创建了一个新的高速缓存,那么将会给它植入所有装入的引导程序和应用程序类,直至高速缓存变满为止。如果并发启动了两个或更多 JVM,它们都将并发植入这些高速缓存。
要检查是否已经创建了高速缓存,请运行 java -Xshareclasses:listAllCaches。要查看正在共享的类和类数据的数量,请运行 java -Xshareclasses:[name=<name>],printStats。(可以在终止应用程序 JVM 后或在另一个命令窗口中运行这些实用程序。)
有关 JVM 运行期间高速缓存使用情况的更多反馈,请使用 verbose 子选项。例如,java -Xshareclasses:[name=<name>],verbose。
要查看从高速缓存装入或存储在高速缓存中的类,请将 -Xshareclasses:[name=<name>],verboseIO 添加到应用程序命令行中。
要删除创建的高速缓存,请运行 java -Xshareclasses:[name=<name>],destroy。仅当高速缓存包含很多陈旧类,或高速缓存已满而需要创建一个更大的高速缓存时,才应该删除高速缓存。
建议调整高速缓存大小以适合您的具体应用程序,因为缺省大小不太可能是最佳大小。确定最佳高速缓存大小的最好方法是指定一个较大的高速缓存(使用 -Xscmx),运行该应用程序,然后使用 printStats 确定已存储的类数据数量。再向 printStats 中显示的值添加一个较小的数值,以防意外情况出现。请注意,因为在 JVM 的生存期内的任何时间都有可能装入类,所以最好在应用程序终止后再执行此分析。但是,由于已满的高速缓存对与之连接的任何 JVM 的性能或功能不会有负面影响,因此决定将高速缓存的大小设置得比实际所需小是非常合理的。
如果高速缓存已满,会将一条消息输出到使用详细子选项的所有 JVM 的命令行上。然后,共享已满高速缓存的所有 JVM 都会将以后任何类装入自己的进程内存中。在已满的高速缓存中的类仍然能够共享,但已满的高速缓存是只读的,而无法使用新类进行更新。
类数据共享对于使用多个运行相似代码的 JVM 的系统尤为有用;系统能从减少的虚拟内存消耗中获益。它还在频繁启动和关闭 JVM 的系统上很有用(获益于启动时间的改善)。
创建和植入新高速缓存的开销非常小。根据装入类的数量,单一 JVM 的 JVM 启动所需时间通常比不使用类数据共享的系统慢 0-5%。根据操作系统和装入类的数量,使用植入的高速缓存后,JVM 启动时间通常会比不使用类数据共享的系统快 10% 到 40%。并发运行多个 JVM 将带来更大的整体启动时间获益。
重复的类在共享类高速缓存中会被合并。例如,从 myClasses.jar 装入的类 A 和从 myOtherClasses.jar 装入的类 A(具有相同内容)只在高速缓存中存储一次。printAllStats 实用程序显示重复类的多个条目,并且每个条目都指向同一个类。
当使用类数据共享运行应用程序时,可以使用操作系统工具看到虚拟内存消耗的减少情况。
在产品中部署类数据共享以及在开发环境中使用类数据共享时要考虑的因素。
理论上说,最大高速缓存大小是 2 GB。可以指定的高速缓存的大小受可用的磁盘空间量和虚拟地址空间量的限制。
高速缓存受以下因素的限制:
对于使用了可修改字节码数据的 JVM 工具接口(JVMTI)代理程序的任何 JVM,如果要与其他 JVM 共享修改的类,那么应该使用 modified=<modified_context> 子选项。
修改的上下文是一个由用户指定的描述符,它描述所执行修改的类型。修改的上下文对高速缓存进行分区,这样所有在相同上下文下运行的 JVM 会共享分区。
该分区操作允许不在使用已修改字节码的 JVM 与使用已修改字节码的 JVM 安全共享高速缓存。所有使用给定已修改上下文的 JVM 都必须针对每个类以可预测且可重复的方式修改字节码,这样存储在高速缓存中的已修改类在由其他 JVM 装入时就会有所需的修改。任何修改都必须可预测的原因是:代理程序无法再重新修改从共享类高速缓存装入的类。
如果不带修改上下文使用 JVMTI 代理程序,类仍可由 JVM 安全共享,但对性能有较小的影响。 将修改上下文与 JVMTI 代理程序一起使用无需再进行额外检查,因此对性能没有影响。未自动使用 JVMTI 扩展 java.net.URLClassLoader 并在装入时修改字节码的定制 ClassLoader 将修改过的字节码存储在高速缓存中,但该高速缓存并不认为该字节码已做过修改。任何其他共享该高速缓存的 VM 会装入修改过的类。modified=<modification_context> 子选项可以采用与 JVMTI 代理程序相同的方法对高速缓存中修改过的字节码进行分区。如果定制 ClassLoader 需要对类进行不可预测的装入时间修改,那么该 ClassLoader 不得试图使用类数据共享。
请参阅 Diagnostics Guide 获取更多有关此主题的详细信息。
不能在 32 位 JVM 和 64 位 JVM 之间共享类。必须有临时磁盘空间可用于保存高速缓存信息。高速缓存许可权由操作系统强制实行。
对于既可以运行 32 位应用程序也可以运行 64 位应用程序的操作系统,不允许在 32 位和 64 位对 JVM 之间进行类数据共享。根据正在使用的 JVM 的寻址方式,listAllCaches 子选项将列出 32 位或 64 位高速缓存。
共享类高速缓存需要磁盘空间来存储有关存在于系统上的高速缓存的标识信息。此信息位于用户概要文件目录中。如果删除了标识信息目录,JVM 将无法识别系统上的共享类,这样就必须重新创建高速缓存。
访问共享类高速缓存的许可权由操作系统强制实行。如果未指定高速缓存名称,那么将把用户名附加到缺省名称后,这样同一个系统上的多个用户就在缺省情况下创建他们自己的高速缓存。
如果 SecurityManager 正与类数据共享结合使用,并且正在运行的应用程序使用其自己的类装入器,那么这些类装入器必须授予共享类许可权,然后才能共享类。
使用 ClassLoader 类名(允许使用通配符)或使用 『read』、『write』或『read,write』 确定授予的访问权,可以向 java.policy 文件添加共享类许可权。例如:
permission com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*", "read,write";
如果 ClassLoader 的许可权不正确,将阻止其共享类。您无法更改缺省引导程序、应用程序或扩展类装入器的许可权。
任何扩展 java.net.URLClassLoader 的类装入器都可以共享类而无需修改。不扩展 java.net.URLClassLoader 的类装入器需要进行调适才能共享类数据。
如果要使用 SecurityManager,那么必须向所有定制类装入器授予共享类许可权,请参阅使用 SharedClassPermission。IBM 为各种类型的定制类装入器提供了多个 Java 接口,这样使得类装入器可在共享的类高速缓存中查找和存储类。这些类位于 com.ibm.oti.shared 程序包中。
在 docs/content/apidoc 目录中,随 SDK 附带了用于该程序包的 Javadoc。
请参阅 Diagnostics Guide 获取有关如何使用这些接口的更多信息。
Java 通信应用程序编程接口(API)程序包(JavaComm)是 IA32、PPC32/PPC64 和 AMD64/EM64T 平台上可与 Runtime Environment for Windows。JavaComm 独立于 SDK 或 Runtime Environment 安装。
JavaComm API 为 Java 应用程序提供了一种独立于平台的方式,来为语音邮件、传真和智能卡等技术执行串行和并行端口通信。
Java 通信 API 支持"电子工业协会"(EIA)-232(RS232)串行端口和"电气电子工程师学会"(IEEE)1284 并行端口,并在装有 IBM V6 Runtime Environment 的系统上受支持。
使用 Java 通信 API,您可以:
安装 Java 通信 API 之前,确保已安装 SDK 或 Runtime Environment。
要从压缩文件安装 Java 通信 API:
利用文件 javax.comm.properties,您可以指定可用于 Java 通信 API 的设备的前缀,以及指定它们是并行的还是串行的。端口号按顺序分配给所有设备。
例如,如果指定 /dev/ttyS=PORT_SERIAL,并且设备 /dev/ttyS0 和 /dev/ttyS1 存在,那么将向它们分配 COM1 和 COM2。
要使用 USB 串行接口,请在 javax.comm.properties文件中取消注释 /dev/ttyUSB=PORT_SERIAL 一行。如果设备 /dev/ttyUSB0 和 /dev/ttyUSB1 存在,但已经定义了 COM1 和 COM2,那么 USB 串行设备会被分配接下来的连续端口,即 COM3 和 COM4。
当使用 Java 通信 API 打印时,可能必须选择"进纸"或"继续"或者打印机上的类似选项 5。
要卸载 Java 通信 API,请从 Runtime Environment 安装目录中删除以下文件:
缺省情况下,Runtime Environment 安装在 C:\Program Files\IBM\Java60\ 目录中。
您可以在以下 Sun Web 站点上找到 API 文档和 Java 通信 API 的样本。
http://java.sun.com/products/javacomm/。
服务联系点:
如果您有权按照 IBM 解决方案开发商计划接受有关程序代码的服务,请以常规访问方法或在 Web 站点 http://www.ibm.com/partnerworld/ 联系 IBM 解决方案开发商计划。
如果您已经购买了服务合同(即 IBM 的个人系统支持热线或者按所在国家/地区提供的同等服务),那么该服务合同的条款和条件将确定您在这个计划下有权接受什么服务(如果有的话)。
随此 SDK 和 Runtime Environment 提供的用户指南已使用屏幕朗读器进行了测试。
要更改用户指南中的字体大小,请使用浏览器附带的功能,通常位于视图菜单选项下。
对于需要使用键盘导航的用户,可在 http://www.ibm.com/developerworks/java/jdk/additional/ 上的 Swing Key Bindings 中找到关于 Swing 应用程序的有效击键的描述。
如果使用光标键遍历 JComboBox 组件的下拉列表,那么 JComboBox 的按钮或可编辑字段不会更改值,直到选择某项为止。这是本发行版的正常行为,这样可以通过确保键盘遍历行为与鼠标遍历行为一致来改善辅助功能选项和提高可用性。
从 V5.0 起,Java Web Start 包含多项对辅助功能选项和可用性的改善,包括对屏幕阅读器的支持更佳和改进的键盘导航。
只使用命令行,就可以启动支持 Web Start 的 Java 应用程序。要更改首选项,必须在用户的主目录中编辑配置文件 Application Data\IBM\Java\Deployment\deployment.properties。编辑此文件之前,请制作备份。并非可以在 Java 应用程序高速缓存查看器中设置的所有首选项都可在该配置文件中使用。
您可以从 http://www.ibm.com/developerworks/java/jdk/security/index.html 获取 JCE 无限制管辖策略文件。有关 IBM 安全性程序包 JCE、JCEFIPS、JSSE2、JSSEFIPS、JGSS、JAAS 和硬件密码术的文档也可从此 Web 站点获取。
如果您对本用户指南有任何意见,请通过以下某种渠道与我们联系。请注意设立以下渠道不是为了解答技术问题,仅仅是为了接收文档意见。
请通过以下方法发送您的意见:
说明。选择将消息发送给 IBM,就承认您的消息中包含的所有信息(包括诸如问题、意见、建议或同样的信息等反馈数据)被认为是非机密的,IBM 对 诸如此类信息没有任何义务,可以没有限制地对这些信息进行免费复制、使用、泄露和分发给其他人。而且,IBM 可以免费将这些信息中包含的想法、概念、专有技术或技术用于任何目的,包括但不限于开发、生产和销售加入这些信息的产品。
下面列出的 -X 选项是非标准的;它们可能发生更改,而不另行通知。
对于采用 <size> 参数的选项,应该在数字后面加上"k"或"K"后缀来指示千字节,加上"m"或"M"后缀指示兆字节,或者加上"g"或"G"指示千兆字节。
对于采用 <percentage> 参数的选项,应使用介于 0 和 1 之间的数字,如 50% 是 0.5。
使得详细垃圾回收(GC)输出被写入指定文件。如果文件已经存在会被覆盖掉。否则,如果一个已存在文件不能被打开或者新文件不能被创建,输出会被重定向到 stderr。如果指定参数 X 和 Y(两个参数都是整数),那么详细 GC 输出将被重定向到 X 个文件,每个文件都包含 Y 个值得详细 GC 输出的 gc 循环。这些文件的格式有:filename1、filename2 等等。缺省情况下,不记录详细垃圾回收。
请参阅 Diagnostics Guide 获取有关详细 GC 输出的更多信息。
SDK 和 Runtime Environment for Windows 上的已知限制。
在 http://www.ibm.com/developerworks/java/jdk/diagnosis/60.html 的 Diagnostics Guide 中可以找到更多关于问题诊断的帮助。
IBM 32-bit SDK for Windows, V6 支持以下语言环境:
但这些语言环境的字体可能无法在 AWT 组件上显示。
IBM 32-bit SDK for Windows, V6 支持 IPv6。但是,因为 Windows 中的当前 IPv6 支持不是双堆栈,所以 SDK 会在启用 IPv6 的系统上仿真双堆栈行为。由于仿真的性质,Java 应用程序可能会使用多达两倍的套接字。要禁用该仿真,请将系统属性 java.net.preferIPv4Stack 设置为 true,以在 SDK 中禁用 IPv6 支持。
在 IBM 的 JConsole 工具中,允许连接到同一系统上其他虚拟机的本地选项卡不可用。另外,也不支持相应的命令行选项 pid。但是,使用 JConsole 中的远程选项卡可连接到要监视的虚拟机。或者,使用 connection 命令行选项,指定 localhost 的主机和端口号。当启动要监视的应用程序时,请设置以下命令行选项:
Mozilla Rhino Javascript 引擎由于许可证问题未包含在 IBM SDK for Java 中。要将 Rhino Javascript 引擎与 IBM SDK for Java 一起使用,请从 https://scripting.dev.java.net/ 下载 jsr223 脚本编制引擎,并从 Mozilla Web 站点 http://www.mozilla.org/rhino/ 下载 Rhino Javascript 引擎。
当使用输入方法编辑器(IME)时,建议您在使用工作空间进行任何其他操作之前完成字符组合操作以及候选字的选择。
如果在使用输入方法编辑器(IME)的同时,用户在 AWT TextArea 中输入文本,然后在落实文本之前重新调整了应用程序窗口,那么该文本会自动落实。
创建不常用长度的 DSA 密钥对可能在运行缓慢的机器上花费大量时间。不应将该延迟视为挂起,因为如果运行足够的时间,将完成该进程。现在已经优化了 DSA 密钥生成算法来生成标准的密钥长度(例如 512 和 1024),这比其他密钥长度要迅速很多。
个人防火墙可能导致 Windows NIO 代码出现问题,导致特定操作的失败。例如,方法调用 Selector.open() 可能因"java.net.ConnectException: Connection refused: connect"而抛出"java.io.IOException: Unable to establish loopback connection"。该异常是由在防火墙阻塞的端口上进行连接的操作系统导致的。JVM 将重试连接操作,要求操作系统选择一个不同的端口号。如果重试若干次之后仍无法连接,将抛出 ConnectException。
如果看见此异常,可以设置系统属性 java.nio.debug=pipe 来查看哪些端口号正被阻塞。
在 Windows 2000 和 XP 上,可以同时打开的文件数的缺省值太低,将导致 I/O 密集的应用程序出现问题。要修正该限制,请编辑文件 <windows>\system32\CONFIG.NT 并设置以下值:
files=200buffers=60
其中 <windows> 是安装 Windows 的目录。
在 Windows 2000(使用 32 位彩色深度)上,JVM 的 DirectDraw 机制不重新绘制鼠标指针下的区域。结果是菜单上如果放置了鼠标就会出现灰色或黑色方块。变通方法是关闭直接绘画(-Dsun.java2d.noddraw),或将屏幕颜色分辨率更改为某个其他值,如 256 色。
NIO SocketChannel finishConnect() 调用可能返回 true(通道已连接)或 false(连接进程尚未完成),或者抛出异常。在 Windows 2000 上使用无阻塞连接时,即便先前的 Java select() 调用已表示通道可用于处理,也可能返回 false。
您不能改变运行时 Java 主线程(也称为原始线程)的堆栈范围。主线程固定大小为 256 KB,该值是从性能出发确定的最佳值。您可以使用 -Xss 选项仅修改除主线程以外的其他线程的堆栈范围。请勿对高度递归的计算使用主线程,因为主线程比其他线程更容易发生堆栈溢出。
如果正在 JTextArea、JTextField 或 JFileChooser 中输入 DBCS 字符,请从某些中文 IME(尤其是中文内码与郑码)切换到智能 ABC IME 时可能会导致产生核心转储。
对于捷克语用户,请注意 InstallShield 的语言选择面板在尚未翻译的安装中会提供一个翻译过的条目。此限制是由 InstallShield 引起的。该字符串是根据代码页从操作系统选取的。因为波兰语(已翻译该语种的安装)和捷克语都有代码页 1250,所以 InstallShield 尝试从系统中检索这两种语言的语言列表,这会导致语言列表中显示该字符串。
如果使用繁体中文,请不要将输出从 Java 应用程序直接输送到 more 命令中。而应将输出定向到一个临时文件中,然后单独查看该文件。
对于加泰罗尼亚语用户,应该使用 Lucida Console 字体以避免将加重音符的大写字母变为乱码。它仅影响 Windows 2000 用户。
仅适用于 DBCS 环境
如果使用 GTK 外观时,应用程序失败并出现 NullPointerException,请将 GNOME_DESKTOP_SESSION_ID 环境变量复位。
仅适用于日语用户
已除去 Shift_JIS 的 Unicode 代码页别名"\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe"。如果应用程序中使用该代码页,请将其替换为 Shift_JIS。
本信息是为在美国提供的产品和服务编写的。IBM 可能在其他国家或地区不提供本文档中讨论的产品、服务或功能特性。有关您当前所在区域的产品和服务的信息,请向您当地的 IBM 代表咨询。
任何对 IBM 产品、程序或服务的引用并非意在明示或暗示只能使用 IBM 的产品、程序或服务。只要不侵犯 IBM 的知识产权,任何同等功能的产品、程序或服务,都可以代替 IBM 产品、程序或服务。但是,评估和验证任何非 IBM 产品、程序或服务,则由用户自行负责。
IBM 公司可能已拥有或正在申请与本文档内容有关的各项专利。提供本文档并未授予用户使用这些专利的任何许可。您可以用书面方式将许可查询寄往:
有关双字节(DBCS)信息的许可证查询,请与您所在国家或地区的 IBM 知识产权部门联系,或用书面方式将查询寄往:
本条款不适用英国或任何这样的条款与当地法律不一致的国家或地区:
INTERNATIONAL BUSINESS MACHINES CORPORATION"按现状"提供本出版物,不附有任何种类的(无论是明示的还是暗含的)保证,包括但不限于暗含的有关非侵权、适销和适用于某特定用途的保证。某些国家或地区在某些交易中不允许免除明示或暗含的保证。因此本条款可能不适用于您。
本信息中可能包含技术方面不够准确的地方或印刷错误。此处的信息将定期更改;这些更改将编入本资料的新版本中。IBM 可以随时对本资料中描述的产品和/或程序进行改进和/或更改,而不另行通知。
本信息中对非 IBM Web 站点的任何引用都只是为了方便起见才提供的,不以任何方式充当对那些 Web 站点的保证。那些 Web 站点中的资料不是 IBM 产品资料的一部分,使用那些 Web 站点带来的风险将由您自行承担。
IBM 可以按它认为适当的任何方式使用或分发您所提供的任何信息而无须对您承担任何责任。
本程序的被许可方如果要了解有关程序的信息以达到如下目的:(i) 允许在独立创建的程序和其他程序(包括本程序)之间进行信息交换,以及 (ii) 允许对已经交换的信息进行相互使用,请与下列地址联系:
只要遵守适当的条件和条款,包括某些情形下的一定数量的付费,都可获得这方面的信息。
本资料中描述的许可程序及其所有可用的许可资料均由 IBM 依据 IBM 客户协议、IBM 国际程序许可证协议或任何同等协议中的条款提供。
此处包含的任何性能数据都是在受控环境中测得的。因此,在其他操作环境中获得的数据可能会有明显的不同。有些测量可能是在开发集的系统上进行的,因此不保证与一般可用系统上进行的测量结果相同。此外,有些测量是通过推算而估计的,实际结果可能会有差异。本文档的用户应当验证其特定环境的适用数据。
涉及非 IBM 产品的信息可从这些产品的供应商、其出版说明或其他可公开获得的资料中获取。IBM 没有对这些产品进行测试,也无法确认其性能的精确性、兼容性或任何其他关于非 IBM 产品的声明。有关非 IBM 产品性能的问题应当向这些产品的供应商提出。
IBM、AIX、developerWorks、eServer、iSeries、MVS、POWER4、POWER5+、PowerPC、 pSeries、System i、System p、System z、WebSphere、System z9、z/OS 和 zSeries 是 International Business Machines Corporation 在美国和/或其他国家或地区的商标或注册商标。
Intel 是 Intel Corporation 在美国和/或其他国家或地区的商标。
Java 和所有基于 Java 的商标和徽标是 Sun Microsystems, Inc. 在美国和/或其他国家或地区的商标或注册商标。
Microsoft、Windows 和 Windows 徽标是 Microsoft Corporation 在美国和/或其他国家或地区的商标。
Linux 是 Linus Torvalds 在美国和/或其他国家或地区的商标。
其他公司、产品或服务名称可能是其他公司的商标或服务标记。