JDK Dott Ing Leonardo Rigutini Dipartimento Ingegneria dellInformazione

  • Slides: 25
Download presentation
JDK Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell’Informazione Università di Siena Via Roma 56

JDK Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell’Informazione Università di Siena Via Roma 56 – 53100 – SIENA Uff. 0577233606 rigutini@dii. unisi. it www. dii. unisi. it/~rigutini/

Libreria standard JAVA Fornisce una grande varietà di classi per facilitare lo sviluppo di

Libreria standard JAVA Fornisce una grande varietà di classi per facilitare lo sviluppo di applicazioni Organizzata come una gerarchia di packages Disponibile il Java. DOC in rete: http: //java. sun. com/j 2 se/1. 5. 0/docs/index. html Vediamo le classi principali che potrebbero essere utili nello sviluppo di applicazioni

Gerarchia java. lang java. io java. util java. math java. text java. applet java.

Gerarchia java. lang java. io java. util java. math java. text java. applet java. awt java. sql java. beans javax. swing javax. sql javax. xml java. net java. rmi java. security

java. lang Tratto dal java. Doc Class Summary Boolean The Boolean class wraps a

java. lang Tratto dal java. Doc Class Summary Boolean The Boolean class wraps a value of the primitive type boolean in Byte The Byte class wraps a value of primitive type byte in an object. Character The Character class wraps a value of the primitive type char in an Double The Double class wraps a value of the primitive type double in an Float The Float class wraps a value of primitive type float in an object.

java. lang Class Summary Integer The Integer class wraps a value of the primitive

java. lang Class Summary Integer The Integer class wraps a value of the primitive type int in an ob Long The Long class wraps a value of the primitive type long in an ob Math The class Math contains methods for performing basic numeric String The String class represents character strings. System The System class contains several useful class fields and metho Thread A thread is a thread of execution in a program. Throwable class is the superclass of all errors and exceptio

La classe Object Come già detto la classe Object è la classe root di

La classe Object Come già detto la classe Object è la classe root di tutte le classi Fornisce una serie di funzioni che normalmente devono essere sovrascritte (override) Vedere Java. Doc

Classi wrapper Come si vede esistono nel package molte classi che sembrano avere lo

Classi wrapper Come si vede esistono nel package molte classi che sembrano avere lo stesso nome dei tipi di dato semplici: Queste classi sono dette classi wrapper e sono utilizzate per “wrappare” i tipi di dato semplice in classi: Boolean, Double, Float, Integer, ecc … double indica una variabile che memorizza valori con virgola di tipo double; Double è un oggetto che rappresenta un double che ha particolari metodi per la lettura, la conversione dei double, ecc … Vedere il Java. Doc

Classe String La classe String rappresenta le stringhe di caratteri. Ogni parola, frase, documento

Classe String La classe String rappresenta le stringhe di caratteri. Ogni parola, frase, documento è una stringa di caratteri. La classe String include metodi per esaminare i singoli caratteri, comparare stringhe, ricercare ed estrarre sottostringhe, portare tutto minuscolo o maiuscolo, concatenare ecc … Java. Doc

La classe math La classe Math mette a disposizioni funzioni matematiche statiche possono essere

La classe math La classe Math mette a disposizioni funzioni matematiche statiche possono essere quindi utilizzate senza necessità di istanziare oggetti di tipo Math: double a=1. 44; double b=3; double c=Math. sqrt(a); c=1. 2 double p=Math. pow(a, b); p = 2, 9859 Fornisce anche due costanti statiche di tipo double : Math. E numero di nepero (e=2, 71) Math. PI pi greco (pi=3. 14) Vedere il Java. Doc

La classe System contiene alcune variabili e funzioni di sistema: Lo stdout, sterr e

La classe System contiene alcune variabili e funzioni di sistema: Lo stdout, sterr e stdin sono variabili statiche di questa classe Java. Doc

Il package java. io Questo package fornisce classi per facilitare la lettura e scrittura

Il package java. io Questo package fornisce classi per facilitare la lettura e scrittura di dati L’idea è che ogni operazione di Input/Output avviene tramite uno stream: oggetto che realizza un flusso di dati che possono essere letti o scritti Per facilitare operazioni più complesse il JDK mette a disposizione classi Reader e Writer: Le classi Reader si agganciano a stream di input e permettono la lettura dei dati Le classi Writer si agganciano a stream di output e permettono la scrittura di dati

I/O L’idea è quella di creare una pipeline tra stream ed operazione: Input. Stream->Reader->Lettura

I/O L’idea è quella di creare una pipeline tra stream ed operazione: Input. Stream->Reader->Lettura Output. Stream->Writer->Scrittura Tale pipeline viene realizzata creando a cascata oggetti che prendono in ingresso gli oggetti a cui si devono agganciare: File. Input. Stream fis=new File. Input. Stream(“c: \prova. txt”); Input. Stream. Reader isr=new Input. Stream. Reader(fis); String carattereletto=isr. read(); … isr. close(); fis. close();

I/O Per alcuni stream comuni le classi Reader e Writer hanno lo stream nascosto

I/O Per alcuni stream comuni le classi Reader e Writer hanno lo stream nascosto al loro interno: File. Reader fis=new File. Reader(“c: \tempprova. txt”); fis. read(); … fis. close(); Per leggere più di un carattere alla volta è necessario utilizzare un Buffered. Reader che si aggancia ad un Reader: File. Reader fis=new File. Reader(“c: \tempprova. txt”); Buffered. Reader br=new Buffered. REader(fis); br. read. Line(); … br. close(); fis. close();

Il package java. io Class Summary Buffered. Input. Stream A Buffered. Input. Stream adds

Il package java. io Class Summary Buffered. Input. Stream A Buffered. Input. Stream adds functionality to another input stream Buffered. Output. Stream The class implements a buffered output stream. Buffered. Reader Read text from a character-input stream, buffering characters so Buffered. Writer Write text to a character-output stream, buffering characters so a File An abstract representation of file and directory pathnames. File. Input. Stream A File. Input. Stream obtains input bytes from a file in a file system. File. Output. Stream A file output stream is an output stream for writing data to a File

Il package java. io Class Summary File. Reader Convenience class for reading character files.

Il package java. io Class Summary File. Reader Convenience class for reading character files. File. Writer Convenience class for writing character files. Input. Stream This abstract class is the superclass of all classes representing a Output. Stream. Writer An Output. Stream. Writer is a bridge from character streams to byte Print. Stream A Print. Stream adds functionality to another output stream, namel Print. Writer Print formatted representations of objects to a text-output stream Reader Abstract class for reading character streams.

Il package java. io Class Summary Stream. Tokenizer The Stream. Tokenizer class takes an

Il package java. io Class Summary Stream. Tokenizer The Stream. Tokenizer class takes an input stream and parse String. Reader A character stream whose source is a string. String. Writer A character stream that collects its output in a string buffer, Writer Abstract class for writing to character streams.

I Thread L’esecuzione di una funzione di una classe è bloccante: Quando i compiti

I Thread L’esecuzione di una funzione di una classe è bloccante: Quando i compiti da svolgere sono “indipendenti” è possibile eseguire una funzionalità in modalità nascosta: thread In java esistono due modalità per eseguire una funzionalità in modalità nascosta: prima di passare oltre è necessario attendere che la funzione sia terminata La classe Thread La classe Runnable Tale soluzione può essere utilizzata per eseguire operazioni in parallelo

La classe Thread è una classe fornita nel JDK Per eseguire una funzionalità in

La classe Thread è una classe fornita nel JDK Per eseguire una funzionalità in modalità thread: 1. 1. rendere la classe che implementa la funzionalità come classe derivata di Thread: public class Esempio exends Thread implementare la funzione run() della classe realizzando la funzionalità desiderata In esecuzione, creare oggetti di quel tipo e avviarli in modalità thread utilizzando la funzione start(): Esempio e=new Esempio(); e. start();

La classe Runnable In realtà la classe Thread è una implementazione della classe Runnable

La classe Runnable In realtà la classe Thread è una implementazione della classe Runnable E’ possibile creare un thread: 1. implementando l’interface Runnable: public class Esempio implements Runnable 1. 2. Implementando il metodo run() In esecuzione passare la classe Runnable ad un oggetto Thread ed eseguire il metodo start(): Esempio e=new Esempio(); Thread T=new Thread(e); T. start();

Sincronizzazione di Thread Quando più thread accedono a funzioni o variabili condivise sussiste un

Sincronizzazione di Thread Quando più thread accedono a funzioni o variabili condivise sussiste un problema di programmazione concorrente: synchronized Un metodo o una variabile vengono dichiarate synchronized: In tal modo si mette un semaforo per accedere a querl metodo o a quella funzione synchronized public void inserisci(String documento) { … inserimento del dato nella variabile condivisa … }

Java Generics (o template) Nella nuova versione del Java sono stati aggiunti i generics

Java Generics (o template) Nella nuova versione del Java sono stati aggiunti i generics Se abbiamo bisogno di un insieme di Giocatori utilizzando la classe Vector del JDK, il Vector tratta i suoi elementi come Object Questo vuol dire che quando accediamo ad un elemento, esso è visto come un Object (la superclasse) ed è necessario un Down. Casting per riottenere un oggetto Giocatroe e poter utilizzare tutte le variabili e le funzioni di tale classe. Vector V=new Vecotr(); V. add(new Giocatore(“Leonardo”, ”Rigutini”); Giocatore G=(Giocatore)V. get(1);

Java Generics (o template) Il Cast (Giocatore)V. get(0) è molto noioso. Normalmente il programmatore

Java Generics (o template) Il Cast (Giocatore)V. get(0) è molto noioso. Normalmente il programmatore sa che tipi di oggetti sono contenuti nel vettore. L'idea dei Generics è che il programmatore possa forzare un vettore a contenere oggetti di tipo Giocatore evitando così il cast. Vector<Giocatore> V=new Vector<Giocatore>(); V. add(new Giocatore(“Leonardo”, ”Rigutini”); Giocatore G=V. get(1); Le classi nel package java. util sono quasi tutte dei template: Vector, List, Hash. Map, Tree, ecc. . .

Il package java. util Questo package fornisce classi di utilità generale Le classi più

Il package java. util Questo package fornisce classi di utilità generale Le classi più importanti sono quelle che implementano le strutture dati dinamiche, timers e String. Tokenizer: Le prime forniscono modi per memorizzare vettori, tabelle hash, liste, stack di dimensione variabili (dinamici) Le seconde forniscono classi per gestire il tempo nel codice L’ultima invece fornisce una classe lettore di stringhe e permette di tagliare una stringa nei punti desiderati e quindi estrarre da un flusso continuo di parole dei tokens

Il package java. util Class Summary Collections This class consists exclusively of static methods

Il package java. util Class Summary Collections This class consists exclusively of static methods that operate on Currency Represents a currency. Date The class Date represents a specific instant in time, with millisec Hash. Map Hash table based implementation of the Map interface. Hash. Set This class implements the Set interface, backed by a hash table ( Hashtable This class implements a hashtable, which maps keys to values. Random An instance of this class is used to generate a stream of pseudor

Il package java. util Class Summary Stack The Stack class represents a last-in-first-out (LIFO)

Il package java. util Class Summary Stack The Stack class represents a last-in-first-out (LIFO) stack of objec String. Tokenizer The string tokenizer class allows an application to break a string i Timer A facility for threads to schedule tasks for future execution in a ba Tree. Map Red-Black tree based implementation of the Sorted. Map interface. Tree. Set This class implements the Set interface, backed by a Tree. Map ins Vector The Vector class implements a growable array of objects.