Java verziófrissítés

Szoftverfejlesztés | Java
Nehézség: Haladó
Tanfolyam hossza: 3 nap

Java 8 dátum- és időkezelés, funkcionális programozás, lambdák, Stream API, reaktív programozás, modulrendszer

CÉLOK
A ma aktívan dolgozó Java-fejlesztők jelentős része még Java 5-6, esetleg Java 7-8 verziókkal tanult meg fejleszteni. Azonban tapasztalataink szerint az utóbbiak nagy része sem ismeri elég mélyen az újabb verziók által nyújtott újdonságokat, mert az alapozó kurzusok ezeket nem érintik. A munkába állást követően pedig korlátoznak a projektek gyakran szűkös határidői, és ritkán jut idő a korábban megszerzett tudás frissítésére. A tanfolyam célja, hogy a résztvevőket felvértezze az újabb verziók eszközeinek ismeretével, hogy tisztább, jobban érthető, hatékonyabb és a potenciálisan kevesebb hibát tartalmazó kódot tudjanak írni a fejlettebb nyelvi eszközök felhasználásával.

TEMATIKA

• A Java 7 új lehetősgeinek gyors átismétlése
– A diamond operátor
– Bináris literálok és aláhúzásjelek számokban
– Multi-catch blokk és erőforráskezelés
– String a switch-ben
– NIO 2 API
– Fork-Join framework

• Többszörös öröklés a Java 8-ban
– Interfészek továbbfejlesztésének lehetőségei
– Default metódusok használata

• A Java 8 Date API lehetőségei
– Dátumok és időpontok önálló és együttes kezelése a LocalDate, LocalTime és LocalDateTime osztályokkal
– Az Instant osztály használata
– Időszakok és időtartamok kezelése a Period és Duration osztályokkal
– Időzónák szerint nyilvántartott idő kezelése
– Időzónákkal és óraállítással kapcsolatos változások kezelése
– Idő és dátum formázása
– Kalkuláció dátumokkal és idővel, a TemporalUnit osztály.

• Funkcionális programozás Java 8 alatt
– A funkcionális programozás alapelvei
– A funkcionális interfész fogalma
– A lambda-kifejezések szintaxisa
– Az osztálykönyvtár általános funkcionális interfészei: Predicate, Consumer, Function, Supplier, UnaryOperator
– Kétargumentumos funkcionális interfészek

• A Java 8 Stream API-ja
– A streamek használata és általános jellemzői
– Az Optional<T> használata
– Streamek létrehozása
– Köztes műveletek streameken: sorted(), distinct(), limit(), skip(), filter(), map(), flatMap(), peek()
– Terminális művelet streameken
– Elemek kiválogatása és feltétel kiértékelése a findFirst(), findAny(), allMatch(), anyMatch() és noneMatch() metódusokkal
– Gyakori redukciós műveletek, általános redukció
– Eredmények kigyűjtése kollekciókba, Collectorok használata
– Hatékonysági megfontolások
– Streamek támogatása saját adatforráshoz

• A Java 9 interaktív shellje (JShell)
– Az exploratory programming módszere
– A JShell működésének áttekintése
– Egyszerű példák megoldása JShellel

• A Java 9 modulrendszere
– A modulrendszer bevezetésének okai: erős egységbezárás, JAR hell, optimizáció
– Modulok definíciója modulleíróval
– Függőségek használata
– Csomagok megnyitása fordítási időre (export)
– Csomagok megnyitása futási időre (open)
– Qualified export/open
– A Service Locator minta és a ServiceLoader
– Privát API-k és kompatibilitási megfontolások
– Futásidejű imidzsek készítése a jlink eszközzel
– Tooling támogatás

• A Java 9 konkurenciakezelési újdonságai
– Reaktív programozás, reaktív streamek
– A Flow API interfészei
– A SubmissionPublisher
– A CompletableFuture újdonságai

• A Java 9 új HttpClient API-ja
– Inkubátor modulok
– Az új API motivációi és céljai
– Az API fő osztályai és interfészei
– Szinkron kérések küldése
– Aszinkron kérések küldése
– Aszinkron kérések küldése server push üzenetek fogadásával
– A válasz feldolgozása
– WebSocket kommunikáció

• Kisebb nyelvi bővítések a Java 9-10 alatt
– @SafeVarargs private metódusokon
– Egyszerűbb try-with-resources
– Diamond operátor anonim osztályokkal
– Aláhúzásjel, mint érvénytelen azonosító
– Private metódusok interfészekben
– Factory metódusok a Collection API-ban
– Bővítések a @Deprecated annotációhoz
– Processzkezelési újdonságok
– Platformfüggő desktop funkciók
– A Java 9 StackWalker API
– Egységes naplózás
– JVM-beli egységes naplózás
– Multi-release JARs
– A típusinferencia és a var kulcsszó