Il pacchetto J2SDK contiene l'ambiente di sviluppo Java di Sun. Esso serve per sviluppare programmi Java e fornire l'ambiente runtime necessario per eseguire programmi Java. Esso include anche un plug-in per browser così che essi possano riconoscere Java.
Il JDK è disponibile in due "sapori", un binario precompilato e un pacchetto sorgente. In precedenza il plugin incluso nel pacchetto binario JDK era inutilizzabile su LFS a causa di incompatibilità con i browser GCC-3 compilati. Questo caso non è più vero.
Il pacchetto sorgente necessita la registrazione al Sun developer site e l'accettazione della Sun Community Source License. Il codice sorgente non può essere scaricato da alcuni paesi, quindi per gli utenti di alcuni paesi il binario potrebbe essere l'unica opzione.
Anche se si intende compilare il sorgente JDK bisognerà scaricare la versione binaria per avviare la costruzione del JDK. Seguire il link sottostante per scaricare sia i pacchetti sorgenti che i binari. Quando si scaricano i sorgenti (due file richiesti) scaricare anche il pacchetto degli header di Mozilla disponibile alla stessa locazione. Per costruire dai sorgenti alla fine si scaricherà un totale di quattro file.
Binary download: http://java.sun.com/j2se/1.4.2/download.html
Source download: http://www.sun.com/software/communitysource/j2se/java2/download.html
Version used (binary): 1.4.2_07
Download MD5 sum (binary): a55a9150977de7d5c7f78d29593a8b8c
Download MD5 sum (source): http://anduin.linuxfromscratch.org/sources/BLFS/SVN/I-K/j2sdk-1.4.2.md5sums
Dimensione del download (binary): 36.4 MB
Dimensione del download (source): 55.1 MB (three .zip files)
Stima dello spazio su disco richiesto: 1285 MB
Stima del tempo di costruzione: 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 (Necessario solo se /bin/sh è linkato a ASH-0.4.0)
Entrambe le versioni verranno installate in parallelo. Si può scegliere di tenerne una o entrambe.
L'installazione del JDK precompilato è facile: creare una directory da cui installare, copiare lì il .bin, ed eseguire i seguenti comandi:
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}
Ora, come utente root:
install -d /opt/j2sdk/j2sdk-precompiled-${MV} &&
mv * /opt/j2sdk/j2sdk-precompiled-${MV}
chown -R root:root /opt/j2sdk/j2sdk-precompiled-${MV}
La versione binaria è ora installata.
Se non si vuole compilare i sorgenti o non si è in un posto da cui poter scaricare i sorgenti a causa di restrizioni della licenza, saltare alla sezione di configurazione.
Aggiungere al path il JDK appena installato.
export JAVA_HOME=/opt/j2sdk/j2sdk-precompiled-${MV} &&
export PATH=$PATH:${JAVA_HOME}/bin
Scompattare i sorgenti:
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
Applicare tutte le patch scaricate sopra.
for PATCH in ../j2sdk-1.4.2*.patch
do
patch -Np1 -i $PATCH
done
Fare il set/unset di alcune variabili che influenzano la costruzione:
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
Il settaggio di CFLAGS/CXXFLAGS/LDFLAGS garantisce che la costruzione fallirà. Se si è interessati a ottimizzare la costruzione settare invece OTHER_CFLAGS/OTHER_CXXFLAGS/OTHER_LDFLAGS.
In aggiunta se lo si vuole fare in parallelo aggiungere quanto segue (sistemare MAKE_PARALLEL secondo i propri desideri):
export HOTSPOT_BUILD_JOBS=$MAKE_PARALLEL
Se il Motif incluso non si costruisce correttamente l'errore è notificato molto dopo nella costruzione. Una soluzione è di costruire la libreria Motif prima della compilazione del J2SDK.
cd motif/lib/Xm &&
make &&
cd ../../..
Costruire J2SDK con i seguenti comandi. Ci saranno molti messaggi su file mancanti che sembrano errori. Se la costruzione non si ferma i messaggi non fanno nulla, quindi possono essere ignorati.
cd control/make &&
make &&
cd ../build/linux-i?86
Ora, come utente root, installare J2SDK:
cp -a j2sdk-image /opt/j2sdk/j2sdk-1.4.2 &&
chown -R root:root /opt/j2sdk/j2sdk-1.4.2
Ripristinare l'ambiente usando i seguenti comandi:
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": questa variabile setta la locazione da cui si avvia JDK.
export ALT_MOZILLA_PATH=$PWD: questo setta la variabile che punta a dove sono stati scompattati gli header di Mozilla.
export ALT_DEVTOOLS_PATH="/usr/bin": questo cambia la locazione in cui la costruzione trova gli eseguibili necessari.
export BUILD_NUMBER="blfs-`date +%s`": questo aiuterà a identificare questa versione compilata dell'ambiente runtime e della virtual machine, attaccando questa informazione alla versione nell'output di java -version.
export DEV_ONLY=true: questo comando elimina la compilazione della documentazione e una dipendenza di rpm.
unset JAVA_HOME: questo cancella la variabile JAVA_HOME come raccomandato dalle istruzioni di costruzione.
unset CLASSPATH: questo cancella la variabile CLASSPATH come raccomandato dalle istruzioni di costruzione.
unset CFLAGS...: questi flag causano un'errata compilazione della costruzione. Non settarli mai.
export INSANE=true: sebbene specificato che non si è "sani" la costruzione non procederà. La piattaforma certificata per la costruzione è Redhat 6.1. La variabile precedente assicura che tutti gli errori relativi alla compilazione su una piattaforma non certificata verranno convertiti in warning.
export MAKE_VERBOSE=true: permette al comando di compilazione corrente di essere visualizzato sulla console.
export ALT_CACERTS_FILE...: specifica il file certificato da usare.
Ora ci sono due Java 2 SDK installati in /opt/j2sdk. Si può decidere quale usare per default. Per esempio se si decide di usare il sorgente compilato J2SDK, eseguire quanto segue:
ln -nsf j2sdk-1.4.2 /opt/j2sdk/j2sdk
Aggiungere le seguenti linee al proprio file di avvio della shell (es., /etc/profile).
export JAVA_HOME=/opt/j2sdk/j2sdk export PATH=$PATH:$JAVA_HOME/bin
Aggiungere $JAVA_HOME/man alla propria variabile MANPATH o a /etc/man.conf
Il plugin Java è nella directory $JAVA_HOME/jre/plugin/i?86/ns610/. Fare un link simbolico al file in questa directory dalla propria directory dei plugin. Notare che il plugin deve essere un symlink per funzionare. Altrimenti i browser andranno in crash quando si tenta di caricare un plugin Java.
Durante la compilazione dei pacchetti la variabile d'ambiente CLASSPATH è usata da JDK per trovare le classi durante la compilazione e al run-time. E' tedioso aggiungere manualmente tutte le classi usate al CLASSPATH. Si possono aggiungere le seguenti linee al proprio file di avvio della shell per settare CLASSPATH automaticamente per includere tutti i file JAR in una directory specificata, che, nell'esempio sottostante, è /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
esegue le applet Java fuori dal contesto di un browser.
verifica un file JAR specificato alla ricerca di conflitti con titolo e versione con qualunque estensione installata nel software JDK.
genera binding Java da un dato file IDL.
combina più file in un singolo file archivio JAR.
firma i file JAR (Java ARchive) e verifica le firme e l'integrità di un JAR firmato.
lancia un'applicazione Java avviando un ambiente runtime Java, caricando una classe specificata e invocando il suo metodo principale.
legge definizioni di classe e interfaccia, scritte nel linguaggio di programmazione Java, e le compila in file di classe bytecode.
analizza i commenti delle dichiarazioni e documentazione in un set di file sorgenti Java e produce un corrispondente set di pagine HTML che descrivono classi, interfacce, costruttori, metodi e campi.
genera header C e file sorgenti necessari per implementare metodi nativi.
disassembla un file di classe Java.
è un semplice debugger a linea di comando per classi Java.
è un'utilità di gestione di chiavi e certificati.
converte file che contengono codifiche caratteri non supportate in file contenenti caratteri Latin-1 o codifiche Unicode.
è usato per abilitare i client a localizzare in modo trasparente e invocare oggetti persistenti su server nell'ambiente CORBA.
crea e gestisce un file di policy graficamente.
genera file di classe stub e skeleton per oggetti remoti dai nomi delle classi Java compilate che contengono implementazioni remote di oggetti.
avvia il demone di sistema di attivazione.
crea e avvia un remote object registry sulla porta specificata nell'host corrente.
restituisce il serialVersionUID per una o più classi in una forma adatta ad essere copiata in una classe in evoluzione.
fornisce un'interfaccia facile da usare per programmatori di applicazioni per registrare, annullare la registrazione, accendere e spegnere un server.
avvia il name server Java IDL.
Last updated on