<esr@snark.thyrsus.com> Trad.It. di Fabrizio Polacco, <fpolacco@megabaud.fi>

HOWTO Java su Linux

ver.1.0 21 Aprile 1996 (v.2.2, 10 February 1996)

Questo documento descrive come prendere il via con Java e HotJava su Linux, sia come utente che come programmatore.

Contents

1 Introduzione 2

2 Domende Generiche su Java e HotJava 2 2.1 Cosa sono Java e HotJava e perchè sono interessanti? . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Da dove provengono Java e HotJava? Chi può utilizzarli? . . . . . . . . . . . . . . . . . . . . 2 2.3 Quanto è maturo Java? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.4 Dove posso trovare documentazione su Java e HotJava? . . . . . . . . . . . . . . . . . . . . . 3 2.5 Sì, ma dove trovo documentazione cartacea? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.6 Esiste materiale in Italiano su Java? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.7 Dove posso trovare sulla rete collezioni di codice Java? . . . . . . . . . . . . . . . . . . . . . . 4

3 Java come Software Liberamente Ridistribuibile 5 3.1 I programmi Java e gli applet sono liberamente ridistribuibili? . . . . . . . . . . . . . . . . . . 5 3.2 Cosa posso fare con gli eseguibili dell’implementazione di Java? . . . . . . . . . . . . . . . . . 5 3.3 Che parti dei sorgenti di Java sono liberamente ridistribuibili? . . . . . . . . . . . . . . . . . . 6 3.4 Qual’è l’atteggiamento della Sun nei confronti di strumenti ed implementazioni FRS di Java? 6 3.5 C’è qualcuno che sta clonando Java in sorgenti liberamente ridistribuibili? . . . . . . . . . . . 6 3.6 Esistono attrezzi FRS per Java? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Java su Linux. Domande. 7 4.1 Java e HotJava sono inclusi in qualche distribuzione di Linux? . . . . . . . . . . . . . . . . . . 7 4.2 Come posso avere la più recente distribuzione di Java per Linux? . . . . . . . . . . . . . . . . 7 4.3 Di che ambiente avrò bisogno per far girare Java? . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.4 Ho bisogno di Netscape? Posso usare Netscape? . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.5 Quali mailing list o newsgroup esistono per Java su Linux? . . . . . . . . . . . . . . . . . . . 9

5 Costruiamo lo sbarco di Java su Linux. 9 5.1 Distribuzione Slackware ELF kernel 1.2.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2 RedHat 2.1/Caldera Preview 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.3 Unifix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6 Visualizzare gli Applet 11

7 Note su Problemi Noti 12 7.1 Il Make di GNU non funziona più dopo l’installazione di Java. . . . . . . . . . . . . . . . . . . 12 7.2 Errore: too many arguments’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.3 Errore: ‘cannot find class java/lang/Thread’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 7.4 Un messaggio di errore si riferisce a /dev/zero . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 7.5 SEGFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 7.6 bin/java, bin/javac, o bin/appletviewer vi danno un messaggio di help . . . . . . . . . . . . . 13 7.7 Gli applet sono visibili nel viewer, ma non sul web. . . . . . . . . . . . . . . . . . . . . . . . . 13 7.8 Log dei problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

8 Correlazioni 13

9 Da Aggiungere ... 14 10 Ringraziamenti 14

1 Introduzione

Questo documento è una introduzione al mondo di Java e HotJava incentrata su Linux. Queste tecnologie sono in rapida eoluzione, e accettiamo contribuzioni da chiunque.

Parti di questo documento che hanno seriamente bisogno di verifica o di completamento sono racchiuse da *** ***. Vedi inoltre più sotto la sezione 9 (Da Aggiungere ...). Per favore aiutateci a migliorare questo HOWTO.

Inviate aggiornamenti e richieste di modifiche a Eric S. Raymond .

Aggiornamenti specifici alla versione Italiana possono essere inviati a

Fabrizio Polacco mailto:fpolacco@megabaud.fi .

2 Domende Generiche su Java e HotJava

Questa sezione è una introduzione generica (non specifica su Linux) a Java e HotJava.

2.1 Cosa sono Java e HotJava e perchè sono interessanti?

Java è un linguaggio conscio della rete, che ricorda superficialmente il C++, ma molto più piccolo e più compatto e progettato in modo più pulito. E‘ un linguaggio a raggio illimitato dotato di garbage collection (raccolta dei rifiuti) come il Lisp, ma con il controllo statico sui tipi (è stato correttamente descritto come uno ’Smalltalk con una corretta sintassi’). Comprende gli thread (processi leggeri) come una capacità nativa ed ha potenti caratteristiche per la sicurezza della rete.

HotJava è un browser per il WWW scritto in Java. Il suo maggiore vantaggio sugli altri browser è dato dal suo essere a conoscenza di un nuovo costrutto HTML chiamato un APPLET,che consiste in qualche classe Java che viene eseguita sulla macchina cliente. Perciò, documenti WWW scritti pensando a Java possono incorporare oggetti-codice ’vivi’, invece di solo dati.

La capacità di mandare in giro intatti oggetti-codice rappresenta probabilmente il più significativo avanzamento nella tecnologia WWW fin dal primo rilascio di Mosaic. Come minimo, fornisce un browser Web che non necessita di perpetui aggiornamenti per gestire nuovi formati di immagine e nuovi tipi di tag.

Java viene compilato in uno pseudo-codice chiamato ‘J-code’; gli interpreti Java eseguono J-code. Lo Jcode corre il rischio di diventare un codice-macchina virtuale universale indipendente dall’architettura o un linguaggio intermedio di compilazione. Vi sono voci che un compilatore ADA-95 che genera J-code sia già stato costruito e che un compilatore C sia in fase avanzata; eventualmente, è verosimile che linguaggi a facciata multipla saranno disponibili per scrivere, su una qualunque macchina dotata di interprete Java, sia applet che programmi completi.

2.2 Da dove provengono Java e HotJava? Chi può utilizzarli?

Java e HotJava sono stati sviluppati presso la Sun Microsystems da un team diretto da James Gosling (ben noto come progettista di Gosling Emacs e di NeWS).

L’ultima volta che la Sun ha provato ad imporre uno standard tecnico consistente è stato con NeWS, il suo Network Window System (Sistema di Finestre in Rete). Benchè NeWS fosse quasi universalmente considerato tecnicamente superiore a X, X vinse perchè i suoi sorgenti erano liberamente ridistribuibili. La Sun ha imparato da questo errore, e ha reso Java e HotJava molto più generalmente disponibili; i sorgenti possono essere recuperati sotto una licenza piuttosto rilassata (vedi 3 (Java come Software Liberamente Ridistribuibile)). La Sun sta incoraggiando sbarchi in ambienti non-Sun.

Netscape ora interpreta Java. La Microsoft ha preso la licenza della tecnologia nel Dicembre 1995. Così sembra che il supporto per Java probabilmente diverrà universale nel 1996.

Java era stato chiamato Oak. HotJava era noto come WebRunner.

2.3 Quanto è maturo Java?

Il 12 Dicembre 1995 la Sun ha rilasciato la versione ”Beta 2” di Java. Un mese più tardi ha rilasciato la 1.0, la prima versione di ‘produzione’. La API (l’interfaccia di programmazione) dell’ambiente Java che definiscono l’accesso al Sistema Operativo dell’host ed al sistema di visualizzazione (windowing) è stata dichiaratamente semi-congelata; può venire estesa, ma non sarà modificata in modo incompatibile.

La versione 1.0 di questo FAQ è stata pubblicata con la beta 1.0 del kit per sviluppatori Java (JDK) per Linux, portatovi da Randy Chapman.

Si sa che esistono buchi significativi nell’implementazione della sicurezza di Java. Non è ancora una buona idea quella di usare Java per applicazioni delicate. Si attendono soluzioni per questi problemi nelle release in produzione dopo la beta.

2.4 Dove posso trovare documentazione su Java e HotJava?

La Sun mantiene un esteso web HTML di documenti relativi a Java e HotJava su http://java.sun.com . Questi documenti sono replicati su http://java.blackdown.com

ed altrove; vedi la lista della Sun dei siti speculari.

2.5 Sì, ma dove trovo documentazione cartacea?

La serie ufficiale di libri su Java della SunSoft Press è in fase di realizzazione alla Addison-Wesley. Dettagli su questi si possono trovare nel

FAQ del newsgroup comp.lang.java http://www.city-net.com/~krom/java-faq.html .

Parecchi utilizzatori di Java della prima ora hanno raccomandato ”Hooked on Java” scritto da membri del team Java. ”Ben scritto, benchè avrei preferito qualcosa meno di base” era un commento.

O’Reilly & Associates sta preparando la sua serie di libri su Java in cooperazione con la Sun. Sarà incluso (almeno) una ”Nutshell Guide To Java” (Guida a Java in un guscio di noce: Le guide in un guscio di noce sono una serie di manuali UNIX di gran successo della OR&A. NdT), un manuale di riferimento al linguaggio, un manuale di riferimento alla libreria di classi, e un libro sulla macchina virtuale a byte-code. (Full-disclosure statement: Your HOWTO editor has been invited by O’Reilly Associates to serve as primary technical reviewer for this series, and is being paid for that work.) (Il curatore dell’HOWTO avverte di essere pagato dalla O’Reilly & Associates in qualità di principale revisore tecnico.)

SAMS ha un libro chiamato ”Learning Java in 21 Days” (Imparare Java in 21 giorni). Non ho ancora recensioni.

Uno dei nostri contributori, spulciando un catalogo locale, ha trovato 3 libri già pubblicati:

• Uno chiamato ’Java in 60 minuti’ che appare come una descrizione sintattica piuttosto condensata.

• Uno da SamsNet chiamato proprio ’Java’.

• Uno di Tim Ritchey chiamato ’Java!’ che include un CD-ROM.

Il nostro informatore continua:

Ho comprato il terzo (quello di Tim Richey). Il CD-ROM contiene roba dalla versione alfa, benchè suggerisca che la versione beta dovrebbe essere pronta in quei tempi, ed indica java.sun.com come un buon posto dove trovare informazioni più recenti. A parte questo, è piuttosto buono, anche nel far notare che bene, è fuori luogo per me riempirvi di pagine e pagine di descrizione della API perchè 1) quadruplicherebbe le dimensioni del libro e 2) vengono continuamente modificate e 3) potete trovare queste informazioni on-line ... ecc.

Dave Dittrich scrive:

direi che ’Java in 60 minutes’ potrà anche essere letto in 60 minuti, ma non vi insegnerà a programmare in Java in 60 minuti (sorpresa, sorpresa!). Mi sembra che ”Java in 60 minuti” sia solo uno dei molti concorrenti alla corsa per essere per primi in libreria con un libro sull’argomento del momento. Non sembra di avere più di quanto si possa trovare sul Web, compreso un sacco di testo che sembra proprio tirato fuori dal Java Language Specification

(http://java.sun.com/JDK-beta2/psfiles/javaspec.ps).

Continua Dave:

lo stesso per ”Java!”, solo che quest’ultimo entra molto più nei dettagli sui concetti della programmazione orientata agli oggetti, ecc. Qualcuno mi ha consigliato un’altro testo che ugualmente parla di astrazione di dati/metodi ed altri concetti della programmazione orientata agli oggetti, che è ”Structure and Interpretation of Computer Programs” di Abelson, Sussman e Sussman (MIT Press).

Nota finale: a tutt’oggi (Gennaio 1996), è probabilmente una buona idea stare lontani dal libro di Ritchey e su ogni altra cosa basata sulla API alfa. La Api beta è sostanzialmente diversa, e la Java 1.0 in fase di realizzazione avrà le sue differenze.

2.6 Esiste materiale in Italiano su Java?

Non ho notizia di libri o riviste originali italiani , mentre so di diverse traduzioni di libri americani:

• ”Java”, Apogeo (Gen96) traduzione del ”60 Minute Giude to Java” di Tittel e Gaither, IDG 1995.

NOTA: Poichè il vostro traduttore non vive in Italia, ha ovvie difficoltà a recarsi in libreria per reperire informazioni di prima mano. In questo ha estremo bisogno di aiuto da parte vostra: sono ben accetti elenchi di libri, riviste e recensioni. Contattate liberamente

Fabrizio Polacco mailto:fpolacco@megabaud.fi .

2.7 Dove posso trovare sulla rete collezioni di codice Java?

Archivi WWW di applet sono disponibili nelle seguenti locazioni:

   • http://java.sun.com/

   • http://www.applets.com/
   • http://www.gamelan.com/
   • http://www.javasoft.com/applets/applets.html

Per molti degli applet in queste pagine è disponibile il codice sorgente, ed i programmatori sono invitati ad usarli.

Altri pagine verranno segnalate nel

FAQ del newsgroup comp.lang.java http://www.city-net.com/~krom/java-faq.html .

3 Java come Software Liberamente Ridistribuibile

Molti programmatori Linux sono impegnati nel produrre software liberamente ridistribuibile (FRS), e cercano di evitare di dedicare un mucchio di tempo a strumenti i cui sorgenti non siano generalmente disponibili. In questa sezione discutiamo il rapporto tra la Sun e Java ed il mondo FRS.

(Attenzione: non sono un avvocato. Non sono neppure impiegato, nè agente, nè distributore della Sun Microsystems. Questa sezione è basata sulla mia interpretazione delle attuali leggi sul copyright ed il linguaggio della licenza della Sun. Tenetela come una introduzione; la licenza della Sun,

http://www.blackdown.org/Java/licensing.html , è definitiva. Se avete seri dubbi sul suo significato, consultate un avvocato.)

3.1 I programmi Java e gli applet sono liberamente ridistribuibili?

Lo sono se li scrivete voi e scegliete di renderli FRS attraverso qualche metodo (quale la licenza GPL, o una tipo-BSD, o dichiarandoli di pubblico dominio).

3.2 Cosa posso fare con gli eseguibili dell’implementazione di Java?

La pagina della licenza della Sun ha questo da dire:

Gli eseguibili binari non-modificati di Java e HotJava rilasciati possono essere ridistribuiti senza oneri sia in applicazioni commerciali che non-commerciali.

Inoltre:

Società o individui che desiderino creare un nuovo sbarco del linguaggio Java in base a codesto contratto hanno il diritto di pubblicare su Internet gli eseguibili binari di questo sbarco per farli usare da altri, purchè questi eseguibili siano liberi da oneri e superino le suite di test pubblicamente disponibili. (Le suite di test saranno disponibili in qualche momento nella prima metà del 1996.) Le differenze – con i sorgenti rilasciati (NdT) – potranno essere pubblicate sul Web puchè il codice sorgente originale non venga pubblicato. Il codice sorgente di Java è ...

Così se avete gli ese guibili funzionanti di Java o HotJava, potete darli ai vostri amici. O metterli in un CD-ROM. O qualunque altra cosa eccetto modificarli e chiamare ancora Java la versione modificata. (Questo è ragionevole. La Sun ovviamente non vuole restare senza risorse contro ”Cavalli di Troia” che viaggino sotto la bandiera di Java.) Gli eseguibili binari sono FRS.

3.3 Che parti dei sorgenti di Java sono liberamente ridistribuibili?

In base alla licenza della Sun, nulla di questi lo è. Ma ciò suona più severo di quanto sia. In pratica, ogniuno può ottenere i sorgenti di Java e HotJava per scopi educativi, di sbarco, e non-commerciali compilando una form sul Web che obbliga a non ridistribuire i sorgenti. Ed il contratto permette la ridistribuzione di differenze sui sorgenti.

La sola circostanza che vi richiede di firmare una licenza commerciale con la Sun e di pagar loro denaro è se volete usare i sorgenti in un prodotto commerciale. In particolare, per il modo in cui è scritto, è nella lettera e nello spirito del contratto che voi firmiate la licenza dei sorgenti della Sun per uso non-commerciale, arraffiate il sorgente, lo sbarchiate altrove e diate via gli eseguibili binari ottenuti come freeware completamente libero da ipoteche!

La Sun dice che il suo scopo primario nel mentenere tanto controllo quanto ne ha, è per impedire che il linguaggio muti in dialetti incompatibili. Il linguaggio della licenza lo sostiene: sembra essere stata progettata per permettere agli smanettoni di giocarci liberamente.

3.4 Qual’è l’atteggiamento della Sun nei confronti di strumenti ed implementazioni FRS di Java?

La pagina della licenza Sun dice:

Le specifiche per il Linguaggio Java w la Macchina Virtuale Java sono aperte (OPEN ) e sono coperte da copyright dalla Sun Microsystems Inc.

Reimplementazioni del Compilatore java e dell’Interprete a Runtime di Java sono permesse senza necessità di licenza dalla Sun a patto che tali implementazioni siano create direttamente dalle specifiche pubblicate e senza l’uso diretto o indiretto dell’implementazione della Sun o altri diritti di proprietà intellettuale, inclusi i marchi commerciali.

Così se volete fare lo sforzo di creare un clone FRS di Java partendo dalle specifiche pubblicate , la Sun non vi fermerà.

La gente alla Sun usa il termine ”rogue port” (sbarco briccone) per implementazioni di Java che a) siano eseguite fuori dalla Sun, o b) non si basino su codice concesso in licenza dalla Sun (alcune volte il termine sembra avere uno dei significati, altre volte l’altro). Loro sembrano ritenere che già ne esistano, ma noi non sappiamo dove siano, nè se siano FRS. Sono piuttosto tranquilli sulla situazione.

La Sun ha una suite di validazione. Hanno detto che certificheranno qualunque sbarco che la superi.(non è noto se questa validazione sarà onerosa, ma la Sun dice per iscritto che la suite sarà ”pubblicamente disponibile” nel 1996, il che almeno suggerisce che non sarà onerosa.) Sono pronti a certificare sbarchi bricconi, benchè apparentemente questo non sia ancora successo.

3.5 C’è qualcuno che sta clonando Java in sorgenti liberamente ridistribuibili?

Esiste un clone del compilatore di Java in fase iniziale di sviluppo. E‘ chiamato guavac. Potete trovare più informazioni a

http://http.cs.berkeley.edu/~engberg/guavac

Circolavano voci che il progetto GROW della Cygnus Software avesse piani per un interprete del byte-code Java da porre sotto GPL. Questo è falso; quello su cui stanno lavorando è un traslatore da Java a Scheme che non passi attraverso il J-code. Potete avere dettagli sul progetto GROW a

http://www.cygnus.com/tiemann/grow/ .

EriK Troan della Red Hat ed il vostro umile redattore stanno cercando di mettere insieme un gruppo di sviluppo per fare il resto del lavoro. Per il momento sembra che useremo guavac come compilatore, Erik preparerà la libreria di classi mentre il vostro umile redattore preparerà l’interprete di byte-code (se Cygnus non arriverà prima). Questo progetto era sperimentalmente denominato ”Mr. Coffee”, ma ora probabilmente sarà JOE (per Java Open to Everyone = Java Aperto a Tutti).

3.6 Esistono attrezzi FRS per Java?

C’è una modalità GNU Emacs per editare Java. Potete ottenerlo da ftp://java.sun.com/pub/java/ contrib/emacs . Notate: questa modalità presume stiate usando c++mode.el, e non funziona con ccmode.el distribuito con Emacs 19.

4 Java su Linux. Domande.

Qui troverete la parte pratica di come far girare Java sul vostro Linux.

4.1 Java e HotJava sono inclusi in qualche distribuzione di Linux?

No, non ancora, ma aspettatevelo da un momento all’altro.

4.2 Come posso avere la più recente distribuzione di Java per Linux?

Guardate in ftp://java.blackdown.org/pub/Java/linux . Il più recente Java-per-Linux può essere scaricato da lì. Prima dovreste dare una scorsa a

ftp://java.blackdown.org/pub/Java/linux/README .

I file di cui avrete bisogno sono linux.jdk-1.0-try1.common.tar.gz e uno tra linux.jdk-1.0-try3.static-motif-bin.tar.gz o linux.jdk-1.0-try3.shared-motif-bin.tar.gz, in base al fatto se avete le librerie shared di Motif sul vostro sistema. Se avete il Linux di Red Hat o qualche altro sistema che parli RPM, potete installare la beta 1.0 da

ftp://java.blackdown.org//pub/Linux/RPMS/i386/JDK-linux-common-1.0b-1.i386.rpm

e

ftp://java.blackdown.org//pub/Linux/RPMS/i386/JDK-linux-static-1.0b-1.i386.rpm

o

ftp://java.blackdown.org//pub/Linux/RPMS/i386/JDK-linux-shared-1.0b-1.i386.rpm .

Per  gli  Europei,  il  contenuto  di  ftp://java.blackdown.org/pub/Java/linux  e

ftp://java.blackdown.org/pub/Linux/RPMS/i386/JDK-linux* sono ora copiati nel Regno Unito in ftp://ftp.linux.org.uk/pub/linux/java . Che è zen.btc.uwe.ac.uk, in caso a qualcuno interessi. La copiatura avviene quotidianamente alle 6 del mattino (UT). NdT: sarebbe necessario riportare qui i link a siti italiani o più vicini (network wise) ai vari provider italiani. Se ne siete a conoscenza potete riferirlo al traduttore . Questo sbarco su Linux realizzato da Randy Chapman dai sorgenti Sun, è quello a cui facciamo riferimento in questo HOWTO come il JDK.

4.3 Di che ambiente avrò bisogno per far girare Java?

Di base, avete bisogno di un Linux basato su ELF. Non c’è supporto a.out, e, data la velocità con cui il mondo Linux sta passando a ELF, non ce ne sarà alcuno in futuro.

Avete bisogno del kernel 1.2.13 o successivo. Il kernel 1.2.12 e precedenti sembra abbiano un baco in getcwd(3) che ingabbia bin/javac perchè non controlla il valore ritornato da getcwd(3).

Avrete bisogno di questi pezzi:

• libc.so.5 => /lib/libc.so.5.2.18 (La Libreria standard del C)

• libX11.so.6 => /usr/X11/lib/libX11.so.6.0 (La Libreria di base di X11R6)

• libXt.so.6 => /usr/X11/lib/libXt.so.6.0 (La Libreria del pacchetto Athena)

• libXext.so.6 => /usr/X11/lib/libXext.so.6.0 (La Libreria delle estensioni X)

• libXpm.so.4 => /usr/X11/lib/libXpm.so.4.3 (La Libreria X per la gestione del pixmap)

• libdl.so.1 => /lib/libdl.so.1.7.9 (supporto Linux al caricamento dinamico)

Le Librerie di supporto C e X potrebbero già trovarsi nel vostro Linux.

Se non le avete, prelevate libc.5.2.18.bin.tar.gz da

ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ . Scompattate e copiate i file dal sottodirettorio lib del più alto livello della gerarchia in /lib.

Se non avete una versione attuale di ld.so (o libdl.so.1.7.*) dovrete aggiornarla. ld.so.1.7.9 e .11 funzionano: la .10 e altre versioni precedenti no. Prelevate ld-so.1.7.14.tar.gz da

ftp://ftp.ods.com/linux/ ; Scompattate ed eseguite instldso.sh che si trova nel più alto livello della gerarchia originata.

Troverete una Libreria Xpm funzionante in

ftp://sunsite.unc.edu/pub/Linux/libs/X/libXpm.3.4f-ELF.tar.gz .

4.4 Ho bisogno di Netscape? Posso usare Netscape?

Sì, hai bisogno di Netscape. HotJava non è ancora disponibile per la release beta 1.0. Randy Chapman dice:

La Sun ha cambiato massicciamente l’interfaccia awt quando ha varato la beta JDK e non ha ancora convertito HotJava a ciò. Hanno promesso di farlo, e dovrebbe andare alla grande con Linux-JDK quando lo rilasceranno.

Non è noto quando ciò avverrà.

Le versioni di Netscape a partire dalla 2.0b3 sono pronte per Java. La trovate su ftp[1-7].netscape.com ( cioè ftp1.netscape.com, ftp2.netscape.com, ecc) La versione 2.0b4 vi permette di caricare gli applet con la URL file:, la 2.0b3 no. Questo dovrebbe essere molto d’aiuto ai ragazzi con macchine con poca memoria (perchè non serve far girare httpd). La versione attuale è la 0.6.

Il file da prelevare è /2.0beta6/unix/netscape-v20b6a-export.i486-unknown-linux.tar.Z.

Notate che Netscape gira su un sistema a.out, cosi sarebbe, in teoria, possibile scrivere la vostra applicazione (o applet) Java, passarla a qualcun altro per la compilazione (come forse il

Compilatore Pubblico Blackstar http://mars.blackstar.com ), e vedere l’output sul vostro sistema. Se volete di più, procuratevi un sistema ELF.

Assicuratevi che CLASSPATH non sia impostato prima di lanciare Netscape; sembra faccia cadere Netscape.

Netscape per Linux ha un pò di problemi noti. Non esegue suoni. Solo i display a 8-bit funzionano; 16bpp falliscono. La versione 2.0b3 occasionalmente produce un bus-error quando richiama il metodo dispose per i frame. Benchè sia altrimenti piuttosto robusto, l’applet ’Impressionism’ di Gamelan è noto farlo fallire.

4.5 Quali mailing list o newsgroup esistono per Java su Linux?

• java-linux (a cura di karl@blackdown.org) Discussione e sviluppo concernenti lo sbarco di Java sul sistema operativo Linux. Per essere aggiunti alla lista, mandate e-mail a java-linux-request@java.blackdown.org con la parola ’subscribe’ nel subject.

• java-linux-announce (a cura di karl@blackdown.org) Lista moderata per annunci riguardanti i progetti di sbarco di Java-Linux. Per essere aggiunti alla lista, mandate e-mail a java-linux-announce-request@java.blackdown.org con la parola ’subscribe’ nel subject.

• comp.lang.java Newsgroup di discussione generale su Java.

• alt.www.hotjava Newsgroup di discussione sul browser HotJava.

5 Costruiamo lo sbarco di Java su Linux.

In questa sezione, raccogliamo ricette inviateci su come montare lo sbarco di Java creato da Randy Chapman su diverse attuali distribuzioni di Linux:

5.1 Distribuzione Slackware ELF kernel 1.2.13.

John Franks <john@math.nwu.edu> scrive che vi è riuscito con i seguenti passi:

• Prelevate linux-x86.jdk.static-motif.tar.gz da

     ftp://www.blackdown.org/pub/Java/linux/

decomprimetelo e scompattatelo.

• Prelevate libc.5.2.18.bin.tar.gz (distributione in binario, non sorgente) da

     ftp://tsx-11.mit.edu/pub/linux/packages/GCC/

Scompattate e copiate i file dal sottodirettorio lib del più alto livello della gerarchia in /lib. Assicuratevi che /lib/libc.so.5 sia un link simbolico a questo file.

• Prelevate ld-so.1.7.14.tar.gz da ftp://ftp.ods.com/linux/ ; Scompattate ed eseguite instldso.sh che si trova nel più alto livello della gerarchia originata.

Dovreste ora essere in grado di compilare e provare programma e applet ”hello world” dalla Sun seguendo le istruzioni su

http://java.sun.com/progGuide/index.html .

5.2 RedHat 2.1/Caldera Preview 2

Steve Greene <sgreene@access.digex.net> suggerisce i seguenti passi. Ho leggermente modificato la ricetta, per cui lamentatevi degli errori con me. Il ’JDK’ cui si fa riferimento è lo sbarco del Java Developer’s Kit di Chapman.

• Da un sito speculare di Red Hate, procuratevi il file rpm disponibile per ld.so.1.7.14. Per trovarlo,

cercate /pub/mirrors/redhat-2.1/updates/RPMS/ld.so-1.7.14-i386.rpm So che è disponibile su

ftp.pht.com, ftp.caldera.com. come probabilmnte sugli altri siti speculari di Red Hat. Arraffatelo ed eseguite ‘rpm -Uvh ld.so-1.7.14-1.i386.rpm’ sul vostro sistema.

• Gli utenti di Red Hat 2.0 and Caldera Preview 2 avranno bisogno del programma ’which’ (viene chiamato da alcuni script nel JDK). Un file rpm per ’which’ è disponibile sui soliti siti speculari di Red Hat come parte della distribuzione Red Hat 2.1. Prelevate ed installate which-1.0.i386.rpm. Gli utenti RedHat 2.1 dovrebbero già avere which sui loro sistemi o disponibile nella distribuzione originale.

• Procuratevi i file tar per il JDK staticamente linkato. (linux-x86.jdk.static-motif.tar.gz da ftp://www.blackdown.org/pub/Java/linux/ ) Scompattatelo in un posto conveniente. Io ho messo il mio in /usr/local in modo da creare /usr/local/java/ ...

• Per poter lanciare Java da un utente non-root (questa è una buona idea!), eseguite ’chmod 666 /dev/zero’. Red Hat e Caldera installano questo dispositivo con i permessi errati.

• Se non lo avete già fatto, lanciate ldconfig da root per installare le nuove librerie. Se eseguite ’ldconfig -v’ potete controllare di avere tutte le librerie caricate. (Almeno non dobbiamo creare un sistema ELF prima!)

• Assicuratevi di errere loggati con un utente non-root. Lanciate X-window, aprite una X-Term e provate qualcosa!

5.3 Unifix

Stefan Middendorf scrive: Unifix è una popolare versione di Linux in Tedesco. (Imitare, imitare! NdT) Esistono alcune distribuzioni basate su di esso: Linux Universe, venduto negli USA, Linux 4U, attualmente distribuito solo in Germania e Linux FT in Gran Bretagna. Si sa che questa ricetta funziona con Unifix 1.7, Linux 4U 1st Edition, Linux Universe 2nd Edition, e Linux FT 1.1.

• Prelevate linux-x86.jdk.static-motif.tar.gz da

ftp://www.blackdown.org/pub/Java/linux/

decomprimetelo e scompattatelo.

• Modificate la prima riga dello script .java_wrapper:

          PRG=`which $0` >/dev/null 2>&1
          ---
          PRG=`type $0 | cut -d ' ' -f 3` >/dev/null 2>&1

• Prelevate libc-5.2.18.bin.tar.gz (io ci sono riuscito anche con libc-5.2.16.bin.tar.gz), e scompattatelo nel direttorio /

• Prelevate ld-so.1.7.12.tar.gz da tsx-11.mit.edu (o ogni altro sito) scompattatelo, per esempio in /usr/local. Spostatevi nel direttorio generato ed eseguite instldso.sh Questo dovrebbe anche eseguire ldconfig. Probabilmente funziona anche con versioni più recenti di ld-so.

• Aggiungete /usr/local/java/bin alla variabile d’ambiente PATH.

• Procuratevi  netscape-v20b4-export.i486-unknown-linux.tar.Z,  e  scompattatelo  in

/usr/local/<yourNetscapeDir>.

• Create un link in /usr/local/bin di ../<yourNetscapeDir>/netscape.

• Mettete /usr/local/<yourNetscapeDir>/moz2_0.zip in /usr/local/lib/netscape/.

Alternativamente alla modifica del PATH, Ralf Strobel suggerisce:

   • Copiate gli script .java_wrapper e appletviewer e i link @java, @javac, @javadoc, @javap, e @jdb

da /usr/local/java/bin a /usr/local/bin e li potrete uasre ovunque vi troviate.

• In /java/bin/i586 potete aggiungere uno script chiamato ‘javadoc‘

          #!/bin/sh
          `dirname $0`/java sun.tools.javadoc.Main -d <yourhtmldir> $

dove se voi siete l’utente jrandom, <yourhtmldir> sarà jrandom/.java-html.

6 Visualizzare gli Applet

Per lanciare un demo senza passare per il visore degli applet, potete immettere questo comando stando in cima all’albero dei direttori Java (/usr/local/java su molti sistemi):

     bin/java sun.applet.AppletViewer demo/<directory_name>/exampleN.html

dove <directory name> è il sottodirettorio del demo, ed N è numero del file di esempio (alcuni direttori ne hanno più d’uno).

Steve Greene dice: ho lanciati gli esempi disponibili nei siti Java della Sun e quelli simili messi in giro dal NTMUG. Ho trovato alcuni problemi con la sintassi negli esempi della Sun, così ho seguito il programma NYMUG invece.

appletviewer si aspettap per argomento un file html con un tag APPLET dentro.

Per esempio, mettiamo che il vostro file Hello.html contenga:

     <HTML>
     <HEAD>
     <TITLE> Hello test program </TITLE>
     </HEAD>
     <BODY>
     This is an appletviewer test
     <APPLET CODE="Hello1.class" WIDTH=150 HEIGHT=25>

     </APPLET>
     </BODY>
     </HTML>

Lanciando ”appletviewer Hello.html” appare l’applet. Un vantaggio nell’usare appletviewer è che gli eventi passati all’applet ( start(), init() ecc) sono conformi con le specifiche della Sun all’opposto di Netscape 2.0b4 (probabilmente un baco in Netscape).

Uno svantaggio nell’usare appletviewer è che è molto più lento di Netscape.

La prima volte che lanciate Java, appare uno schermo con una licenza che ricorda quella di Netscape.

7 Note su Problemi Noti

7.1 Il Make di GNU non funziona più dopo l’installazione di Java.

Versioni recenti di libc correggono un baco che nascondeva un errore in GNU Make (il sintomo è che make non cerca più le regole in Makefile). Le note alla release 5.2.8 di libc contengono un patch che corregge il problema.

7.2 Errore: too many arguments’

La variabile CLASSPATH non è correttamente inizializzata. In .java_wrapper, c’è del codice simile a questo:

     PRG=`which $0`
     J_HOME=`dirname $PRG`/..

Sfortunatamente, il comando ’which’ di linux è scorretto, e certe shell impostano $0 all’intero pathname. Randy Chapman dice di corregerlo sia usando:

     J_HOME=`dirname $0`/..

che, in modo più sicuro:

     J_HOME=/usr/local/java

Una correzione alternativa da Dave Dittrich è:

     PRG=`csh -c "which $0"`

E un’altra da Tim Farnum è di cambiare la riga PRG=`which $0` con:

     PRG=$0

Lutz Behnke suggerisce:

     PRG=`type -path $0` >/dev/null 2>&1

Un simile cambiamento deve essere fatto anche nello script appletviewer.

7.3 Errore: ‘cannot find class java/lang/Thread’

La variabile CLASSPATH non è correttamente inizializzata. Vedi 7.2 (sopra).

7.4 Un messaggio di errore si riferisce a /dev/zero

Da root eseguite chmod 666 /dev/zero.

7.5 SEGFAULT

Occasionalmente potreste trovarvi con lo schermo pieno di messaggi d’errore, e il sistema riempie allegramente la vostra area di swap e si blocca.

Probabilmente vi manca una libreria da qualche parte. Rilanciate ldconfig -v e guardate cosa manca. Forse LD_LIBRARY_PATH o CLASS_PATH non sono impostate. Infine, alcuni applet sono bacati o bloccano il JDK Linux.

(Ad ogni modo, potete fermare il blocco usando un’altra Xterm con top; usate top per killare il processo java prima che riempia la swap e che il sistema si blocchi!)

Java sembra richiedere un mucchio di risorse, così dovreste tenere il numero di applicazioni aperte nel desktop al minimo. Su un 486DX2/75 con 8MB di RAM e 16MB di swap sono in grado di lanciare due applet di animazione simultaneamente prima che il mio sistema riempia la swap e si impicchi. (ci mette un minuto, comunque).

7.6 bin/java, bin/javac, o bin/appletviewer vi danno un messaggio di help

avete dimenticato qualche parametro su una riga di comando.

7.7 Gli applet sono visibili nel viewer, ma non sul web.

Un errore comune che produce questo risultato consiste nello sbagliare il tipo MIME dell’applet. Il vostro server deve inviare un header con l’applet indicante che il tipo MIME è ’text/plain’, ’application/octetstream’, o qualche altro tipo che non ha un gestore definito sul lato client. Come correggere questo dipende da quale server state usando. (John Franks)

E’ stato inoltre riferito che tinyhttpd, un HTTP server scritto in Perl, fornisce un errato tipo di contenuto. Apache, invece, è piuttosto affidabile.

7.8 Log dei problemi

Joey Oravec ci dice che HotJava tiene traccia di ciò che fa e dei problemi che incontra. Se cercate di diagnosticare qualcosa da voi, guardate in $HOME/.hotjava/weblog. Quel file vi farà notare se forse vi manca una libreria o altro.

8 Correlazioni

Per informazioni generiche su java, c’è il FAQ del newsgroup comp.lang.java ; è disponibile su

http://www.city-net.com/~krom/java-faq.html .

Esiste un più vecchio documento in stile FAQ di Joey Oravec

joey@sun.science.wayne.edu mailto:joey@sun.science.wayne.edu

che soprattutto si riferisce alla versione alfa. Lo trovate su

http://www.science.wayne.edu/~joey/java/linux.html . Ad un perto punto questi documenti potreb-

bero fondersi. Ecco alcune pagine relative a Java:

• Karl Asha’s General Linux Java Page http://substance.blackdown.org/java-linux.html
• LinuxJava Mailing List http://homer.ncm.com/java-linux/
• Netrek for Java http://www.cs.utexas.edu/users/hiep/netjav.html
• Blue-Skies for Java http://cirrus.sprl.umich.edu/javaweather/
• Java Hints Page http://www.parnasse.com/java.shtml

9 Da Aggiungere ...

• Piu’ ricette per specifiche distribuzioni di linux.

10 Ringraziamenti

Un grazie a tutti i contributori, inclusi:

• John Franks <john@math.nwu.edu>

• Zachary DeAquila <zachary@zachs.place.org>

• Steve Greene <sgreene@access.digex.net>

• Dave Dittrich <dittrich@cac.washington.edu>

• Dave Flanagan <dave@ora.com>

• Joey Oravec <mailto:joey@sun.science.wayne.edu>

• Adam Smith <aws@cs.brown.edu>

• Joe Buck <jbuck@Synopsys.COM>

• Omar Loggiodice <ologgio@netdepot.com>

• Stefan Middendorf <mdorf@stud.fh-heilbronn.de< Questa versione incorpora il vociferato ma mai pubblicato mini-HOWTO Red Hat/Caldera di Steve Greene. Ho inoltre rubacchiato roba che trovavo utile dalla pagina di Joey Oravec – un grazie speciale a lui. Per gli altri HOWTO e FAQ che io curo, guardate la mia home page a

http://www.locke.ccil.org/~esr/home.html .

Nota del Traduttore Questo documento viene continuamente aggiornato. Ad oggi, sono state rilasciate le seguenti versioni:

• ver.1.0 21 Aprile 1996 (v.2.2, 10 February 1996) A questa versione in Italiano hanno contribuito (e qui si ringraziano caldamente):

• ancora nessuno.