Schița de curs
Introducere în Java
- Istoria și evoluția Java
- Prezentare generală a versiunilor Java și a actualizărilor
- Ce este nou în Java 17
- Configurarea kitului de dezvoltare Java (JDK 17) și a IDE-ului
Java Structura programului
- Scrierea unui program Java simplu
- Java Prezentare generală a sintaxei
- Compilarea și rularea aplicațiilor Java
Tipuri de date și variabile
- Tipuri de date primitive și clase wrapper
- Declararea variabilelor și a constantelor
- Conversia tipurilor și castingul
Operatori în Java
- Operatori aritmetici, relaționali, logici și bitwise
- Precedența și asociativitatea operatorilor
Declarații privind fluxul de control
- Instrucțiuni condiționale (if-else, switch)
- Construcții în buclă (for, while, do-while)
- Expresii switch îmbunătățite (Java 17 feature)
Introducere în conceptele OOP
- Clase și obiecte
- Încapsulare, moștenire, polimorfism și abstractizare
Crearea claselor și obiectelor
- Declararea și inițializarea obiectelor
- Cuvântul-cheie this
- Constructori (implicit și parametrizat)
Moștenirea
- Extinderea claselor (cuvântul-cheie extends)
- Metoda overriding și cuvântul-cheie super
- Clase și metode abstracte
Polimorfismul
- Polimorfismul în timp de compilare vs. polimorfismul în timp de execuție
- Supraîncărcarea și supraordonarea metodelor
Interfețe
- Definirea și implementarea interfețelor
- Interfețe funcționale și metode implicite
Clase de înregistrări (Java 17 feature)
- Înțelegerea înregistrărilor în Java 17
- Modul în care înregistrările simplifică încapsularea datelor
Generice în Java
- Înțelegerea parametrilor de tip
- Clase, metode și interfețe generice
- Tipuri delimitate și caractere sălbatice
Gestionarea excepțiilor
- Tipuri de excepții (verificate și neverificate)
- Blocuri Try-catch-finally
- Aruncarea și capturarea excepțiilor
- Crearea de excepții personalizate
Java Cadrul colecțiilor
- Interfețele List, Set, Map și Queue
- Implementări populare: ArrayList, HashMap, HashSet
- Iteratori și bucle for îmbunătățite
Expresii lambda Express și funcționale Programming
- Introducere în expresiile lambda
- Sintaxă și utilizare
- Interfețe funcționale
API pentru fluxuri
- Prezentare generală a Java fluxurilor
- Operațiuni de flux (filtrare, mapare, reducere)
- Fluxuri paralele și considerații privind performanța
Clase sigilate
- Definirea și utilizarea claselor sigilate
- Subclase permise și restricții
Potrivirea tiparelor pentru instanceof (Java 17 feature)
- Simplificarea verificărilor de tip cu potrivirea modelelor
Blocuri de text
- Lucrul cu blocuri de text cu mai multe linii în Java
- Comparație cu manipularea tradițională a șirurilor de caractere
Îmbunătățiri aduse înregistrărilor și serializării
- Serializarea și compatibilitatea retroactivă
- Cum îmbunătățesc înregistrările lizibilitatea și întreținerea codului
Deprecierea și eliminarea caracteristicilor
- API depreciate în Java 17
- Eliminarea caracteristicilor învechite
Îmbunătățiri ale comutatorului Expression
- Potrivirea tiparelor în switch
- Utilizarea expresiilor switch pentru un cod mai curat
Funcție străină și memorie API (Incubator)
- Prezentare generală a modulului incubator
- Lucrul cu cod nativ în Java
Java Sistemul de module (Proiectul Jigsaw)
- Introducere în module în Java
- Crearea și utilizarea modulelor
- Descriptori de module și module-info.java
- Avantajele modularizării
Concurrență și multithreading
- Introducere în fire și multithreading
- Interfața Runnable și interfața Callable
- Sincronizarea, blocajele și siguranța firelor
Asincron Programming cu CompetableFuture
- Scrierea codului asincron
- Utilizarea CompetableFuture pentru operații neblocante
Implementarea aplicațiilor Java
- Crearea și execuția fișierelor JAR
- Ambalarea și distribuirea aplicațiilor Java
- Introducere în GraalVM (opțional)
Cele mai bune practici și optimizarea codului
- Scrierea unui cod Java eficient și ușor de întreținut
- Capcane comune de performanță și cum să le evitați
- Tehnici de refactorizare a codului
Rezumat și pași următori
Cerințe
- Cunoștințe de bază în programare
Audiență
- Dezvoltatori de software
- Programatori