IBM developer kits for Java technology on Apple PowerPC hardware
IBM provides several versions of developer kits and runtime environments for Java technology for Linux distributions that run on IBM POWER and PowerPC hardware; that is, the Linux distributions running on the IBM eServer™ iSeries™, including eServer i5; eServer pSeries®, including eServer p5; eServer BladeCenter™ JS20; and eServer OpenPower™.
Many Linux distributions exist that were created for POWER or PowerPC hardware, such as:
- CRUX PPC
- Debian Linux
- Gentoo Linux
- Yellow Dog Linux
- ROCK Linux
- Red Hat Enterprise Linux
- SUSE LINUX Enterprise Server
To name a few leading distributions.
IBM JVMs were not designed to support all possible combinations of existing Linux distributions with all PowerPC hardware, some of which were not designed by IBM. Therefore, the compatibility of the IBM developer kit or runtime environment for Linux on IBM eServer iSeries, eServer pSeries, or eServer OpenPower, when run on Linux distributions for Apple PPC hardware, depends on the combination of a particular Linux distribution with a particular Apple hardware.
For more on compatibility of IBM developer kits for Java technology with Linux for IBM POWER and IBM PowerPC hardware, refer to the IBM developer kit for Linux: Tested platforms and IBM Developer kit for Linux download pages.
The availability and specifications of Java environments bundled with Linux distributions that run on Apple PowerPC hardware, such as G3, G4, and G5 processors, vary significantly. Some do not provide any JDK or JRE at all, and some provide a JRE only. If a JRE and/or JDK are provided with a particular Linux for Apple PPC hardware distribution, the JRE and/or JDK might not be of the version needed for the user's specific purposes.
Use IBM developer kits for Java technology for IBM POWER and IBM PPC hardware on Linux for Apple PPC hardware
To make use of the IBM developer kit or runtime environment for Java technology for IBM POWER and IBM PPC hardware on Apple PPC hardware, you need to know what type of host processor (G3, G4, or G5) your system has. You also need to know whether the JVM correctly determines host processor architecture so that the JIT compiler can produce the correct set of instructions for that architecture.
In order to generate the exact set of the host processor's instructions, the JIT compiler needs to precisely determine the architecture type of the underlying processor. If the processor type cannot be determined (possibly because it is not supported), the JIT produces a set of instructions for whatever the default processor is set to in that particular JVM version. Instructions produced for the default processor may be outside the set of instructions understood by the host processor. This will lead to the JVM terminating abnormally due to passing illegal instructions to a processor for execution - SIGILL crash. Disabling the JIT completely means that the JVM will run an application's Java bytecode in purely interpretive mode. The resulting performance most likely will not be satisfactory. Trying to skip basic JIT compilation of certain methods that the JIT compiled into some of the ISA instructions not belonging to the set understood by the host processor hardly makes sense. JIT debugging is usually a complex and time-consuming procedure. Even though it is possible to force all methods to be JIT-compiled on their first load into the JVM, it is very hard to predict when and what methods will be loaded into the JVM during the course of execution of any moderately complex Java application.
In order for the JIT compiler to determine the correct processor type,
system configuration information is examined with the
systemcfg_init() function. If that function returns NULL, the
/proc/cpuinfo text file in the /proc file system is parsed and examined.
Some Linux distributions do not have the cpuinfo file in the /proc file
system. Making cpuinfo available in the /proc file system might be a
Even if the processor type is determined correctly, the JIT might not have provisions for producing a subset of PPC instructions for a non-supported processor. One example is the Apple G4 processor, Motorola 7400, which is generically classified as belonging to the PowerPC 700 family. The IBM JVMâs JIT compiler does not support this processor. The solution is to instruct the JIT to produce a set of PowerPC 604 instructions. PowerPC 604 was one of the very first PowerPC processors, and its instructions constitute a core subset of instructions for any PowerPC processor. In other words, every PowerPC processor should be able to execute base PowerPC 604 instructions. Setting the global variable JITC_PROCESSOR_TYPE to "6" should instruct the JIT to produce PowerPC 604 instructions that G4 should be able to execute.
Table 1 shows possible values for the JITC_PROCESSOR_TYPE variable and how they correspond to various POWER and PPC processor architectures.
Table 1. JITC_PROCESSOR_TYPE values and their POWER/PPC architecture correlation
|2||POWER I (RSC)|
|8||PPC 630/POWER III|
|9||Star POWER RS64|
|10||Star POWER RS64II|
|11||Star POWER RS64III|
By knowing the processor type of a particular system, you can decide what value to set for JITC_PROCESSOR_TYPE to make the stock IBM JVM for Linux distributions for IBM Power and IBM PPC hardware work on Linux distributions for Apple hardware. You can also see if the processor type cannot be determined or is not supported.
This will not be necessary if the IBM JVM for Linux distributions for IBM POWER and IBM PPC hardware recognizes the host processor and supports the set of instructions for that processor. For example, none of the above should be necessary when running Yellow Dog Linux versions 3 or 4 on Apple G5, since Apple G5 is based on IBM PowerPC 970 processor, which in turn is based on a single-core version of the IBM POWER4 chip for which the IBM JVM JIT can produce instructions.
i5 - The IBM eServer i5 is the next generation iSeries that uses the POWER5 processor.
ISA - Instruction Set Architecture.
iSeries - IBM integrated servers based on the POWER architecture.
JDK - Java Development Kit. Superset of JRE. Includes JRE and development tools, such as compiler, debugger, and others.
JIT - Same as JITC.
JITC - Just-In-Time Compiler that converts Java bytecode into the native machine code of the host architecture.
JRE - Java Runtime Environment. Subset of JDK. Does not include development tools. Provides JVM to run Java bytecode compiled elsewhere.
JSDK - Java Software Development Kit. Abbreviation used interchangeably with SDK and JDK.
JVM - Java Virtual Machine.
NPTL - Native POSIX Threads Library. NPTL brings enterprise-class threading support to Linux that far surpasses the performance offered by LinuxThreads. It is based on 1:1 ratio between user and kernel threads.
OpenPower - IBM POWER5 microprocessor-based system tuned for Linux.
p5 - The IBM eServer p5 is the next generation pSeries that uses the POWER5 processor.
POWER - Performance Optimization with Enhanced RISC architecture. The name of the common chip architecture for IBM eServer pSeries, iSeries, and OpenPower servers.
POWER3 - One of the currently available POWER chips available for entry-level pSeries servers.
POWER4 - The POWER4 architecture has superior performance across a broad range of commercial and high performance computing environments. POWER4-based iSeries and pSeries servers support dynamic logical partitioning.
POWER4+ - Also known as POWER4-II. Upgrade of POWER4 working at higher frequencies and with less power consumption.
POWER5 - The latest currently available POWER chip. Like the POWER3 and POWER4, the POWER5 technology unifies the POWER and PowerPC architectures. It features communications acceleration, chip multiprocessing, and simultaneous multithreading (SMT).
PowerPC - Hardware architecture derived from POWER.
PPC - Abbreviation for PowerPC.
pSeries - IBM UNIX-based servers that run AIX and/or Linux on IBM POWER-based hardware.
RHEL - Red Hat Enterprise Linux.
RISC - Reduced Instructions Set Computer.
SDK - Software Development Kit. Abbreviation used interchangeably with JDK and JSDK.
SLES - SUSE LINUX Enterprise Server.
SR - Service Refresh.
- Download the Java SDK for your platform at the IBM developer kit for Linux page.
- The article "Introduction to IBM JVM for Linux JIT diagnostics" (developerWorks, April 2004) introduces you to the Just-In-Time (JIT) compiler and the Mixed Mode Interpreter (MMI) optimizations techniques.
- The article "Performance tuning tips for the IBM JVM for Linux on POWER" (developerWorks, May 2004) introduces some of the important performance tuning issues for the IBM JVM for Linux.
- Find diagnostics resources at IBM developer kits: Diagnosis documentation.
- The Linux on POWER and PPC â penguinppc.org site provides a community site for Linux on Power Architecture.
- The IBM POWER site provides a history of POWER development architecture
- The PowerPC site provides a history of the PowerPC.