IBM®
Skip to main content
    Country/region [select]      Terms of use
 
 
      
     Home      Products      Services & solutions      Support & downloads      My account     
[an error occurred while processing this directive]
 
developerWorks  >  Java technology  >  IBM developer kits  > AIX developerWorks
IBM Java 1.1.8 readme

Copyright (c) 1996,1998,1999 IBM Corporation.

Build date: 09 May 2002
Release name: 1.1.8
Full version: JDK 1.1.8 IBM build a118-20020509

This is the latest release of the AIX Developer Kit, Java Technology Edition, Version 1.1.8. It is based on the Sun FCS 1.1.8 Solaris code base and the IBM AIX 1.1.6 JDK release. In addition we have added the following:

  • A version of the JDBC-ODBC bridge backported from 1.2
  • An optionally installable Security Migration Aid for Java backported from 1.2
  • A new RMI-IIOP package
  • A new Big Decimal class package
  • An enhanced JIT compiler
  • Numerous fixes engineered jointly between IBM and Sun

Features

  • Fully Java (tm) compatible -- Write Once, Run Anywhere
  • Performance enhancements:
    • IBM Tokyo Research Labs optimizing JIT compiler version 3.1
    • "Handle-less" machine model
    • Fast, lightweight monitors
    • Thread-local heap
  • Support for the new European Union currency, the Euro. See Section 10 below for more details.
  • Scaling support for large numbers of threads and large numbers of file handles is better with this release. To get maximum scaling, do the following:
    • For maximum threads (with JIT), we suggest setting -ss32k as the minimum stacksize (-ss setting is 256 KB by default and can be as small as 16 KB; a smaller setting allows for a larger number of threads)
    • For maximum file handles use command ulimit or chuser to increase the limit (ulimit -a shows current limit). Note: -mx settings in excess of 512 MB now work correctly
  • Support for display in the sk_SK locale.

Note
The software contained in this package may only be used on AIX Version 4.2.1 or later. It is NOT supported on earlier versions.

This README file is part of a distribution and is applicable only to that particular distribution. Please ensure that you have the README file appropriate to the package you are using. After installation, the response to java -fullversion should be JDK 1.1.8 IBM build a118-20020509.

Installation

Installp image
After AIX installation the minimum Java installation (Java.rte) may have been completed, but you can also download a release.

The installp image comes in the form of six files:



    Java.adt
    Java.rte
    Java.samples
    Java.rmi-iiop
    Java.security
    Java.swing

To install the Application Development Kit or the samples, use the installp command or the system management GUI of your choice. The fileset names are:


    Java.adt.docs
    Java.adt.includes
    Java.adt.src
    Java.rte.Dt
    Java.rte.bin
    Java.rte.classes
    Java.rte.lib
    Java.samples.AIXDemos
    Java.samples.demos
    Java.samples.examples
    Java.rmi-iiop.bin
    Java.rmi-iiop.docs
    Java.rmi-iiop.lib
    Java.rmi-iiop.samples
    Java.security.docs
    Java.security.lib
    Java.swing.doc
    Java.swing.examples
    Java.swing.lib
    Java.swing.src

The software will be installed in the directory /usr/jdk_base/. Set up your PATH environment variable to refer to the new installation:


export PATH=/usr/jdk_base/bin:$PATH

Installation prerequisites for appletviewer to play audio on AIX
For appletviewer to play audio on AIX, please ensure that the following packages are installed:


UMS.H_32x                  2.2.0.1  COMMITTED  AIX Ultimedia Services H.32x
UMS.demo                   2.2.0.0  COMMITTED  AIX Ultimedia Services Demo
UMS.html.en_US.prog_gd     4.3.0.0  COMMITTED  Ultimedia Programming - U. S.
UMS.html.en_US.user_gd     4.3.0.0  COMMITTED  Ultimedia User Guides - U. S.
UMS.loc.en_US.objects      2.2.0.0  COMMITTED  Ultimedia Services Locales -
UMS.msg.en_US.objects      2.2.0.0  COMMITTED  AIX Ultimedia Services
UMS.objects                2.2.0.1  COMMITTED  AIX Ultimedia Services
UMS.samples                2.2.0.0  COMMITTED  AIX Ultimedia Services Samples
UMS.speech                 2.2.0.0  COMMITTED  AIX Ultimedia Services Speech
UMS.video_ext              2.2.0.1  COMMITTED  AIX Ultimedia Services Video
UMS.H_32x                  2.2.0.0  COMMITTED  AIX Ultimedia Services H.32x
UMS.demo                   2.2.0.0  COMMITTED  AIX Ultimedia Services Demo
UMS.loc.en_US.objects      2.2.0.0  COMMITTED  Ultimedia Services Locales -
UMS.objects                2.2.0.0  COMMITTED  AIX Ultimedia Services
UMS.speech                 2.2.0.0  COMMITTED  AIX Ultimedia Services Speech

These filesets are available in bonus pack CD of AIX 4.3.1 and higher. Note: The versions of the filesets listed above may be higher depending on the version of the AIX OS that you're using.

Verification
To ensure that the verification process behaves consistently, do the following:


   unset LIBPATH
   unset CLASSPATH
   unset LD_LIBRARY_PATH
   unset JAVA_COMPILER
   unset JAVA_HOME

If you issue the command java -fullversion, it should respond with:


    java full version "JDK 1.1.8 IBM build a118-20020509"

If this is not correct, check that the PATH is set up correctly. (See above).

Once verification is complete, relogin and review any values you may have assigned to these variables for possible conflicts with the new installation.

Unless it already exists, executing appletviewer will create a directory called .hotjava in your home directory. Issuing ls -a ~ should confirm this.

Just-in-Time (JIT) compiler
The JIT compiler, which speeds up execution of Java, is included in this release, and is now enabled by default.

To disable the Just In Time (JIT) compiler, set the JAVA_COMPILER environment variable to off. This can be done in one of the following ways:

For the Korn shell:

export JAVA_COMPILER=off

For the Bourne shell:

JAVA_COMPILER=off
  export JAVA_COMPILER

For the C shell:

setenv JAVA_COMPILER off

Alternatively, the JAVA_COMPILER environment variable can be overridden from the command line using the -Djava.compiler option. For example, java -Djava.compiler=off <classname> switches off the JIT, and java -Djava.compiler=<anything except off> <classname> switches on the JIT.

It is also possible to specify a specific JIT -- the default is jitc. To do this set JAVA_COMPILER=<specific jit> or use the command -line option, that is: java.compiler=<specific jit>. As the JIT compiler is updated, we will include earlier versions of the JIT with the JDK release. The current jit version is v3.0.

Note that if you use JAVA_COMPILER="" or java.compiler="", then the JIT will be switched off. If JAVA_COMPILER is set but set to nothing or -Djava.compiler is used with no =, then the default HIT is swtiched on. The default JIT will always be the latest version. Also note that NONE can be used as an alternative to off.

AIX
The JDK uses AIX's POSIX threads (pthread) package for its threading. This means that Java threads can be scheduled on multiple processors on multi-processor systems.

Thread priorities are not supported. All threads run at the same priority.

The green threads implementation released with JDK1.0.2 is no longer supported.

Java requires all of its threads to use system contention scope. The executable tools that are distributed with the JDK -- java, java_g, etc., have been compiled and linked to ensure that system contention scope threads are used. However, it is possible for JNI invocation of API applications, which have their own executables, to inadvertantly create and attach process contention scope threads to the JVM. This can cause hangs and crashes due to signaling and GC problems with process contention scope threads and the JVM. Applications built on AIX4.3+ will use process contention scope threads by default, so explicit action needs to be taken to ensure that these applications use system contention scope threads at runtime. There are two ways to achieve this:

  1. Set the environment variable AIXTHREAD_SCOPE=S. This will cause all threads to be created with system contention scope by default.
  2. Specify system scope explicitly in the pthread attributes structure when creating a pthread to attach to the JVM. See the AIX system documentation on pthreads for more details.

JNI example
In the examples/jni_example directory, you will find a simple example of the use of the new JNI interface for native methods introduced in 1.1.

The file jni_example/README contains information about the example, plus general notes on shared libraries. /p>

The IBM AIX Developer Kit, Java Technology Edition, Version 1.1.8 does not support runtime linking (using the -brtl loader option). Any applications built for use with the IBM AIX Developer Kit, Technology Edition, Version 1.1.8 should not rely on runtime linking functionality.

A note about JNI on AIX 4.3: because of some incompatibility between the JDK and some system defined types, compilation of JNI code requires that the compiler use the flag _AIX43. This flag is defined by default in /etc/ibmcxx.cfg. But, if you are using a version of xlc prior to v3.6.4 then you will need to add _AIX43 to /etc/xlC.cfg or use -D_AIX43 as a compilation command line option.

Also, please refer to the notes in Section 6 regarding thread-scope and JNI invocation API applications.

Large program model support
The JVM of The IBM AIX Developer Kit, Java Technology Edition, Version 1.1.8 can support large program model. For more details on large program model, see: http://www.rs6000.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/genprogc/larg_prg_support.htm.

The 1.1.8 JVM's launcher executables (java, java_g, jre and jre_g) are built to use the default small memory model. This limits the memory available to malloc() etc., which in turn limits the number of threads running simultaneously. While the small memory model should prove adequate for most Java applications, there are likely to be some heavyweight applications which require the large memory model to support large native structures, or large numbers of threads.

There are three ways to enable Java and your application to support the large program model:

  • You can patch the binary executable with the following shell command which allows the program app to access up to 8 segments (where each segment is 256 MB):
    
           /usr/bin/echo '\0200\0\0\0'|dd of="app" bs=4 count=1 seek=19 conv=notrunc
    
    Using values of \0120\0\0\0 or \0100\0\0\0 would enable the use of 5 or 4 segments of data heap, respectively.
  • You can link the program with the -bmaxdata:0x80000000 flag.
  • For AIX 4.3.3.10 or later, you can override the maxdata setting for an executable with the LDR_CNTRL environment variable:
    
           export LDR_CNTRL=MAXDATA=0x80000000
    

If your application uses a lot of functions like shmat() and mmap(), or if you attach shared memory to fixed addresses in your application, you will not want to allocate all 8 segments for the data heap. Use a smaller setting to suit your application.

AIX files
There are AIX bugs that occurs in certain versions which may affect Java.

In version 4.2.0.0, there is a problem with the thread-safe function gethostbyaddr_r. It returns an empty string. This has been worked around in JDK1.1.2 and later versions, but the workaround is not entirely thread-safe, so it may fail in thread-intensive applications.

To rectify the problem, you need to upgrade the following filesets to these levels:


  bos.rte.libc       4.2.0.7
  bos.rte.libnetsvc  4.2.0.1
  bos.rte.libs       4.2.0.5
  bos.rte.security   4.2.0.7
  bos.up             4.2.0.12

You can check the current level of bos.rte.libc with this command:


  lslpp -ah bos.rte.libc

The easiest way to upgrade is using the FixDist tool, available from: http://service.software.ibm.com/cgi-bin/support/rs6000.support/downloads. FixDist allows the user to select and download fixes based on fileset level (as above), as well as APAR number.

In version 4.3.* there can be some problems with version 4.0.0.* of the xlC libraries.

These manifest themselves as failures at JVM shutdown, with stack traces (see javacores, dbx the core file or in errpt -add output) of the form:


	signal.pthread_kill
	signal._p_raise
	raise.raise
	abort.abort
	_Getcat__Q2_3std8messagesXTw_FPPCQ3_3std6locale5facet
	terminate__3stdFv
	terminate__Fv
	except.__DoThrow
	__dt__12__short_lockFv
	__sterm_x_2fu_5fC_2b_2b_2fmcnamara_2fusltusc299_2fstream_2fstream_2ec__Fi
	terminate_orig_libs__Fv
	cuexit.exit
	sysExit

To fix this, apply the 5.0.0.4 libraries as indicated by APAR IY14529.

The base level filesets for the 5.0 C++ Runtime are at http://www-4.ibm.com/software/ad/vacpp/service/csd.html#redistribute.

To find the latest C++ runtime PTFs, search for APAR IY14529 on http://techsupport.services.ibm.com/support/rs6000 under "SW Fix Database by APAR".

Supported locales, and how to run programs in different locales
Note that the encoding for some locales has changed at PTF4. A full list of the changes appears below.

Also note that an alternative fonts.properties.zh file has been made available for the zh_CN locale for AIX 4.3.3 and above at PTF5. The new file enables new fonts, but requires special instalation. Details appear below.

To run in a locale other than the default, you must first have the locale fully installed. You can use the SMIT tool (System Environments/Manage Language Environment) to install a new locale. You can check the installed locales with the locale -a command.

Then, you must set the LC_ALL and LANG environment variables. For example, to run in Japanese, use the following (in Korn Shell):


        export LC_ALL=JA_JP
        export LANG=JA_JP
        java MyProgram

Please note that the locales listed in the "AIX Locale" column below are the only ones supported by Java. So, if you need to use the EUC encoding of Japanese, you must set LC_ALL and LANG to ja_JP, not to ja_JP.IBM-eucJP. Similarly, any long locale names not listed in the table below are not supported by Java. Also note that the long names currently supported (such as Ja_JP.IBM-932) are present purely for temporary backwards compatability and may be phased out in the future. We also recommend you use the new UTF-8 locales where possible, for example JA_JP rather than ja_JP.

The "Translations" column indicates the locales that have native language messages for Gava. If there are no translations, all messages will be in English.


  LANGUAGE                AIX LOCALE            ENCODING    TRANSLATIONS
  ======                  ==========            ========    ============
  Albanian                SQ_AL                 UTF-8
  Arabic                  AR_AA                 UTF-8
  Bulgarian               bg_BG                 ISO8859-5
                          BG_BG                 UTF-8
  Byelorussian            BE_BY                 UTF-8
  Catalan                 ca_ES                 ISO8859-1
                          ca_ES.IBM-1252        IBM-1252
                          CA_ES                 UTF-8
                          Ca_ES                 IBM-850
  Chinese (Simplified)    zh_CN                 GB2312      yes
                          Zh_CN                 GBK         yes
                          ZH_CN                 UTF-8        yes
  Chinese (Traditional)   Zh_TW                 Big5        yes
                          zh_TW                 CNS11643    yes
                          ZH_TW                 UTF-8        yes
  Croatian                hr_HR                 ISO8859-2
                          HR_HR                 UTF-8
  Czech                   cs_CZ                 ISO8859-2
                          CS_CZ                 UTF-8
  Danish                  da_DK                 ISO8859-1
                          Da_DK                 IBM-850
                          DA_DK                 UTF-8
  Dutch (Belgium)         nl_BE                 ISO8859-1
                          nl_BE.IBM-1252        IBM-1252
                          Nl_BE                 IBM-850
                          NL_BE                 UTF-8
  Dutch                   nl_NL                 ISO8859-1
                          nl_NL.IBM-1252        IBM-1252
                          Nl_NL                 IBM-850
                          NL_NL                 UTF-8
  English (Great Britain) en_GB                 ISO8859-1   yes
                          En_GB                 IBM-850     yes
                          EN_GB                 UTF-8        yes
  English (United States) en_US                 ISO8859-1   yes
                          En_US                 IBM-850     yes
                          EN_US                 UTF-8        yes
  Estonian                ET_EE                 UTF-8
  Finnish                 fi_FI                 ISO8859-1
                          fi_FI.IBM-1252        IBM-1252
                          Fi_FI                 IBM-850
                          FI_FI                 UTF-8
  French (Belgium)        fr_BE                 ISO8859-1   yes
                          fr_BE.IBM-1252        IBM-1252    yes
                          Fr_BE                 IBM-850     yes
                          FR_BE                 UTF-8        yes
  French (Canada)         fr_CA                 ISO8859-1   yes
                          Fr_CA                 IBM-850     yes
                          FR_CA                 UTF-8        yes
  French                  fr_FR                 ISO8859-1   yes
                          fr_FR.IBM-1252        IBM-1252    yes
                          Fr_FR                 IBM-850     yes
                          FR_FR                 UTF-8        yes
  French (Switzerland)    fr_CH                 ISO8859-1   yes
                          Fr_CH                 IBM-850     yes
                          FR_CH                 UTF-8        yes
  German                  de_DE                 ISO8859-1   yes
                          de_DE.IBM-1252        IBM-1252    yes
                          De_DE                 IBM-850     yes
                          DE_DE                 UTF-8        yes
  German (Switzerland)    de_CH                 ISO8859-1   yes
                          De_CH                 IBM-850     yes
                          DE_CH                 UTF-8        yes
  Greek                   el_GR                 ISO8859-7
                          EL_GR                 UTF-8
  Hebrew                  HE_IL                 UTF-8
  Hungarian               hu_HU                 ISO8859-2
                          HU_HU                 UTF-8
  Icelandic               is_IS                 ISO8859-1
                          Is_IS                 IBM-850
                          IS_IS                 UTF-8
  Italian                 it_IT                 ISO8859-1   yes
                          it_IT.IBM-1252        IBM-1252
                          It_IT                 IBM-850     yes
                          IT_IT                 UTF-8        yes
  Japanese                ja_JP                 IBM-33722C  yes
                          Ja_JP (AIX <  4.3.2)  IBM-942C    yes
                          Ja_JP (AIX >= 4.3.2)  IBM-943C    yes
                          Ja_JP.IBM-932         IBM-942C    yes
                          Ja_JP.IBM-943         IBM-943C    yes
                          JA_JP                 UTF-8        yes
  Korean                  ko_KR                 KSC5601     yes
                          KO_KR                 UTF-8
  Latvian                 LV_LV                 UTF-8
  Lithuanian              LT_LT                 UTF-8
  Macedonian              mk_MK                 ISO8859-5
                          MK_MK                 UTF-8
  Norwegian               no_NO                 ISO8859-1
                          No_NO                 IBM-850
                          NO_NO                 UTF-8
  Polish                  pl_PL                 ISO8859-2
                          PL_PL                 UTF-8
  Portuguese (Brazil)     pt_BR                 ISO8859-1   yes
                          Pt_BR                 IBM-850     yes
                          PT_BR                 UTF-8        yes
  Portuguese              pt_PT                 ISO8859-1
                          pt_PT.IBM-1252        IBM-1252
                          Pt_PT                 IBM-850
                          PT_PT                 UTF-8
  Romanian                RO_RO                 UTF-8
  Russian                 ru_RU                 ISO8859-5
                          RU_RU                 UTF-8
  Serbian Cyrillic        SR_SP                 UTF-8
  Serbian Latin           SH_SP                 UTF-8
  Slovak                  SK_SK                 UTF-8
                          sk_SK                 ISO8859-2
  Slovene                 SL_SI                 UTF-8
  Spanish                 es_ES                 ISO8859-1   yes
                          es_ES.IBM-1252        IBM-1252    yes
                          Es_ES                 IBM-850     yes
                          ES_ES                 UTF-8        yes
  Swedish                 sv_SE                 ISO8859-1   yes
                          Sv_SE                 IBM-850     yes
                          SV_SE                 UTF-8        yes
  Thai                    TH_TH                 UTF-8
  Turkish                 TR_TR                 UTF-8
  Ukrainian               UK_UA                 UTF-8
  Vietnamese              VI_VN                 UTF-8

The following changes were made at PTF4:


AIX LOCALE              PREVIOUS ENCODING       CURRENT ENCODING
==========		=================	================
ja_JP			eucJIS			IBM-33722C
Ja_JP			JIS			IBM-942C/IBM-943C
Ja_JP.IBM-932		IBM-942			IBM-942C
Ja_JP.IBM-943		IBM-943			IBM-943C

The changes allow Java to translate the IBM entended kanjis, and also fix javac compilation problems due to backslash/yen translations. Note that for locale Ja_JP, the encoding used depends on the AIX operating system level. For this locale on AIX 4.3.1 and earlier, IBM-942C is used, but on AIX 4.3.2 and later, IBM-943C is used. This matches the change made to the native encoding for the Ja_JP locale at AIX 4.3.2.

There's also new zh_CN font support at PTF5. Java by default uses the 17-point fonts -ibm_aix-song-medium-r-normal--*-%d-*-*-m-*-*-* in the zh_CN locale. This font is large (17-point) which can cause problems with AWT layout.

On AIX 4.3.3 the 13-point fonts -monotype-sansmonowt-medium-r-normal--*-%d-*-*-m-*-*-* are available. To check whether your system has the new fonts, go to directory /usr/lib/X11/fonts/, and issue the command:


	> grep monotype-sansmonowt- fonts.dir

You should see output containing the lines:


gb18tt.pcf.Z -monotype-sansmonowt-medium-r-normal--18-130-100-100-m-90-gb2312.1980-0
rom9tt.pcf.Z -monotype-sansmonowt-medium-r-normal--18-130-100-100-m-90-iso8859-1

If these lines do not appear, then the new fonts are not available on your system.

To enable use of the new fonts in Java, go to the <JAVA_HOME>/lib directory and issue the following commands:


	> mv font.properties.zh font.properties.zh.orig
	> cp font.properties.zh.4.3.3 font.properties.zh

In order to restore the original settings, restore the original file as follows:


	> cp font.properties.zh.orig font.properties.zh

Note that when displaying on an X server on a remote machine, the remote machine should also support the new fonts.

Euro support
Support for the new European Union currency, the Euro, is included in the JDK. Platform-level support is required to make use of this, as follows:

On AIX 4.3.2 (and upwards) the Euro is supported via the new UTF-8 locales. This is the primary mechanism for Euro support on AIX.

On AIX 4.2.1 the Euro is supported via the "Single Byte Euro Migration Option" which is available as APAR IX83167. This adds the Euro to IBM-1252 encodings of the following locales: ca_ES, de_DE, fr_FR, es_ES, fi_FI, fr_BE, nl_NL, nl_BE, pt_PT, and it_IT. After installing the patch and restarting your X server, you need to set the LANG and LC_ALL environment variables to the full locale, for example de_DE.IBM-1252, and then start a dtterm, so that it uses the correct fonts.

There is no Euro support on any older versions of AIX.

With either of the above options, applications can then make use of the Euro symbol (using the Unicode character \u20AC) and Euro variants of Java Locales, which provide the appropriate currency formatting.

The environment variable LC_MONETARY is currently not used by Java -- the default is always the national currency. To get a Euro currency locale, each application needs to create a "EURO" variant of a Java Locale.

For more information on IBM's position on the Euro currency, see: http://www.ibm.com/euro.

JDBC-ODBC bridge
An edition of JDBC-ODBC Bridge is backported from JDK 1.2 to JDK 1.1.x. Security Model for the Bridge remains unchanged as for JDK 1.1.x. JNI Interface is used in this AIX version. This verion assumes that your ODBC driver can support concurrency and you are expected to provide locking in your application if necessary.

In the examples/jdbcodbc_example directory, you will find a sample Java program using the JDBC-ODBC Bridge to connect to a target database. A C sample program is also provided for you to test your direct ODBC connection.

To use the JDBC-ODBC Bridge, you need to set up your own ODBC driver to work with the target database. You should only set up the JDBC-ODBC bridge after you have successfully tested your ODBC driver.

The file jdbcodbc_example/README contains information about the sample programs and also information on how to set up the environment to use the JDBC-ODBC Bridge.

Enhanced BigDecimal class
This release introduces an enhanced BigDecimal class (com.ibm.math.BigDecimal) for Java, which is provided as an alternative for java.math.BigDecimal. The new class (and its supporting class MathContext) is fully implemented and exploits the interface java.lang.Comparable which is used for sorting in Java 2. This interface is included in the classes provided with this enhancement, renamed as com.ibm.math.java.lang.Comparable.

If you already use that BigDecimal class, you can probably simply change the import statement import java.math.*; to import com.ibm.math.*; to access the new class without changing any other code.

The new class is available in /usr/jdk_base/lib/math.jar and the .java_wrapper script is updated to include this JAR file at the end of the CLASSPATH environment variable. If you launch your Java programs differently, then you need to add this JAR file into your own CLASSPATH.

API documentation is included in the /usr/jdk_base/bigdecimal/docs directory. A small example program decdemo.java and README.dec are available in the /usr/jdk_base/examples/bigdecimal directory.

RMI-IIOP
Also packaged with this release is an extension to support RMI over IIOP. This allows RMI applications to communicate using the IIOP protocol and interoperate with CORBA applications written in any language.

The runtime support for RMI-IIOP is packaged within Java.rte. The .java_wrapper script is updated to include the RMI-IIOP runtime at the end of the CLASSPATH.

The developer support is in the optional Java.rmi-iiop package. When you install the RMI-IIOP developer support, you replace rmic with a new version which supports the generation of IIOP stubs and ties, and is backward- compatible for JRMP.

See the RMI-IIOP readme (/usr/jdk_base/rmi-iiop/readme.html) for detailed information.

Security migration aid
Also packaged with this release is an optionally installable Security Migration Aid for Java.

The Security Migration Aid allows users of IBM's Java Development Kit (JDK) version 1.1.8 to exploit enhancements in the Java security model defined in Java 1.2 without having to use a 1.2 version of the Java JDK.

The Security Migration Aid is intended to help users who wish to migrate from the, relatively simple, Java 1.1 security model to the finer grained Java 1.2 model. The Security Migration Aid features support the use of security policies, permissions, tools and Java runtime security managers as defined in the Java 1.2 security model. Applet development using features of the 1.2 security model is supported and the Security Migration Aid includes an applet viewer that implements the expected security policies and checks as defined by the user.

The Security Migration Aid consists of new, security related Java classes, packaged by IBM (in com.ibm.security12 and optionally installable) but that appear functionally like their Java 1.2 equivalents. These IBM classes run in the JDK 1.2 environment together with some additional supporting classes and native code.

Applications, applets, and data files can make use of Java 1.2 security features without the need for users to develop equivalent, fine grained, security mechanisms and resulting in systems that are more easily ported to a Java 1.2 environment.

The Migration Aid is optionally installable from the material in /usr/jdk_base/security and once installed will place a JAR file containing the Security Migration Aid Classes (SecMA.jar) in the directory alongside the JDK classes.zip file and a native shared library (libSecMA.a) alongside the core JDK's shared libraries in /usr/jdk_base/lib/aix/native_threads.

Once installed, the Security Migration Aid's features can be used by placing its JAR file (/usr/jdk_base/lib/SecMA.jar) ahead of the standard JDK classes in the classpath. The install process additionally places some example security configuration files alongside the original JDK security.java file in /usr/jdk_base/lib/security/ that can be used as templates for configuration of a Migration Aid security policy.

Additional documentation can be found in the /usr/jdk_base/security/docs directory once the Security Migration Aid documentation is installed. A more detailed version of this README information for the Security Migration Aid is installed to /usr/jdk_base/security/README.SecMA when the Security Migration Aid is installed.

javacore.txt
In the unfortunate event of a core dump in your application when using JDK 1.1.8, you will get a javacore text file in addition to the core file. At service refresh 10 and above, the javacore file has a filename of the format of javacore<process id>.<time>.txt. The <time> is the return value from the time() subroutine at the time of core dump so each javacore file will not be overwritten as for core files.

The location of the javacore file will be determined as follows:

  1. If the environment variable IBM_JAVACOREDIR refers to a writable directory, then the javacore file is written to that directory
  2. Otherwise, if the current working directory is writable, the javacore file is written there.
  3. Otherwise, if the environment variable TMPDIR refers to a writable directory, then the javacore file is written to that directory
  4. Otherwise, the javacore file is written to the /tmp directory

The location of the javacore file is written to standard error as a full pathname and is also appended, with a date/time stamp to the file /tmp/javacore_locations. Basic file locking is used to avoid buried updates of this file.

If the javacore cannot be opened for some reason, the information will be written to standard error. The javacore file provides information of the java program at the time of the core dump. To study JNI native code, you will still need to use the core file.

Signals
The Java 1.1.8 Virtual Machine (JVM) uses a small number of signals internally.

In addition, signal handlers are set for a number of other signals, mainly to allow generation of diagnostic information when major failures occur.

The signals used internally are:

  • SIGJVM1 (signal 40) is used for thread synchronisation, e.g. at GC time.
  • SIGUSR2 (signal 31) is used in JIT compiled code.
  • SIGTRAP (signal 5) is used by the JIT as part of a specialised performance technique.

Signals which are always trapped, and which will (if possible) generate a javacore file and (if appropriate) an AIX core dump file, are:

  • SIGTRAP (signal 5) if JIT is not in use
  • SIGXCPU (signal 24)
  • SIGXFSZ (signal 25)
  • SIGALRM (signal 14)
  • SIGABRT (signal 6)

Signals which are usually trapped and will generate javacore and core, but for which JVM handling may be suppressed by setting the environment variable DISABLE_JAVADUMP=true are:

  • SIGILL (signal 4)
  • SIGFPE (signal 8)
  • SIGBUS (signal 10)
  • SIGSEGV (signal 11)
  • SIGSYS (signal 12)

SIGQUIT (signal 3) is, at present, always handled and will generate a javacore> (but not a core) and then allow the JVM to continue.

SIGPIPE (signal 13) is ignored.

At this release of the JVM, our signal handlers will not "chain" to pre-existing handlers, but pre-existing handlers for the following signals will be reinstated when the JVM exits:

  • SIGJVM1 (signal 40)
  • SIGUSR2 (signal 31)
  • SIGILL (signal 4)
  • SIGFPE (signal 8)
  • SIGBUS (signal 10)
  • SIGSEGV (signal 11)
  • SIGSYS (signal 12)
  • SIGABRT (signal 6)
  • SIGQUIT (signal 3)
  • SIGPIPE (signal 13)

Other people's code (JNI) may safely supercede most of our signal handlers (which are set up in JVM initialisation, e.g. CreateJavaVM), albeit with some possible loss of diagnostics.

Exceptions are the handlers for SIGJVM1, SIGUSR2, and SIGTRAP. These signals must be passed to the JVM.

If your code really must handle SIGJVM1, SIGUSR2, or SIGTRAP, you should ensure that your handlers chain to ours -- but it would be better not to try to handle these signals.

The use of SIGTRAP by the JIT may cause significant problems in using debuggers such as dbx with the JVM.

Notices
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact: JTCMAIL@uk.ibm.com.

Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.

Revision history



25 Feb 97 - Release of IBM1.1-FCS-beta1

11 Mar 97 - Release of IBM1.1-FCS-beta2, which fixes the following:
            * a security problem pointed out by JavaSoft
            * non-compliance in Math.atan and Math.ceil to do with positive vs.
              negative zero.
            * problem with exception on 'daload' instruction
            * problems with the generation of OutOfMemoryError,
              IncompatibleClassChangeError, and IllegalMonitorStateException.
            * java crashed when used with the '-prof' option.

11 Apr 97 - Release of IBM1.1, which fixes the following:
            * It now complies with the Java Compliance Kit.
            * Thread.interrupt() did not properly interrupt a thread waiting
              on a monitor.
            * JNI_CreateJavaVM() (part of the JNI interface) failed with an
              error status if LD_LIBRARY_PATH was not set to anything.
            * A blocking I/O call, suck as ServerSocket.accept() could not be
              interrupted by Thread.stop()
            * Japanese fonts added.
            * Closing a socket output stream sometimes did not flush output to
              the socket correctly.
            * java.net.InetAddress.getByName(..) (and hence other functions
              like getLocalHost() which call it) would sometimes crash.

22 Apr 97 - Release of IBM1.1.1-FCS-beta1, with the following changes:
            * Classes in compressed jar files could not be referenced, because
              of a bug in the loading of the zip library.
            * Runtime.exec() previously did not throw an exception properly if
              the command was not found.
            * A workaround to the problem with gethostbyname_r in AIX 4.1.4.0
              and earlier has been added.
              See the "AIX fixes" section above.
            * The description of the process given by the ps command is
              more complete.

08 May 97 - Release of JDK1.1.1 IBM build a111-19970508, with the following
              changes:
            * The result of division of 0x80000000 by -1 is now compliant
              with the JCK.
            * Socket.setSoLinger(..) threw an exception when set to false.
            * Support for several locales added.
            * The Princeton University applet signing security flaw has been
              fixed.
            * Native method libraries written in C++ are now initialized
              correctly.  The constructor was sometimes not called for global
              variables such as 'cout'.

25 Jul 97 - Release of JDK1.1.2 IBM build a112-19970725, with the following
              changes:
            * A problem with the loading of C++ libraries has now been fixed.
            * Improved JNI example.
            * Problem fixed whereby cascading menus were throwing
              NullPointerExceptions.
            * The UW security flaw has been fixed.  The class loader was not
              checking to make sure that each method's number of arguments is
              less than or equal to its number of locals.  There is no known
              way to exploit this as a security hole.
            * Fixed a bug whereby the use of modal dialog boxes sometimes
              caused Java to hang or core dump.
            * A workaround to the problem with gethostbyaddr_r in AIX 4.2.0.0
              has been added.
              See the "AIX fixes" section above.
            * The "the June 23 Verifier Bug" has been fixed in this release.

19 Mar 98 - Release of JDK 1.1.4 IBM build a114-19980319, with the following
              changes:
            * Minimum supported level moved up to 4.1.5
            * Fixed a problem with weak references (in a112-19970725 only),
              which affected RMI and the caching of bitmap images.
            * The loading of C++ modules has been re-worked, and destructors
              for static objects are now called on JVM exit.
            * Java would sometimes hang when logged in as root.
            * List and TextArea AWT objects were not cleaned up properly,
              occasionally giving 'postEvent method not found' exceptions.
            * A problem with commas appearing between the digits of numbers
              when the JIT was enabled has been fixed.
            * Fixed intermittent problems that occurred when a modal dialog box
              was disposed.
            * Segmentation violation was occurring with cascading popup menus.
            * Some keypad keys were giving the wrong characters in TextFields
              and TextAreas.
            * Class.forName() now considered to be a first active use of a
              class and will result in the class static initialisers being
              called.
            * Fixed the incorrect behaviour with TextField when setEchoChar()
              has been called.
            * Fixed a problem in the new GC suspend code where a thread
              suspends itself.
            * Fixed Memory leak in RMI
            * Fixed occasional AWT hangs
            * Fixed a problem in drawBytes which was using the wrong font
            * Fixed a problem with OutOfMemoryExceptions which was not
              thrown correctly
            * implemented New garbage collection suspend
            * Fixed SIGSEGV in JIT with Spectrum Emulator
            * Fixed VM hangs when clipboard is used
            * Fixed a NullPointerException which occurred when JIT was enabled.
            * Fixed an occasional SIGSEGV in garbage collector
            * Could not close a socket when another thread was blocking in a
              read on that socket - fixed.
            * Fixed a modal dialog hang condition.
            * Made it impossible to select an illegible font size.
            * MulticastSocket.getInterface() threw a SocketException - fixed.
            * Wrapper scripts revamped.
            * Thread.stop() was causing core dumps and hangs with JIT enabled.
            * C++ library loading did not work in French locale.
            * "Bacon Bits" monitors added.
            * "Jovation" trace output added.
            * JIT compiler enabled by default.
            * Improved full thread dump.

24 Sep 98 - Release of JDK 1.1.6 IBM build a116-19980924, with the following
              changes:
            * javacore.txt file (containing information about the state of
              java monitors and stacks) can be produced be pressing CTRL-\
              (this is only useful when the JIT is disabled).
            * JMark2.0 AWT Display performance degradation fixed.
            * Overall performance improvement due to faster synchronization.
            * Better error messages from System.loadlibrary().
            * Thread specific data fix for better performance and reliabilty
              in heavilly threaded applications.
            * Fixed I/O problems with ar_AA locale (Arabic).
            * Fixed TextField truncation problems with Korean locale.
            * Fixed broken Russion IME key sequence <Alt><Right Shift>.
            * Fixed font scaling problems.
            * JNI interface cleaned up for _AIX43 and IBM specific macros.
            * Improved scaleability.
            * jre -d now provides full version information.
            * The JIT performance has been significantly improved but at the
              expense of some increase in startup time.  This issue is being
              addressed.

Post 24 Sep 98 - Bug fixes after GA (see file fixes.lst issued with PTF's).

02 Jun 99 - First Developer Release of JDK 1.1.8

01 Jul 99 - Update to this Readme file:
             * Addition of new notice section.

27 Jul 99 - Second Developer Release of JDK 1.1.8

10 Sep 99 - Release of JDK 1.1.8 IBM build a118ga-19990806

Correspondence
Please see the following Web page for information on reporting bugs and other correspondence: http://www.ibm.com/java/jdk/support/index.html.

New Features

Note that the following links will only work if the corresponding option is installed.

Links

  Contents
AIX overview
AIX FAQs
Download and service information
Security
Diagnosis documentation

 
    About IBM Privacy Contact