Il corso Java Programming Language consente ai partecipanti di apprendere la sintassi del linguaggio di programmazione Java, la programmazione orientata agli oggetti con Java, la creazione di interfacce grafiche utente (GUI), la gestione delle eccezioni, le funzionalità di I/O per i file, i thread e le funzioni di rete. I programmatori che già hanno familiarità con i concetti della programmazione object-oriented potranno imparare a sviluppare applicazioni Java.
Al termine del corso i partecipanti saranno in grado di:
- Creare applicazioni in Java che utilizzano la programmazione object-oriented del linguaggio Java, quali incapsulamento, ereditarietà e polimorfismo
- Eseguire un'applicazione Java dalla riga di comando
- Utilizzare i tipi di dati e le espressioni della tecnologia Java
- Utilizzare i costrutti di controllo del flusso
- Utilizzare array e altre raccolte di dati
- Implementare tecniche di error-handling utilizzando la gestione delle eccezioni
- Creare layer di presentazione (graphic form) event-driven usando componenti Swing: pannelli, pulsanti, etichette, campi di testo e aree di testo
- Implementare le funzionalità di I/O per leggere e scrivere nei file di dati e di testo e comprendere i flussi di I/O avanzati
- Creare un semplice client TCP/IP in grado di comunicare con un server usando i socket
- Creare programmi multithreaded
Programmazione OOP
- Definire i concetti di modellazione: astrazione, incapsulamento e pacchetti
- Descrivere il riutilizzo del codice delle applicazioni Java
- Definire i concetti di classe, membro, attributo, metodo, costruttore e pacchetto
- Utilizzare nel modo appropriato i modificatori di accesso private e public, come indicato nelle linee guida dell'incapsulamento
- Invocare un metodo su un particolare oggetto
- Usare la documentazione online sulle API Java
Identifiers, Keywords, and Types
- Usare i commenti nel codice sorgente
- Indicare le differenze tra gli identificatori validi e quelli non validi
- Riconoscere le parole chiave della tecnologia Java
- Elencare gli otto tipi primitivi
- Definire i valori letterali per i tipi numerici e testuali
- Definire i termini variabile primitiva e variabile di riferimento
- Dichiarare variabili di tipo classe
- Costruire un oggetto usando new
- Descrivere l'inizializzazione predefinita
- Descrivere il significato di una variabile di riferimento
- Specificare le conseguenze dell'assegnazione di variabili di tipo classe
Espressioni e controllo di flusso
- Indicare le differenze tra una variabile di istanza e una variabile locale
- Descrivere l'inizializzazione delle variabili di istanza
- Riconoscere, descrivere e utilizzare gli operatori di Java
- Indicare le assegnazioni ammesse e non ammesse di tipi primitivi
- Identificare le espressioni booleane e i loro requisiti nei costrutti di controllo
- Riconoscere la compatibilità di assegnazione e i cast richiesti nei tipi fondamentali
- Utilizzare i costrutti if, switch, for, while e do e le forme con etichetta di break e continue come strutture di controllo di flusso in un programma
Arrays e Vettori
- Dichiarare e creare array di primitive, classi, o tipi di array
- Indicare perché gli elementi di un array vengono inizializzati
- Spiegare il modo in cui si possono inizializzare gli elementi di un array
- Determinare il numero di elementi in un array
- Creare un array multidimensionale
- Scrivere il codice per copiare i valori da un array a un altro
Progettazione delle classi
- Definire i concetti di ereditarietà, polimorfismo, overloading, overriding e invocazione di metodi virtuali
- Usare i modificatori di accesso protected e predefinito (package-friendly)
- Descrivere i concetti di costruttore e overloading del metodo
- Descrivere le operazioni complessive di costruzione e inizializzazione di un oggetto
Advanced Class Features
- Creare variabili, metodi e inizializzatori static
- Creare classi, metodi e variabili final
- Creare e utilizzare i tipi enumerati
- Usare l'istruzione static import
- Creare classi e metodi astratti
- Creare e usare un'interfaccia
Exceptions and Assertions
- Definire le eccezioni
- Usare le istruzioni try, catch e finally
- Descrivere le categorie di eccezioni
- Identificare le eccezioni comuni
- Sviluppare programmi per gestire le eccezioni personalizzate
- Utilizzare le asserzioni
- Indicare le differenze tra l'utilizzo appropriato e non appropriato delle asserzioni
- Abilitare le asserzioni al Runtime
Collections and Generics Framework
- Descrivere le implementazioni di carattere generale delle interfacce di base del framework Collections
- Esaminare l'interfaccia Map
- Esaminare le classi delle collezioni preesistenti
- Creare ordini naturali e personalizzati implementando le interfacce Comparable e Comparator
- Usare collezioni generiche
- Usare i parametri di tipo nelle classi generiche
- Rendere più efficiente il codice non generico esistente
- Scrivere un programma per eseguire l'iterazione di una collezione
- Esaminare la funzione ottimizzata per i loop
I/O Fundamentals
- Scrivere un programma che utilizza gli argomenti dalla riga di comando e le proprietà dei sistemi
- Esaminare la classe Properties
- Costruire i nodi e i flussi di elaborazione e utilizzarli in modo appropriato
- Serializzare e deserializzare gli oggetti
- Indicare le differenze tra reader, writer e flussi ed effettuare la scelta appropriata
Console I/O and File I/O
- Leggere i dati dalla console
- Scrivere i dati nella console
- Descrivere i file e gli I/O dei file
Building Java GUIs Using the Swing API
- Descrivere la tecnologia JFC Swing
- Definire Swing
- Identificare i pacchetti Swing
- Descrivere i componenti della GUI: contenitori, componenti e gestori del layout
- Esaminare le proprietà di primo livello, di carattere generale e di carattere specialistico dei contenitori
- Esaminare i componenti
- Esaminare i gestori del layout
- Descrivere il modello Swing a thread singolo
- Creare una GUI usando componenti Swing
Handling GUI-Generated Events
- Definire gli eventi e la gestione degli eventi
- Esaminare il modello di eventi di Java SE
- Descrivere il comportamento della GUI
- Determinare l'azione dell'utente che ha dato origine a un evento
- Sviluppare listener di eventi
- Descrivere la simultaneità nelle GUI Swing e le caratteristiche della classe SwingWorker
GUI-Based Applications
- Descrivere le creazione di una barra di menu, di un menu e delle voci del menu in una GUI Java
- Indicare come modificare il colore e il tipo di carattere di un componente
Threads
- Definire un thread
- Creare thread separati in un programma Java, controllando il codice e i dati che sono utilizzati dai thread
- Controllare l'esecuzione di un thread e scrivere codice indipendente dalla piattaforma che utilizzi i thread
- Descrivere le difficoltà che possono sorgere quando più thread condividono gli stessi dati
- Utilizzare wait e notify per comunicare tra i thread
- Utilizzare synchronized per evitare il danneggiamento dei dati
Networking
- Sviluppare il codice per impostare una connessione di rete
- Conoscere il funzionamento delle reti TCP/IP
- Usare le classi ServerSocket e Socket per l'implementazione di client e server TCP/IP
Il partecipante dovrebbe essere in possesso delle competenze trattate nel corso "Fondamenti di Java"