Introduzione a JavaIntroduzione 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
1991 Sun Microsystems James Goslin & Green Team
OakOak, derivato da C & C++
Java
Cenni di storia di Java
Creare strumento di controllo di piccole apparecchiatureElettroniche di largo consumo (decoder TV e lavatrici).
Linguaggio standard e indipendente dalla piattaformaLinguaggio standard e indipendente dalla piattaformaFallimento!
23 Maggio 1995 Annuncio nascita Java
23 Gennaio 1996 JDK 1.0
WEB!WEB!
8 Dicembre 1998 Java 2 platform
http://java.sun.com/features/2000/06/time-line.html
http://www.mokabyte.it/1998/10/javastory.htm
Perché Java?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?Perché Java?
• Più lento di C++
• Impossibile accedere alla parte di codice plattform specific
Java Vs C++Java Vs C++
• Puntatori (non è possibile accesso diretto ad aree di memoria)
• Distruttori (Garbage Collection [ripulitura di spazio] automatico)
• Templates
• Ereditarietà multipla
• …
Java è C++ meno:
Obiettivo principale di SUNObiettivo principale di SUN Eliminare complessità
continua…
Per capire Java…è necessario un piccolo passo indietro
LINGUAGGILINGUAGGI
INTERPRETATI COMPILATI
VB, .NET, C/C++…
1.1. MacchinaMacchina2.2. AssemblyAssembly3.3. Di alto livelloDi alto livello
+1300042774+1300042774
ADD OVERPAYADD OVERPAYAssembler
+1300042774+1300042774
SorgenteSorgente
File BinarioFile Binario
CompilatoreCompilatore
Tutto il file
Non modificabile, illeggibile
SorgenteSorgente
File BinarioFile Binario
InterpreteInterprete
Riga per riga
Dipende dalla macchina
HTML
Java è una via di mezzoJava è una via di mezzo
INTERPRETATI COMPILATI
Sorgente (.java)Sorgente (.java)
EseguitoEseguito
InterpreteInterprete
Semi compilato
Platform Indipendent
CompilatoreCompilatore
BYTECODE (.class)BYTECODE (.class) Platform IndipendentPortabile
JVMJVMSpecifica per il SO
in cui viene eseguito il sorgente
Compile-time
Run-time
Java Vs C++ (2)Java Vs C++ (2)
C++ Compiler
Java Compiler
Java Virtual Machine
C++ Source (*.c) Java Source (*.java)
Byte-code (*.class)
Client Platform (hardware/operating
system)
Client Platform (hardware/operating
system)
(machine independent)
(machine independent)
(machine dependent)
La Java Virtual MachineLa Java Virtual Machine
macchina virtualemacchina virtuale che esegue i programmi in linguaggio Java bytecodebytecode, ovvero i prodotti della compilazione dei sorgenti Java
Fonte: Wikipedia
Ogni architettura possiede una specifica versione software
versione hardware di SUN+
Ogni browser ha una versione della JVM
implementata al suo interno
+
Realizza un ambiente di esecuzione Realizza un ambiente di esecuzione omogeneo, che nasconde al software omogeneo, che nasconde al software Java (e quindi al programmatore) Java (e quindi al programmatore)
qualsiasi specificità del sistema qualsiasi specificità del sistema operativo sottostante operativo sottostante
Software applicativo Java
Java Virtual Machine
Sistema Operativo
Architettura della JVM (1)Architettura della JVM (1)
A.class
B.class
C.class
class loader
Java API class files
executionengine
Sistema Operativo Host
JVM
bytecodebytecode
native method invocationsnative method invocations
Architettura della JVM (2)Architettura della JVM (2)
.class files Class Class LoaderLoader
Area deiArea deiMetodiMetodi
Area di Area di HeapHeap
JavaJavaStacksStacks
Registri Registri del pcdel pc
Native methodsNative methodsStacksStacks
Runtime data areas
Execution Execution EngineEngine
* *
Method areaMethod 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
HeapHeap
• 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:
Object reference 1Class 1
dataptr to class data
instance data
Object reference 2ptr to class data
instance dataClass 2
data
Heap Method area
Fasi di esecuzione di un programma JavaFasi di esecuzione di un programma Java
Scrittura e modifica EditorEditor
Compilazione CompilatoreCompilatore
CaricamentoClassClass
LoaderLoader
VerificaVerificatore di Verificatore di
Bytecode Bytecode
Esecuzione JVM JVM
Disco
Disco
Disco
MemoriaPrimaria
MemoriaPrimaria
MemoriaPrimaria
Utente crea file .javaUtente crea file .java
Crea bytecode eCrea bytecode eli memorizza come .classli memorizza come .class
Legge i .classLegge i .classe li mette in memoriae li mette in memoria
Verifica correttezza Verifica correttezza bytecode e vincoli sicurezzabytecode e vincoli sicurezza
Traduce bytecode in linguaggioTraduce bytecode in linguaggiocomprensibile dalla macchinacomprensibile dalla macchina
Il Garbage Collector (GC)Il Garbage Collector (GC)modalità automatica di gestione della memoria, mediante la quale un sistema operativo, o un 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ù compilatore e un modulo di run-time, liberano le porzioni di memoria che non dovranno più
essere successivamente utilizzate dalle applicazioni essere successivamente utilizzate dalle applicazioni Fonte: WikipediaFonte: Wikipedia
Alcuni linguaggi (C, C++) prevedono che sia il programmatore a implementarlo.
Vs
Java possiede sistema di garbage collection integrato nella JVM
Previene due categorie di errori
Dangling Pointer Memory Leak
Rilascio erroneo di memoriaancora in uso
Mancato rilascio di memoria
non più accessibile
Lavora sulla zona Lavora sulla zona HeapHeap
Java PlatformsJava Platforms
SUN sviluppa e rilascia 3 tipologie di piattaforme Java
Java SEJava SE Java MEJava ME Java EEJava EE
Standard EditionStandard Edition
Applicazioni desktop
Micro EditionMicro Edition
Applicazioni mobile
Enterprise EditionEnterprise Edition
Applicazioni Server
Noi lavoreremo su questa piattaforma
Parte WEB
Versione 6Versione 6 Versione 1.1Versione 1.1 Versione 5Versione 5
Architettura JavaArchitettura Java
JDK (Java Developmet Kit). Pacchetto per sviluppare applicazioni Java
JRE (Java Runtimme Enviorment). Ambiente per lanciare applicazioni Java
Preparare l’ambiente di sviluppo per JavaPreparare l’ambiente di sviluppo per Java
• Scaricare ed installare la JDK 1.6
• Settare il CLASSPATH
• Scaricare ed installare l’IDE (facoltativo)
3 Step:
http://java.sun.com/javase/downloads/index.jsphttp://java.sun.com/javase/downloads/index.jsphttp://www.eclipse.org/downloads/http://www.eclipse.org/downloads/
Installare il JDK (1)Installare il JDK (1)
1. Doppio click su file jdk-6u10-windows-i586-p.exe
2. Accettare la licenza
3. Click su Next
Installare il JDK (2)Installare il JDK (2)
4. Attendere la preparazione dell’installazione
5. Selezionare la cartella didestinazione
Installare il JDK (3)Installare il JDK (3)
6. Attendere il completamento dell’installazione
7. Click su finish
Verifichiamo la corretta installazione del Verifichiamo la corretta installazione del JDKJDK
javac.exe compilatore
java.exe interprete
JVM
java -versionjava -version
Apriamo shell di dos: ??
Settare il CLASSPATHSettare il CLASSPATHCLASSPATH: Variabile d’ambiente del SO che include tutte le cartelle contenenti file eseguibili da lanciare senza specificarne l’indirizzo ogni volta.
1
2 3a3b
3c
3c: Aggiungere dopo “;” il path: C:\Programmi\Java\jdk1.6.0_10\bin Nb: Verificare che contenga il riferimento a “.”
Installare l’IDE EclipseInstallare l’IDE Eclipse
• un editor di codice sorgente, • un compilatore e/o un interprete,• un tool di building automatico, • e (solitamente) un debugger
IIntegrated DDevelopment EEnvironment
Normalmente consiste in:
OpenSource, Free, sviluppato in Java, supporta OpenSource, Free, sviluppato in Java, supporta molti linguaggi, architettura a Plugin.molti linguaggi, architettura a Plugin.
OpenSource, Free, sviluppato in Java da SUN, supporta alcuni linguaggi, OpenSource, Free, sviluppato in Java da SUN, supporta alcuni linguaggi, adatto per applicazioni grafiche e web.adatto per applicazioni grafiche e web.
Solo in versione commerciale, nato e sviluppato per lavorare in JavaSolo in versione commerciale, nato e sviluppato per lavorare in Java
Scompattare l’archivio
So far so good?So far so good?
Trasformiamoci in sviluppatori Java MA SENZA IDE!!!MA SENZA IDE!!!
Apriamo il notepad e scriviamo:Apriamo il notepad e scriviamo:
Salviamo il file con estensione .javaSalviamo il file con estensione .javaNome della classeNome della classe
==Nome del fileNome del file
Apriamo shell di DOS e posizioniamoci nella cartella in cui avete salvato il fileApriamo shell di DOS e posizioniamoci nella cartella in cui avete salvato il file
javac Test.javajava Test
Ha creato Test.class?Ha creato Test.class? dir
Hello World!
1)
2)
CorpoCorpoDellaDellaClasseClasse
Dichiarazione della classeDichiarazione della classe
Dichiarazione del metodo mainDichiarazione del metodo main
Chiamata al metodo Chiamata al metodo printlnprintln della della classe classe SystemSystem
Cosa abbiamo appena scritto?Cosa abbiamo appena scritto?
HTML
JAVA
<applet>
</applet>
I prodotti di JavaI prodotti di Java
APPLICAZIONI APPLICAZIONI STAND ALONESTAND ALONE
APPLETAPPLET
APPLICAZIONI APPLICAZIONI WEB (J2EE)WEB (J2EE)
Applicazione che gira all’interno del
Browser
sandbox
Applicazione in formato jar installata
in locale
Applicazione Web con pagine html e
classi Java
java -jar app.jar
Riassumiamo…
…domande?
Top Related