J2SDK-1.4.2

Introduzione a J2SDK

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.

Informazioni sul pacchetto

Dipendenze di J2SDK

Necessaria (per costruire J2SDK dai sorgenti)

X (XFree86-4.4.0 o X.org-6.8.2), Zip-2.31, UnZip-5.51, cpio-2.6, ALSA-1.0.7, Tcsh-6.13.00 e GCC-3.3.4

Installazione di J2SDK

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
[Avvertimento]

Avvertimento

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

Spiegazioni dei comandi

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.

Configurazione di J2SDK

Informazioni di configurazione

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.

Gestione di CLASSPATH

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

Contenuti

Programmi installati: appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, jdb, keytool, native2ascii, orbd, policytool, rmic, rmid, rmiregistry, serialver, servertool e tnameserv
Librerie installate: $JAVA_HOME/lib/*, $JAVA_HOME/jre/lib/* e libjavaplugin_oji.so
Directory installata: /opt/j2sdk

Brevi descrizioni

appletviewer

esegue le applet Java fuori dal contesto di un browser.

extcheck

verifica un file JAR specificato alla ricerca di conflitti con titolo e versione con qualunque estensione installata nel software JDK.

idlj

genera binding Java da un dato file IDL.

jar

combina più file in un singolo file archivio JAR.

jarsigner

firma i file JAR (Java ARchive) e verifica le firme e l'integrità di un JAR firmato.

java

lancia un'applicazione Java avviando un ambiente runtime Java, caricando una classe specificata e invocando il suo metodo principale.

javac

legge definizioni di classe e interfaccia, scritte nel linguaggio di programmazione Java, e le compila in file di classe bytecode.

javadoc

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.

javah

genera header C e file sorgenti necessari per implementare metodi nativi.

javap

disassembla un file di classe Java.

jdb

è un semplice debugger a linea di comando per classi Java.

keytool

è un'utilità di gestione di chiavi e certificati.

native2ascii

converte file che contengono codifiche caratteri non supportate in file contenenti caratteri Latin-1 o codifiche Unicode.

orbd

è usato per abilitare i client a localizzare in modo trasparente e invocare oggetti persistenti su server nell'ambiente CORBA.

policytool

crea e gestisce un file di policy graficamente.

rmic

genera file di classe stub e skeleton per oggetti remoti dai nomi delle classi Java compilate che contengono implementazioni remote di oggetti.

rmid

avvia il demone di sistema di attivazione.

rmiregistry

crea e avvia un remote object registry sulla porta specificata nell'host corrente.

serialver

restituisce il serialVersionUID per una o più classi in una forma adatta ad essere copiata in una classe in evoluzione.

servertool

fornisce un'interfaccia facile da usare per programmatori di applicazioni per registrare, annullare la registrazione, accendere e spegnere un server.

tnameserv

avvia il name server Java IDL.

Last updated on