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 descarga también el paquete con los ficheros de cabecera de Mozilla, disponible en la misma dirección.
Descarga (HTTP): http://freshmeat.net/projects/sunjdk
Versión usada (binario): 1.4.2_03
Tamaño del paquete (binario): 35 MB
Tamaño del paquete (fuentes): 77 MB
Estimación del espacio necesario en disco: 1810 MB
Tiempo estimado de construcción: 85 SBU
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-fix-inline-asm-1.patch
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-gcc33-1.patch
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-motif-mkmsgcat.patch
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-remove-debug-image.patch
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-remove-fixed-paths-1.patch
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-static_cxx.patch
http://www.linuxfromscratch.org/patches/blfs/cvs/j2sdk-1.4.2-ash.patch (Necesario sólo si /bin/sh es un enlace sibólico a ASH-0.4.0)
X (XFree86-4.4.0 o X.org-6.7.0), Zip-2.3, UnZip-5.51, cpio-2.5, ALSA-1.0.4, y Tcsh-6.13.00
Ambas versiones se instalarán en paralelo. Puedes elegir si mantener una o ambas.
Instalar el JDK precompilado es fácil, basta con cambiar el bit de ejecución del fichero descargado, cambiar al directorio donde quieres que se instale y ejecutar el fichero descargado.
VERSION=1.4.2_03 &&
MV=`echo $VERSION | cut -d "_" -f 1,1` &&
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} &&
install -d /opt/j2sdk/j2sdk-precompiled-${MV} &&
mv * /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:
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
Apply all the patches downloaded above.
Aplica todos los parches antes descargados.
for PATCH in fix-inline-asm-1 gcc33-1 motif-mkmsgcat \
remove-debug-image remove-fixed-paths-1 \
static_cxx
do
patch -Np1 -i j2sdk-1.4.2-$PATCH.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
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 ../.. &&
cd control/build/linux-i?86 &&
cp -a j2sdk-image /opt/j2sdk/j2sdk-1.4.2
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.
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
El paquete J2SDK contiene appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, jdb, keytool, native2ascii, orbd, policytool, rmic, rmid, rmiregistry, rmiregistry, serialver, servertool y tnameserv.
extcheck comprueba en un fichero JAR los conflictos en el título y la versión con cualquier extensión instalada en el software JDK.
jarsigner firma ficheros JAR (Java ARchive) y verifica las firmas e integridad de un JAR firmado.
java lanza una aplicación Java iniciando el entorno de ejecución Java, cargando la clase especificada e invocando el método principal.
javac 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.
javadoc 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.
javah genera las cabeceras C y los ficheros fuente necesarios para implementar métodos nativos.
native2ascii convierte ficheros que contienen codificaciones de caracteres no soportados a ficheros con codificaciones Latin-1 o Unicode.
orbd se usa para permitir a los clientes localizar e invocar transparéntemente objetos persistentes en servidores en el entorno CORBA.
rmic 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.
rmiregistry crea e inicia un registro de objeto remoto en el puerto indicado de la máquina actual.
serialver devuelve el serialVersionUID para una o más clases en un formato adecuado para copiarlo en una clase envolvente.
servertool proporciona una interfaz fácil de usar para programadores que permite registrar, desregistrar, iniciar y parar un servidor.