HOWTO Java su Linux <author> a cura di Eric S. Raymond, <htmlurl url="mailto:esr@snark.thyrsus.com" name="<esr@snark.thyrsus.com>"> <newline> Trad.It. di Fabrizio Polacco, <htmlurl url="mailto:fpolacco@megabaud.fi" name="<fpolacco@megabaud.fi>"> <date> ver.1.0 21 Aprile 1996 (v.2.2, 10 February 1996) <abstract> Questo documento descrive come prendere il via con Java e HotJava su Linux, sia come utente che come programmatore. </abstract> <toc> <sect> Introduzione <p> Questo documento è una introduzione al mondo di Java e HotJava incentrata su Linux. Queste tecnologie sono in rapida eoluzione, e accettiamo contribuzioni da chiunque. <p> Parti di questo documento che hanno seriamente bisogno di verifica o di completamento sono racchiuse da *** ***. Vedi inoltre più sotto la sezione <ref id="needed" name="Da Aggiungere ...">. Per favore aiutateci a migliorare questo HOWTO. Inviate aggiornamenti e richieste di modifiche a <htmlurl url="mailto:esr@snark.thyrsus.com" name="Eric S. Raymond">. Aggiornamenti specifici alla versione Italiana possono essere inviati a <url url="mailto:fpolacco@megabaud.fi" name="Fabrizio Polacco">. </sect> <sect> Domende Generiche su Java e HotJava <p> Questa sezione è una introduzione generica (non specifica su Linux) a Java e HotJava. <sect1> Cosa sono Java e HotJava e perchè sono interessanti? <p> 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 <tt/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 <tt/thread/ (processi leggeri) come una capacità nativa ed ha potenti caratteristiche per la sicurezza della rete. HotJava è un <tt/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 J-code 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. </sect1> <sect1> Da dove provengono Java e HotJava? Chi può utilizzarli? <p> 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 <tt/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 <ref id="license" name="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. </sect1> <sect1> Quanto è maturo Java? <p> 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. </sect1> <sect1> Dove posso trovare documentazione su Java e HotJava? <p> La Sun mantiene un esteso web HTML di documenti relativi a Java e HotJava su <url url="http://java.sun.com">. Questi documenti sono replicati su <url url="http://java.blackdown.com"> ed altrove; vedi la lista della Sun dei siti speculari. </sect1> <sect1> Sì, ma dove trovo documentazione cartacea? <p> La serie ufficiale di libri su Java della SunSoft Press è in fase di realizzazione alla Addison-Wesley. Dettagli su questi si possono trovare nel <url url="http://www.city-net.com/~krom/java-faq.html" name="FAQ del newsgroup comp.lang.java">. 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. <em> (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.) </em> (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: <itemize> <item> Uno chiamato 'Java in 60 minuti' che appare come una descrizione sintattica piuttosto condensata. <item> Uno da SamsNet chiamato proprio 'Java'. <item> Uno di Tim Ritchey chiamato 'Java!' che include un CD-ROM. </itemize> Il nostro informatore continua: <quote> 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 <em>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.</em> </quote> Dave Dittrich scrive: <quote> 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 <htmlurl url="http://java.sun.com/JDK-beta2/psfiles/javaspec.ps" name="Java Language Specification"> (http://java.sun.com/JDK-beta2/psfiles/javaspec.ps). </quote> Continua Dave: <quote> 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). </quote> 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. </sect1> <sect1> Esiste materiale in Italiano su Java? <p> Non ho notizia di libri o riviste originali italiani , mentre so di diverse traduzioni di libri americani: <itemize> <item> ''Java'', Apogeo (Gen96) traduzione del ''60 Minute Giude to Java'' di Tittel e Gaither, IDG 1995. </itemize> NOTA: <em> 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 <url url="mailto:fpolacco@megabaud.fi" name="Fabrizio Polacco">. </em> <sect1> Dove posso trovare sulla rete collezioni di codice Java? <p> Archivi WWW di applet sono disponibili nelle seguenti locazioni: <itemize> <item><url url="http://java.sun.com/"> <item><url url="http://www.applets.com/"> <item><url url="http://www.gamelan.com/"> <item><url url="http://www.javasoft.com/applets/applets.html"> </itemize> Per molti degli applet in queste pagine è disponibile il codice sorgente, ed i programmatori sono invitati ad usarli. Altri pagine verranno segnalate nel <url url="http://www.city-net.com/~krom/java-faq.html" name="FAQ del newsgroup comp.lang.java">. </sect1> </sect> <sect> Java come Software Liberamente Ridistribuibile <label id="license"> <p> 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, <url url="http://www.blackdown.org/Java/licensing.html">, è definitiva. Se avete seri dubbi sul suo significato, consultate un avvocato.) <sect1> I programmi Java e gli applet sono liberamente ridistribuibili? <p> 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). <sect1> Cosa posso fare con gli eseguibili dell'implementazione di Java? <p> La pagina della licenza della Sun ha questo da dire: <quote> Gli eseguibili binari non-modificati di Java e HotJava rilasciati possono essere ridistribuiti senza oneri sia in applicazioni commerciali che non-commerciali. </quote> Inoltre: <quote> 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 è ... </quote> 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. </sect1> <sect1> Che parti dei sorgenti di Java sono liberamente ridistribuibili? <p> 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 <em/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. </sect1> <sect1> Qual'è l'atteggiamento della Sun nei confronti di strumenti ed implementazioni FRS di Java? <p> La pagina della licenza Sun dice: <quote> Le specifiche per il Linguaggio Java w la Macchina Virtuale Java sono aperte (<em/OPEN/) e sono coperte da copyright dalla Sun Microsystems Inc. </quote> <quote> 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. </quote> Così se volete fare lo sforzo di creare un clone FRS di Java partendo dalle specifiche pubblicate , la Sun non vi fermerà. <p> 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. <p> 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. </sect1> <sect1> C'è qualcuno che sta clonando Java in sorgenti liberamente ridistribuibili? <p> Esiste un clone del compilatore di Java in fase iniziale di sviluppo. E` chiamato guavac. Potete trovare più informazioni a <url url="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 <url url="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). <sect1> Esistono attrezzi FRS per Java? <p> C'è una modalità GNU Emacs per editare Java. Potete ottenerlo da <url url="ftp://java.sun.com/pub/java/contrib/emacs">. Notate: questa modalità presume stiate usando c++mode.el, e non funziona con cc-mode.el distribuito con Emacs 19. </sect1> </sect> <sect> Java su Linux. Domande. <p> Qui troverete la parte pratica di come far girare Java sul vostro Linux. <sect1> Java e HotJava sono inclusi in qualche distribuzione di Linux? <p> No, non ancora, ma aspettatevelo da un momento all'altro. </sect1> <sect1> Come posso avere la più recente distribuzione di Java per Linux? <p> Guardate in <url url="ftp://java.blackdown.org/pub/Java/linux">. Il più recente Java-per-Linux può essere scaricato da lì. Prima dovreste dare una scorsa a <url url="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 <url url="ftp://java.blackdown.org//pub/Linux/RPMS/i386/JDK-linux-common-1.0b-1.i386.rpm"> e <url url="ftp://java.blackdown.org//pub/Linux/RPMS/i386/JDK-linux-static-1.0b-1.i386.rpm"> o <url url="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 <url url="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 <htmlurl url="mailto:fpolacco@megabaud.fi" name="traduttore"> . Questo sbarco su Linux realizzato da Randy Chapman dai sorgenti Sun, è quello a cui facciamo riferimento in questo HOWTO come il JDK. </sect1> <sect1> Di che ambiente avrò bisogno per far girare Java? <p> 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. <p> 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). <p> Avrete bisogno di questi pezzi: <itemize> <item>libc.so.5 => /lib/libc.so.5.2.18 &nl (La Libreria standard del C) <item>libX11.so.6 => /usr/X11/lib/libX11.so.6.0 &nl (La Libreria di base di X11R6) <item>libXt.so.6 => /usr/X11/lib/libXt.so.6.0 &nl (La Libreria del pacchetto Athena) <item>libXext.so.6 => /usr/X11/lib/libXext.so.6.0 &nl (La Libreria delle estensioni X) <item>libXpm.so.4 => /usr/X11/lib/libXpm.so.4.3 &nl (La Libreria X per la gestione del pixmap) <item>libdl.so.1 => /lib/libdl.so.1.7.9 &nl (supporto Linux al caricamento dinamico) </itemize> Le Librerie di supporto C e X potrebbero già trovarsi nel vostro Linux. <p> Se non le avete, prelevate libc.5.2.18.bin.tar.gz da <url url="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 <url url="ftp://ftp.ods.com/linux/">; Scompattate ed eseguite <em/instldso.sh/ che si trova nel più alto livello della gerarchia originata. Troverete una Libreria Xpm funzionante in <url url="ftp://sunsite.unc.edu/pub/Linux/libs/X/libXpm.3.4f-ELF.tar.gz">. </sect1> <sect1> Ho bisogno di Netscape? Posso usare Netscape? <p> Sì, hai bisogno di Netscape. HotJava non è ancora disponibile per la release beta 1.0. Randy Chapman dice: <quote> 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. </quote> Non è noto quando ciò avverrà. <p> 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 <tt/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. <p> 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 <url url="http://mars.blackstar.com" name="Compilatore Pubblico Blackstar">), e vedere l'output sul vostro sistema. Se volete di più, procuratevi un sistema ELF. Assicuratevi che CLASSPATH <em/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. </sect1> <sect1> Quali mailing list o newsgroup esistono per Java su Linux? <p> <itemize> <item> <em/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 <htmlurl url="mailto:java-linux-request@java.blackdown.org" name="java-linux-request@java.blackdown.org"> con la parola 'subscribe' nel subject. <item> <em/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 <htmlurl url="mailto:java-linux-announce-request@java.blackdown.org" name="java-linux-announce-request@java.blackdown.org"> con la parola 'subscribe' nel subject. <item> <htmlurl url="news:comp.lang.java" name="comp.lang.java"> Newsgroup di discussione generale su Java. <item> <htmlurl url="news:alt.www.hotjava" name="alt.www.hotjava"> Newsgroup di discussione sul browser HotJava. </itemize> </sect1> </sect> <sect> Costruiamo lo sbarco di Java su Linux. <p> In questa sezione, raccogliamo ricette inviateci su come montare lo sbarco di Java creato da Randy Chapman su diverse attuali distribuzioni di Linux: <sect1> Distribuzione Slackware ELF kernel 1.2.13. <p> John Franks <john@math.nwu.edu> scrive che vi è riuscito con i seguenti passi: <itemize> <item> Prelevate linux-x86.jdk.static-motif.tar.gz da <url url="ftp://www.blackdown.org/pub/Java/linux/"> decomprimetelo e scompattatelo. <item> Prelevate libc.5.2.18.bin.tar.gz (distributione in binario, non sorgente) da <url url="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. <item> Prelevate ld-so.1.7.14.tar.gz da <url url="ftp://ftp.ods.com/linux/">; Scompattate ed eseguite <em/instldso.sh/ che si trova nel più alto livello della gerarchia originata. </itemize> Dovreste ora essere in grado di compilare e provare programma e applet ''hello world'' dalla Sun seguendo le istruzioni su <url url="http://java.sun.com/progGuide/index.html">. </sect1> <sect1> RedHat 2.1/Caldera Preview 2 <p> 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. <itemize> <item> Da un sito speculare di Red Hate, procuratevi il file rpm disponibile per ld.so.1.7.14. Per trovarlo, cercate <tt>/pub/mirrors/redhat-2.1/updates/RPMS/ld.so-1.7.14-i386.rpm</tt> 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. <item> 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. <item> Procuratevi i file tar per il JDK staticamente linkato. (linux-x86.jdk.static-motif.tar.gz da <url url="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/ ... <item> 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. <item> 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!) <item> Assicuratevi di errere loggati con un utente non-root. Lanciate X-window, aprite una X-Term e provate qualcosa! </itemize> </sect1> <sect1> Unifix <p> Stefan Middendorf scrive: Unifix è una popolare versione di Linux in Tedesco. <em/(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. <itemize> <item> Prelevate linux-x86.jdk.static-motif.tar.gz da <url url="ftp://www.blackdown.org/pub/Java/linux/"> decomprimetelo e scompattatelo. <item> Modificate la prima riga dello script .java_wrapper: <tscreen><verb> PRG=`which $0` >/dev/null 2>&1 --- PRG=`type $0 | cut -d ' ' -f 3` >/dev/null 2>&1 </verb></tscreen> <item> 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 / <item> 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. <item> Aggiungete /usr/local/java/bin alla variabile d'ambiente PATH. <item> Procuratevi netscape-v20b4-export.i486-unknown-linux.tar.Z, e scompattatelo in /usr/local/<yourNetscapeDir>. <item> Create un link in /usr/local/bin di ../<yourNetscapeDir>/netscape. <item> Mettete /usr/local/<yourNetscapeDir>/moz2_0.zip in /usr/local/lib/netscape/. </itemize> Alternativamente alla modifica del PATH, Ralf Strobel suggerisce: <itemize> <item> Copiate gli script <tt/.java_wrapper/ e <tt/appletviewer/ e i link <tt/@java/, <tt/@javac/, <tt/@javadoc/, <tt/@javap/, e <tt/@jdb/ da /usr/local/java/bin a /usr/local/bin e li potrete uasre ovunque vi troviate. <item> In /java/bin/i586 potete aggiungere uno script chiamato `javadoc` <tscreen><code> #!/bin/sh `dirname $0`/java sun.tools.javadoc.Main -d <yourhtmldir> $ </code></tscreen> dove se voi siete l'utente jrandom, <yourhtmldir> sarà ~jrandom/.java-html. </itemize> </sect1> </sect> <sect> Visualizzare gli Applet <p> 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): <tscreen> bin/java sun.applet.AppletViewer demo/<directory_name>/exampleN.html </tscreen> 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: <tscreen><code> <HTML> <HEAD> <TITLE> Hello test program &etago;TITLE> &etago;HEAD> <BODY> This is an appletviewer test <APPLET CODE="Hello1.class" WIDTH=150 HEIGHT=25> &etago;APPLET> &etago;BODY> &etago;HTML> </code></tscreen> 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. </sect> <sect> Note su Problemi Noti <p> <sect1> Il Make di GNU non funziona più dopo l'installazione di Java. <p> 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. </sect1> <sect1> Errore: too many arguments' <label id="classpath"> <p> La variabile CLASSPATH non è correttamente inizializzata. In .java_wrapper, c'è del codice simile a questo: <tscreen><verb> PRG=`which $0` J_HOME=`dirname $PRG`/.. </verb></tscreen> Sfortunatamente, il comando 'which' di linux è scorretto, e certe shell impostano $0 all'intero pathname. Randy Chapman dice di corregerlo sia usando: <tscreen><verb> J_HOME=`dirname $0`/.. </verb></tscreen> che, in modo più sicuro: <tscreen><verb> J_HOME=/usr/local/java </verb></tscreen> Una correzione alternativa da Dave Dittrich è: <tscreen><verb> PRG=`csh -c "which $0"` </verb></tscreen> E un'altra da Tim Farnum è di cambiare la riga <tt/PRG=`which $0`/ con: <tscreen><verb> PRG=$0 </verb></tscreen> Lutz Behnke suggerisce: <tscreen><verb> PRG=`type -path $0` >/dev/null 2>&1 </verb></tscreen> Un simile cambiamento deve essere fatto anche nello script appletviewer. </sect1> <sect1> Errore: `cannot find class java/lang/Thread' <p> La variabile CLASSPATH non è correttamente inizializzata. Vedi <ref id="classpath" name="sopra">. </sect1> <sect1> Un messaggio di errore si riferisce a /dev/zero <p> Da root eseguite <tt>chmod 666 /dev/zero</tt>. </sect1> <sect1> SEGFAULT <p> 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). </sect1> <sect1> bin/java, bin/javac, o bin/appletviewer vi danno un messaggio di help <p> avete dimenticato qualche parametro su una riga di comando. </sect1> <sect1> Gli applet sono visibili nel viewer, ma non sul web. <p> 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/octet-stream', 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. </sect1> <sect1> Log dei problemi <p> 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. </sect1> </sect> <sect> Correlazioni <p> Per informazioni generiche su java, c'è il FAQ del newsgroup <htmlurl url="news:comp.lang.java" name="comp.lang.java">; è disponibile su <url url="http://www.city-net.com/~krom/java-faq.html">. <p> Esiste un più vecchio documento in stile FAQ di Joey Oravec <url url="mailto:joey@sun.science.wayne.edu" name="joey@sun.science.wayne.edu"> che soprattutto si riferisce alla versione alfa. Lo trovate su <url url="http://www.science.wayne.edu/~joey/java/linux.html">. Ad un perto punto questi documenti potrebbero fondersi. <p> Ecco alcune pagine relative a Java: <itemize> <item> <url url="http://substance.blackdown.org/java-linux.html" name="Karl Asha's General Linux Java Page"> <item> <url url="http://homer.ncm.com/java-linux/" name="LinuxJava Mailing List"> <item> <url url="http://www.cs.utexas.edu/users/hiep/netjav.html" name="Netrek for Java"> <item> <url url="http://cirrus.sprl.umich.edu/javaweather/" name="Blue-Skies for Java"> <item> <url url="http://www.parnasse.com/java.shtml" name="Java Hints Page"> </itemize> </sect> <sect> Da Aggiungere ... <label id="needed"> <p> <itemize> <item> Piu' ricette per specifiche distribuzioni di linux. </itemize> </sect> <sect> Ringraziamenti <p> Un grazie a tutti i contributori, inclusi: <itemize> <item> John Franks <john@math.nwu.edu> <item> Zachary DeAquila <zachary@zachs.place.org> <item> Steve Greene <sgreene@access.digex.net> <item> Dave Dittrich <dittrich@cac.washington.edu> <item> Dave Flanagan <dave@ora.com> <item> Joey Oravec <mailto:joey@sun.science.wayne.edu> <item> Adam Smith <aws@cs.brown.edu> <item> Joe Buck <jbuck@Synopsys.COM> <item> Omar Loggiodice <ologgio@netdepot.com> <item> Stefan Middendorf <mdorf@stud.fh-heilbronn.de< </itemize> 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 <url url="http://www.locke.ccil.org/~esr/home.html">. <em>Nota del Traduttore</em> Questo documento viene continuamente aggiornato. Ad oggi, sono state rilasciate le seguenti versioni: <itemize> <item> ver.1.0 21 Aprile 1996 (v.2.2, 10 February 1996) </itemize> A questa versione in Italiano hanno contribuito (e qui si ringraziano caldamente): <itemize> <item> ancora nessuno. </itemize> </sect> </article>