Introduzione a Java
Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java
Obiettivi Introdurre Java Capire cos’è Java Installare Java Scrivere ed eseguire il Vostro primo programa Java
Cenni di storia di Java 1991 Sun Microsystems Fallimento! WEB! James Goslin & Green Team Oak, derivato da C & C++ Creare strumento di controllo di piccole apparecchiature Elettroniche di largo consumo (decoder TV e lavatrici). Fallimento! Linguaggio standard e indipendente dalla piattaforma Java WEB! 23 Maggio 1995 Annuncio nascita Java 23 Gennaio 1996 JDK 1.0 http://java.sun.com/features/2000/06/time-line.html http://www.mokabyte.it/1998/10/javastory.htm 8 Dicembre 1998 Java 2 platform
Perché Java? Disponibile per praticamente tutte le piattaforme (W.O.R.E. Write Once Run Everywhere) Gratuito e open source Standardizzato Semplifica attività solitamente complesse (networking, GUI(uso dell’interfaccia grafica) multipiattaforma) Completamente O.O. (Object Oriented) Permette il multi threading Enorme numero di API e di progetti paralleli Più robusto di C (puntatori, più controlli compile time)
Perché Java? Più lento di C++ Impossibile accedere alla parte di codice plattform specific
Java Vs C++ Java è C++ meno: Obiettivo principale di SUN Puntatori (non è possibile accesso diretto ad aree di memoria) Distruttori (Garbage Collection [ripulitura di spazio] automatico) Templates Ereditarietà multipla … Obiettivo principale di SUN Eliminare complessità continua…
Per capire Java…è necessario un piccolo passo indietro LINGUAGGI Macchina Assembly Di alto livello +1300042774 ADD OVERPAY Assembler +1300042774 INTERPRETATI COMPILATI Sorgente File Binario Interprete Riga per riga Dipende dalla macchina Sorgente File Binario Compilatore Tutto il file Non modificabile, illeggibile VB, .NET, C/C++… HTML
Specifica per il SO in cui viene eseguito il sorgente Java è una via di mezzo INTERPRETATI COMPILATI Sorgente (.java) Platform Indipendent Compile-time Compilatore Semi compilato BYTECODE (.class) Platform Indipendent Portabile Run-time Interprete Eseguito JVM Specifica per il SO in cui viene eseguito il sorgente
Java Vs C++ (2) C++ Source (*.c) Java Source (*.java) C++ Compiler (machine independent) C++ Compiler Java Compiler Byte-code (*.class) (machine independent) Java Virtual Machine Client Platform (hardware/operating system) Client Platform (hardware/operating system) (machine dependent)
La Java Virtual Machine macchina virtuale che esegue i programmi in linguaggio Java bytecode, ovvero i prodotti della compilazione dei sorgenti Java Fonte: Wikipedia Ogni architettura possiede una specifica versione software Realizza un ambiente di esecuzione omogeneo, che nasconde al software Java (e quindi al programmatore) qualsiasi specificità del sistema operativo sottostante + versione hardware di SUN + Ogni browser ha una versione della JVM implementata al suo interno Software applicativo Java Java Virtual Machine Sistema Operativo
Architettura della JVM (1) class loader Java API class files A.class B.class bytecode C.class execution engine native method invocations Sistema Operativo Host
Architettura della JVM (2) Class Loader .class files Area dei Metodi Area di Heap Java Stacks Registri del pc Native methods Runtime data areas * * Execution Engine
Method area È condivisa tra tutti i thread Memorizza le strutture relative alle classi: - type information - constant pool - field information - method information - variabili di classe (static) - riferimento alla classe ClassLoader - riferimento alla classe Class Quando la JVM carica un tipo (classe), il class loader legge le informazioni relative dal class file e le passa nuovamente alla JVM la quale le memorizza nella method area
Heap Viene creato all’avvio della JVM È condiviso tra tutti i thread In esso vi sono allocate tutte le istanze delle classi e gli array È gestito dal garbage collector NOTA: la Sun, nelle specifiche della JVM, non definisce la rappresentazione degli oggetti né il funzionamento del garbage collector; una possibile rappresentazione degli oggetti è la seguente: Class 1 data ptr to class data instance data Object reference 1 ptr to class data instance data Class 2 data Object reference 2 Heap Method area
Fasi di esecuzione di un programma Java Scrittura e modifica Editor Utente crea file .java Disco Crea bytecode e li memorizza come .class Compilatore Compilazione Disco Class Loader Caricamento Memoria Primaria Legge i .class e li mette in memoria Disco Verificatore di Bytecode Memoria Primaria Verifica correttezza bytecode e vincoli sicurezza Verifica JVM Memoria Primaria Traduce bytecode in linguaggio comprensibile dalla macchina Esecuzione
Il Garbage Collector (GC) modalità automatica di gestione della memoria, mediante la quale un sistema operativo, o un compilatore e un modulo di run-time, liberano le porzioni di memoria che non dovranno più essere successivamente utilizzate dalle applicazioni Fonte: Wikipedia Alcuni linguaggi (C, C++) prevedono che sia il programmatore a implementarlo. Vs Java possiede sistema di garbage collection integrato nella JVM Lavora sulla zona Heap Previene due categorie di errori Dangling Pointer Memory Leak Rilascio erroneo di memoria ancora in uso Mancato rilascio di memoria non più accessibile
Java Platforms SUN sviluppa e rilascia 3 tipologie di piattaforme Java Java SE Java ME Java EE Standard Edition Micro Edition Enterprise Edition Versione 6 Versione 1.1 Versione 5 Applicazioni desktop Applicazioni mobile Applicazioni Server Noi lavoreremo su questa piattaforma Parte WEB
Architettura Java JRE (Java Runtimme Enviorment). Ambiente per lanciare applicazioni Java JDK (Java Developmet Kit). Pacchetto per sviluppare applicazioni Java
Preparare l’ambiente di sviluppo per Java 3 Step: Scaricare ed installare la JDK 1.6 Settare il CLASSPATH Scaricare ed installare l’IDE (facoltativo) http://www.eclipse.org/downloads/ http://java.sun.com/javase/downloads/index.jsp
Installare il JDK (1) Doppio click su file jdk-6u10-windows-i586-p.exe 2. Accettare la licenza 3. Click su Next
Installare il JDK (2) 4. Attendere la preparazione dell’installazione 5. Selezionare la cartella di destinazione
Installare il JDK (3) 6. Attendere il completamento dell’installazione 7. Click su finish
Verifichiamo la corretta installazione del JDK javac.exe compilatore java.exe interprete JVM ? Apriamo shell di dos: java -version
Settare il CLASSPATH 3c 1 2 3a 3b CLASSPATH: Variabile d’ambiente del SO che include tutte le cartelle contenenti file eseguibili da lanciare senza specificarne l’indirizzo ogni volta. 1 2 3a 3b 3c 3c: Aggiungere dopo “;” il path: C:\Programmi\Java\jdk1.6.0_10\bin Nb: Verificare che contenga il riferimento a “.”
Installare l’IDE Eclipse Integrated Development Environment Normalmente consiste in: un editor di codice sorgente, un compilatore e/o un interprete, un tool di building automatico, e (solitamente) un debugger Solo in versione commerciale, nato e sviluppato per lavorare in Java OpenSource, Free, sviluppato in Java da SUN, supporta alcuni linguaggi, adatto per applicazioni grafiche e web. OpenSource, Free, sviluppato in Java, supporta molti linguaggi, architettura a Plugin. Scompattare l’archivio
So far so good? Trasformiamoci in sviluppatori Java MA SENZA IDE!!! Apriamo il notepad e scriviamo: Nome della classe = Nome del file Salviamo il file con estensione .java Apriamo shell di DOS e posizioniamoci nella cartella in cui avete salvato il file 1) javac Test.java Ha creato Test.class? dir 2) java Test Hello World!
Cosa abbiamo appena scritto? Dichiarazione della classe Corpo Della Classe Dichiarazione del metodo main Chiamata al metodo println della classe System
APPLICAZIONI STAND ALONE APPLICAZIONI WEB (J2EE) I prodotti di Java APPLICAZIONI STAND ALONE APPLICAZIONI WEB (J2EE) APPLET Applicazione in formato jar installata in locale Applicazione Web con pagine html e classi Java Applicazione che gira all’interno del Browser java -jar app.jar HTML JAVA <applet> </applet> sandbox
Riassumiamo… …domande?