Java è un linguaggio di programmazione orientato agli oggetti, progettato per essere il
più possibile indipendente dalla piattaforma di esecuzione. Uno dei principi fondamentali del linguaggio è
espresso dal motto write once, run anywhere (WORA): il codice compilato che viene eseguito su una piattaforma
non deve essere ricompilato per essere eseguito su una piattaforma diversa. Il prodotto della compilazione
è infatti in un formato chiamato bytecode che può essere eseguito da una qualunque implementazione di un
processore virtuale detto Java Virtual Machine.
Java risulta essere uno dei linguaggi di programmazione più usati al mondo, specialmente per applicazioni
client-server.
Tempi, costi e argomenti verranno adattati in base al livello dei partecipanti al corso, questo ci permetterà di costruire un programma su misura di azienda.
GIORNO 1
- INTRODUZIONE AL CORSO
- Test Livello preparazione
- Richiami Java Base
- Paradigmi della programmazione ad oggetti
- CARATTERISTICHE AVANZATE DEL LINGUAGGIO
- COSTRUTTORI E POLIMORFISMO
- Overload dei costruttori
- Override dei costruttori
- COSTRUTTORI ED EREDITARIETÀ SUPER
- Super e i costruttori
- ALTRI COMPONENTI DI UN’APPLICAZIONE JAVA
- Classi Innestate e Anonime
- COSTRUTTORI E POLIMORFISMO
GIORNO 2
- MODIFICATORI, PACKAGE ED INTERFACCE
- MODIFICATORI D’ACCESSO
- Modificatore final
- Modificatore static
- Modificatore abstract
- INTERFACCE
- Regole di conversione dei tipi
- Ereditarietà multipla
- Differenze tra interfacce e classi astratte
- TIPI ENUMERAZIONI
- Ereditarietà ed enum
- Costruttori ed enum
- Quando utilizzare un’enum
- MODIFICATORI DI USO RARO
- Native
- Volatile
- Strictfp
- CICLO FOR MIGLIORATO ED ENUMERAZIONI
- Limiti del ciclo for migliorato
- Implementazione di un tipo Iterable
- Perché usare le enumerazioni
- Caratteristiche avanzate di un’enumerazione
- MODIFICATORI D’ACCESSO
- STATIC IMPORTS E VARARGS
- ANNOTAZIONI (METADATA)
- DEFINIZIONE DI ANNOTAZIONE (METADATA)
- Tipologie di annotazioni
- Sintassi
- ANNOTAZIONI (META-ANNOTAZIONI)
- Target
- Retention
- Documented
- Inherited
- DEFINIZIONE DI ANNOTAZIONE (METADATA)
GIORNO 3
- LAVORARE CON LE COLLECTIONS
- Introduzione al Java Collections Framework
- L’interfaccia Collection
- Set
- List
- Queue
- Deque
- Map
- Object
- Ordering
- SortedSet
- SortedMap
- INTRODUZIONE ALL’INPUT-OUTPUT
- Character Stream
- Byte Stream
- Input ed Output "classici"
- Lettura di input da tastiera
- Gestione dei file
- Serializzazione di oggetti
- INTRODUZIONE AL NETWORKING
GIORNO 4
- AUTOBOXING, AUTO-UNBOXING E GENERICS
- Interfaccia Iterator
- Interfaccia Map
- Ereditarietà di generics
- Wildcards
- Creare propri tipi generic
- GESTIONE DEI THREAD
- INTRODUZIONE AI THREAD
- Definizioni e "multi-threading".
- La classe Thread
- L'interfaccia Runnable
- DEFINIZIONI E “MULTI-THREADING”
- ThreadRace
- Comportamento Windows (Time-Slicing o Round-Robin scheduling)
- Comportamento Unix (Preemptive scheduling)
- INTRODUZIONE AI THREAD
GIORNO 5
- LAVORARE CON I THREAD
- THREAD E SINCRONIZZAZIONE
- Analisi di Synch
- Monitor
- Lock
- LA COMUNICAZIONE FRA THREAD
- THREAD E SINCRONIZZAZIONE
- FAST RECAP & WORKSHOP
- Esercizi svolti
- Prove pratiche di programmazione
GIORNO 5
- JAVA BEST PRACTICES
- PROBLEMI NOTI
- DESIGN PATTERNS
- Decorator
- Builder
- Factory
- Façade
- Chain of responsibility