Java-Linux 1.1.1 HOWTO
Karl Asha, karl@blackdown.org
18 May 1997
Traductor:
Manuel de Vega Barreiro , mbarreiro@red.madritel.es
http://www.arrakis.es/~barreiro/spain
v0.2-Agosto 1997
Este es el borrador de la guía Como (HOWTO) JDK-1.1.1 para Linux.
______________________________________________________________________
Índice:
1. Instalando JDK 1.1.1
1.1. Presentación.
1.2. Librerías necesarias
1.3. Copiando JDK-1.1.1 para Linux
1.4. Instalando JDK-1.1.1 para Linux
1.5. Parámetros del sistema necesarios
1.6. Motif - Estático vs. Dinámico.
1.7. Informes sobre problemas y errores
1.8. Lecturas complementarias
2. JDK-1.1.1 Notas de liberación
2.1. accept()
2.2. jdb
3. Uso del soporte del formato binario java incluido en el núcleo Linux
3.1. Configurando el núcleo
3.2. Haciendo uso del soporte binario de java
3.3. Lecturas complementarias
4. Netscape y Java
4.1. Netscape 3.0
4.2. Netscape 4.0
5. Marimba's Tuner, Transmitter, y Bongo
______________________________________________________________________
1. Instalando JDK 1.1.1
1.1. Presentación.
El paquete JDK-1.1.1 para Linux esta disponible en una extensa lista de
servidores espejo voluntarios.
Se da por supuesto que el sistema del usuario final es capaz de ejecutar
binarios ELF. Llegados a este punto, ELF queda fuera del ámbito de este
documento.
1.2. Librerías necesarias
La actual integración de JDK-1.1.1 para Linux esta construida con las
Librerías C Estándar y de Carga Dinámica Linux necesarias para hacer
funcionar los binarios de apoyo.
El usuario final es responsable de asegurar que las librerías de XFree86
están instaladas en su sistema.
JDK-1.1.1 para Linux ha sido creado en el siguiente entorno.
Revisiones de Librerías
o libc versión 5.4.13
o ld.so versión 1.8.5
o XFree86 versión 3.1.2
En el caso de que su sistema necesite una actualización de la instalación
de XFree86, el paquete necesario se puede encontrar en
. Por favor busquen allí el
fichero README para obtener más información de la distribución XFree86.
Para obtener un resumen de cuales son las librerías instaladas actualmente
un tu sistema, teclea ldconfig -v
Detalles técnicos, información de programación, e instrucciones de
instalación para estos paquetes queda fuera del ámbito de este documento.
1.3. Copiando JDK 1.1.1 para Linux
Se pueden encontrar tres paquetes diferentes para usar Java con Linux
en los servidores espejo. Por favor visita http://www.javasoft.com
para obtener información de licencias en la
integración de JRE con sus aplicaciones Java.
La documentación JavaSoft, las clases de demostración, y src.zip para
JDK 1.1.1 se distribuyen en un paquete aparte.
(jdk1.1.1-doc+demo.tar.gz)
JDK - Kit de desarrollo Java
Este paquete incluye todo lo necesario para ejecutar y compilar
programas java bajo Linux.
JRE - Entorno de ejecución Java
JRE es un sistema de ejecución pensado para incluirse con las
aplicaciones. Incluye todo lo necesario para ejecutar (pero no
compilar o corregir) programas Java. JRE incluye todos los
conversores de caracteres para un soporte internacional completo.
RT - Entorno de ejecución Java separado
En el paquete RT, el soporte para internacionalización y el sistema
de ejecución básico VM están separados en dos directorios, rt y i18n.
El directorio rt proporciona todo lo necesario para ejecutar
aplicaciones Java en entornos ISO-latin-1. El directorio i18n
contiene los conversores de byte a caracteres opcionales para
diferentes esquemas de codificación de caracteres globales. En el
paquete JRE, estos dos directorios están combinados en uno solo.
La lista de servidores espejo reconocidos esta disponible en
.
1.4. Instalando JDK-1.1.1 para Linux
Generalmente, todo lo que se necesita hacer para conseguir instalar el
JDK es elegir un directorio, tal que /usr/local/, y desempaquetar el
archivo seleccionado. Una vez instalado, añadir (en este caso)
/usr/local/jdk1.1.1/bin/ a tu PATH te permitirá hacer uso del kit
de desarrollo.
Desafortunadamente, recientes controversias rodean la elección del
directorio origen para el JDK cuando se usa en Linux. La ubicación,
honestamente, es meramente una cuestión decorativa. Lo que si resulta
importante es que el valor de la variable JDK_HOME apunte a un directorio
que contenga los subdirectorios bin/, lib/, y classes/ del JDK.
Todos los futuros paquetes distribuidos por la comunidad Java-Linux se
basaran en esa variable para encontrar los binarios de soporte y las
librerías de clases necesarias.
1.5. Parámetros del sistema necesarios
CLASSPATH Valores
La variable de entorno CLASSPATH se usa para indicar al JDK
donde buscar las clases. Algunas veces, un valor incorrecto puede
impedir la correcta ejecución de las herramientas JDK. Si
experimentas cualquier problema usando JDK, asegúrate que la
variable CLASSPATH no tiene valor antes de intentar ejecutar java,
javac, o el appletviewer.
Permisos de los manejadores.
Antes de usar JDK, asegúrate que el mundo puede leer y escribir en
el manejador especial /dev/zero. Para conseguirlo, simplemente
ejecuta el siguiente comando como superusuario:
chmod 666 /dev/zero
Imprimiendo
El JDK espera usar /usr/bin/lp para imprimir en un dispositivo.
Por favor asegúrate de que se ha hecho un enlace simbólico de
/usr/bin/lpr a /usr/bin/lp antes de intentar imprimir desde un
programas Java.
Espacio de Memoria de Intercambio
JDK intenta hacer una reserva de un amplio bloque de memoria cuando
se inicia. Siempre debes tener la certeza de que tu sistema tiene
al menos 20 Megabytes de memoria de intercambio libres antes de
ejecutar cualquiera de los ejecutables suministrados con el kit
de desarrollo java.
Se puede controlar la cantidad de memoria que usa el interprete
java experimentando con los parámetros -mx y -ms. Información
adicional de estos parámetros esta disponible en las paginas de
manuales de JDK.
1.6. Motif - Estático vs. Dinámico.
Antes de JDK 1.1.1, dos paquetes separados fueron lanzados a la
comunidad Java-Linux, uno de los cuales estaba enlazado
estáticamente con Motif.
A pesar de que el JDK 1.1.1 enlazado dinámicamente con Motif no
esta actualmente soportado, hay formas de hacer uso de tus librerías
compartidas de Motif.
Dando a la variable de entorno NS_JAVA un valor no nulo,
Este método te permite usar JDK sin tener la distribución XFree86
instalada. Permite también el uso de las librerías compartidas de
Motif.
Con el fin de usar tus librerías compartidas de Motif, debes hacer
uso de la variable entorno LD_PRELOAD. Se deben incluir como
librerías cargadas previamente Motif y todas las necesarias de XFree86.
Por ejemplo:
export NS_JAVA=true
export LD_PRELOAD=/usr/X11R6/lib/libXm.so.2.0:\
/usr/X11R6/lib/libX11.so.6.1
1.7. Informes sobre problemas y errores
Si descubres algo que puede ser un error trabajando con JDK 1.1.1 para
Linux, por favor envía un mensaje electrónico a
Steve Byrne, sbb@gnu.ai.mit.edu.
Acompañando el informe del error, por favor incluye la salida de
'ldconfig -v', la versión del núcleo que tienes instalado en tu
maquina, y cualquier traza de la pila disponible.
1.8. Lecturas complementarias
Versiones al ida de HOWTOs, listas de correo, lista de productos
soportados, y otros servicios Java-Linux se encuentran disponibles
a través de la organización Blackdown, en
http://www.blackdown.org/java-linux.html
.
Por favor envía cualquier pregunta o sugerencia acerca de estos recursos
a karl@blackdown.com.
Abundante información sobre Java esta disponible directamente en JavaSoft,
http://www.javasoft.com .
2. JDK-1.1.1 Notas de liberación
2.1. accept()
Existe un error conocido en el que se esta trabajando que afecta a las
aplicaciones Java que hacen uso de las llamadas del tipo accept(). Esto
afecta también a jdb.
2.2. jdb
El corrector de errores ("jdb") incluido con jdk requiere un interfaz de
red activo para funcionar. Dado que la mayoría de las maquinas conectadas
vía telefónica solo tienen activo el interfaz retorno ("127.0.0.1")
cuando no están conectados a internet, el jdb se mete en un lío. El jdb
intenta conectar con la dirección que corresponde con el 'hostname' de tu
maquina, encuentra que, o bien no puede verlo activo, o bien no puede
alcanzar la dirección especificada en /etc/hosts, y no logra iniciar
la marcha.
Una solución al problema es cambiar o poner como alias a tu 'hostname'
la dirección ("127.0.0.1"). Una solución mas sensata es usar un falso
dispositivo que corresponda con el nombre y dirección que hayas
especificado para tu maquina en /etc/hosts.
Lo que sigue es un extracto de la Guía de Administración de redes que
resume y clarifica la funcionalidad del manejador de falsos dispositivos.
El falso interfaz es realmente un poco exótico, pero mas bien de utilidad
a pesar de todo. Los sistemas aislados y las maquinas que solo tienen
conexión con una red IP vía enlace telefónico son sus principales
beneficiaros, Estos últimos son también sistemas aislados la mayoría del
tiempo.
El dilema con los sistemas aislados es que solo tienen un único
dispositivo de red activo, el dispositivo de retorno, que se asigna
usualmente a la dirección 127.0.0.1. En algunas ocasiones, sin embargo,
necesitas enviar datos al la dirección IP `oficial' del sistema local.
Por ejemplo, considera el portátil vlite, que esta desconectado de
cualquier red durante la duración de este caos.
Una aplicación en vlite puede ahora querer enviar algún dato a otra
aplicación en el mismo sistema. Buscando vlite en los registros de
/etc/hosts aparece la dirección IP 191.72.1.65, así que la aplicación
intenta enviarlo a esa dirección. Como el interfaz de retorno es el único
interfaz activo en ese momento en la maquina, el núcleo no tiene ni idea
de que esa dirección se refiere a si mismo! Y en consecuencia, el núcleo
descarta el paquete, y devuelve un error a la aplicación.
Aquí es donde entra en juego el falso dispositivo. Resuelve el dilema
presentándose como el alter ego del interfaz de retorno. En el caso
de vlite, deberás simplemente dar la dirección 191.72.1.65 y añadir
una ruta de sistema apuntando a ella. Cada paquete para 191.72.1.65
será despachado localmente. La correcta invocación es:
______________________________________________________________________
# ifconfig dummy vlite
# route add vlite
______________________________________________________________________
3. Usando el soporte del formato binario java incluido en el núcleo Linux
3.1. Configurando el núcleo
Con el fin de hacer uso del soporte del formato binario Java con Linux,
debes configurar un núcleo con 'Kernel support for ELF binaries'.
Soporte Java Compilado en el Núcleo
o Si el soporte Java no esta compilado como un modulo, la ubicación
de las aplicaciones java puede ser especificada usando el interfaz
de control del sistema Linux. De otra manera, se cuenta con que
el visualizador de apliques (applet ***1***) y las aplicaciones se
encuentren en /usr/bin.
echo "/usr/local/java/bin/java" > /proc/sys/kernel/java-interpreter
echo "/usr/local/java/bin/appletviewer" > /proc/sys/kernel/java-appletviewer
Soporte Java Compilado como un modulo
o Si el soporte Java esta compilado como un modulo, el modulo
espera encontrar el visualizador de apliques y las aplicaciones
java en /usr/bin. Para solucionar esto, simplemente edita
/usr/src/linux/fs/binfmt_java.c y modifica las siguientes
definiciones para reflejar tu configuración.
#define _PATH_JAVA "/usr/bin/java"
#define _PATH_APPLET "/usr/bin/appletviewer"
3.2. Haciendo uso del soporte binario de java
Con el fin de hacer uso del soporte del formato binario Java,
se deben seguir los siguientes pasos para compilar el código
Java.
o Compile su fichero de código java como lo haría normalmente.
o Active el bit de ejecución usando chmod en los ficheros de
clases generados
o Ejecute el fichero de clase como si se tratara de otro ejecutable.
3.3. Lecturas complementarias
Las notas de liberación pertenecientes al soporte de binarios Java en el
núcleo Linux pueden encontrase en
.
4. Netscape y Java
4.1. Netscape 3.0
El problema fundamental de Netscape 3.0, java, y las maquinas Linux es
el uso de la librería Standard C compilada con dl-malloc. Usando un
programa de apoyo y la antigua gnumalloc, java dejara de hacer fallar
el visualizador en la mayoría de los casos.
El programa da también un valor sencillo a CLASSPATH. Ten cuidado,
ciertas entradas en CLASSPATH pueden confundir a netscape y causar
el fallo de este, de la misma forma que la presencia de librerías
de clases Netscape caducadas.
______________________________________________________________________
#!/bin/sh
export CLASSPATH="/usr/local/netscape/java/classes/java_301:."
export LD_PRELOAD="/lib/gnumalloc.so"
exec /opt/netscape/bin/netscape "$@" # NOTA! Este debe ser el camino del
ejecutable real de netscape, no el
de este programa.
______________________________________________________________________
Para hacer que todo esto funcione, sigue los siguientes pasos:
o Instala netscape
o Copia los ficheros java_30 o java_31 incluidos con el paquete
netscape en /usr/local/netscape/java/classes/
o Copia gnumalloc.so en /lib
o Edite el programa de comandos para que se ajuste a tu configuración.
Puedes encontrar gnumalloc.o en http://www.blackdown.org/java-
linux/downloads/gnumalloc.tar.gz . Gracias a Doug Ridgway
(ridgway@routh.UCSD.EDU) por este truco.
Steven Adler (adler@bnlku5.phy.bnl.gov) ha aportado un RPM extremadamente
útil para automatizar el proceso descrito anteriormente. El archivo se
puede encontrar en .
Recientemente, se han recibido informes indicando que netscape puede
fallar también con apliques Java si se usan versiones de libXext.so
superiores a libXext.so.6.0. La solución, es copiar libXext.so.6.0 en
un directorio tal que /lib/509/, hacer el enlace simbólico apropiado y
dar el valor a LD_LIBRARY_PATH para que busque en ese directorio
primero.
4.2. Netscape 4.0
Antes de Netscape 4.0b3, ninguna combinación de librerías y módulos
puede frenar los deseos de fallar de Netscape. La versión beta3 de
Netscape 4.0, sin embargo, cuando se usa conjuntamente con libc 5.4.23
y superiores, ha demostrado funcionar sin necesidad de ninguna de las
chapuzas necesarias para Netscape 3.0.
5. Marimba's Tuner, Transmitter, y Bongo
Marimba, Inc. no ha lanzado todavía versiones de Tuner, Transmitter,
y Bongo compatibles con JDK 1.1.1.
*** Notas del traductor ***
*** 1 ***
Cuando empece a trabajar en este documento me encontré con el problema de
traducir 'applet'. La dichosa palabreja no resultaba nada fácil y levanto
un buen revuelo en el foro de traducciones de LuCAS. Durante estas
discusiones se me ocurrió el termino aplique, que aunque no ha resuelto
la polémica de si traducir la palabra o adoptarla sin más, ha tenido
una relativa buena acogida.
***
Si tienes comentarios sobre la traducción, no dudes en hacérmelos llegar.
Manuel de Vega Barreiro. mbarreiro@red.madritel.es En un lugar de la red
Madrid. España. de cuyo nombre no quiero
http://www.arrakis.es/~barreiro acordarme..........