introduzione a java. argomenti cenni di storia di java perché java? java vs c++ caratteristiche...

30
Introduzione a Java Introduzione a Java

Upload: nilda-fantoni

Post on 01-May-2015

244 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Introduzione a JavaIntroduzione a Java

Page 2: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Argomenti

• Cenni di storia di Java

• Perché Java?

• Java Vs C++

• Caratteristiche fondamentali di Java

• Installiamo Java

Page 3: 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

Page 4: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo 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

Page 5: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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)

Page 6: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Perché Java?Perché Java?

• Più lento di C++

• Impossibile accedere alla parte di codice plattform specific

Page 7: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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…

Page 8: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 9: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 10: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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)

Page 11: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 12: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 13: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

* *

Page 14: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 15: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 16: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 17: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 18: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 19: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Architettura JavaArchitettura Java

JDK (Java Developmet Kit). Pacchetto per sviluppare applicazioni Java

JRE (Java Runtimme Enviorment). Ambiente per lanciare applicazioni Java

Page 20: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo 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/

Page 21: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 22: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Installare il JDK (2)Installare il JDK (2)

4. Attendere la preparazione dell’installazione

5. Selezionare la cartella didestinazione

Page 23: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Installare il JDK (3)Installare il JDK (3)

6. Attendere il completamento dell’installazione

7. Click su finish

Page 24: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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: ??

Page 25: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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 “.”

Page 26: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 27: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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)

Page 28: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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?

Page 29: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

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

Page 30: Introduzione a Java. Argomenti Cenni di storia di Java Perché Java? Java Vs C++ Caratteristiche fondamentali di Java Installiamo Java

Riassumiamo…

…domande?