FAQ italiana per JAVA --------------------- v0.4 aggiornata ad Aprile 1998 NOTA IMPORTANTE: Questa versione e' ancora largamente incompleta - ne faccio il post per avere un po' di feedback e trovare contributi e ...contribuenti! NOTA (meno importante): Da Aprile 1998 questa faq e' postata in via sperimentale anche su news://ftl.mlab.dsi.unimi.it/local.JavaLab, courtesy of Andrea Trentini. Questa FAQ in italiano su java e' mantenuta da Cristiano Sadun (crsadun@tin.it), essenzialmente elaborando o copiando le domande/risposte e i contributi apparsi sul newsgroup it.comp.java. Ovviamente, per motivi di spazio, non tutti i contributi sono considerati: generalmente, se possibile, si e' data preferenza ai contributi piu' dettagliati; ad es., per la domanda 'Che libro comprare per iniziare', una risposta come 'il libro X contiene a,b,c,d,...' e' generalmente preferita ad una del tipo 'compra X'. Questa non e', comunque, una regola generale, e i fattori necessari per l'inserimento sono soprattutto il tempo che ho di leggere le news, il fatto che abbia fame o meno (e che quindi usi il detto tempo per mangiare un panino o per scrivere) e, in ultima analisi, il caso :^) ). Non rispondo, ovviamente, ne' dell'aggiornamento ne' dell'affidabilita' delle informazioni qui contenute, ne' di eventuali danneggiamenti conseguenti a qualunque uso delle stesse. Allo stesso modo, nessuna informazione ha intenzionalmente carattere pubblicitario o qualche effetto economico su di me o sull'autore del contributo. Tuttavia, ogni correzione, commento o contributo e' benvenuto: per comodita', inviateli in email a crsadun@tin.it preponendo [JAVA FAQ] al subject. La faq e' divisa in sezioni [SEZ], in approssimazione sui tipi di interventi apparsi sul newsgroup: domande tecniche, opinioni e valutazioni su strumenti e versioni, newbies-faq, etc. Ciascuna sezione puo' essere divisa in sottosezioni [SS] piu' dettagliate. Ciascuna sezione/sottosezione contiene una serie di domande[D]/risposte[R] o un thread [T] interessante su un argomento specifico. ====== Indice ====== [SEZ1] Principianti [D1.1] Come scaricare un'applet e metterla nella propria pagina [D1.2] Si puo' spedire/ricevere email da un'applet? [D1.3] Si puo' fare FTP da un'applet? [D1.4] Imparare Java: devo conoscere C/C++? [D1.5] Voglio imparare - come fare? [D1.6] Esiste un'applet che... [D1.7] Java su IE 4.0 ? [D1.8] Come mai createImage non funziona ? [D1.9] La mia applet non funziona su Communicator/IE/etc..!! [D1.10] Esistono risorse in rete per Java (riviste/tutorial/manuali etc) ? [D1.11] Cos'e' un'architettura three-tier [D1.12] Come si accede a un database da Java? [SEZ2] Domande tecniche [SS2.1] Socket e comunicazioni [D2.1.1] Un'applet puo' connettersi a un host (per fare ftp, spedire/leggere mail, etc) ? [SS2.2] JDBC [D2.2.1] Bridge JDBC/ODBC in IE3 e JDK [SEZ3] Libri [D3.1] Per Iniziare [SEZ4] Tools di sviluppo [SS4.1] - Sunsoft Java Workshop [SEZ5] Varie [T5.1] Portabilita' vera e presunta - I [T5.2] Prerequisiti per imparare Java === FAQ === [SEZ1] Principianti [D1.1] Come scaricare un'applet e metterla nella propria pagina Subject: Aiuto su applet Date: Mon, 05 Jan 1998 20:52:16 GMT From: erikait@mbox.vol.it (Lele) Organization: Telecom Italia Net Newsgroups: it.comp.java Ciao sono un principiante del linguaggio java e sto cercando qualcuno che mi possa dire come fare per scaricare sul mio computer un pagina contenente degli applet java(giochi matematici) e poi passarli su una mia pagina personale. L' indirizzo da cui cerco di scaricare e' www.cut-the-knot.com e la mia e-mail e' erikait@mbox.vol.it Grazie Lele [R1.1] Subject: Re: Aiuto su applet Date: Tue, 06 Jan 1998 00:27:58 +0100 From: Alexis Paul Bertolini Organization: Warehouse Creations To: Lele Newsgroups: it.comp.java 1) Vai alla pagina che ti serve (nel nostro esempio http://www.cut-the-knot.com/SimpleGames/Horse.html) 2) Guarda il codice sorgente della pagina 3) A un certo punto trovi il seguente testo: 4) Tu necessiti del file Horse.class, disponibile all'URL http://www.cut-the-knot.com/SimpleGames/ 5) Digita questa URL e "track!" ecco il contenuto della directory, horse.class compreso. Nota che ci sono anche altri .class, e' molto probabile che ti servano! Horse.class 20-Oct-97 20:07 2k Horse.html 01-Jan-98 14:48 3k HorseCanvas.class 20-Oct-97 22:11 7k HorsePanel.class 20-Oct-97 20:07 2k 6) Scaricati questi file, falli girare un po', vedi se funziona, inserisci il codice del punto 3) nella tua pagina preferita, metti i file del punto 5) nella stessa localita' (sito, directory, etc.) e hai passato il gioco alla tua home! 7) Comunica al sottoscritto l'URL della tua home. ------------------------------------------------------------------------------- [D1.2] Si puo' spedire/ricevere email da un'applet? [R1.2] Vedi [R2.1.1] ------------------------------------------------------------------------------- [D1.3] Si puo' fare FTP da un'applet? [R1.3] Vedi [R2.1.1] ------------------------------------------------------------------------------- [D1.4] Imparare Java: devo conoscere C/C++? [R1.4] Le opinioni sono diverse. Vedi [T5.2] per una discussione approfondita. ------------------------------------------------------------------------------- [D1.5] Voglio imparare - come fare? [R1.5] Le risorse principali per Java si trovano su http://java.sun.com o http://javasoft.sun.com. E' qui' disponibile un ottimo tutorial (in inglese). Lo stesso puo' essere scaricato piu' velocemente da uno dei numerosi SunSite esistenti - ad esempio sunsite.dsi.unimi.it al DSI di Milano. Per quanto riguarda i libri su Java, vedi la sezione [SEZ3] ------------------------------------------------------------------------------- [D1.6] Esiste un'applet che... [R1.6] Esistono in rete numerosi depositi (repository) di applet gia' belle e pronte. Uno dei piu' grandi e' "Gamelan" (http://www.gamelan.com), dotato anche di un efficace motore di ricerca. Vedi anche [R1.10]. ------------------------------------------------------------------------------- [D1.7] Java su IE 4.0 ? Subject: Jdk 1.1.4 e IE 4.0 Date: Sun, 18 Jan 1998 10:19:41 +0100 From: Alessandro Giovanelli Organization: Italia Com - Il Primo Consorzio di Internet Providers italiani Newsgroups: it.comp.java C'e' nessuno che mi sda dire se esiste un patches per IE 4 per far girare applet JDK 1.1.4. Con Comm. 4.0.4 funziona tutto alla perfezione (Swing e JFC comprese) ma con IE 4.0 ci sono problemi. [R1.7] Subject: Re: Jdk 1.1.4 e IE 4.0 Date: Mon, 19 Jan 1998 12:23:51 +0100 From: Francesco Ciacca Organization: Sinapsi s.r.l. Newsgroups: it.comp.java Alessandro Giovanelli wrote: Non so se ti puo' andar bene come soluzione , ma adesso Sun distribuisce free un plug-in per IE (>=3.0) e Netscape (se non mi sbaglio >=3.0,forse la 2.0 ma non ricordo bene)che si sostituisce alla JVM del browser in uso con una complemetamente jdk 1.1.X (RMI ecc..) compliant. Questo prodotto (forse e' ancora in beta ma funziona) si chiama Java Activator, lo trovi su http://www.javasoft.com E' un po' esigente in termini di memoria e non e' velocissimo, ma le prossime release dovrebbero superare almeno in parte questi problemi. ------------------------------------------------------------------------------- [D1.8] Come mai createImage non funziona ? Subject: Double buffering Date: Mon, 19 Jan 1998 09:55:59 +0100 From: Gianluca Maggio Organization: CNR - Area di Ricerca - Bari,Italy Newsgroups: it.comp.java Qualcuno mi sa dire perche' utilizzando il double buffering sono costretto a creare l'immagine "off-screen" nel metodo update o paint e non nel costruttore della mia classe? Il problema non e' solo estetico poiche' sono costretto a effettuare un test del tipo: if (offScreenImage == null) offScreebImage = createImage(200,200); ogni volta che update viene chiamato (nel mio caso dalle 20 alle 40 volte al secondo). Perche' se uso createImage nel costruttore ho un null-pointer, o meglio perche' non mi crea l'immagine? [R1.8] Subject: Re: Double buffering Date: Mon, 19 Jan 1998 17:34:23 +0100 From: "Leonardo Boselli" Organization: TETRACTYS Software Newsgroups: it.comp.java Se si tratta di un'applet devi inserire offScreenImage = createImage(200,200); nel metodo init(), che viene chiamato per inizializzare l'applet prima di utilizzare repaint(). ------------------------------------------------------------------------------- [D1.9] La mia applet non funziona su Communicator/IE/etc..!! [R1.9] Ciascun browser contiene la *propria* JVM (Java Virtual Machine): le versioni 3.x di IE e Navigator supportano la versione 1.0.2 di Java: le applet costruite con versioni successive (1.1.x o 1.2) di Java *NON* possono funzionare. Communicator (anche la versione 4.04) supporta solo *parzialmente* la versione 1.1, a meno che non sia venga installata la patch apposita usando SmartUpdate oppure disponbile in http://developer.netscape.com/software/jdk/download.html#WIN32_MANUAL_INSTALL (courtesy of Hacker Hobos ). Per IE4 potete provare l'Activator (cfr. [D1.7]). [D1.10] Esistono risorse in rete per Java (riviste/tutorial/manuali etc) ? [R1.9] Il sito ufficiale per java (inglese): http://java.sun.com Gamelan (inglese): http://www.developer.com/directories/pages/dir.java.html Mokabyte (italiano): http://mokabyte.infomedia.it Java Lobby (inglese): http://www.javalobby.org ------------------------------------------------------------------------------- [D1.11] Cos'e' un'architettura three-tier [R1.11] Subject: Re: Problemi di sicurezza Date: Tue, 24 Feb 1998 10:48:05 +0100 From: Roberto Lo Giacco Organization: Excess Software Newsgroups: it.comp.java [ho fatto una minima variazione per chiarezza -cris] Se il server a cui[l'applet] deve collegarsi è diverso da quello dal quale hai downloadato la pagina html allora la connessione two-tier (client-server) è impossibile causa tipologia restrizioni di sicurezza predefinite per le applet ed in questo caso devi sviluppare una architettura three-tier ossia una applicazione che gira sul server e che non è altro che un intermediario con il server di prima... ---------- ---------------- ------------ | Applet | <<<--->>> | Applicazione | <<<--->>> | Servizio | ---------- ---------------- ------------ CLIENT STESSA MACCHINA SERVER SERVIZIO SU CUI GIRA IL SERVER HTTP ------------------------------------------------------------------------------- [D1.12] Come si accede a un database da Java? Subject: Java & basi di dati Date: Wed, 18 Mar 1998 12:28:11 +0100 From: Alberto d'Onofrio Organization: IASI CNR Newsgroups: it.comp.java Buongiorno, devo realizzare un programma in Java (che stu studiando alacremente, ma di cui non posso dirmi certo un esperto) per uso accademico che ha la necessita' di salvare ed interrogare dei dati. Conosco bene MS Access e Visual Basic ed avevo pensato a questo tipo di base di dati. E' possibile far interagire Java con un database Microsoft ? Sono necessari drivers particolari, come mi sembra di aver capito ? Che esperienze avete fatto in merito ? Che mi consigliate ? [R1.12] Re: Java & basi di dati Date: Thu, 19 Mar 1998 14:57:17 +0100 From: Cristiano Sadun To: Alberto d'Onofrio Newsgroups: it.comp.java JDBC e' l'architettura standard di accesso ad database per Java. Essa consiste in un insieme di interfacce standard (viste dall'applicazione), nel package java.sql, per le quali ciascun produttore di db fornisce un'implementazione (driver JDBC). JDBC e' *compresa* nelle versioni di Java superiori o uguali alla 1.1 - per Java 1.0.2 e' necessario aggiungere il supporto JDBC esplcitamente (per esempio, dal sito dall intersolv, http://www.intersolv.com). Nei JDK >= 1.1 viene fornito anche un driver che fa uso di ODBC (detto 'bridge jdbc-odbc'), che permette di accedere direttamente a database ODBC compliant. Attenzione: per le applet, sia Netscape che IE possiedono il supporto JDBC, ma richiedono tecniche diverse per attuarlo (cfr.[D2.2.1]). Le guide all'uso di JDBC si trovano, come sempre, a java.sun.com. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- [SEZ2] Domande tecniche [SS2.1] Socket e comunicazioni [D2.1.1] Un'applet puo' connettersi a un host (per fare ftp, spedire/leggere mail, etc) ? [R2.1.1] RTFM. Un'applet *non puo'* aprire una socket verso un host diverso da quello da dove e' stata prelevata, a meno di non richiederne esplicitamente i diritti, accompagnando la richiesta con una firma digitale (e solo in Java 1.1, con un browser che supporti le signed applets - leggi Communicator). Indi, o piazzi la tua applet su mail.iol.it - oppure *non va*. ------------------------------------------------------------------------------- [SS2.2] JDBC [D2.2.1] Bridge JDBC/ODBC in IE3 e JDK [R2.2.1] Subject: Re: Iexplore e Java From: s65710@athena.polito.it (Mario Ambrogetti) Date: 1997/12/15 Newsgroups: it.comp.java Se si usa JDK 1.1.x della SUN per collegarsi ad un database ODBC sotto WIN32 si utilizza di solito il seguente driver: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Questo diver non e' presente con IE 4.0. Infatti la buona vecchia Micro$$$soft (grazie BILL senza di te la vita sarebbe piu' facile :-) ) ne ha creato uno tutto suo: Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver"); Se volete scrivere un programma che automaticamente seleziona il driver in funzione del fabbricante (MS o SUN) basta fare: String vendor=System.getProperty("java.vendor"); if (vendor.compareTo("Microsoft Corp.")==0) Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver"); else // "Sun Microsystems Inc." Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- [SEZ3] Libri [D3.1] Per Iniziare Subject: Per Iniziare Date: 1997/11/25 Newsgroups: it.comp.java Salve a tutti. Ho intenzione di imparare a programmare anche in Java, sperando che non sia difficile, non avendo conoscenze di Oggetti. Quale libro É il piu' indicato per chi non vuole cominciare proprio da zero? (diciamo un libro avanzato) [R3.1] Ci sono ottimi tutorial/libri gratuiti in rete da scaricare e stampare. Fra tutti, il 'Java tutorial' a java.sun.com http://java.sun.com/docs/books/tutorial/intro.html#DOWNLOADING e 'Thinking in Java' di Bruce Eckel, a www.eckelobjects.com http://www.EckelObjects.com/javabook.html ftp://www.mindview.net/pub/eckel/tij11ae.zip Inoltre un buon repository di tutorial on line si trova a http://www.icom.com/java/dir_lear/learning.htm [R3.2] Subject: Re: Per Iniziare From: Alexis Paul Bertolini Date: 1997/11/25 Newsgroups: it.comp.java Io ho iniziato con "Il manuale Java", P.Naughton, McGraw-Hill" e poi con "Java per Esempi" della Mondadori. Il primo parte da 0.1, nel senso che presume che tu conosca il C e un po' di C++, il secondo si concentra molto sull'AWT e non cosi' tanto sulla tecnica. Comunque il posto migliore dove iniziare e' dal tutorial sul sunsite piu' vicino (per me e' sunsite.dsi.unimi.it, all'universita' di Milano). Subject: Re: Per Iniziare From: miky@skm.to (Michele Beltrame) Date: 1997/11/25 Newsgroups: it.comp.java Ci sono due libri, in inglese, da prendere entrambi: David Flanagan: Java in a Nutshell (2nd edition) - O'Reilly David Flanagan: Java Examples in a Nutshell - O'Reilly Il primo e` una breve introduzione al linguaggio (per chi conosce gia` il C o il C++) ed un completissimo manuale di riferimento (con esempi) a tutte le classi. Il secondo contiene esempi a nastro. In classico stile O'Reilly (http://www.ora.com) i libri costano poco: US$ 19.95 ciascuno, che diventano US$ 15.95 su Amazon (http://www.amazon.com) e su Book Stacks (http://www.books.com). [R3.3] Subject: Re: Che libro comprare ??? From: "Alessandro Valenti" Date: 1997/12/13 Message-ID: <66su2d$c7t$1@plug.news.pipex.net> Newsgroups: it.comp.java [More Headers] Esistono diversi libri se hai una conoscenza media di Java e conosci bene c++ ti consiglio solo un libro di riferimento come "Java in a Nutshell" buon riferimento dell'API. Oppure un libro completo (e da molti considerato il migliore) "Java 1.1 Unleashed" (contiene anche una copia di J++ e 2 libri "completi" nel CD, molto utili per programmatori avanzati-) ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- [SEZ4] Tools di sviluppo [SS1] - Sunsoft Java Workshop [D4.1.1] Java Workshop Subject: Java Workshop From: Bukowsky Date: 1997/09/09 Newsgroups: it.comp.java Vorrei cominciare a programmare qualcosina in Java per inserirlo nelle mie pagine web e per divertimento, mi hanno consigliato questo programma...vale la pena acquistarlo? Come lo trovate? [R4.1.1] Subject: Re: Java Workshop From: Cristiano Sadun Date: 1997/09/10 Newsgroups: it.comp.java JWS e' un bell'ambiente, innovativo e con un buon debugger. Purtroppo, e' *estremamente* pesante, di conseguenza te lo sconsiglio se non hai almeno 64Mb di ram e una buona macchina (una sparc 10 o un pentium pro sono il minimo, a mio parere). ------------------------------------------------------------------------------- [SEZ5] Varie [T5.1] Portabilita' vera e presunta - I Subject: Re: Write Once and Run Away?? (Portabilita'??) (LUNGO!) From: Cristiano Sadun Date: 1997/09/24 Message-ID: <3428BA91.7DE1B81C@NOSPAM.sun6.itim.mi.cnr.it> Newsgroups: it.comp.java Insaccanebbia Fabio wrote: > Ciao a tutti > > Altra piccola questione... > In questo momento sto lavorando ad un progetto di un > architettura client - server su Web tramite applet Java > e mi farebbe molto piacere che le mie Applet funzionino > nel modo piu' "coerente" possibile su ogni macchina... > [...] > e dopo questi test mi chiedo se il famoso slogan > "Write Once, Run Anywhere" non sia da rivedere... > Le differenze (non grafiche.. quelle le capisco e le > sopporto fino all'uscta di una version stabile delle > JFC) di comportamento del programma mi stupiscono ogni > volta... > > Eventi che vengono intercettati da una VM si e non dall'altra, > programmi che partono una volta ogni quattro, comportamenti > pseudo-casuali da parte delle scroll-bar... insomma, forse > pretendo troppo, ma le VM non dovevano essere scritte tutte > seguendo le specifiche della Sun per essere considerate > piattaforme valide?? L'anno scorso fui responsabile del team che realizzo' alcune applicazioni Java presentate poi a SMAU96, per una societa' di software. Siccome la portabilita' era ed e' effettivamente la caratteristica piu' notevole di Java, volevamo dimostrarla facendo girare le applicazioni su diverse piattaforme contemporaneamente (lo so, lo so, e' marketing.. ma che ci si puo' fare? ;-) ); nella realizzazione, incontrammo alcuni problemi simili ai tuoi. Posso fare solo qualche considerazione: 1. Java, *mediamente* richiede che si pensi in modo "pulito". Cosa strana per un oggetto di moda, e' dotato di una notevole qualita', ma richiede che chi ne fa uso sia altrettanto.. notevole, soprattutto in termini di progettazione. Quindi sfruttane a fondo le caratteristiche (distribuzione del codice su molte classi, GUI integrata, etc), ma evita come la peste "trucchi" e porcherie varie nel codice spicciolo - di norma vengono rifiutate da altre JVM. Usa, applica e fai applicare i modelli teorici e tecnici corretti - mai come in Java gli "accrocchi" si traducono velocemente in disastri. 2. In media, Java e' *estrememamente* piu' portabile di qualunque cosa abbia mai visto (e, non so perche', nel mio lavoro mi sono capitati una quantita' di porting.. :) ). Cio' non toglie che considerare una buona mezza giornata per l'adattamento di ogni classe ad un comune denominatore di funzionamento non sia una stima irragionevole ;^). Rispetto alle giornate-uomo necessarie in altri contesti, e' comunque un tempo trascurabile. 3. Attenzione che Sun supporta solo le versioni Win32, Solaris e, se non erro, MacOS - quindi le altre possono essere meno aggiornate o errate. 4. Porta pazienza. L'ambiente e' nuovo, recentemente arricchito di una serie di funzionalita' che gli forniscono una potenza decisamente vasta e quindi necessita ancora di un po' di tuning. Del resto, i buoni affari si fanno con le novita', no? In effetti, gli unici problemi "veri" (non dovuti a impostazioni approssimate o ad analisi malfatte) che riscontrammo l'anno passato (con JDK1.0.2 e versioni di JVM nei vari browser non updated o semplicemente bacate) erano alla fin fine le & nei menu (che sotto solaris venivano visualizzate.. come &) e la differente gestione del multithreading nella versione WIN32 e Solaris. Detto questo, il mio parere e' che, con un po' di buon senso, di competenze, di incavolamenti e fatica costruire applicazioni complesse (non applet da effetto pagina www) e portabili e' molto piu' facile con Java che con qualunque altra cosa - e il risultato di solito merita lo sforzo. ------------------------------------------------------------------------------- [T5.2] Prerequisiti per imparare Java Subject: Imparare Java: devo conoscere C? From: p.fontana@cdc.it (Paolo Fontana) Date: 1997/12/03 Newsgroups: it.comp.java Per usare Java è consigliabile già conoscere C o C++? grazie, Paolo [TA5.2.1] Subject: Re: Imparare Java: devo conoscere C? From: miky@skm.to (Michele Beltrame) Date: 1997/12/03 Newsgroups: it.comp.java Non e` indispensabile. Ovviamente aiuta. ;-) [TA5.2.2] Subject: Re: Imparare Java: devo conoscere C? From: Cristiano Sadun Date: 1997/12/04 Newsgroups: it.comp.java Non particolarmente. Anzi, imho, se sei abituato al C e' peggio; viceversa, se conosci bene C++, fai *molto* in fretta.