Introduzione al linguaggio Java

Slides:



Advertisements
Presentazioni simili
Ambiente Java.
Advertisements

Programmazione in Java
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Applet Java.
Informatica Recupero debito quarto anno Terzo incontro.
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Massa Laura Mela Enrica
Il linguaggio java Esercitazioni del corso di Sistemi Informativi
Fondamenti di Informatica Prof. Cantone
Applet Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Introduzione a JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Terza parte: Programmazione ad oggetti in Java. Cosè Java Linguaggio di programmazione definito dalla Sun Obiettivo: sviluppo di applicazioni sicure,
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dellambiente di sviluppo, compilazione.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Derivazione tra classi
Overriding.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Approfondimento delle classi
Selezione (=scelta) con “if-else”
CAPITOLO 1 JAVA: UN TUFFO NEL LINGUAGGIO E NELL'AMBIENTE.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Sistemi Operativi GESTIONE DEI PROCESSI.
Java base IV: Java e la programmazione O.O.
Argomenti della lezione
C# LE BASI 2007 Prima lezione - Introduzione.
Programmazione in Java
Programmazione in Java (8)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Introduzione a C#.
Java Contardi Carlo A.S. 2008/09.
Cosa è una applicazione distribuita?
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
Java come linguaggio di programmazione
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Gena - Applicata - 05/061 Java: javac e java Per compilare una classe: > javac NomeClasse.java  NomeClasse.class javac = invocazione.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Introduzione. Introduzione Un’applet Java: Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
la traduzione dei programmi
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Gestione dei thread in Java
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
28/12/2001package 1 Package Pacchetti e interfacce.
Programmazione orientata agli Oggetti Introduzione a Java.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Introduzione al linguaggio Java 27/03/2017 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? Questa panoramica, più che insegnare a programmare in Java, vuole chiarire quali sono gli aspetti originali di questo linguaggio e perché esso desta tanto interesse negli ultimi tempi (addirittura Bill Gates è sotto processo anche a causa di Java!!!) .

Che cosa è Java? È un linguaggio di programmazione orientato agli oggetti. Le applicazioni Java sono indipendenti dalla piattaforma su cui vengono prodotte. Java è stato progettato con l’intento di realizzare un linguaggio semplice, robusto e sicuro. Java è particolarmente adatto per l’ambiente grafico e per applicazioni in rete.

Java ed Internet Java è un linguaggio OO come molti altri, tuttavia suo sviluppo ha subito una enorme spinta dalla diffusione di Internet. Portabilità e sicurezza sono le caratteristiche che hanno decretato il successo di Java per le applicazioni di rete. 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 ...).

Java ha un compilatore ed un interprete. Linguaggi compilati e interpretati 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 compilato Il codice é indipendente dalla piattaforma, ma deve essere eseguito attraverso un interprete che in genere è molto poco efficiente. linguaggio interpretato Java ha un compilatore ed un interprete.

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à.

Un programma Java non può violare la sicurezza! 27/03/2017 Sicurezza 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.

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à.

Un esempio di Applicazione 27/03/2017 Un esempio di Applicazione Installare il JDK !! Scrivere il codice in un file Example.java class Example { public static void main (){ System.out.println(“Hello World!”); } Example.java Il “programma” é costituito da una classe che implementa un metodo main Compilare : javac Example.java Example.class java Example Eseguire l’applicazione:

La sintassi è fondata sul C++, con alcune semplificazioni. 27/03/2017 Java vs C++ La sintassi è fondata sul C++, con alcune semplificazioni. Java non consente l’uso dei puntatori. Un sistema di garbage collection si occupa della gestione automatica della memoria. Non è possibile l’ereditarietà multipla, ma Java fornisce le interfacce. Le classi ed i metodi di I/O sono diversi da quelli del C++.

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.

class HeavyBox extends Box {...} 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).

Interfacce class MyClass implements MyInterface { ... } 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.

interface IntStack { void push(int item); int pop( ); } FixedStack.java 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… IntStack.java interface IntStack { void push(int item); int pop( ); } DynStack.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…

Uso delle Interfacce class FixedStack implements IntStack { 27/03/2017 Uso delle Interfacce 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 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 interface IntStack { void push(int item); int pop( ); } IntStack.java

InterfaceTest.java 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); }

Pacchetti java.lang java.io java.util java.net java.applet 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.lang java.io java.util java.net java.applet java.awt java.awt.image java.awt.peer

public class SimpleApplet extends Applet { 27/03/2017 Finalmente un Applet! import java.awt.*; import java.applet.*; public class SimpleApplet extends Applet { public void paint(Graphics g) { g.drawString(“Hello World!”); } L’applet è pilotato ad eventi. Un applet non ha metodo main. L’ I/O è realizzato attraverso AWT (Abstract Window Toolkit).

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.

L’esecuzione dell’ applet 27/03/2017 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. 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 27/03/2017 L’esecuzione dell’ applet public void init( ){...} public void start( ){...} public void paint( ){...} public void stop( ){...} public void destroy( ){...} public boolean action( ) {...} Metodi della classe Applet

init per definire lo stato iniziale Un esempio di Applet 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

Esempio import 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!”;

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( ).

La gestione delle eccezioni Una eccezione è una condizione di errore run-time. In java una eccezione è un oggetto creato e lanciato nel 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

Riferimenti http://www.javasoft.com Windows NT/95 Sun Solaris Macintosh 1.0.2 http://www.javasoft.com http://java.sun.com/cgi-bin/java-ports.cgi http://www.blackdown.org/java-linux.html HP-UX 10.x Digital UNIX IBM AIX Linux http://www.gamelan.com Java - P.Naughton, H.Schildt McGraw Hill Java in a nutshell - D.Flanagan O’Really