1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed...

26
1 Introduzione al linguaggio Java Cosa c’è di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C+ +. Dove trovare informazioni?

Transcript of 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed...

Page 1: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

1

Introduzione al linguaggio Java

Cosa c’è di nuovo in Java?

Java ed Internet.

Applicazioni ed Applets: come scriverli e farli girare.

Caratteristiche originali e differenze con C / C++.

Dove trovare informazioni?

Page 2: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

2

Che cosa è Java?

È un linguaggio di programmazioneorientato agli oggetti.

Le applicazioni Java sono indipendenti dalla piattaforma su cui vengono prodotte.

Java è particolarmente adatto per l’ambiente grafico e per applicazioni

in rete.

Java è stato progettato con l’intento di realizzare un linguaggio semplice, robusto

e sicuro.

Page 3: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

3

Java ed Internet

Java è un linguaggio OO come molti altri, tuttavia suo sviluppo ha subito una enorme spinta dalla diffusione di Internet.

L’indipendenza dalla piattaforma fa sì che un programma Java possa essere scaricato dalla rete e

direttamente eseguito su tutte le più diffuse architetture di computer (PC, Unix, Mac ...).

Portabilità e sicurezza sono le caratteristiche che hanno decretato il successo di Java per le

applicazioni di rete.

Page 4: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

4

Linguaggi compilati e interpretati

linguaggio compilato

Il compilatore produce un eseguibile in codice macchina. L’esecuzione sarà molto veloce ma lo stesso eseguibile non può essere usato su piattaforme diverse.

linguaggio interpretato

Il codice é indipendente dalla piattaforma, ma deve essere eseguito attraverso un interprete che in genere è molto poco efficiente.

Java ha un compilatore ed un interprete.

Page 5: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

5

La novità di Java : il BYTECODE

Il compilatore non produce codice macchina, ma un insieme ottimizzato di istruzioni detto BYTECODE.

Il sistema run-time di Java emula una macchina virtuale (Java Virtual Machine) che esegue il

BYTECODE .Ogni architettura per la quale la Virtual Machine sia

implementata, può eseguire lo stesso programma Java.

L’efficienza di esecuzione di Java è superiore rispetto agli altri linguaggi interpretati (Tcl, Perl...), anche se non raggiunge quella dei linguaggi compilati.

Inoltre l’interprete Java fornisce compilatori “just in time” per trasformare a run-time il BYTECODE in codice macchina, guadagnando in velocità, ma perdendone la portabilità.

Page 6: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

6

Un eseguibile prodotto da altri e scaricato via rete sulla propria macchina potrebbe trasmettere virus o accedere a dati privati.

Un programma Java non può violare la sicurezza!

L’esecuzione di un BYTECODE Java é confinata nel sistema run-time che lo interpreta.

Nel linguaggio non esistono i puntatori.

L’ applet non può scrivere né leggere sul client, né aprire connessioni con altri sistemi.

Sicurezza

Page 7: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

7

Possiamo produrre due tipi di programmi Java : Applicazioni e Applets.

Un’applicazione viene eseguita sul proprio computer ed é equivalente ad un programma C o C++.Un applet é fatto per essere trasmesso in rete tra un Web server ed un client, eseguito attraverso un browser.

In un programma Java tutto il codice è contenuto all’interno di classi.

Java non è concepito per essere compatibile con altri linguaggi, tuttavia è possibile invocare “Metodi Nativi” in linguaggi compilati. Si perde però la portabilità.

Page 8: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

8

• Installare il JDK !!

• Scrivere il codice in un file Example.java

java Example• Eseguire l’applicazione:

• Compilare :

javac Example.java Example.class

class Example { public static void main (){

System.out.println(“Hello World!”); }}

Example.java

Il “programma” écostituito da una classeche implementa unmetodo main

Un esempio di Applicazione

Page 9: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

9

La sintassi è fondata sul C++, con alcune semplificazioni.

Java vs C++

Un sistema di garbage collection si occupa della gestione automatica della memoria.

Java non consente l’uso dei puntatori.

Non è possibile l’ereditarietà multipla, ma Java fornisce le interfacce.

Le classi ed i metodi di I/O sono diversi da quelli del C++.

Page 10: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

10

Creazione degli oggetti

L’allocazione di nuovi oggetti avviene con new esattamente come in C++:

Box mybox = new Box( );

Gli oggetti non hanno un distruttore, sostituito dal sistema di garbage collection di Java, associato al metodo finalize.

Page 11: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

11

Ereditarietà

Una sottoclasse viene creata con l’istruzione extends;

class HeavyBox extends Box {...}

Ogni sottoclasse può ereditare da una sola superclasse.

È consentita la ridefinizione (override) dei metodi.

Si possono definire classi abstract, di cui non si possono creare istanze, ma possono essere usate come riferimento alle sottoclassi, risolto a run-time (Polimorfismo).

Page 12: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

12

Interfacce

Una interface è definita in modo analogo ad una classe, ma ha metodi non implementati e non ha variabili di istanza.

Una interface può contenere la definizione di costanti, che sono condivise dalle classi che implementano l’ interface.

Più classi possono implementare la stessa interfaccia, definendone tutti i metodi.

class MyClass implements MyInterface { ... }

Risoluzione dinamica dei metodi.

Page 13: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

13

interface IntStack { void push(int item); int pop( );} class DynStack implements IntStack {

… variabili di istanza e metodi propri ... public void push(int item) { … corpo di push per DynStack… } public int pop( ) { … corpo di pop per DynStack… }}

class FixedStack implements IntStack { … variabili di istanza e metodi propri ... public void push(int item) { … corpo di push per FixedStack… } public int pop( ) { … corpo di pop per FixedStack… }}

FixedStack.java

DynStack.java

IntStack.java

Page 14: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

14

class FixedStack implements IntStack { … variabili di istanza e metodi propri ... public void push(int item) { … corpo di push per FixedStack… } public int pop( ) { … corpo di pop per FixedStack… }}

FixedStack.java

class DynStack implements IntStack { … variabili di istanza e metodi propri ... public void push(int item) { … corpo di push per DynStack… } public int pop( ) { … corpo di pop per DynStack… }}

DynStack.java

interface IntStack { void push(int item); int pop( );}

IntStack.java

Uso delle Interfacce

Page 15: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

15

class InterfaceTest { public static void main (String args[]) { IntStack mystack; FixStack fs = new FixStack(8); DynStack ds = new DynStack(5);

mystack = ds; for (int i=0; i<12; i++) mystack.push(i);

mystack = fs; for (int i=0; i<8; i++) mystack.push(i); }}

InterfaceTest.java

Page 16: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

16

Pacchetti

Un package raggruppa un insieme di classi correlate, che possono essere importate nelle applicazioni.

L’appartenenza ad un pacchetto si realizza inserendo all’inizio del file l’istruzione : package MyPackage;

Per importare in una applicazione le classi del pacchetto: import MyPackage.*;

java.awt java.awt.image java.awt.peer

java.lang java.io java.util

java.net java.applet

Page 17: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

17

import java.awt.*;import java.applet.*;

public class SimpleApplet extends Applet { public void paint(Graphics g) { g.drawString(“Hello World!”); }}

Finalmente un Applet!

Un applet non ha metodo main.

L’ I/O è realizzato attraverso AWT (Abstract

Window Toolkit).

L’applet è pilotato ad

eventi.

Page 18: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

18

L’esecuzione dell’ applet

Un applet può essere eseguito dall’ appletviewer

oppure attraverso un web browser.

Per accedere all’ applet bisogna inserirlo in un file HTML con il tag APPLET. public void init( ){...}

public void start( ){...}public void paint( ){...}public void stop( ){...}public void destroy( ){...}

Nell’applet si ridefiniscono i metodi delle classi Applet e AWT che vengono poi chiamati dall’appletviewer.

È comune l’uso dei threads, per I quali Java fornisce la classe Thread e l’interfaccia Runnable.

Page 19: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

19

Un applet può essere eseguito dall’ appletviewer oppure attraverso un web browser.

Per accedere all’ applet bisogna inserirlo in un file HTML con il tag APPLET.L’Applet non ha un metodo main...

Nell’applet si ridefiniscono i metodi delle classi Applet e AWT che vengono poi chiamati dall’appletviewer.

L’esecuzione dell’ applet

Page 20: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

20

public void init( ){...}public void start( ){...}public void paint( ){...}public void stop( ){...}public void destroy( ){...}public boolean action( ) {...}

Metodi della classe Applet

L’esecuzione dell’ applet

Page 21: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

21

Scriviamo un esempio con 3 bottoni che provocano il cambio di colore dello sfondo

Implementeremo i metodi: init per definire lo stato iniziale action per rivelare gli eventi connessi alla pressione dei bottoni

paint per ridisegnare l’applet

Un esempio di Applet

Page 22: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

22

Esempioimport java.awt.*;import java.applet.*;public class ButtonDemo extends Applet {

String msg = “Ti piace Java?”;

public void init() {Button yes = new Button(“Si”);Button no = new Button(“No”);Button maybe = new Button(“Non so”);SetBackground(Color.white);add(yes);add(no);add(maybe);

}public void paint(Graphics g) {

g.drawString(msg,6,100); }

Page 23: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

public boolean action(Event evtObj, Object arg) {

if (evtObj.target instanceof Button) { if (arg.equals(“Si”)) {

setBackground(Color.green); msg = “I love Java!”;

} if (arg.equals(“No”)) {

setBackground(Color.red); msg = “Io odio Java!”;

} if (arg.equals(“Non so”)) {

setBackground(Color.yellow); msg = “Non me ne importa niente!”;

} }

}

Page 24: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

24

La programmazione multithreaded

Più parti del programma possono essere eseguite contemporaneamente, in diversi threads.

Tutti i threads sono figli del main. Se un thread si blocca in attesa di un evento, gli altri continuano a girare.

Si possono definire le priorità di esecuzione e sincronizzare l’esecuzione mediante semafori.

Il metodo più semplice per creare un thread è creare una classe che implementa l’interfaccia Runnable e implementare il metodo run( ).

Page 25: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

25

La gestione delle eccezioni

Una eccezione è una condizione di errore run-time.

In java una eccezione è un oggetto creato e lanciatonel metodo che ha provocato l’errore.class Exc1 { public static void main(String args[]) { int d, a; try { d = 0; a = 42 / d; System.out.println(“This will not be printed”); } catch (AritmeticException e) { System.out.println(“Division by zero”); }}}

Esiste un gestore default delle eccezioni.

Si possono lanciare eccezioni con l’istruzione throw

Page 26: 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali.

26

Riferimenti

http://www.javasoft.com

http://java.sun.com/cgi-bin/java-ports.cgi

http://www.blackdown.org/java-linux.html

Windows NT/95 Sun Solaris Macintosh 1.0.2

HP-UX 10.x Digital UNIXIBM AIX

Linux

http://www.gamelan.comJava - P.Naughton, H.Schildt McGraw Hill

Java in a nutshell - D.Flanagan O’Really