<!doctype HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Entorno de desarrollo para el Kit del Desarrollador
del OS/2 Warp de IBM, Edicin Java(TM)</TITLE>
</HEAD><BODY BGCOLOR="FFFFFF">
<A NAME=Top_Of_Page> </A>

<center><H3>Entorno de desarrollo para el</H3>
<H4>Kit del Desarrollador de OS/2(R) Warp de IBM(R), Edicin de Tecnologa Java(TM),
Versin 1.1.8
</H4>
</center>

<P>
El Kit del Desarrollador de <B>OS/2 Warp de IBM,
Edicin de Tecnologa Java(TM), 1.1.8 (Kit del Desarrollador)</B>
est basado en el nivel de mantenimiento de Java 1.1.8 de
Sun Microsystems. Este archivo describe el componente Kit de utilidades
del Kit del Desarrollador.
<HR>
<MENU>
<LI><A NAME=ToC_1  HREF="#Header_1 " > Instalacin</A>
<LI><A NAME=ToC_2  HREF="#Header_2 " >Identificador APPLET</A>
<LI><A NAME=ToC_16  HREF="#Header_16 " >Herramientas de Java</A>
<UL>
<LI><A NAME=ToC_3  HREF="#Header_3 " > Compilador</A>
<LI><A NAME=ToC_4  HREF="#Header_4 " >Herramientas de depuracin</A>
<UL>
<LI><A NAME=ToC_4A HREF="#Header_4A " >Depurador ICAT</A>
<LI><A NAME=ToC_4B HREF="#Header_4B " >Depurador JDB</A>
</UL>
<LI><A NAME=ToC_5  HREF="#Header_5 " >JAVAP</A>
<LI><A NAME=ToC_6  HREF="#Header_6 " >JAVADOC</A>
<LI><A NAME=ToC_7  HREF="#Header_7"  >JAVAH</A>
</UL>
<LI><A NAME=ToC_8  HREF="#Header_8 " >Acceso a objetos Java desde un programa C</A>
<UL>
<LI><A NAME=ToC_9  HREF="#Header_9 " >Java Native Interface (JNI)</A>
<LI><A NAME=ToC_9A HREF="#Header_9A" >Archivos de cabecera y fuente de JAVAH</A>
</UL>
<LI><A NAME=ToC_10 HREF="#Header_10 " >Archivos escritos mediante PrintStream</A>
<LI><A NAME=ToC_11 HREF="#Header_11 " >Funcionamiento de Java.lang.Class.forName()</A>
<LI><A NAME=ToC_12 HREF="#Header_12 " >Caracteres de barra inclinada invertida y de tilde en pases DBCS</A>
<LI><A NAME=ToC_13 HREF="#Header_13 " >Conversin entre ShiftJIS y Unicode en OS/2 Warp 4 Versin japonesa</A>
<LI><A NAME=ToC_14 HREF="#Header_14" >Limitaciones conocidas</A>
<LI><A NAME=ToC_15 HREF="#Header_15" > Avisos</A>
</MENU>

<HR><P>
<H2><A NAME="Header_1" HREF="#ToC_1">Instalacin</A></H2>
<P>
Consulte en el archivo README del directorio
<B>\JAVA11</B> la informacin ms reciente relacionada con la
instalacin. Despus de la instalacin, este archivo se ubica
en el directorio donde se desempaquetan los archivos del Kit del
Desarrollador.
</p>
<P>
El componente Kit de utilidades de Java necesita que primero se instale
el componente Runtime de Java. El Kit de utilidades debe residir en una
particin HPFS o JFS.
Los enlaces de
este documento slo funcionan si los componentes
Runtime, Kit de utilidades y Depurador ICAT estn instalados en la misma
unidad y en el mismo directorio.
</P>
<HR>
<H2><A NAME="Header_2" HREF="#ToC_2">Identificador APPLET</A></H2>
<P>
El identificador APPLET se utiliza para incluir una applet Java en una
pgina HTML. Cuando se carga la pgina HTML en un examinador de la Web habilitado para
Java, la applet se ejecuta.
Si el examinador de la Web reconoce el identificador APPLET pero no puede
ejecutar applets Java, se muestra el texto especificado por el atributo
ALT. El Visor de applets, que se incluye como parte del componente
Runtime de Java, tambin se puede utilizar para ejecutar una applet.
</P>
<H3>Sintaxis del identificador APPLET</H3>
<P>
La sintaxis para el identificador APPLET es:
<PRE>
    <B>&lt;APPLET</B>
    <B>      CODE    =  ArchivoApplet</B>   u <B>OBJECT=AppletSerializada</B>
          CODEBASE  =  URLBaseCdigo
          ARCHIVE   =  ListaArchivos
          ALT       =  TextoAlternativo
          NAME      =  NombreInstanciaApplet
<B>WIDTH = pixels
</B>
<B>HEIGHT = pixels
</B>
          ALIGN     =  alineacin
          VSPACE    =  pixels
          HSPACE    =  pixels
    <B>&gt;</B>

     &lt; PARAM NAME = AtributoApplet1   VALUE = ValorApplet1 &gt;
     &lt; PARAM NAME = AttributoApplet2  VALUE = ValorApplet2 &gt;
      .
      .
      .
    <B>&lt;/APPLET&gt;</B>
</PRE>
<DL>
<P><DT><B>CODE = ArchivoApplet
</B><DD>Este atributo proporciona el nombre del archivo que contiene la
subclase Applet compilada de la applet. Este archivo es relativo a
la URL base de la applet y no puede ser absoluto. Es un atributo necesario si no se especifica OBJECT.
<P><DT><B>OBJECT = Appletserializada
</B><DD>Este atributo proporciona el nombre del archivo que contiene una
representacin serializada de una applet. La applet se deserializa, el mtodo <b>init()</b> no se invoca, pero
se ejecuta el mtodo <b>start()</b>. Cualquier atributo que se pasa a
esta applet est disponible para ello. Debe tener cuidado al utilizar esta funcin ya que debe detenerse
una applet antes de que se serialice.

    Es un atributo necesario si no se especifica CODE.
<P><DT><B>CODEBASE = URLBaseCdigo</B>
<DD>Este atributo opcional especifica el directorio que contiene el
cdigo para la applet. Si no se especifica este atributo, se utiliza la URL del documento.
<P><DT><B>ARCHIVE = ListaArchivos</B>
<DD>Este atributo opcional especifica uno o ms archivos que contienen
clases y otros recursos que no se cargan previamente. Las clases se cargan utilizando una instancia de un AppletClassLoader con
el CODEBASE proporcionado. Los archivos de ListaArchivos se separan
mediante comas (<B>,</B>). Varios identificadores APPLET con el mismo
CODEBASE comparten la misma instancia de AppletClassLoader.
<P><DT><B>ALT = TextoAlternativo
</B>
<DD>Este atributo opcional especifica cualquier texto que deba
visualizarse si el examinador reconoce el identificador
APPLET pero no puede ejecutar applets Java.
<P><DT><B>NAME = NombreInstanciaApplet
</B>
<DD>Este atributo opcional especifica un nombre para la instancia de
applet que hace posible que las applets de la misma pgina se encuentren
y se comuniquen.
<P><DT><B>WIDTH = pixels
</B><DD>Este atributo obligatorio especifica la anchura inicial, en
pixels, del rea de visualizacin de la applet, sin contar las ventanas
o los dilogos que emergen de la applet.
<P><DT><B>HEIGHT = pixels
</B><DD>Este atributo obligatorio especifica la altura inicial, en pixels,
del rea de visualizacin de la applet, sin contar las ventanas o
dilogos que emergen de la applet.
<P><DT><B>ALIGN = alineacin
</B><DD>Este atributo especifica la alineacin de la applet.
  Los valores posibles de este atributo son los mismos que para el
identificador IMG de HTML: left, right, top, texttop, middle, absmiddle,
baseline, bottom, absbottom.
<P><DT><B>VSPACE = pixels
</B><DD>Este atributo especifica el nmero de pixels situados encima y
debajo de la applet. Se trata del mismo modo que el atributo
VSPACE en el identificador HTML IMG.
<P><DT><B>HSPACE = pixels
</B><DD>Este atributo especifica el nmero de pixels a cada lado
de la applet. Se trata del mismo modo que el atributo HSPACE en el identificador HTML
IMG.
<P><DT><B>&lt; PARAM NAME = AtributoApplet1 VALUE = ValorApplet1 &gt; ...
</B><DD>Este identificador es la nica manera de especificar un
atributo especfico de la applet.
    Las applets acceden a sus atributos con el mtodo <B>getParameter(
)</B>.
</DL>
<H3>Ejemplo del identificador APPLET</H3>
<P>
Este ejemplo muestra cmo codificar el identificador APPLET para ejecutar
una applet en la clase MyApplet en una ventana de 320 pixels de anchura y
de 120 pixels de altura. Se pasan dos parmetros a la
applet, <B>mynumber</B> y <B>mytext</B>, y si la pgina HTML la visualiza
un examinador sin posibilidad de ejecutar applets Java, se visualiza el
texto especificado por el atributo ALT:
<PRE>
   &lt;applet code="MyApplet.class" width=320 height=120
           alt="Ver una applet correcta aqu en un examinador habilitado para Java."&gt;
   &lt;param name=mynumber value="42"&gt;
   &lt;param name=mytext   value="Fido 3"&gt;
   &lt;/applet&gt;
</PRE>
<p>
A los parmetros <B>mynumber</B> (mi nmero) y <B>mytext</B> (mi
texto) se accede desde la clase MyApplet con llamadas al mtodo
<B>getParameter()</B>. El parmetro
<B>mynumber</B> puede manejarse de la siguiente manera:
<PRE>
   String  parm;
   int     answer;

   parm  = getParameter("mynumber");
   if (parm == null) {
     answer = 12;
   } else {
     answer = Integer.parseInt(parm);
   }
</PRE>
<HR>
<H2><A NAME="Header_16" HREF="#ToC_16">Herramientas de Java</A></H2>
<p>Las secciones siguientes describen las herramientas de Java
disponibles para ayudarle a depurar programas Java.</p>

<HR>
<H3><A NAME="Header_3" HREF="#ToC_3"> Compilador</A></H3>
<P>
El <B></B> compilador convierte cdigo fuente Java en cdigos de bytes
Java, que posteriormente los lee y ejecuta el intrprete de Java. El cdigo fuente se encuentra en archivos que finalizan con la
extensin de <B>.java</B>. El compilador almacena su salida de cdigo de
bytes en un archivo con el mismo nombre que el archivo fuente,
pero con la extensin <B>.class</B>.

<P>
El compilador inicia con un tamao inicial de almacenamiento dinmico
del intrprete de Java
de 8 MB y tiene una asignacin de almacenamiento dinmico mxima de
16 MB. Si este tamao de almacenamiento dinmico no es suficiente,
puede especificar un tamao ms grande con la opcin <B>-mx</B>
del intrprete de Java. La opcin <B>-J</B> de <B></B> se utiliza para pasar la opcin al
intrprete de Java. Por ejemplo, para compilar LargeClass.java con un tamao de pila de
100 MB:
<PRE>
        javac -J-mx100m LargeClass.java
</PRE>
<HR>
<H3><A NAME="Header_4" HREF="#ToC_4">Herramientas de depuracin</A></H3>
<P>
El Kit del Desarrollador proporciona dos herramientas de programacin
de Java:
<UL>
<LI><A HREF="#Header_4A " >El Depurador ICAT</A>
es un depurador a nivel de fuente que ejecuta en OS/2 Warp. Proporciona
depuracin local o remota de aplicaciones Java.
<LI><A HREF="#Header_4B " >El Depurador de Java (JDB)</A>, que se
proporciona en plataformas 100% Pure Java, es un depurador de lnea de
mandatos para clases de Java.
</UL>
<H3>Opciones del compilador de depuracin</H3>
<P>
Cuando compile la aplicacin Java, especifique la opcin
<B>-g</B> para permitir la generacin de tablas de depuracin. Estas tablas contienen
informacin esencial sobre los nmeros de lnea y las
variables locales para los depuradores.
<P>
Puede obtener informacin adicional sobre depuracin para JDB
especificando la opcin <B>-O</B>, la cual hace que se incluyan los
mtodos esttico, final y privado.
No debe utilizar esta opcin con el Depurador ICAT para el
Kit del Desarrollador porque
el cdigo incluido distorsiona la visualizacin de los nmeros de
lnea fuente.
<P>
Una clase compilada con informacin de depuracin es ms grande que una
clase sin esta informacin.
<H3>Interfaz de retorno de bucle TCP/IP</H3>
<P>
Para depurar una aplicacin Java que se ejecuta en la misma mquina que
el depurador, debe estar activa la interfaz de bucle de retorno
de TCP/IP. Para verificar que la interfaz est activa, entre lo siguiente en
el indicador de mandatos del OS/2:
<PRE>
        ifconfig lo
</PRE>
Si la interfaz est activa, debera aparecer algo similar a lo siguiente:
<PRE>
lo: flags=809&lt;UP,LOOPBACK&gt;
         inet 127.0.0.1 netmask xff000000
</PRE>
En caso contrario, ver algo similar a lo siguiente:
<PRE>
lo: flags=808&lt;LOOPBACK&gt;
</PRE>
Si la interfaz de bucle de retorno TCP/IP est inactiva, puede iniciarla
entrando lo siguiente en el indicador de mandatos del OS/2:
<PRE>
        ifconfig lo 127.0.0.1 up
</PRE>
<P>
Para habilitar esta interfaz automticamente, abra la carpeta
TCP/IP y, a continuacin, abra el objeto
Configuracin TCP/IP. Dependiendo de la versin de TCP/IP que tenga,
tambin puede abrir el objeto de configuracin de TCP/IP entrando
lo siguiente en el indicador de mandatos del OS/2:
<UL>
<LI><B>TCPCFG</B> para la versin 4.0 o anterior</LI>
<LI><B>TCPCFG2</B> para la versin 4.1 o superior</LI>
</UL>
Despus de abrir el objeto Configuracin de TCP/IP, pulse
en la pestaa <B>Red</B>.
Seleccione la
<B>interfaz de bucle de retorno</B> como interfaz a configurar y
seleccione <B>Habilitar interfaz</B>. En el indicador de mandatos del
OS/2, especifique <B>127.0.0.1</B> para la Direccin IP. Cierre el objeto Configuracin TCP/IP y guarde los cambios cuando se le
solicite.
</P>

<HR>
<H3><A NAME="Header_4A" HREF="#ToC_4A">Depurador ICAT</A></H3>
<P>
La Herramienta para Anlisis de Cdigo Interactivo (ICAT) de IBM para
OS/2 Java proporciona depuracin de aplicaciones OS/2 Java y sus llamadas
a mtodos nativos (potenciales) (cdigo C o C++ reunido en un archivo de
biblioteca de carga dinmica (DLL) de OS/2). El Depurador ICAT es un
depurador a nivel de fuente que utiliza el
Presentation Manager (PM) de OS/2 para su espacio de presentacin y
ejecuta su mtodo de depuracin fuera de una JVM.
<P>
Se puede encontrar informacin detallada sobre el depurador en la
<A HREF=icatjava\help\icatjava.htm>Documentacin del Depurador
ICAT para el Kit del Desarrollador</A>.
<HR>
<H3><A NAME="Header_4B" HREF="#ToC_4B">Depurador Java Debugger (JDB)</A></H3>
<P>
El <B>JDB</B> es un depurador de lnea de mandatos
para clases Java. El Depurador de Java se inicia en lugar del intrprete de Java.
Puede obtenerse una lista de los mandatos disponibles y una breve
descripcin de cada uno de ellos, especificando
<B>help</B> o <B>?</B> en el indicador de mandatos del OS/2 una vez el
depurador est activo.
<HR>
<H3><A NAME="Header_5" HREF="#ToC_5">JAVAP</A></H3>
<P>
<B>JAVAP</B> desensambla un archivo de clase Java y, segn las opciones
especificadas, visualiza informacin variada sobre el archivo, que
incluye:
<ul>
<li>Tablas de variables locales y nmeros de lnea
<li>Cdigo desensamblado
<li>Variables pblicas y mtodos
<li>Variables privadas y mtodos
</ul>
</p>
<p>
Si escribe <B>JAVAP</B> sin ninguna opcin en una lnea de mandatos del
OS/2, se visualizar una lista de opciones.
</p>
<HR>
<H3><A NAME="Header_6" HREF="#ToC_6">JAVADOC</A></H3>
<P>
<B>JAVADOC</B> genera un conjunto de pginas HTML basado en declaraciones
y comentarios de los archivos fuente Java. JAVADOC visualiza todas las declaraciones pblicas y protegidas para
clases, interfaces, mtodos y variables.
Puede pasar un nombre de paquete o una lista de archivos fuente Java
como un argumento a JAVADOC.</P>

<p><b>Nota:</b> Se utilizan archivos fuente (.java); no archivos de clase (.class).
</p>

<p>
Si escribe <B>JAVADOC</B> sin ninguna opcin en una lnea de mandatos del
OS/2, se visualizar una lista de opciones.
</p>
<HR>
<H3><A NAME="Header_7" HREF="#ToC_7">JAVAH</A></H3>
<P>
<B>JAVAH</B> produce archivos de cabecera C y archivos fuente C a partir
de una clase Java.
Estos archivos se utilizan para
<A HREF="#Header_9A">acceder a objetos Java desde un programa C</A>.
</p>
<HR>
<H2><A NAME="Header_8" HREF="#ToC_8">Acceso a objetos Java desde un programa C</A></H2>
<P>
Se puede acceder a los objetos Java desde un programa
C o C++ nativo de las dos maneras siguientes:
<UL>
<LI><A HREF="#Header_9 " >Java Native Interface (JNI)</A>
<LI><A HREF="#Header_9A" >Archivos de cabecera y fuente de JAVAH</A>
</UL>
<P>
JNI, nuevo en Java 1.1.1, proporciona una interfaz ms estable para los
mtodos nativos que el mtodo anterior de utilizacin de archivos de
cabecera y archivos fuente generados por JAVAH.

<P>
<H3>Consideraciones generales sobre la programacin</H3>
<UL>
<LI>La JVM modifica la palabra de control de unidad
de coma flotante para suprimir algunas excepciones de coma flotante. Los mtodos nativos que modifican la palabra de control de coma flotante
deben guardar el contenido de la palabra de control que se ha entrado y
restaurarlo al salir del mtodo nativo.
<P><LI>En el OS/2 Warp Server, Versin 4 antes del FixPak 31 y en
OS/2 Warp Server SMP antes del FixPak 31, no est soportada
la llamada a la API DosQueryThreadContext.
Esto significa que
JVM debe utilizar un mecanismo de suspensin voluntaria para recoleccin
de basura. Este mecanismo necesita que todos los pasos de Java comprueben
peridicamente una peticin de suspensin. Este mecanismo falla y no es
posible la recoleccin de basura si un mtodo nativo entra en una
suspensin de cualquier duracin.
<P>En  OS/2 Warp 4, este mecanismo se ha sustituido por un mecanismo
ms consistente y menos intrusivo, pero para asegurar la compatibilidad
al ejecutar aplicaciones en todas las versiones soportadas de OS/2, los
mtodos nativos no deben esperar ms de uno o dos segundos.
<P>
Los emisores de las llamadas pueden participar en el proceso de suspensin
voluntaria haciendo que las esperas fuera del entorno Java se dividan
en una serie de esperas cortas (&lt; 0,5 segundos) con una llamada
a <b>ThreadCheckForSuspend() </b>emitida entre cada espera. Por
ejemplo, puede sustituir el cdigo siguiente:
<PRE>
      rc = DosRequestMutexSem( mutex, SEM_INDEFINITE_WAIT );
</PRE>por:<PRE>
      do
      {
        rc = DosRequestMutexSem( mutex, 250L );
        if (rc == ERROR_TIMEOUT) ThreadCheckForSuspend();
      } while (rc == ERROR_TIMEOUT);
</PRE>
<P>
La definicin prototipo para la llamada a ThreadCheckForSuspend es:
<PRE>
       void ThreadCheckForSuspend (void);
</PRE>
<LI>Para evitar posibles conflictos de nombres de DLL en el futuro,
utilice nombres de DLL que no empiecen por la serie <B>JAVA</B>.

</UL>
<HR>
<H2><A NAME="Header_9" HREF="#ToC_9">Java Native Interface (JNI)</A></H2>
<P>
Se puede acceder a los objetos de Java desde un programa C
utilizando Java Native
Interface (JNI), que era nuevo en Java 1.1.1. Utilizando JNI
se obtiene una interfaz ms estable que con
<A HREF="#Header_9A">Archivos de cabecera y fuente de JAVAH</A>.
<P>
Para producir mtodos nativos especficos de una plataforma en C o C++
utilizando JNI en OS/2:
<OL>
<LI>Cree un archivo fuente de clase Java para sustituir los mtodos
nativos:
<PRE>
    class MyNativeClass
       {
         String x;
         ...
         public native void demo(String x);
         ...
         static { System.loadLibrary("MyLib"); }
       }
</PRE>
<P><B>Nota: </B>  El mtodo <b>System.loadLibrary</b> se ejecuta la
primera vez que se llama a la clase y carga una DLL llamada
MyLib que debe contener los mtodos nativos.
<P><LI>Genere un archivo .h para el archivo de clase utilizando <B>JAVAH</B>:
<PRE>
     javah -jni MyNativeClass
</PRE>
<P>
Con ello se crea un archivo <B>MyNativeClass.h</B>.
<P>
<LI>Cree un archivo .c para implantar las funciones declaradas en el
archivo MyNativeClass.h y aada una lnea para incluir la cabecera
generada.
<PRE>
#include "MyNativeClass.h"
</PRE>
<LI>Escriba los mtodos nativos en C utilizando puntos de entrada con el
formato Java_<B>&lt;nombre de clase&gt;_&lt;nombre de mtodo&gt;</B>:
<PRE>
/*
 * Class:     hello
 * Method:    demo
 * Signature: (java/lang/String;)
 */
JNIEXPORT void JNICALL Java_hello_demo
   (JNIEnv *ee, jobject o, jstring s)
{
}
</PRE>
<LI>
Genere un archivo de definicin de mdulo,
<B>javadef.def</B>, de la siguiente manera:
<PRE>
LIBRARY INITINSTANCE
DATA MULTIPLE NONSHARED
CODE SHARED
</PRE>
<LI>Compile y enlace el programa de la siguiente manera:
<PRE>
icc /Ge- /FeMyLib.dll MyNativeClass.c javadef.def javai.lib
</PRE>
<P>La va de acceso de bsqueda de INCLUDE debe incluir:
<PRE>
    x:\JAVA11\include;x:\JAVA11\include\os2;
</PRE>
<P>y la va de acceso de bsqueda de LIB debe incluir:
<PRE>
    x:\JAVA11\lib;
</PRE>
donde <B>x:\JAVA11</B> es la unidad y el directorio donde se ha instalado el
componente Kit de utilidades de Java.
</OL>

<HR>
<H2><A NAME="Header_9A" HREF="#ToC_9A">Archivos de cabecera y fuente de JAVAH</A></H2>
<P>
Se puede acceder a los objetos de Java desde un programa C
utilizando los archivos de cabecera y fuente C producidos por
<A HREF="#Header_7">JAVAH</A>. Estos archivos permiten acceder a las
variables de instancia de un objeto.
<P>
<B>Nota: Las DLL del mtodo nativo de Java 1.0.2 no son compatibles con
el Kit del Desarrollador y deben volverse a compilar y enlazar.
</B>
<P>
<B>Todas las DLL del mtodo nativo de Java 1.0.2 deben ser recompiladas
y vueltas a enlazar antes de que puedan ser utilizadas con el Kit
del Desarrollador.</B>  Esto es necesario debido a que los cambios en el modelo de pila de Java
han producido un cambio en la macro <B>unhand()</B>. El nombre de la DLL
de intrprete de tiempo de ejecucin de Java tambin ha cambiado, pero
esto debe ser transparente para los desarrolladores de los mtodos
nativos, siempre y cuando vuelvan a enlazar con la nueva versin de
<B>JAVAI.LIB</B>.

<P>
Con el nuevo modelo de almacenamiento dinmico de Java, los descriptores de contexto, as
como los objetos, se pueden mover durante la recoleccin de basura. 
El colector de basura cambia los descriptores de contexto que conoce. Sin embargo, si un mtodo nativo almacena un descriptor de contexto de
objeto Java en un almacenamiento esttico o en un almacenamiento dinmico
de C, el colector de
basura no lo conoce y no lo puede arreglar. En este caso, el colector de basura puede mover el descriptor de
contexto e invalidar la referencia que contena el mtodo nativo.
<P>
Para evitar que el colector de basura mueva un descriptor de contexto
especfico, llame al mtodo <B>pin_handle()</B> y pase el descriptor
de contexto que no debe moverse.
Utilice el mtodo <B>unpin_handle()</B> cuando haya finalizado la accin
para el descriptor de contexto; esto permite mover el descriptor de contexto
durante la recoleccin de basura.

<P>
Para utilizar mtodos nativos especficos de una plataforma en
C o C++ en OS/2:
<OL>
<LI>Cree un archivo fuente de clase Java para sustituir los mtodos
nativos:
<PRE>
    class MyNativeClass
       {
         String x;
         ...
         public native void demo(String x);
         ...
         static { System.loadLibrary("MyLib"); }
       }
</PRE>
<P><B>Nota: </B>  El mtodo System.loadLibrary se ejecuta la primera vez
que se llama a la clase y carga una DLL llamada MyLib, que debe contener
los mtodos nativos.
<P><LI>Genere un archivo .h para el archivo de clase utilizando <B>JAVAH</B>:
<PRE>
     javah MyNativeClass
</PRE>
<LI>Genere un archivo apndice .c para la clase utilizando
<B>JAVAH</B>:
<PRE>
     javah -stubs MyNativeClass
</PRE>
<LI>Escriba los mtodos nativos en C utilizando puntos de entrada con el
formato <B>&lt;nombre de clase&gt;_&lt;nombre de mtodo&gt;</B>:
<PRE>
   void MyNativeClass_demo(struct Hjava_lang_String * x)
</PRE>
<LI>Compile los archivos C. La va de acceso de bsqueda de INCLUDE debe
incluir lo siguiente:
<PRE>
    x:\JAVA11\include;x:\JAVA11\include\os2;
</PRE>
donde <B>x</B> es la unidad en la que se ha instalado Java.<P>
<LI>Enlace los archivos C que contienen los mtodos nativos con el
archivo apndice C para crear una DLL con el nombre especificado en
la sentencia System.loadLibrary. Es necesario enlazar con la biblioteca de Java
<B>x:\JAVA11\LIB\JAVAI.LIB </B> (o la versin de depuracin de la
biblioteca, <B>JAVAI_G.LIB</B>) si ha utilizado alguna funcin de
ayuda de Runtime de Java.
</OL>
<P>
Runtime de Java utiliza el convenio de llamada IBM VisualAge C
_Optlink para llamar a los mtodos nativos en DLL.

<HR>
<H2><A NAME="Header_10" HREF="#ToC_10">Archivos escritos mediante PrintStream</A></H2>
<P>
Los registros escritos en un archivo utilizando el mtodo
<B>println()</B> de la clase PrintStream se finalizan utilizando
el mtodo <b>newLine()</b> de la OutputStreamWriter implcita. El mtodo
<b>newLine()</b> utiliza la propiedad de sistema
<B>line.separator</B> adecuada para la plataforma,
que en OS/2 son los caracteres (x'0d0a').
<P>
Es un cambio a partir de JDK 1.0.2. En JDK 1.0.2, al escribir en un
archivo mediante PrintStream, se utilizaba un solo carcter de lnea nueva
(x'0a') como separador de lnea.
Esto era coherente con los convenios UNIX estndares, pero difera del
convenio OS/2 segn el cual los registros finalizan con los
caracteres (x'0d0a').
<P>Los registros adecuados de Java finalizar de cualquiera de las dos
maneras.
<HR>
<H2><A NAME="Header_11" HREF="#ToC_11">Funcionamiento de Java.lang.Class.forName()</A></H2>
<P>
<a href="http://java.sun.com:80/docs/books/jls/clarify.html">Clarificaciones
y rectificaciones de <I>Especificacin del lenguaje Java</I></a>
describe un cambio en el funcionamiento de <b>Java.lang.Class.forName()</b>.
Este documento declara:
<P>
<I>JLS 20.3.8 debe indicar que una llamada a java.lang.Class.forName("X")
hace que se inicialice la clase llamada "X".</I>

<P>
Para el Kit del Desarrollador, el funcionamiento de
<b>Class.forName()</b> corresponde a la especificacin de Sun
modificada y a la implantacin de referencia de Sun. Una llamada a java.lang.Class.forName("X") ahora hace que se
inicialice la clase llamada "X".
<P>
Este funcionamiento se asume implcitamente en los ejemplos de Java
Database Connectivity (JDBC) que utilizan
<b>Class.forName()</b> para cargar controladores JDBC y en los que
se espera que el controlador JDBC sea inmediatamente utilizable.
En los ejemplos se asume que los inicializadores estticos del
controlador JDBC los ejecuta <b>Class.forName()</b>, para que el
cdigo de inicializador esttico del controlador se pueda registrar a s
mismo con el gestor de controladores JDBC.

<HR>
<H2><A NAME="Header_12" HREF="#ToC_12">Caracteres de barra inclinada invertida y de tilde en pases DBCS</A></H2>
<p>Determinadas pginas de cdigos DBCS (por ejemplo,
932, 942, 943, 949) no tienen ningn carcter de barra inclinada
invertida ni de tilde en el mismo punto de cdigo que otras pginas
de cdigos ASCII. A continuacin se proporcionan algunos ejemplos sobre
ello:
<UL>
<LI>En la mayora de pginas de cdigos ASCII, el punto de cdigo 0x5c
es una barra inclinada invertida y el punto de cdigo 0x7e es una
tilde.
<LI>En las pginas de cdigos 932, 942 y 943, el punto de cdigo
0x5c es una marca de yen japons y el punto de cdigo
0x7e es una lnea sobrepuesta.
<LI> En la pgina de cdigos 949, el punto de cdigo 0x5c es un signo de
won coreano.
</UL>

<H3>Posicin de los caracteres</H3>
<p>El compilador de Java, javac, primero convierte el programa fuente
Java de la pgina de cdigos local a Unicode. A continuacin procesa las
secuencias de caracteres de escape, como por ejemplo
\n, leyendo el carcter de barra inclinada invertida,
despus el carcter 'n' y, a continuacin, las combina como
caracteres de escape para generar una nueva lnea
Unicode, U+000A, antes de compilar el programa.</p>

<p>En algunas instancias, el carcter de barra inclinada invertida (carcter
0x5C en la pgina de cdigos 850)
en determinadas pgina de cdigos de DBCS
no est en la misma posicin. Por ejemplo, en la pgina de cdigos 943, el carcter
0x5C es un carcter de yen. Si el compilador javac ha convertido el punto
de cdigo 0x5c de la pgina de cdigos local (una marca de yen) en el
programa fuente Java a una marca de yen Unicode (U+00A5), no habr
presente ningn carcter de barra inclinada invertida, por lo que no se
realizar ningn proceso de secuencia de caracteres de escape.</p>

<p>Adems, en las pginas de cdigos 932, 943 y 949, no existe ninguna
barra inclinada invertida en la pgina de cdigos local, por lo que
no es posible que un programador genere una barra inclinada invertida
Unicode (para utilizarla para generar otros caracteres Unicode utilizando
secuencias de escape Unicode) despus de la conversin de pgina de
cdigos en el compilador javac.</p>

<H3>Tablas de conversin</H3>

<p>Para permitir que los programadores escriban programas que contengan
una barra inclinada invertida, la JVM utiliza tablas
de conversin de pgina de cdigos modificadas para las pginas de
cdigos 932, 943 y 949. Estas tablas modificadas pasan de los caracteres
0x00 a 0x7F de la pgina de cdigos local a los caracteres U+0000 a
U+007F en Unicode.
Esto significa que un programador puede utilizar una marca de yen
(0x5c) en la pgina de cdigos 932 y 943 y un signo de won
(0x5c) en la pgina de cdigos 949 para representar un carcter
de barra inclinada invertida (U+005C) en Unicode. Se puede utilizar una
lnea superpuesta
(0x7e) en las pginas de cdigos 932 y 943 para representar una tilde
(U+007E) en Unicode.</p>

<p>Estas tablas de conversin de pginas de cdigos modificadas tambin
se utilizan como valor por omisin para JVM cuando se ejecuta en las
pginas de cdigos 932, 943 y 949 del OS/2. Se utilizan para las clases
PrintStream, PrintWriter, OutputWriter
y InputReader cuando no se especifica ninguna codificacin de caracteres
explcita.</p>

<p>Aunque utilizando 0x5C en la pgina de cdigos local se pueda imprimir
como una marca de yen en la pgina de cdigos local, si un programador de
aplicaciones realmente desea una marca de yen, deber utilizar un
escape Unicode para generar un carcter Unicode U+00A5. Esto es
necesario para que la aplicacin se pueda transportar a otras pginas
de cdigos y tambin para hacer que Abstract Window Toolkit (AWT)
visualice el glifo de carcter correcto. Deben aplicarse una
consideraciones similares si el programador desea una lnea sobrepuesta:
debe utilizarse el carcter Unicode U+203E dentro del programa Java.
</p>

<H3>Pgina de cdigos 942</H3>

<p>sa pgina de cdigos 942 incluye tildes y barras inclinadas
invertidas, aunque en puntos de cdigos diferentes de las otras pginas de
cdigos. Puesto que esta pgina de cdigos incluye tildes y barras inclinadas,
aunque estn en posiciones diferentes en otras pginas de cdigos
ASCII, por omisin, no se utilizan los convertidores de pgina de cdigos
modificadas.
</p>

<p>Los programas escritos en esta pgina de cdigos se pueden escribir
utilizando los smbolos reales de barra inclinada invertida y de tilde
en la pgina de cdigos local. Si los programas se escriben en otra pgina de cdigos ASCII en las que
la barra inclinada invertida es el punto de cdigo
0x5C y es necesario compilarlos, en la mayora de casos, se puede
conseguir el funcionamiento correcto utilizando uno de los dos mtodos
siguientes:</p>

       <ul>
       <li>Sustituya el carcter 0x5c en el programa fuente Java
             por el carcter de barra inclinada invertida de la
             pgina de cdigos local (punto de cdigo 0xfe).

        <li>Al compilar la aplicacin o applet Java, indique que el
            archivo est escrito en una pgina de cdigos distinta de la
            pgina de cdigos local. Por ejemplo, si el cdigo fuente se ha escrito en la pgina de cdigos
             850, utilice el mandato siguiente para compilarlo:

                <pre>javac  -encoding 850  myprogram.java</pre>
       </ul></p>

<p>Si el archivo est escrito con caracteres DBCS en la pgina de cdigos
942, utilizando 0x5C para representar la barra inclinada invertida,
se puede utilizar la opcin -encoding de javac para forzar la utilizacin
de la codificacin de caracteres Cp942c', que pasa de los caracteres
0x00 a 0x7F de la pgina de cdigos local a los caracteres U+0000 a
U+007F en Unicode.
Por ejemplo:</p>

                <pre>javac  -encoding Cp942c myprogram.java</pre>

<p>Si el programa fuente se ha escrito en la pgina de cdigos 942
utilizando una barra inclinada invertida real (punto de cdigo 0xfe) y
debe compilarse en otro sistema, utilice el programa
native2ascii para convertir el programa fuente Java de la pgina de
cdigos local a la pgina de cdigos ASCII. Por ejemplo:</p>

           <pre>native2ascii myprogram.java d:\mydest\myprogram.java</pre>

<p>Para convertir de una pgina de cdigos especfica a una pgina de
cdigos ASCII:
</p>

           <pre>native2ascii -encoding 942 myprogram.java d:\mydest\myprogram.java</pre>

<H3>Carcter separador de archivos</H3>
<p>El carcter separador de archivos en la mayora de pginas de cdigos
ASCII del OS/2 es una barra inclinada invertida.
El carcter separador de archivos es accesible en un programa Java
utilizando la propiedad del sistema 'file.separator'
o la constante esttica 'java.io.File.separator'.</p>

<p>En las pginas de cdigos 932 y 943, el carcter separador de archivos
local todava es el punto de cdigo 0x5C, pero en el indicador de
mandatos se visualiza como una marca de yen. De modo similar, en la pgina de cdigos 949, el carcter separador
se visualiza como un signo de won. El convertidor de caracteres por omisin para estas pginas de cdigos
convierte el carcter de file.separator (separador de archivos) a una barra
inclinada
invertida en Unicode, de modo que una aplicacin Java visualiza el
separador de archivos como una barra inclinada invertida Unicode
(U+005C).</p>

<p>En la pgina de cdigos 942, tel separador de archivos local tambin
es una marca de yen, pero el convertidor de caracteres de Java
lo convierte a una marca de yen en Unicode, por lo que la aplicacin
Java visualiza el carcter separador de archivos como una marca de
yen Unicode (U+00A5).</p>

<p>Para asegurarse de que las aplicaciones Java funcionen correctamente
en todos los sistemas operativos, utilice siempre el sistema
file.separator (separador de archivos) correctamente. Los programadores de aplicaciones deben asegurarse de no incluir
separadores de va de acceso en sus programas.
</p>

       <p>Por ejemplo, no utilice:</p>

       <pre>FileInputStream x = new FileInputStream("mydir\myfile.ext");</pre>

       <p>En lugar de ello, utilice:</p>

            <pre>FileInputStream x = new FileInputStream("mydir" + File.separator+ "myfile.ext");</pre>

<HR>
<H2><A NAME="Header_13" HREF="#ToC_13">Conversin entre ShiftJIS y Unicode en OS/2 Warp 4 Versin japonesa</A></H2>

<p>En el entorno japons, estn disponibles las siguientes tablas de
conversin para cdigo ShiftJIS (cdigo de PC) e Unicode:</p>

       <UL>
       <LI>SJIS
       <LI>Cp943C
       <LI>Cp943 = IBM-943
       <LI>Cp942 = IBM-942
       <LI>Cp942C
       </UL>

       <p>Las tablas de conversin por omisin del sistema son:</p>

         <UL>
         <li>Cp943C para las pginas de cdigos 943 y 932
         <li>Cp942 para la pgina de cdigos 942
         </UL>

       <p>Para utilizar la tabla Cp942, establezca el nombre de tabla
explcitamente como un mtodo o como un parmetro.
Estas tablas llevan a cabo las siguientes conversiones:</p>


<H3>Para caracteres SBCS</H3>
<TABLE BORDER=2 CELLSPACING=2 CELLPADDING=2 COLS=5>
<TR ALIGN=CENTER>
     <TD>&nbsp;
     <TD COLSPAN=2><b>Cdigo de PC</b>
     <TD COLSPAN=2><b>Unicode</b>
</TR>
<TR>
     <TD><b>Pgina de cdigos</b>
     <TD><b>Punto de cdigo</b>
<TD><b>Carcter</b>
     <TD><b>Punto de cdigo</b>
<TD><b>Carcter</b>
</TR>
<TR>
     <TD>SJIS
     <TD>0x00-0x7F
     <TD>Corresponde con Unicode
     <TD>U0000-U007F
     <TD>Corresponde con Cdigo PC
</TR>
<TR>
     <TD>Cp942C
     <TD COLSPAN=2>Corresponde con Unicode
     <TD COLSPAN=2>Corresponde con Cdigo PC

</TR>
<TR>
     <TD>Cp943C
     <TD COLSPAN=2>Corresponde con Unicode
     <TD COLSPAN=2>Corresponde con Cdigo PC

</TR>
<TR>
     <TD>Cp942
     <TD>0x00-0x5B
     <TD>Corresponde con Unicode
     <TD>U0000-U005B
     <TD>Corresponde con Cdigo PC
</TR>
<TR>
     <TD>Cp943
     <TD>0x5c
     <TD>Signo de yen
     <TD>U00A5
     <TD>Signo de yen
</TR>
<TR>
     <TD>
     <TD>0x5D-0x7D
     <TD>Corresponde con Unicode
     <TD>U005D-U007D
     <TD>Corresponde con Cdigo PC
</TR>
<TR>
     <TD>
     <TD>0x7e
     <TD>Lnea superpuesta
     <TD>U203E
     <TD>Lnea superpuesta
</TR>
<TR>
     <TD>
     <TD>0x7F
     <TD>Corresponde con Unicode
     <TD>U007F
     <TD>Corresponde con Cdigo PC
</TR>
<TR>
     <TD>
     <TD>0x80
     <TD>Signo de centavo
     <TD>U00A2
     <TD>Signo de centavo
</TR>
<TR>
     <TD>
     <TD>0xA0
     <TD>Signo de libra
     <TD>U00A3
     <TD>Signo de libra esterlina
</TR>
<TR>
     <TD>
     <TD>0xFD
     <TD>Signo not
     <TD>U00A7
     <TD>Signo not
</TR>
<TR>
     <TD>
     <TD>0xFE
     <TD>Barra inclinada invertida
     <TD>U005C
     <TD>Barra inclinada invertida
</TR>
<TR>
     <TD>
     <TD>0xFF
     <TD>Tilde
     <TD>U007E
     <TD>Tilde
</TR>
</table>
</p>
       <p>Por ejemplo, en la tabla Cp943C, el cdigo de PC para el rango
       0x00 - 0x7F se convierte directamente a Unicode para el rango
       U0000 - U007F.
En la tabla Cp942, el signo de yen del cdigo de PC
(0x5c) se convierte al signo yen Unicode (U00A5).</p>


       <p>Para caracteres DBCS:</p>

        <UL>
       <LI>En las tablas Cp943, Cp943C y SJIS, el cdigo de PC se considera
como el nuevo orden JIS.

       <LI>En las tablas Cp942 y Cp942C, el cdigo de PC se considera
como el orden JIS anterior.
</ul>

<p>Para caracteres definidos por el usuario y caracteres ampliados IBM:
</p>
<UL>
<LI>En las tablas Cp943 y Cp943C, estos caracteres de cdigo PC se
convierten a Unicode.

       <LI>En la tabla SJIS, estos caracteres de cdigo PC NO se
convierten a Unicode.

       <LI>En las tablas Cp942 y Cp942C, estos caracteres de cdigo PC
se convierten a Unicode.
</UL>

<HR>
<H2><A NAME="Header_14" HREF="#ToC_14">Limitaciones conocidas</A></H2>
<UL>
<LI>
El compilador just-in-time (JIT) optimiza el mtodo con rastreos
(opcin <B>-tm</B>) y con perfiles. Para obtener un rastreo y un perfil del mtodo completo debe inhabilitar
el JIT. Consulte
<A HREF=runtime.htm#JIT>Inhabilitacin del compilador JIT</A>
en la
<A HREF=runtime.htm>Documentacin de Runtime</A> para obtener una
informacin ms detallada.
<P><LI>Cuando el compilador JIT est habilitado, una excepcin no captada
genera un rastreo hacia atrs sin nmeros de lnea fuente. Debe
<A HREF=runtime.htm#JIT>inhabilitar el JIT</A> y ejecutar de nuevo
la aplicacin que falla para obtener un rastreo hacia atrs con los
nmeros de lnea.
</UL>
<HR>
<H2><A NAME="Header_15" HREF="#ToC_15">Avisos</A></H2>
<P>Marcas registradas
<P>Los siguientes trminos son marcas registradas de International Business Machines
Corporation en los Estados Unidos, en otros pases o ambos:
<UL>
<LI>IBM</LI>
<LI>OS/2</LI>
</UL>
<p>Los siguientes trminos son marcas registradas de otras compaas:
<UL>
<LI>Java y 100% Pure Java son marcas registradas de Sun Microsystems, Inc.
<LI> Sun Microsystems, Inc. es la empresa propietaria y tiene licencia
exclusiva de la tecnologa Java(TM). Java es una marca registrada de Sun
Microsystems, Inc, en los EE.UU. y otros pases. 
</UL>
<P>Copyrights
<UL>
<LI> (c) Copyright Sun Microsystems, Inc. 1992-1998. Reservados todos los derechos.
<LI> (c) Copyright IBM Corporation, 1996-1998. Reservados todos los derechos.
<LI> Este producto est basado en parte del trabajo de Independent JPEG Group.
<LI> Derechos restringidos para los usuarios del Gobierno de los EE.UU. -
El uso, duplicacin o divulgacin estn restringidos por el
GSA ADP Schedule Contract con IBM Corp.
</UL>

</BODY></HTML>
