1 / 25

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 /. JDK. Libreria standard JAVA.

Download Presentation

JDK

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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/ JDK

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

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

  4. java.lang • Tratto dal javaDoc

  5. java.lang

  6. 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 JavaDoc

  7. Classi wrapper Come si vede esistono nel package molte classi che sembrano avere lo stesso nome dei tipi di dato semplici: Boolean, Double, Float, Integer, ecc … Queste classi sono dette classi wrapper e sono utilizzate per “wrappare” i tipi di dato semplice in classi: 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 JavaDoc

  8. 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 … JavaDoc

  9. La classe math La classe Math mette a disposizioni funzioni matematiche statiche che possono essere quindi utilizzate senza necessità di istanziare oggetti di tipo Math: Fornisce anche due costanti statiche di tipo double : Vedere il JavaDoc double a=1.44; double b=3; double c=Math.sqrt(a);  c=1.2 double p=Math.pow(a,b);  p = 2,9859 • Math.E  numero di nepero (e=2,71) • Math.PI  pi greco (pi=3.14)

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

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

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

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

  14. Il package java.io

  15. Il package java.io

  16. Il package java.io

  17. I Thread L’esecuzione di una funzione di una classe è bloccante: prima di passare oltre è necessario attendere che la funzione sia terminata 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: La classe Thread La classe Runnable Tale soluzione può essere utilizzata per eseguire operazioni in parallelo

  18. La classe Thread La classe Thread è una classe fornita nel JDK Per eseguire una funzionalità in modalità thread: rendere la classe che implementa la funzionalità come classe derivata di 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(): public class Esempio exends Thread Esempio e=new Esempio(); e.start();

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

  20. 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 … }

  21. 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 DownCasting 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);

  22. 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. Le classi nel package java.util sono quasi tutte dei template: Vector, List, HashMap, Map, Tree, ecc... Vector<Giocatore> V=new Vector<Giocatore>(); V.add(new Giocatore(“Leonardo”,”Rigutini”); Giocatore G=V.get(1);

  23. 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 StringTokenizer: 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

  24. Il package java.util

  25. Il package java.util

More Related