El paquete J2SDK contiene el entorno de desarrollo de Java de Sun. Sirve para desarrollar programas Java y proporciona el entorno de ejecución necesario para ejecutar dichos programas. También incluye un módulo (plugin) para que los navegadores puedan ejecutar programas Java.
El JDK viene en dos sabores, un binario precompilado y un paquete fuente. Anteriormente, el módulo incluido en el paquete binario JDK no podía utilizarse en LFS debido a la incompatibilidad con los navegadores compilados con GCC-3. Esto ya no es así
El paquete fuente requiere que te registres en el sitio de desarrolladores de Sun y que aceptes la Licencia Comunitaria de Sun (Sun Community Source License). El código fuente no puede ser descargado desde ciertos países, de modo que para los usuarios de esos países la única opción es usar el binario.
Incluso si planeas compilar el código fuente del JDK, necesitarás descargar la versión binaria para construir el JDK. Sigue el enlace de abajo para descargar los paquetes fuente y binario. Cuando descargues el código fuente (se requieren dos ficheros) descarga también el paquete con los ficheros de cabecera de Mozilla, disponible en la misma dirección. Para construir desde las fuentes acabarás descargando un total de cuatro ficheros
Descarga del binario: http://java.sun.com/j2se/1.4.2/download.html
Descarga de las fuentes: http://www.sun.com/software/communitysource/j2se/java2/download.html
Versión usada (binario): 1.4.2_07
Suma MD5 del paquete (binario): a55a9150977de7d5c7f78d29593a8b8c
Suma MD5 del paquete (fuentes): http://anduin.linuxfromscratch.org/sources/BLFS/SVN/I-K/j2sdk-1.4.2.md5sums
Tamaño del paquete (binario): 36.4 MB
Tamaño del paquete (fuentes): 55.1 MB (tres ficheros .zip)
Estimación del espacio necesario en disco: 1285 MB
Tiempo estimado de construcción: 29.57 SBU
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-fix_inline_asm-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-gcc33-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-motif_mkmsgcat-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-nptl-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-remove_debug_image-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-remove_fixed_paths-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-static_cxx-1.patch
http://www.linuxfromscratch.org/blfs/downloads/6.0/j2sdk-1.4.2-ash-1.patch (Necesario sólo si /bin/sh es un enlace sibólico a ASH-0.4.0)
Ambas versiones se instalarán en paralelo. Puedes elegir si mantener una o ambas.
Instalar el JDK precompilado es fácil: crea un directorio desde el que hacer la instalación, copia el .bin allí y ejecuta los siguiente comandos.
export VERSION=1.4.2_07 &&
export MV=`echo $VERSION | cut -d "_" -f 1,1` &&
export V=`echo ${VERSION} | sed -e "s/\./_/g"` &&
sed -i "s:^PATH=.*::" j2sdk-${V}-linux-i?86.bin &&
chmod +x j2sdk-${V}-linux-i?86.bin &&
mkdir -p bin &&
ln -sf /bin/true bin/more &&
yes | PATH=$PWD/bin:$PATH ./j2sdk-${V}-linux-i?86.bin &&
cd j2sdk${VERSION}
Ahora, como usuario root:
install -d /opt/j2sdk/j2sdk-precompiled-${MV} &&
mv * /opt/j2sdk/j2sdk-precompiled-${MV}
chown -R root:root /opt/j2sdk/j2sdk-precompiled-${MV}
Ahora, la versión binaria está instalada.
Si no quieres compilar el código fuente, o no estás en posición de descargar las fuentes debido a las restricciones de la licencia, pasa a la sección de configuración.
Añade el JDK compilado a la ruta.
export JAVA_HOME=/opt/j2sdk/j2sdk-precompiled-${MV} &&
export PATH=$PATH:${JAVA_HOME}/bin
Descomprime las fuentes:
mkdir j2sdk-build &&
cd j2sdk-build &&
VERSION=1.4.2 &&
V=`echo $VERSION | sed -e "s/\./_/g"` &&
unzip ../j2sdk-${V}-src-scsl.zip &&
unzip ../j2sdk-${V}-mozilla_headers-unix.zip &&
unzip ../j2sdk-${V}-bin-scsl.zip
Aplica todos los parches antes descargados.
for PATCH in ../j2sdk-1.4.2*.patch
do
patch -Np1 -i $PATCH
done
Establece/desactiva algunas variables que afectan a la construcción:
export ALT_BOOTDIR="$JAVA_HOME" &&
unset JAVA_HOME &&
unset CLASSPATH
unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
export ALT_DEVTOOLS_PATH="/usr/bin" &&
export BUILD_NUMBER="blfs-`date +%s`" &&
export DEV_ONLY=true &&
export ALT_MOZILLA_PATH=$PWD &&
export INSANE=true &&
export MAKE_VERBOSE=true &&
export ALT_CACERTS_FILE=${ALT_BOOTDIR}/jre/lib/security/cacerts
export PATH_HOLD=$PATH
export PATH=/opt/gcc-3.3.4/bin:$PATH
Establecer CFLAGS/CXXFLAGS/LDFLAGS es garantía para hacer que la construcción falle. Si tienes interes en optimizar la construcción, establece OTHER_CFLAGS/OTHER_CXXFLAGS/OTHER_LDFLAGS en su lugar.
Adicioinalmente, se deseas construirlo en paralelo, añade lo siguiente (ajusta MAKE_PARALLEL a tu gusto):
export HOTSPOT_BUILD_JOBS=$MAKE_PARALLEL
Si el Motif incluido no se construye correctamente, el error se advierte mucho mas tarde en la construcción. Una solución es construir la librería de Motif antes de compilar el J2SDK.
cd motif/lib/Xm &&
make &&
cd ../../..
Crea e instala el J2SDK con los siguientes comandos. Habrá un montón de mensajes sobre ficheros no encontrados que parecerán errores. Mientras la compilación no se detenga, los mensajes son inofensivos, ignóralos.
cd control/make &&
make &&
cd ../build/linux-i?86
Ahora, como usuario root, instalaJ2SDK:
cp -a j2sdk-image /opt/j2sdk/j2sdk-1.4.2 &&
chown -R root:root /opt/j2sdk/j2sdk-1.4.2
Restaura el entorno usando los siguientes comandos:
unset VERSION &&
unset MV &&
unset V &&
unset ALT_BOOTDIR &&
unset ALT_DEVTOOLS_PATH &&
unset BUILD_NUMBER &&
unset DEV_ONLY &&
unset ALT_MOZILLA_PATH &&
unset INSANE &&
unset MAKE_VERBOSE &&
unset ALT_CACERTS_FILE &&
export PATH=$PATH_HOLD &&
unset PATH_HOLD
export ALT_BOOTDIR="$JAVA_HOME": Esta variable establece la localización del JDK precompilado que se utilizará para compilar el código fuente del JDK.
export ALT_MOZILLA_PATH=$PWD: Esto establece la variable que apunta a donde has descomprimido los ficheros de cabecera de Mozilla.
export ALT_DEVTOOLS_PATH="/usr/bin": Esto cambia la localización donde el guión de construcción encuentra los ejecutables necesarios.
export BUILD_NUMBER="blfs-`date +%s`": Esto te ayudará a identificar esta versión compilada del entorno de ejecución y máquina virtual, añadiendo esta información a la versión, en la salida de java -version.
export DEV_ONLY=true: Este comando evita compilar la documentación y elimina una dependencia con rpm.
unset JAVA_HOME: Esto borra la variable JAVA_HOME y evita problemas durante la compilación.
unset CLASSPATH: Esto borra la variable CLASSPATH y evita problemas durante la compilación.
unset CFLAGS...: Estas opciones causan una mala compilación. Nunca las uses.
export INSANE=true: A menos que especifiques que estás loco (insane), la compilación no procederá. La plataforma certificada para compilar es RedHat 6.1. Esta variable asegura que todos los errores por compilar en una plataforma no certificada se conviertan en advertencias.
export MAKE_VERBOSE=true: Permite que se muestre en la consola el comando actual de compilación.
export ALT_CACERTS_FILE...: Epecifica el fichero de certificados a usar.
Tenemos dos Java 2 SDK instalados en /opt/j2sdk. Decide cual quieres utilizar por defecto. Por ejemplo, si decides utilizar el J2SDK compilado a partir de los fuentes, haz lo siguiente:
ln -nsf j2sdk-1.4.2 /opt/j2sdk/j2sdk
Añade las siguientes líneas a tu fichero de inicio del intérprete de comandos (p.e. /etc/profile).
export JAVA_HOME=/opt/j2sdk/j2sdk export PATH=$PATH:$JAVA_HOME/bin
Añade $JAVA_HOME/man a tu variable MANPATH o a /etc/man.conf
El plugin Java está en el directorio $JAVA_HOME/jre/plugin/i?86/ns610/. Crea un enlace simbólico al fichero en este directorio desde tu directorio de plugins. Ten en cuenta que el plugin debe ser un enlace simbólico para que funcione. Si no los navegadores fallarán cuando intentes cargar una página Java.
Cuando compiles paquetes, la variable de entorno CLASSPATH es usada por JDK para localizar las clases en tiempo de compilación y ejecución. Es tedioso añadir manualmente todas las clases utilizadas a CLASSPATH. Puedes añadir las siguiente líneas a tu fichero de inicio del intérprete de comandos para establecer que CLASSPATH incluya automáticamente todos los ficheros JAR del directorio especificado, que en el siguiente ejemplo es /usr/lib/auto-java-classpath.
AUTO_CLASSPATH_DIR=/usr/lib/auto-java-classpath if [ -z $CLASSPATH ] then CLASSPATH=.:$AUTO_CLASSPATH_DIR else CLASSPATH=$CLASSPATH:.:$AUTO_CLASSPATH_DIR fi for i in $(ls $AUTO_CLASSPATH_DIR/*.jar 2>/dev/null) do CLASSPATH=$CLASSPATH:$i done
Ejecuta subprogramas (applets) Java fuera del contexto de un navegador.
Comprueba en un fichero JAR los conflictos en el título y la versión con cualquier extensión instalada en el software JDK.
Genera vínculos Java a partir de un fichero IDL.
Combina múltiples ficheros en un archivo JAR simple.
Firma ficheros JAR (Java ARchive) y verifica las firmas e integridad de un JAR firmado.
Lanza una aplicación Java iniciando el entorno de ejecución Java, cargando la clase especificada e invocando el método principal.
Lee definiciones de clases e interfaces, escritas en el lenguaje de programación Java, y las compila en un fichero de clases de código de bytes.
Procesa las declaraciones y comentarios de documentación en un conjunto de ficheros fuente Java y genera un conjunto de páginas HTML con la descripción de clases, interfaces, constructores, métodos y campos.
Genera las cabeceras C y los ficheros fuente necesarios para implementar métodos nativos.
Desensambla un fichero de clases Java.
Un depurador simple en línea de comandos para clases Java.
Una utilidad para administrar llaves y certificados.
Convierte ficheros que contienen codificaciones de caracteres no soportados a ficheros con codificaciones Latin-1 o Unicode.
Permite a los clientes localizar e invocar transparéntemente objetos persistentes en servidores en el entorno CORBA.
Crea y maneja gráficamente ficheros de políticas.
Genera cabos y ficheros de esqueleto de clases para objetos remotos a partir de los nombres de clases Java compiladas que contienen implementaciones de objetos remotos.
Inicia el demonio de activación del sistema.
Crea e inicia un registro de objeto remoto en el puerto indicado de la máquina actual.
Devuelve el serialVersionUID para una o más clases en un formato adecuado para copiarlo en una clase envolvente.
Proporciona una interfaz fácil de usar para programadores que permite registrar, desregistrar, iniciar y parar un servidor.
Inicia el servidor de nombres Java IDL.
Last updated on 2005-04-09 00:53:09 +0200