Indice degli esempi di codice
Prefazione
Al lettore
Contenuti del libro
Convenzioni
Ringraziamenti
Capitolo 1 Cosa sono i thread
Utilizzare i thread per dare una possibilità ad altre attività
Interrompere i thread
Stati dei thread
Thread nuovi
Thread runnable
Thread bloccati
Thread conclusi
Proprietà dei thread
Priorità dei thread
Thread demoni
Gruppi di thread
Gestori delle eccezioni non catturate
Sincronizzazione
Esempio di race condition
Spiegazione della race condition
Bloccare gli oggetti
Oggetti condizione
La parola chiave synchronized
Blocchi sincronizzati
Campi volatili
Deadlock
Chiarezza
Verificare i lock e timeout
Blocchi di lettura/scrittura
Perché i metodi stop e suspend sono disapprovati
Code bloccanti
Collezioni thread-safe
Code e tabelle hash efficienti
Copia di array in scrittura
Collezioni più vecchie thread-safe
Richiamabili e futuri
Esecutori
Pool di thread
Esecuzione programmata
Controllare i gruppi di thread
Sincronizzatori
Barriere
Countdown latch
Scambiatori
Code sincrone
semafori
Thread e Swing
La regola del “singolo thread”
Una funzionalità di Swing
Capitolo 2 Collezioni
Interfacce delle collezioni
Separare interfacce della collezione dall’implementazione
Interfacce di collezione e di iterazione nella libreria Java
Collezioni concrete
Liste collegate
ArrayList
HashSet
TreeSet
Code a priorità
Mappe
Set specializzati e classi di mappe
Il framework delle collezioni
Viste e wrapper
Operazioni di massa
Conversione tra collezioni e array
Estendere il framework
Algoritmi
Sorting e shuffling
Ricerca binaria
Algoritmi semplici
Scrivere i propri algoritmi
Collezioni legacy
La classe Hashtable
Enumerazioni
Insieme di proprietà
Stack
BitSet
Capitolo 3 Networking
Connessione a un server
Implementazione dei server
Servire più client
Invio di e-mail
Costruzione delle connessioni URL
URL e URI
Utilizzare URLConnection per ricevere informazioni
Inviare i dati di un form
Programmazione avanzata dei socket
Timeout del socket
Socket interrompibili
Mezza chiusura
Indirizzi Internet
Capitolo 4 Programmazione dei database
Il design di JDBC
Tipi di driver JDBC
Utilizzi tipici di JDBC
Il linguaggio SQL
Installazione di JDBC
Concetti di programmazione di base di JDBC
URL dei database
Costruire la connessione
Eseguire comandi SQL
Tipi SQL avanzati
Gestire connessioni, istruzioni e ResultSet
Compilare un database
Esecuzione delle query
PreparedStatement
ResultSet aggiornabili e sfogliabili
ResultSet sfogliabili
ResultSet aggiornabili
Metadati
RowSet
CachedRowSet
Transazioni
Punti di salvataggio
Aggiornamenti batch
Gestione avanzata delle connessioni
Introduzione a LDAP
Configurare un server LDAP
Accedere a informazioni di directory LDAP
Capitolo 5 Oggetti distribuiti
Il ruolo di client e server
Invocazioni di metodi remoti
Stub e marshallings dei parametri
Caricamento dinamico della classe
Impostazione delle invocazioni di metodi remoti
Interfacce e implementazioni
Generazione di una classe stub
Individuare gli oggetti del server
Il lato client
Predisporre la distribuzione
Distribuire il programma
Passaggio di parametri nei metodi remoti
Passare oggetti non remoti
Passare oggetti remoti
Oggetti remoti e metodi equals e hashCode
Clonare oggetti remoti
Attivazione dell’oggetto server
IDL e CORBA in Java
Il linguaggio di definizione dell’interfaccia
Un esempio CORBA
Implementare server CORBA
Chiamate di metodi remoti con SOAP
Capitolo 6 Swing avanzato
Elenchi
Il componente JList
Modelli di elenchi
Inserire e rimuovere valori
Rendering dei valori
Alberi
Alberi semplici
Enumerazione dei nodi
Rendering dei nodi
Eventi del componente JTree
Modelli di albero personalizzati
Tabelle
Una semplice tabella
Modelli di tabella
Un filtro di ordinamento
Rendering e modifica delle celle
Lavorare con righe e colonne
Selezionare righe, colonne e celle
Componenti di testo con stile
Indicatori di progresso
Barre di progresso
Monitor di progresso
Monitorare stream di input
Organizzatori di componenti
Pannelli di suddivisione
Pannelli a schede
Pannelli del desktop e frame interni
Pannelli a cascata e affiancati
Vietare l’impostazione delle proprietà
Capitolo 7 AWT avanzato
La pipeline del rendering
Forme
Utilizzare le classi di forme
Aree
Tratti
Disegno
Trasformazione delle coordinate
Ritaglio
Trasparenza e composizione
Suggerimenti per il rendering
Reader e writer per le immagini
Ricavare reader e writer per i tipi di file di immagini
Leggere e scrivere file con più immagini
Elaborazione delle immagini
Accedere ai dati dell’immagine
Filtrare le immagini
Stampa
Stampa grafica
Stampa su più pagine
Anteprima di stampa
Servizi di stampa
Stream dei servizi di stampa
Attributi di stampa
Clipboard
Classi e interfacce per il trasferimento dei dati
Trasferimento di testo
L’interfaccia di trasferimento e i flavor dei dati
Costruire un trasferimento di immagine
Utilizzare una clipboard locale per trasferire riferimenti di oggetti
Trasferire oggetti Java mediante il sistema della clipboard
Drag and Drop
Destinazione di rilascio
Sorgenti di trascinamento
Supporto dei trasferimenti di dati in Swing
Capitolo 8 Componenti JavaBeans
Perché “bean”?
Il processo di scrittura del bean
Utilizzare i bean per costruire le applicazioni
Includere i bean in file JAR
Comporre i bean in un ambiente di sviluppo
Denominare i pattern per le proprietà e gli eventi dei bean
Tipi delle proprietà dei bean
Proprietà semplici
Proprietà indicizzate
Proprietà collegate
Proprietà vincolate
Classi BeanInfo
Editor delle proprietà
Scrivere un editor delle proprietà
Customizer
Scrivere una classe customizer
Persistenza di JavaBeans
Utilizzare la persistenza JavaBeans per dati arbitrari
Un esempio completo della persistenza JavaBeans
Capitolo 9 Sicurezza
Loader di classi
Scrivere il proprio loader di classi
Verifica del bytecode
Manager e permessi di sicurezza
Sicurezza della piattaforma Java 2
File della policy di sicurezza
Permessi personalizzati
Implementazione di una classe dei permessi
Un manager di sicurezza personalizzato
Autenticazione dell’utente
Moduli di login JAAS
Firme digitali
Sommario del messaggio
Firma del messaggio
Autenticazione del messaggio
Il formato del certificato X.509
Generazione dei certificati
Firma dei certificati
Firma del codice
Firma del file JAR
Certificati di sviluppo del software
Codifica
Cifrari simmetrici
Cipher stream
Cifrario di chiavi pubbliche
Capitolo 10 Internazionalizzazione
Localizzazione
Formati dei numeri
Valute
Data e ora
Ordinamento
Formattazione dei messaggi
Formati di selezione
File di testo e set di caratteri
Codifica dei caratteri dei file sorgente
Risorse per la localizzazione
Individuare le risorse di localizzazione
File delle proprietà
Classi di localizzazione
Un esempio completo
Capitolo 11 Metodi nativi
Chiamata di una funzione C dal linguaggio di programmazione Java
Lavorare con la funzione printf
Parametri numerici e valori restituiti
Utilizzare printf per formattare numeri
Parametri stringa
Chiamare sprint in un metodo nativo
Accesso ai campi
Accedere ai campi istanza
Accedere ai campi statici
Codifica delle firme
Chiamata dei metodi Java
Metodi non statici
Metodi statici
Costruttori
Invocazioni di metodi alternativi
Accesso agli elementi di un array
Gestione degli errori
Utilizzo dell’API di invocazione
Un esempio completo: accesso al registro di Windows
Panoramica del registro di Windows
Un’interfaccia della piattaforma Java per accedere al registro
Implementazione di funzioni di accesso al registro come metodi nativi
Capitolo 12 XML
Introduzione della tecnologia XML
La struttura di un documento XML
Parsing di un documento XML
Validazione dei documenti XML
Definizione dei tipi di documento
XML Schema
Un esempio concreto
Individuazione di informazioni con XPath
Utilizzo dei namespace
Utilizzo del parser SAX
Generazione di documenti XML
Trasformazioni XSL
Capitolo 13 Annotazioni
Inserimento di metadati nei programmi
Un esempio: annotazione degli handler di evento
Sintassi delle annotazioni
Annotazioni standard
Annotazioni regolari
Meta-annotazioni
Lo strumento apt per l’elaborazione di annotazioni a livello sorgente
Progettazione bytecode
Modificare bytecode in fase di caricamento
Indice analitico
|