A Java 15 újdonságai
Tartalomjegyzék
Folytatjuk népszerű blogcikk-sorozatunkat, ahol verziónként nézzük át a Java legnépszerűbb újdonságait. A Java 15 több szignifikáns újdonságot hozott. Ebben a blogcikkben ezeket fogjuk átvenni. Ha egy cikkben szeretnéd látni minden egyes Java verzió újdonságait a Java 4-től kezdve, ide kattintva tudod megnézni.
Szövegblokkok
A többsoros vagy úgynevezett multi-line String-ek, szövegblokkok, már a Java 13-ban is bekerültek experimentális (kísérleti) feature-ként. A Java 15-be ez véglegesítve is bekerült.
Hogy volt korábban?
A Java 15-öt megelőzően körülményes és esztétikailag meglehetősen otromba módon tudtuk több sorban leírni a szöveges információinkat:
String xy = "Szia!\n"
+ "Üdvözöllek az A&K Akadémia Java 15-ről szóló blogcikkében! \n"
+ Ez egy többsoros szöveg reprezentációja a Java 15-öt megelőzően. \n"
+ "Körülményesebb, mint kéne, ugye? :) \n";
A sok + jel a sorok elején és \n karakter a sorok végén sokkal körülményesebbé teszi a többsoros szövegek kódbeli megjelenítését, mint amilyen lehetne.
Hogy van a Java 15 óta?
String xy = """
Szia!
A Java 15 óta sokkal gördülékenyebb a többsoros String-ek reprezentációja.
Szuper, ugye? :)""";
Ahogy látjuk, sokkal egyszerűbb, esztétikusabb és emészthetőbb lett az ilyenfajta String-ek írása a Java-ban. Junior kurzusunkban nagy figyelmet szentelünk arra, hogy hallgatóink tudják, hogy melyik feature milyen Java verzió óta van jelen, hiszen amikor az iparba mennek dolgozni, ott is tudniuk kell, hogy egy adott projekten milyen eszközök elérhetőek számukra a Java tudástárából.
Sealed class-ok (előzetes feature)
Más programnyelvekben (például a C#-ban) korábban is jelen voltak a sealed class-ok. Magyarul ezt úgy tudnánk lefordítani, hogy lezárt osztályok, de senki nem nevezi őket így 🙂 A programozásban a terminológia nagy része angol. Ezért fontos, hogy angolul tanuld meg te is, hiszen a tudásbázis és a közösség is sokkal erősebb angolul, míg magyarul egyáltalán nem biztos, hogy megoldást tudsz találni a problémádra.
Mik azok a sealed class-ok?
A sealed class-ok olyan osztályok, amelyeknél explicite megmondhatjuk, hogy mik azok az osztályok, amik kiterjeszthetik (extendálhatják) őket. A többi osztálynak tiltott az ebből az osztályból való öröklés. Nézzük például ezt a példát:
public sealed class Person permits Employee, Manager, Employer {
}
Ezzel azt mondjuk, hogy a Person nevű osztályt kizárólag az Employee és az Employer osztályoknak van joga extendálni. Fontos, hogy minden olyan class-nál, ami egy sealed class-t extendál, explicite meg kell adnunk, hogy az adott osztály:
- final, azaz nem extendálható tovább
- sealed, azaz csak bizonyos osztályoknak engedjük meg, hogy ezt az osztályt jelöljék meg szülőosztályként
- non-sealed, azaz bármilyen osztálynak megengedjük, hogy ezt az osztályt jelöle meg szülőosztályként
Mindezek konkrét példákkal szemléltetve:
public final class Employee extends Person {
}
public sealed class Manager extends Person permits TechnicalManager, BusinessManager {
}
public non-sealed class Manager extends Person {
}
A fejlesztők jóvoltából a Reflection API is kiegészül a következő metódusokkal, hogy tovább könnyítse a munkánkat:
java.lang.constant.ClassDesc[] getPermittedSubclasses();
boolean isSealed()
A fent taglaltakon kívül még több fontos dolog történt, például a nagyszerű Shenandoah GC vagy az úgynevezett hidden class-ok bevezetése, illetve több későbbi roppant fontos feature előzetes (preview) verziói is megjelentek / tovább fejlődtek, de ezeket ebben a cikkben nem taglaljuk.
Természetesen itt rengeteg kérdés felmerül, például:
- Mit jelent az, hogy public?
- Mit jelent az, hogy class?
- Mit jelent az, hogy extends?
- Mi az az API?
- Mi az a Reflection API?
- Mi az a GC?
A cikkünkben ezekkel a kérdésekkel nem foglalkozunk, de ha érdekel a téma, nézd meg ingyenes YouTube-sorozatunkat és iratkozz be junior kurzusunkra!
Az objektumorientáltság alapjaival ebben a YouTube videónkban foglalkozunk:
Sorozatunk következő részét itt találod meg.
Szerző: Nagy Csongor