author: Giulio De Meo INIZIARE CON JAVA 2 J2SE Standard Edition: include gli strumenti essenziali per compilare ed eseguire applet ed applicazioni scritte nel linguaggio Java. J2EE Enterprise Edition: la tecnologia J2EE e la sua architettura a componenti semplifica lo sviluppo e l'integrazione di applicazioni enterprise. J2ME Micro Edition: Ambiente di esecuzione ottimizzato per tutte le periferiche come le smart card e i telefoni cellulari con limitate prestazioni e capacità di elaborazione. Installazione: dal sito della SUN ( http://java.sun.com/) si scaricare l’ultima versione dello Standard Development Kit (J2SDK). La versione 1.4.2_05 è costituita dal file zippato (51Mb) J2sdk-1_4_2_05-windows-i586-p Durante il setup installazione è necessario installare il Development Kit comprensivo di tutti i suoi tools, ed il Runtime Environment comprendente il plug-in necessario ad avviare Applet e Jar Eseguibili. Dovranno quindi essere installati i due files: Java2 sdk , SE v. 1.4.2_05 di circa 202Mb Java2 Runtime Environment SE v.1.4.2_05 di circa 137Mb Java 2 SDK è un Ambiente di Sviluppo per costruire applicazioni, applets e componenti che possono essere sviluppati su una piattaforma Java. IL software Java 2 SDK include tools utili a sviluppare e testare programmi scritti in linguaggio Java e ad avviarli su piattaforme Java. Tali tools sono progettati in modo da essere usati da linee di comando. Eccetto per Appletviewer questi tools non forniscono una interfaccia grafica utente 1 author: Giulio De Meo La Java 2 Runtime Environment è necessaria a sviluppatori e venditori di software per distribuire le loro applicazioni. Essa contiene la Java virtual machine, runtime class libraries, e Java application launcher che sono necessari a lanciare programmi scritti in linguaggio JAVA. Non è un Ambiente di Sviluppo, né contiene Development tools come Compilers or Debuggers. Per vendere un’applicazione scritta in Java ad un cliente il Software deve comprendere: classi, sorgenti, files di dati, una Runtime Environment necessaria al cliente per avviare l’installazione e una procedura di Installazione del programma. E’ preferibile consegnare l’applicazione come file eseguibile ( Executable Jar File) in modo che il cliente la avvii semplicemente con un doppio click. Il cliente deve installare il software sul proprio sistema: innanzitutto bisogna copiare il software e configurare il sistema a supportare il software. Soprattutto si deve essere sicuri che l’installazione non sovrascriva esistenti installazioni di JRE richiesti da altre applicazioni. Dal sito [ http://java.sun.com/docs ] è possibile scaricare la documentazione della piattaforma java, tutorials e documenti. CONFIGURAZIONE DEL SISTEMA Eseguita l’installazione del J2sdk sul proprio sistema, si è creata una cartella “ J2sdk1.4.2_05 “ Per eseguire i comandi java, jar, javac da qualsiasi directory del sistema è necessario settare il path di sistema o modifarlo aggiungendo il percorso entro cui si trovano tali comandi java. Per sistemi operativi come Windows 98 bisogna modificare il path dentro il file autoexec.bat SET PATH =C:\WINDOWS; C:\.......; etc. ; C:\J2SDK1.4.2_05\BIN Per sistema operativo Windows XP bisogna modificare il path nelle VARIABILI DI AMBIENTE del computer aggiungendo al path già esistente la riga ;C:\J2SDK1.4.2_05\BIN Sempre nella stessa finestra delle Variabili di Ambiente spesso è necessario creare una variabile di ambiente di nome CLASSPATH, il cui valore indichi al compilatore java dove cercare le classi di eventuali package importati all’interno di un file.java. Vedi l’ esempio seguente. 2 author: Giulio De Meo L’ APPLICAZIONE READPORT L’ applicazione ReadPort visualizza il tipo (seriali o parallele) ed il nome (COM LPT1) delle porte presenti su un computer. Per fare ciò importa il package comm.jar della SUN e le rispettive classi. Per prima cosa bisogna copiare il file comm.jar nella cartella c:\j2sdk1.4.2_05\jre\lib\ext e settare il classpath a questo indirizzo, creando la variabile di ambiente CLASSPATH con valore .;.\;C:\j2sdk1.4.2_05\jre\lib\ext\comm.jar; 3 author: Giulio De Meo comm.jar fa parte delle Java Communications API (JCA), che permettono di creare delle applicazioni o applet portabili, che necessitino di comunicazioni attraverso porta seriale e/o parallela. In esse è stata definita l'interfaccia javax.comm.CommDriver che dovrà essere implementata da ciascun Driver JavaComm il cui compito è proprio quello di tradurre le varie operazioni sulle porte, in codice nativo legato alla particolare implementazione della JVM. I compiti del driver sono quelli dei metodi che descrive: • void initialize() : Questo metodo deve assicurarsi della presenza dell'hardware e caricare le librerie native che ne permettono l'utilizzo. Il compito di questo metodo è di determinare le porte disponibili e quindi la memorizzarne l'elenco in un oggetto di tipo CommPortIdentifier. • CommPort getCommPort(String portName,int portType) : Questo metodo permette di ottenere un riferimento, ad un oggetto CommPort, rappresentativo di una porta. I parametri sono relativi al nome della porta ed al tipo della stessa (ad esempio:COM1Seriale) Ogni applicazione che utilizza le JCA potrà essere portata in ogni sistema operativo per il quale esiste un CommDriver, ovvero una implementazione della precedente interfaccia. Per S.O. Windows si utilizza la libreria Win32Com.dll. Il package comm.jar è reperibile compreso nel file zippato javacomm20-win32.zip, scaricabile dal sito Sun. Scompattandolo si hanno i seguenti file: • comm.jar : Rappresenta il file .jar delle classi relative alle JCA. Nella versione relativa a Windows, si nota, al suo interno, una classe di nome com.sun.comm.Win32Driver che rappresenta l'implementazione dell'interfaccia javax.comm.CommDriver relativa al sistema operativo utilizzato. In fase di installazione, questo file deve essere posizionato nella subdirectory in cui sono contenute le classi del JDK (C:\j2sdk1.4.2_05\ jre\lib\ext) • Win32Com.dll : Nella implementazione del metodo initialize() della classe Win32Driver, ci dovrà essere il caricamento di tutte le librerie native utilizzate. Nel caso di Windows, tali librerie sono rappresentate dal singolo file Win32Com.dll. Esso va posizionato nella directory C:\j2sdk1.4.2_05\ jre\bin ; • javax.comm.properties : Questo file di proprietà contiene proprio il nome del driver da utilizzare e va posizionato nella directory C:\j2sdk1.4.2_05\ jre\lib . Esso contiene, oltre ad un commento esplicativo, la riga Driver=com.sun.comm.Win32Driver. E' molto importante eseguire l'installazione in modo corretto in quanto la mancanza del file javax.comm.properties provoca un errore di mancato reperimento del Driver, mentre l'errata posizione del file .dll fa sì che non vengano trovate le varie porte. 4 author: Giulio De Meo JAVA ARCHIVE FILES (JAR) I files JAR rappresentano il modo standard di archiviare e trasferire le applicazioni Java. Si puo' archiviare cio' che si vuole in un file JAR: files di tipo .class, .java, fotografie, canzoni, testi... Java e' in grado di gestire files JAR e puo' caricare ed eseguire i files .class direttamente dall'archivio, specificandone l’indirizzo nel CLASSPATH . I files sono compressi in un archivio secondo lo standard ZIP. Lo SDK della Sun comprende una utility - il comando jar - che ci consente di creare e gestire archivi JAR. Creazione di un archivio : Supponiamo di avere una serie di files nella cartella “fold” della directory corrente Da Dos, con il comando jar –cvf arch.jar fold crea un file “arch.jar” che contiene tutti i files contenuti in “fold”, comprese tutte le eventuali sotto-directories. Estrazione di un archivio jar -xvf arch.jar fold estrae tutti i files dall'archivio (provenienti dalla cartella fold) e li ripristina nella cartella fold della directory corrente. Visualizzazione del contenuto di un archivio jar -tvf arch.jar mostra il contenuto dell'archivio. La forma generale del comando e' quindi: jar -opzioni nomearchivio [path],[..],[..] E' quindi possibile archiviare piu' directories simultaneamente (il comando "jar -cvf arch.jar" archivia tutto il contenuto dell'albero a partire dalla directory corrente), ripristinarle in tutto o solo in parte (indicando quali directories vogliamo estrarre) o semplicemente visualizzare (in tutto o in parte) il contenuto di un archivio. Il comando jar aggiunge automaticamente una directory dal nome META-INF ad ogni archivio. Essa contiene almeno un file: MANIFEST.MF: questo file puo' contenere una 'packing-list' , oltre che una serie di attributi definibili dall'utente. Con l'opzione m, possiamo ordinare al JAR di creare un Manifest.mf uguale ad un nostro file Miomanifesto.mf precedentemente creato , nel quale ad esempio specifichiamo il nome della classe che contiene il metodo main(), l’autore, … IL file jar cosi creato sarà un EXECUTABLE JAR FILE ( file eseguibile che lancia la nostra l’applicazione direttamente). Scriviamo (anche con Notepad) il file MIOMANIFESTO.MF, che contiene le seguenti istruzioni Manifest-Version: 1.0 Created-By: Giulio De Meo Main-Class: ClasseconMain A questo punto possiamo preparare il nostro archivio o l’eseguibile, con l'istruzione 5 author: Giulio De Meo jar cvmf MIOMANIFESTO.MF Eseg.jar fold (N.B.: m deve precedere f) viene creato l'archivio Eseg.jar che comando java -jar puo' essere avviata con il Eseg.jar Ancor meglio, in ambiente Windows si puo' avviare l'applicazione semplicemente facendo click col mouse sul nome del file, purchè sul computer sia installata la cioè la Java2 Runtime Environment (JRE SE v. 1.4.2_05 comprensiva del Java Plug in ), necessaria ad avviare i Jar eseguibili e le Applet scritti in linguaggio Java. Se non è cosi si puo creare un file.bat (anche con il Notepad, purchè si salvi come .bat ) ad esempio “Go.bat” , in cui si scrive la riga c:\j2sdk1.4.2_05\bin\java -jar .\arch.jar il primo percorso indica dove è ubicata la jvm e il secondo dov’ è il tuo archivio jar. Doppio click sull’ icona del file Go e parte l’ applicazione. Attenzione: bisogna mettere il file Eseg.jar ed il Go.bat dentro la stessa cartella. Esempio: Volendo creare un file visualizzatore di immagini eseguibile ( Photo.jar) che ha file sorgente FotoView.java contenuto, insieme alle 6 foto da visualizzare ed al file Manifest in una stessa cartella di nome FCartel, Fig.1 Contenuto Cartella “Fcartel “ Dal prompt di Dos basta entrare nella directory C:\ … \ Fcartel \ e da qui lanciare il comando jar jar cvmf Manifest.mf Photo.jar *.class *.jpg avrei potuto scrivere semplicemente jar –cvmf Manifest.mf Photo.jar *.* ma questo avrebbe incluso nell’archivio jar anche il file manifest creato da me. 6 author: Giulio De Meo Fig 2 Esecuzione comando jar dal prompt di Dos ecco creato il file eseguibile “Photo.jar” che si avvia con un doppio click Volendo vedere il suo contenuto, basta aprirlo con Winzip Fig.3 Contenuto del file Photo.jar in una finestra di Winzip file Manifest.mf 7