1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed...
-
Upload
enrico-monti -
Category
Documents
-
view
214 -
download
0
Transcript of 1 Introduzione al linguaggio Java Cosa cè di nuovo in Java? Java ed Internet. Applicazioni ed...
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?
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.
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.
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.
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à.
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
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à.
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
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++.
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.
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).
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.
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
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
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
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
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.
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.
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
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
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
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); }
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!”;
} }
}
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( ).
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
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