Introduzione Fondamenti di informatica L-B Laboratorio Alessandro Falchi [email protected] Java: un po’ di storia… 1992: il Green Team di Sun, capitanato da James Gosling, realizza il linguaggio Oak (quercia), indirizzato al controllo di reti di dispositivi di elettronica di consumo (TV, frigoriferi, …). Oak, che non ha vincoli di retrocompatibilità, è un linguaggio ad oggetti con caratteristiche “moderne”: portabililtà (deve essere indipendente dalla piattaforma), multithread, gestione della memoria (garbage collector) e orientamento alle reti. 1993: il mercato degli elettrodomestici intelligenti è ancora immaturo, mentre esplode il boom di Internet. Oak viene dunque “reindirizzato” per supportare l’inclusione di codice nelle pagine Web 1994: WebRunner (ribattezzato poi HotJava) è il primo browser in grado di eseguire applet Java 1995: Oak viene ribattezzato Java (miscela di caffè) ed il 23 Maggio Sun ne annuncia la versione 1.0. Gli elementi che determinano il successo di Java, oltre alle sue caratteristiche, sono l’inclusione della Java Virtual Machine nel browser Netscape (al tempo leader) e il rilascio gratuito, da parte di Sun, del codice sorgente di Java nel Developer Kit (JDK) Java: l’evoluzione 1.0: versione iniziale. Contiene 212 classi. 1.1: prima evoluzione del linguaggio e della JVM 1.2: release significativa: il numero di classi arriva a 1520, includendo le librerie Swing per le interfacce grafiche e il supporto alle Collection. A sottolineare l’importante evoluzione della piattaforma, viene adottato il brand Java2, che però ha solo valenza commerciale (e di confusione…) 1.3: questa versione mira soprattuto a migliorare le performance della JVM ed a consolidare il class system 1.4: forte evoluzione della piattaforma, che arriva a 2991 classi e interfacce. Estensioni in numerose direzioni (I/O, grafica, XML, sicurezza…) 1.5: ultima release attualmente disponibile. Estensioni al nucleo del linguaggio (generics, enumeration…), al class system (che conta ora 3552 classi e interfacce) e alla JVM (gestione remota e programmazione concorrente). Questa versione è anche chiamata Java 5.0 Un linguaggio, tre architetture J2SE (Java2 Standard Edition): è la versione base, “generica” di Java, contenente l’intero class system e gli strumenti per sviluppare applicazioni e applet (programmi Java inseriti nelle pagine web) J2EE (Java2 Enterprise Edition): estende J2SE con funzionalità per lo sviluppo di applicazioni enterprise, quali JSP (Java Server Pages), Servlet, EJB (Enteprise Java Bean) e Web Services. Evolve in maniera più contenuta rispetto a J2SE. J2ME (Java2 Micro Edition): versione ridotta di J2SE per il supporto allo sviluppo di applicazioni per dispositivi mobili quali palm e telefoni. Esistono anche diverse versioni della JVM per J2ME a seconda della potenza computazionale dei dispositivi Cosa installare? J2SE SDK Software Development Kit (chiamato anche JDK – Java Development Kit): contiene tutte le classi con relativo codice sorgente, gli strumenti per lo sviluppo e il Java Runtime Environment (JRE) per il supporto all’esecuzione di applicazioni Java. Il JRE è disponibile come modulo stand alone per chi non deve sviluppare ma solo eseguire applicazione Java (tipicamente è noto come plugin Java per il browser) Versioni: il version numbering segue la notazione X.Y.Z_nm Ad esempio: 1.4.2_10, 1.5.0_06 X: versione della piattaforma (ad oggi solo 1) Y: versione della release (l’ultima è 5) Z: aggiornamenti alla release che con modifiche alle classi nm: bugfix e security fix che non alterano l’accesso alle classi Nota: l’ultima release del JDK è etichettata sia come 5.0 che come 1.5.0! Documentazione L’intero class system di Java è dettagliatamente documentato nelle pagine HTML che costituiscono la JavaDoc, nome che deriva dal tool per la generazione automatica della documentazione. Sul sito di Sun potete sia scaricare la JavaDoc relativa alla versione di Java che utilizzate (es: 1.4.2 oppure 1.5.0) che “sfogliarla” on-line. L’accesso è in entrambi i casi attraverso un browser web o un tool in grado di visualizzare le pagine HTML. Consiglio: scegliete la visualizzazione “con frame”, oggi supportata dalla totalità dei browser e decisamente più pratica Tool da linea di comando Compilatore - javac Macchina virtuale - java Debugger - jdb Generatore automatico di documentazione ipertestuale - javadoc Altri comandi - appletviewer, javap, rmic, … javac 1. Trasforma il codice sorgente (file .java) in bytecode (file .class) interpretabile dalla JVM 2. Permette di compilare classi singole e gruppi di classi, anche mantenendo direttori separati per sorgenti e compilati javac [opzioni] [sorgenti] [@ElencoSorg] possibili opzioni: – -classpath: classi bootstrap, extension, poi classpath di utente (variabile di ambiente e opzione) – -d (direttorio per classi) – -g (debugging abilitato) – -verbose (info estese sulla compilazione), ... java 1. Mette in esecuzione una applicazione Java 2. Avvia una macchina virtuale Java, carica una classe specificata e invoca il suo metodo main (pubblico e statico) java [opzioni] File.class [parametri] java [opzioni] -jar File.jar [parametri] varianti: javaw, oldjava, oldjavaw opzioni: -classpath/-cp, -jar, -verbose, -?, ... javadoc Analizza i file sorgenti Java e produce la corrispondente documentazione ipertestuale (formato html) sulla base di particolari commenti inseriti nei sorgenti stessi Può essere invocato su singole classi o interi package javadoc [opzioni][package][sorg][@ElencoS/P] Vari tag standardizzati per i commenti: @author, @param, @return, @throws, @see, @version… Sono validi anche diversi tag HTML (<p>, <b>, …) ECLIPSE Eclipse è una community open source focalizzata sullo sviluppo di strumenti per sviluppatori Homepage: http://www.eclipse.org/ Eclipse è anche il nome della piattaforma IDE (Integrated Development Environment) Vantaggi Strumento potente e completo Codice sorgente (Java) disponibile Modulare (numerose estensioni disponibili) Supporto allo sviluppo in altri linguaggi Svantaggi Pesantezza ECLIPSE – cosa installare Per il corso di fondamenti di informatica (e più in generale per usare Eclipse nella realizzazione di semplici programmi Java) sono necessari: Eclipse platform (prelevare la versione per il sistema operativo usato) JDT (Java Development Tool): OS independent Ad oggi, la versione di Eclipse più recente è la 3.1.2. Eclipse richiede come prerequisito l’installazione di almeno una JVM (è sufficiente il JRE ma è consigliato il JDK) [per utenti Windows] I file zip scaricati vanno semplicemente posti in una cartella e da lì decompressi: verrà creata una cartella eclipse. L’IDE si avvia facendo partire il file eclipse.exe Avvio e selezione workspace Welcome Screen e workbench Creazione di un progetto (1) Creazione di un progetto (2) Creazione di un progetto (3) Creazione di un package Nome del package Per convenzione, i nomi dei package hanno l’iniziale minuscola: provando a mettere “Test” anziché “test”, Eclipse segnala un avvertimento nella parte alta della finestra Creazione di una classe con main (1) Creazione di una classe con main (2) I nomi delle classi hanno per convenzione l’iniziale MAIUSCOLA (Eclipse segnala il non rispetto della convenzione) Editing del codice sorgente Package Explorer Outline Area di editing Problems Il nostro primo programma package test; public class PrimoProgramma { /** * @param args */ public static void main(String[] args) { System.out.println("ORA DOMINO JAVA ED ECLIPSE!!!"); } } Eclipse segnala errori nel sorgente in tempo reale, sottolineandoli con una linea ondulata di color rosso chiaro Esecuzione del programma RUN Java Application Avvio dell’esecuzione Salvataggio Ad esecuzione terminata… Alcune note Per essere eseguibile come Java Application, il codice sorgente deve contenere il metodo main(String[] args) Una volta eseguito un programma, Eclipse ricorda le impostazioni fatte e permette di eseguirlo nuovamente (anche se modificato) con un clic sull’icona “Run” nella toolbar. Il menu a tendina accanto a tale icona “ricorda” i programmi messi in esecuzione più di recente (così che con un clic su tale oggeto si riavvi l’esecuzione) Eclipse mette a disposizione numerosi strumenti che rendono più agevole il vostro lavoro: provateli! Un esempio: il menu Source → Format sistema il codice in modo da rispettare le convenzioni di indentazione Salvate il codice più spesso di quanto non lo eseguiate!!