Introduzione F in dal rilascio del Java Development Kit originale nel maggio del 1995, il team di progettazione di Sun Microsystems lavora molto per migliorare la piattaforma Java. La pubblicazione di questa edizione coincide con il rilascio della Versione 6 della Java Platform Standard Edition (Java SE) e riflette le API di tale release. Questa edizione introduce nuove funzioni aggiunte alla piattaforma Java dalla pubblicazione della terza edizione (per la versione 1.3), quali un capitolo sui generici e informazioni sulle annotazioni. Sono presenti nuovi capitoli su Java Web Start, l’ambiente di piattaforma e le espressioni regolari. Molti capitoli, quali “Concorrenza” (in precedenza “Thread”), “I/O”, “Fondamenti di programmazione a oggetti” e “Fondamenti del linguaggio” sono stati completamente riscritti. “Collection” è stato eliminato dall’appendice e inserito in un capitolo. Una nuova appendice contiene informazioni su come prepararsi all’esame di certificazione per il linguaggio Java. Tutto il materiale è stato attentamente revisionato dai membri del team di progettazione per garantire che le informazioni siano precise e aggiornate. Come le edizioni precedenti, il presente volume è basato sul tutorial online situato nel sito Web di Sun Microsystems: http://java.sun.com/docs/books/tutorial/ Le informazioni nel presente volume, spesso indicate come “tutorial principale” o “fondamenti”, sono necessarie a molti programmatori principianti o intermedi. Acquisita la padronanza del materiale contenuto nel presente volume è possibile esplorare il resto della piattaforma Java sul sito Web. Come sempre, l’obiettivo è la creazione di una guida pratica per il programmatore facile da leggere, con molti esempi per l’apprendimento della programmazione. java.indb XXV 22/01/2007 8.27.53 XXVI I N T R O D U Z I O N E A chi è rivolto il presente volume Questo libro è rivolto a programmatori principianti ed esperti. I nuovi programmatori possono sfruttare la lettura dall’inizio alla fine, con le istruzioni passo per passo per la compilazione e l’esecuzione del primo programma presentato nel Capitolo 1. I programmatori esperti in linguaggi procedurali quale C++ possono desiderare di iniziare dai fondamenti della programmazione a oggetti e dalle caratteristiche del linguaggio di programmazione Java. I programmatori esperti possono desiderare di passare immediatamente agli argomenti avanzati quali generici, concorrenza o Java Web Start. Il libro contiene informazioni per le necessità di apprendimento di programmatori con diversi livelli di esperienza. Come utilizzare il presente volume Il libro è pensato in modo da poter essere letto di seguito o per argomenti. Le informazioni sono presentate in ordine logico e dove possibile sono evitati i riferimenti a capitoli successivi. Gli esempi nel presente tutorial sono realizzati per la versione 6.0. È necessario scaricare tale versione per compilare ed eseguire la maggior parte degli esempi. Il CD allegato contiene i contenuti del presente volume (compresi esempi e soluzioni e risposte alle domande e agli esercizi), oltre che i tutorial Java SE solo online, una prima versione 6.0 del Java SE Development Kit (JDK), la specifica API corrispondente e la documentazione di guida. Nel libro sono presenti note a piè di pagina come quella indicata di seguito: docs/api/java/lang/Class.html e tutorial/deployment/applet/examples/TalkServer.java Il livello più alto del CD contiene directory docs e tutorial, quindi le note possono essere individuate nel CD secondo quanto specificato. Per trovare le pagine più recenti online, aggiungere http://java.sun.com/javase/6/ prima delle note con docs e http://java.sun.com/docs/books/ prima delle note con tutorial: http://java.sun.com/javase/6/docs/api/java/lang/Class.html java.indb XXVI 22/01/2007 8.27.53 INTRODUZIONE XXVII http://java.sun.com/docs/books/tutorial/deployment/applet/examples/ TalkServer.java I capitoli del libro si trovano nel CD nelle seguenti posizioni: Capitolo Posizione 1. Per iniziare tutorial/getStarted 2. Fondamenti di programmazione a oggetti tutorial/java/concepts 3. Fondamenti del linguaggio tutorial/java/nutsandbolts 4. Classi e oggetti tutorial/java/javaOO 5. Interfacce ed eredità tutorial/java/IandI 6. Generici tutorial/java/generics 7. Package tutorial/java/package 8. Numeri e stringhe tutorial/java/data 9. Eccezioni tutorial/essential/exceptions 10. Fondamenti di I/O tutorial/essential/io 11. Collection tutorial/collections 12. Concorrenza tutorial/essential/concurrency 13. Espressioni regolari tutorial/essential/regex 14. L’ambiente di piattaforma tutorial/essential/environment 15. Swing tutorial/ui 16. Inserimento di programmi in file JAR tutorial/deployment/jar 17. Java Web Start tutorial/deployment/webstart 18. Applet tutorial/deployment/applet Il feedback relativo alla presente edizione è benvenuto. Utilizzare il modulo di feedback del Tutorial: http://developers.sun.com/contact/tutorial_feedback.jsp Ringraziamenti Molti lettori su Internet ci hanno aiutato a mantenere e migliorare la qualità del tutorial inviando e-mail e segnalando errori, collegamenti interrotti e aree del tutorial che causavano confusione o che potevano trarre vantaggio da una revisione. Molti membri attuali e passati dei team di ingegnerizzazione e di documentazione Java Software ci hanno fornito consigli, hanno risposto alle nostre molte domande, hanno revisionato il materiale e hanno anche contribuito ad esso. L’elenco è lungo, ma desideriamo segnalare in particolare i contributi di Eric Armstrong, David Bristor, Martin Buchholz, Mandy Chung, Iris Garcia java.indb XXVII 22/01/2007 8.27.53 XXVIII INTRODUZIONE Clark, Margarita Fischer, Amy Fowler, Andy Herrick, Shannon Hickey, David Holmes, Jim Holmlund, Patrick Keegan, Peter Korn, Masayoshi Okutsu, Scott Seligman, Xueming Shen, Sundar Sivasubramanian, Pete Soper, Scott Violet e Kathy Walrath. Siamo anche grati agli scrittori e ai programmatori di talento di Sun che hanno contribuito al tutorial online. Desideriamo ringraziare il nostro ex collega, Joshua Bloch, l’autore originale del capitolo “Collection” che ha trovato il tempo per fornirci informazioni aggiornate. Grazie anche ai nostri revisori esterni e sostenitori di lunga data, Doug Lea e Brian Goetz. Debra Scott, il nostro manager, ci ha incoraggiato e ci ha fornito il supporto necessario al nostro lavoro e alla sua realizzazione in tempo. I nostri program manager, Mary Lautner e Ian Hardie, hanno controllato le pianificazioni, hanno evitato interferenze e ci hanno fornito supporto. Gli illustratori Michael Quillman e Dwayne Wolff hanno creato le grafiche professionali in modo veloce ed efficiente. Ringraziamo inoltre i membri del team SQE che hanno fornito prezioso feedback. Infine ringraziamo i manager in Java SE per avere concesso ai loro ingegneri e illustratori il tempo da dedicare a questo lavoro e in particolare: Uday Dhanikonda, Frances Ho, James Hsieh, Janet Koenig e Keith Yarwood. Note sugli autori Sharon Zakhour, responsabile del team Tutorial, lavora in Sun Microsystems come technical writer senior da sette anni. Ha contribuito a “The JFC Swing Tutorial, Second Edition” e ha lavorato molti anni con i team Swing e AWT. Si è laureata alla UC Berkeley con un B.A. in scienze informatiche e lavora come programmer developer support engineer e technical writer da oltre vent’anni. Scott Hommel è un technical writer on staff in Sun Microsystems, dove documenta la piattaforma Java, Standard Edition. Dal 1999 ha contribuito a tutte le versioni principali del JDK, prevalentemente con chiarimenti alla specifica API e documentazione alla versione principale. Attualmente lavora da casa nelle verdi montagne di Killington, Vermont. Jacob Royal ha un master in IT e un MBA in sistemi informatici. Ha scritto guide per gli amministratori, riferimenti API e guide per i programmatori e ha identificato nuovi strumenti e sviluppato standard per il codice e la scrittura per diverse società, tra cui Lucent Technologies e Autodesk. Contribuisce inoltre alla specifica JSR APT e alle guide all’implementazione di Java in Sun. Isaac Rabinovitch è un technical writer freelance. Ha scritto manuali per utenti, guide per programmatori, manuali per amministratori, riferimenti API, release note e documentazione di supporto in Sun Microsystems, Borland, SGI e molte altre aziende. Ama le banalità tecniche e gioca con i computer da più tempo di quanto osi immaginare. java.indb XXVIII 22/01/2007 8.27.53 INTRODUZIONE XXIX Thomas Risser ha studiato fisica ad Harvard (B.A.) e alla University of California a Berkeley (Ph.D.). È technical writer nell’industria informatica da quindici anni. Mark Hoeber è stato technical writer senior di Sun Microsystems. Lavora come technical writer da dodici anni e si concentra sulla documentazione per gli sviluppatori software e gli amministratori di sistema. Inoltre Mark ha lavorato all’implementazione di sistemi per la gestione di contenuti per i team di scrittori tecnici. java.indb XXIX 22/01/2007 8.27.53