Java 7 guida completa
Apogeo
- Volumi: 1
- Data Pubblicazione: 09/2011
- Lingua: italiano
- Livello: Introduttivo Intermedio
- Pagine: 651
- Collana: Guida completa
- Autore: Pellegrino Principe
Java è il linguaggio di programmazione che più ha rivoluzionato il mondo dell’informatica e della tecnologia nel suo insieme. Dal 1995, anno del suo debutto ufficiale, a oggi risulta impiegato nei più svariati dispositivi elettronici come computer, smartphone, televisori, navigatori satellitari. Studiare Java permette non solo di imparare un moderno linguaggio di programmazione, ma anche di posizionarsi all'interno del mercato del lavoro nei più disparati settori tecnologici.
Questo libro nasce proprio con l’obiettivo di fornire ai lettori un percorso di apprendimento pratico, immediato e attuale. Si parte dalle caratteristiche della versione 7, per poi affontare gli argomenti basilari della programmazione in Java, fino a temi di carattere specifico come la progettazione di interfacce utente, la programmazione di rete e dei database, lo sviluppo di applicazioni web, offrendo ai lettori una panoramica a 360 gradi. Il tutto corredato da numerosi esempi e listati da studiare, compilare e provare.
Argomenti in breve:
L'autore
Pellegrino Principe è un programmatore con una passione sviscerata per tutti quei linguaggi che hanno una sintassi "C-like" e in particolar modo per Java, C/C++, C# e Javascript. Ricorda con nostalgia le notti insonni passate a hackerare in C (LATTICE) e in Assembly (DEVPAC) le librerie del meraviglioso e inimitabile AMIGA OS. Ha scritto numerosi articoli e tutorial sui più svariati argomenti di programmazione per le principali riviste del settore IT. Attualmente è software developer e docente in linguaggi di programmazione presso la Sezione Ricerca e Sviluppo Applicazioni Web del Servizio Informatica del Comando Generale della Guardia di Finanza di Roma.
Prefazione ...........................................................................................xv
Capitolo 1 Introduzione al linguaggio ...............................................1
Paradigmi di programmazione ......................................................................... 2
Elementi di un ambiente Java ........................................................................... 4
Il primo programma Java ................................................................................. 5
Compilazione ed esecuzione del codice ........................................................... 7
Problemi di compilazione ed esecuzione? ........................................................ 8
Capitolo 2 Variabili, costanti, letterali e tipi ......................................9
Variabili primitive .......................................................................................... 11
Variabili riferimento ...................................................................................... 13
Variabili locali, globali e scope ........................................................................ 15
Costanti......................................................................................................... 16
Letterali ......................................................................................................... 17
Conversione tra tipi ....................................................................................... 19
Capitolo 3 Array .................................................................................23
Array monodimensionali ............................................................................... 23
Array bidimensionali ..................................................................................... 28
Array multidimensionali ................................................................................ 31
Capitolo 4 Operatori ..........................................................................33
Operatore di assegnamento ............................................................................ 34
Operatori aritmetici ...................................................................................... 34
Operatori aritmetici di assegnamento ............................................................. 35
Operatori relazionali e di uguaglianza ............................................................ 35
Operatori logici ............................................................................................. 38
Operatore ternario ........................................................................................ 40
Operatori a livello di bit (bitwise) .................................................................. 41
Tabella di precedenza degli operatori ............................................................. 44
Capitolo 5 Strutture di controllo .......................................................47
Struttura di selezione if .................................................................................. 47
Struttura di selezione if/else ........................................................................... 48
Struttura di selezione switch/case................................................................... 51
Struttura di iterazione while .......................................................................... 54
Struttura di iterazione do/while ..................................................................... 55
Struttura di iterazione for .............................................................................. 56
Enhanced for ................................................................................................. 59
Istruzioni break, continue ed etichette............................................................ 60
Capitolo 6 Metodi ...............................................................................65
Utilizzo dei metodi........................................................................................ 67
Passaggio degli argomenti ai metodi ............................................................... 68
Argomenti a lunghezza variabile .................................................................... 72
Parametri di tipo array ................................................................................... 74
Ricorsione .................................................................................................... 75
Overloading dei metodi ................................................................................. 77
Capitolo 7 Programmazione basata sugli oggetti ...........................79
Classi ............................................................................................................ 80
Visibilità e controllo di accesso ...................................................................... 84
Costruttori: ripasso e dettagli ......................................................................... 86
Metodi set e get: ripasso e dettaglio ................................................................ 87
Membri di classe costanti ............................................................................... 89
Oggetti come elementi di array ..................................................................... 90
Oggetti come membri di classe ...................................................................... 90
Oggetti come parametri ................................................................................ 91
La keyword this ............................................................................................. 92
Membri di classe ........................................................................................... 95
Classi annidate ............................................................................................... 98
Tipi enumerati ............................................................................................ 100
Capitolo 8 Programmazione orientata agli oggetti ..................... 105
Gerarchie di classi ed ereditarietà ................................................................. 106
Polimorfi smo e binding dinamico ................................................................ 111
Classi astratte ............................................................................................... 114
Interfacce .................................................................................................... 117
Classi anonime ............................................................................................ 120
Ereditarietà multipla con le interfacce .......................................................... 122
Capitolo 9 Programmazione generica ........................................... 123
Metodi generici ........................................................................................... 123
Classi generiche ........................................................................................... 133
Tipi raw ...................................................................................................... 136
Tipi di parametro wildcard .......................................................................... 138
Capitolo 10 Errori software .............................................................. 141
La keyword assert ........................................................................................ 142
Le eccezioni ................................................................................................ 143
Rilancio delle eccezioni ............................................................................... 146
Eccezioni checked e unchecked ................................................................... 150
Eccezioni nei costruttori e nei distruttori ..................................................... 152
Eccezioni a catena ....................................................................................... 154
Metodi informativi delle eccezioni .............................................................. 156
Classi eccezione della libreria standard ......................................................... 157
Indice generale vii
Capitolo 11 Package ......................................................................... 159
Creazione di package ................................................................................... 159
Utilizzo dei package .................................................................................... 161
Visibilità e disponibilità dei package ............................................................. 163
Archiviazione dei package ........................................................................... 166
Meccanismo delle estensioni ........................................................................ 170
Specifi catore di accesso di tipo package ........................................................ 170
Capitolo 12 Annotazioni ................................................................... 175
Annotazioni standard per il compilatore ....................................................... 176
Annotazione @Override ................................................................... 176
Annotazione @Deprecated ................................................................ 177
Annotazione @SuppressWarnings ...................................................... 178
Annotazione @SafeVarargs ................................................................. 179
Annotazioni personalizzate .......................................................................... 181
Annotare le annotazioni ............................................................................... 182
Processare le annotazioni custom ................................................................. 183
Processing a livello di codice sorgente ................................................ 183
Processing a run-time ........................................................................ 186
Capitolo 13 Documentazione del codice sorgente ......................... 189
Documentare una classe ............................................................................... 189
Altri tag ....................................................................................................... 192
Generare la documentazione ........................................................................ 194
Capitolo 14 Caratteri e stringhe ....................................................... 197
La classe Character....................................................................................... 198
Alcuni metodi del tipo Character ....................................................... 198
La classe String ............................................................................................ 200
Alcuni metodi del tipo String ............................................................ 200
La classe StringBuilder ................................................................................. 205
Alcuni metodi del tipo StringBuilder ................................................. 207
La classe StringTokenizer ............................................................................. 208
Alcuni metodi del tipo StringTokenizer ............................................. 209
Capitolo 15 Espressioni regolari ...................................................... 211
Concetti propedeutici .................................................................................. 211
Espressioni regolari con la classe String ........................................................ 216
Le classi Pattern e Matcher .......................................................................... 217
Alcuni metodi del tipo Pattern ........................................................... 219
Alcuni metodi del tipo Matcher ......................................................... 221
Capitolo 16 Collezioni ....................................................................... 225
Il framework di Java per le collezioni ........................................................... 227
L’interfaccia Collection ...................................................................... 229
L’interfaccia Set.................................................................................. 230
L’interfaccia SortedSet........................................................................ 231
L’interfaccia NavigableSet .................................................................. 232
L’interfaccia List ................................................................................. 232
L’interfaccia Queue ............................................................................ 233
L’interfaccia Deque ............................................................................ 234
L’interfaccia Map ............................................................................... 234
L’interfaccia SortedMap ..................................................................... 236
L’interfaccia NavigableMap ................................................................ 236
Implementazioni dell’interfaccia Set ................................................... 237
Implementazioni dell’interfaccia List .................................................. 240
Implementazioni delle interfacce Queue e Deque .............................. 241
Implementazioni dell’interfaccia Map ................................................. 242
Le interfacce Comparable e Comparator ............................................ 244
Le interfacce Iterator, ListIterator e Iterable ........................................ 248
Algoritmi polimorfi ci sulle collezioni ................................................. 252
Collezioni concorrenti ....................................................................... 254
Capitolo 17 Programmazione concorrente .................................... 257
Processi e thread .......................................................................................... 258
Stati di un thread ............................................................................... 258
Priorità dei thread .............................................................................. 259
La classe Thread e l’interfaccia Runnable ..................................................... 260
Alcuni metodi del tipo Thread ........................................................... 263
Sincronizzazione fra i thread ........................................................................ 263
Un esempio di mutex ........................................................................ 265
Un esempio di cooperazione .............................................................. 268
Liveness dei thread ....................................................................................... 272
Un esempio di deadlock .................................................................... 273
Un esempio di starvation ................................................................... 275
Un esempio di livelock ...................................................................... 276
Concorrenza con le API ad alto livello ......................................................... 279
Il package java.util.concurrent ............................................................ 280
Il package java.util.concurrent.locks ................................................... 283
Il package java.util.concurrent.atomic ................................................ 285
Capitolo 18 Input/Output: stream e fi le .......................................... 287
Utilizzo degli stream .................................................................................... 287
Alcuni metodi del tipo BufferedReader.............................................. 292
Alcuni metodi del tipo BufferedWriter .............................................. 292
Scansione e formattazione del testo .............................................................. 293
Le nuove API per l’input e l’output (NIO.2) ................................................ 295
L’interfaccia Path ............................................................................... 296
La classe Files ..................................................................................... 298
L’interfaccia PathMatcher ................................................................... 303
L’interfaccia FileVisitor ...................................................................... 304
L’interfaccia WatchService .................................................................. 306
Capitolo 19 Progettazione di interfacce utente ............................. 309
Container .................................................................................................... 312
Il container JFrame ............................................................................ 313
Il container JDialog ............................................................................ 315
Il container JApplet ............................................................................ 319
Il container JPanel .............................................................................. 321
Il container JTabbedPane ................................................................... 322
Il container JScrollPane ...................................................................... 325
Il container JSplitPane ........................................................................ 327
I container JDesktopPane e JInternalFrame ........................................ 329
Il container JToolBar .......................................................................... 331
Layout manager ........................................................................................... 333
Il layout manager BorderLayout ......................................................... 334
Indice generale ix
Il layout manager BoxLayout .............................................................. 336
Il layout manager CardLayout ............................................................ 338
Il layout manager FlowLayout ............................................................ 340
Il layout manager GridLayout ............................................................. 341
Il layout manager GridBagLayout ....................................................... 343
Il layout manager GroupLayout .......................................................... 346
Il layout manager SpringLayout .......................................................... 350
Posizionamento assoluto dei componenti ........................................... 352
Posizionamento dei componenti in profondità ................................... 354
Controlli grafi ci di interfaccia ...................................................................... 356
Il controllo JLabel .............................................................................. 356
Il controllo JButton ............................................................................ 358
Il controllo JCheckBox ...................................................................... 359
Il controllo JRadioButton .................................................................. 361
Il controllo JTextField ........................................................................ 362
Il controllo JPasswordField ................................................................. 363
Il controllo JFormattedTextField ........................................................ 365
Il controllo JTextArea......................................................................... 369
Il controllo JComboBox .................................................................... 370
Il controllo JList ................................................................................. 373
Il controllo JSlider .............................................................................. 376
Il controllo JSpinner .......................................................................... 378
Il controllo JTree ............................................................................... 380
Il controllo JColorChooser ................................................................ 382
Il controllo JFileChooser .................................................................... 384
Il controllo JTable .............................................................................. 387
Il controllo JProgressBar ..................................................................... 391
Il controllo JToolTip .......................................................................... 394
Il controllo JSeparator ........................................................................ 396
Il controllo JEditorPane ..................................................................... 398
Il controllo JTextPane ........................................................................ 400
Menu .......................................................................................................... 403
Barre dei menu .................................................................................. 403
Menu contestuali ............................................................................... 409
Gestione degli eventi ................................................................................... 412
Eventi di tipo ActionEvent ................................................................. 416
Eventi di tipo CaretEvent .................................................................. 417
Eventi di tipo FocusEvent .................................................................. 418
Eventi di tipo ItemEvent .................................................................... 420
Eventi di tipo KeyEvent ..................................................................... 421
Eventi di tipo MouseEvent e MouseWheelEvent ............................... 423
Eventi di tipo MenuEvent, MenuKeyEvent e MenuDragMouseEvent ... 427
Eventi di tipo WindowEvent .............................................................. 430
Trasferimento dei dati .................................................................................. 432
Drag & drop ...................................................................................... 433
Clipboard .......................................................................................... 444
Integrazione con il desktop (JDIC) .............................................................. 450
La classe Desktop ............................................................................... 451
Le classi SystemTray e TrayIcon .......................................................... 453
Splashscreen ................................................................................................ 456
Scelta del look & feel ................................................................................... 459
Concorrenza con Swing .............................................................................. 461
La classe SwingWorker ....................................................................... 462
Capitolo 20 Programmazione di rete .............................................. 467
Teoria di base .............................................................................................. 467
Classifi cazione delle reti ..................................................................... 468
Livelli e protocolli di rete ................................................................... 469
Il modello OSI e la suite TCP/IP ....................................................... 471
Trasmissione dei dati e mezzi trasmissivi ............................................. 473
Indirizzi IP ........................................................................................ 473
Il protocollo TCP .............................................................................. 476
Il protocollo UDP ............................................................................. 477
DNS ............................................................................................... 478
La posta elettronica ............................................................................ 480
Il World Wide Web ............................................................................. 482
Le API per l’accesso alle interfacce di rete .................................................... 486
Alcuni metodi del tipo NetworkInterface ........................................... 489
Alcuni metodi del tipo InetAddress .................................................... 489
Utilizzo degli URL ..................................................................................... 490
Alcuni metodi del tipo URL ............................................................. 494
Alcuni metodi del tipo UrlConnection .............................................. 495
Utilizzo dei socket ....................................................................................... 495
Alcuni metodi del tipo ServerSocket .................................................. 503
Alcuni metodi del tipo Socket ............................................................ 503
Utilizzo dei datagrammi .............................................................................. 503
Alcuni metodi del tipo DatagramSocket ............................................. 507
Alcuni metodi del tipo DatagramPacket ............................................. 507
Capitolo 21 Programmazione dei database .................................... 509
Concetti propedeutici .................................................................................. 510
Introduzione al linguaggio SQL ................................................................... 512
Inserimento dei record ....................................................................... 515
Selezione dei record ........................................................................... 516
Aggiornamento dei record ................................................................. 518
Cancellazione di record ...................................................................... 518
Stored procedure ............................................................................... 518
L’architettura JDBC ..................................................................................... 522
Connessione a un database ........................................................................... 524
Alcuni metodi del tipo DriverManager .............................................. 528
Resultset e statement ................................................................................... 528
Navigazione nei resultset .................................................................... 531
Resultset modifi cabili ........................................................................ 537
Alcuni metodi del tipo ResultSet ....................................................... 540
Alcuni metodi del tipo Statement ....................................................... 540
Prepared statement ...................................................................................... 541
Alcuni metodi del tipo PreparedStatement ......................................... 543
Callable statement ........................................................................................ 544
Alcuni metodi del tipo CallableStatement .......................................... 547
Metadati ...................................................................................................... 547
Alcuni metodi del tipo DatabaseMetaData ......................................... 553
Alcuni metodi del tipo ResultSetMetaData ........................................ 553
Alcuni metodi del tipo ParameterMetaData ........................................ 554
Transazioni .................................................................................................. 554
Utilizzo delle transazioni con JDBC ................................................... 558
Rowset........................................................................................................ 558
L’implementazione del tipo JdbcRowSet ............................................ 559
Indice generale xi
L’implementazione del tipo CachedRowSet ....................................... 560
L’implementazione del tipo WebRowSet ............................................ 562
L’implementazione del tipo FilteredRowSet ....................................... 563
L’implementazione del tipo JoinRowSet ............................................ 565
Capitolo 22 Sviluppo di applicazioni web ....................................... 567
Uno sguardo alla piattaforma JEE ................................................................ 567
Elementi e servizi di base ................................................................... 568
Modello architetturale ........................................................................ 569
Principali tecnologie per lo sviluppo web ........................................... 571
Servlet ......................................................................................................... 572
Utilizzo delle annotazioni .................................................................. 575
Processing dei parametri di una richiesta ............................................ 578
Alcuni metodi del tipo HttpServletRequest ....................................... 580
Alcuni metodi del tipo HttpServletResponse ..................................... 581
Persistenza dei dati ............................................................................. 581
JavaServer Pages ........................................................................................... 585
Una prima applicazione ..................................................................... 587
Azioni standard .................................................................................. 591
Unifi ed expression language ............................................................... 595
JSP Standard tag library (JSTL) .................................................................... 599
Libreria dei tag core ........................................................................... 600
Libreria dei tag formatting e i18n ....................................................... 603
Libreria dei tag XML ......................................................................... 608
Libreria dei tag SQL .......................................................................... 610
Libreria di funzioni ............................................................................ 612
JavaServer Faces ........................................................................................... 614
Una prima applicazione ..................................................................... 616
Ajax con le JSF .................................................................................. 620
Appendice A Installazione e confi gurazione della piattaforma JSE ..625
Appendice B Installazione e confi gurazione della piattaforma JEE ..627
Appendice C Installazione e confi gurazione di MySQL .................... 629
Windows: installazione e confi gurazione ...................................................... 629
GNU/Linux: installazione e confi gurazione ................................................. 630
Creazione di un utente ................................................................................ 630
Appendice D Installazione e utilizzo di NetBeans ............................ 631
Sviluppare applicazioni Java SE con l’IDE .................................................... 632
Sviluppare applicazioni Java EE con l’IDE .................................................... 636
Appendice E Applet ............................................................................ 637
Creazione di applet ...................................................................................... 638
Sicurezza degli applet ................................................................................... 641
I
ndice analitico...................................................................................... 643