Java — platformfüggetlen, objektumorientált programozási nyelv (áttekintés)
Ismerd meg a Java-t: platformfüggetlen, objektumorientált nyelv, JVM-mel, LTS kiadásokkal és Android-támogatással — áttekintés kezdőknek és fejlesztőknek.
Java a Sun Microsystems által létrehozott programozási nyelv és egy nagy ökoszisztéma (JVM, JDK, könyvtárak). A Sun később az Oracle Corporation, tulajdonába került, amely azóta is részt vesz a Java fejlesztésében, de a nyílt forrású OpenJDK közösség és több más szereplő is fontos kiadóként és karbantartóként működik. A kezdő időszakot követően a Java-kiadások 2017 óta fél éves ciklusban jelennek meg; emellett rendszeresen kijelölnek hosszú távon támogatott (LTS) verziókat (például Java 11, Java 17 és Java 21). A licencelés és a támogatási modellek változtak az évek során, ezért a gyakorlatban érdemes mindig azt a JDK-kiadást választani, amelyik a célplatformnak és a támogatási igényeknek megfelel.
A Java, amelyet fejlesztés alatt Oaknak hívtak, objektumorientált nyelv: a programok elsősorban objektumokra épülnek, amelyek egymással üzeneteket váltva oldanak meg feladatokat. Ugyanakkor a Java nem „tiszta” objektumorientált nyelv, mert vannak alapvető típusok (primitívek), és az idő során funkcionális elemeket is kapott (pl. lambda kifejezések Java 8-tól). A szintaxisa és az általános felépítése hasonló lehet más C-származékokhoz: a Java-kód úgy néz ki, mint a C, C++ vagy C#, de az ezekben a nyelvekben írt kódok általában nem futtató- vagy fordítási kompatibilisek Java környezetben változtatás nélkül.
A Java számos különböző operációs rendszeren fut, beleértve az Androidot, a világ egyik legelterjedtebb mobil operációs rendszerét. (Az Androidon a Java-nyelv alapú megoldások futtathatók, de a Google saját futtatókörnyezetet — Dalvik/ART — használ, és a fejlesztők körében ma a Kotlin is erősen elterjedt és preferált nyelv, ugyanakkor teljes mértékben interoperábilis a Java-val.) A platformfüggetlenség alapja a Java bájtkód: a forráskódból a fejlesztők általában nem közvetlenül gépi kód-ot, hanem Java bájtkódot állít elő a fordító. A futtatáskor a Java Virtual Machine (JVM) értelmezi, és a legtöbb implementáció JIT (just-in-time) fordítással vagy más optimalizációval gépi kódra alakítja a bájtkódot, így jó teljesítményt ér el különböző platformokon.
Fő jellemzők
- Platformfüggetlenség: „Write once, run anywhere” szemlélet a JVM és a bájtkód révén.
- Objektumorientáltság: osztályok, öröklődés, kapszulázás és polimorfizmus a nyelv alapjai.
- Automatikus memóriakezelés: szemétgyűjtés (garbage collection) csökkenti a kézi memória-kezelés hibáit.
- Statikus típusellenőrzés: letisztult típusrendszer fordítási időben talál hibákat.
- Gazdag standard könyvtár: I/O, hálózatkezelés, párhuzamosság, gyűjtemények, biztonság stb.
- Párhuzamosság támogatása: beépített szálkezelés és magasabb szintű eszközök (Executor framework, concurrent csomag).
- Biztonság és portolhatóság: sandbox modell, verifikáció és erőteljes futtatási környezeti ellenőrzések.
Mit jelentenek a rövidítések?
- JVM (Java Virtual Machine) — a futtatókörnyezet, amely a bájtkódot végrehajtja.
- JRE (Java Runtime Environment) — JVM + a futtatáshoz szükséges könyvtárak.
- JDK (Java Development Kit) — fejlesztői csomag, amely tartalmazza a fordítót, eszközöket és a JRE-t.
A Java széles körben használatos szerveroldali alkalmazásokban, beágyazott rendszerekben, vállalati szoftverekben, valamint Android alkalmazások fejlesztésében. A nyelv és az ökoszisztéma továbbra is aktív fejlesztés alatt áll, és a verziók, kiadások és licencfeltételek figyelemmel kísérése ajánlott a projektek hosszú távú támogatása érdekében.
Java fogalmak
A Javát öt fő cél elérése érdekében fejlesztették ki. Ezek a következők:
- A Java legyen könnyen tanulható, objektumorientált és elosztott.
- A Javának biztonságosnak és erősnek kell lennie.
- A Java nem függhet semmilyen számítógépes architektúrától vagy platformtól.
- A Java-nak jól kell működnie.
- A Java-nak képesnek kell lennie arra, hogy legyen egy hozzá írt értelmező, és támogatnia kell a párhuzamosságot, valamint dinamikus tipizálást kell használnia.
Java platform
A Java platform a Sun Microsystems szoftvertermékeinek egy csoportjára utal. A platformot Java programok fejlesztésére és futtatására használják. A platform tartalmazza a futtatómotort (az úgynevezett Java Virtual Machine-t), amely lehetővé teszi, hogy a Java programok ugyanazt a feladatot végezzék különböző számítógépes rendszereken.
Ezt a képességet, hogy a szoftvert egy platformon lehet fejleszteni és más platformokon futtatni, "keresztplatformos képességnek" nevezzük.
Java program példa
Egy "Hello World" Java program példája:
A Java programok típusai
Sokféle Java program létezik, amelyek különbözőképpen futnak:
- Java Applet - Java nyelven írt kis program, amelyet egy weboldalról töltenek le, és az ügyfélszámítógépen lévő webböngészőben hajtanak végre.
- Alkalmazás - az ügyfélszámítógépen fut. Ha online, akkor a futtatás előtt le kell tölteni.
- JAR fájl (Java archívum) - Java fájlok egyetlen fájlba való csomagolására szolgál (majdnem pontosan olyan, mint egy .zip fájl).
- Servlet - webszervereken fut, és segít a weboldalak létrehozásában.
- Swing alkalmazás - olyan alkalmazás készítésére szolgál, amely grafikus felhasználói felülettel (ablakok, gombok, menük stb.) rendelkezik.
- EJB - webkiszolgálón fut, és nagy, összetett weboldalak fejlesztésére használják.
Előnyök
A Java-t általában a diákok programozásának tanítására használják, mint első nyelvet, de a szakemberek is használják.
- A Java megköveteli, hogy minden változót inicializáljunk. Néhány régebbi nyelv, például a C, lehetővé teszi a változók inicializálatlanságát, ami véletlenszerű hibákat okozhat, rejtélyes hibákkal.
- A Java megköveteli, hogy minden metódus deklaráljon egy visszatérési típust - a metódusnak mindig értéket kell visszaadnia, kivéve, ha a visszatérési típusa void. Ez szintén megelőzi a hibákat.
- A Java számos osztállyal és metódussal, a Java API-val rendelkezik, amelyeket anélkül lehet használni, hogy annyi kódot kellene "a semmiből" kifejleszteni.
- A C-től eltérően a Java primitív típusok, mint például az int, mindig azonos méretűek a bitek számát tekintve, ami segít a platformok közötti kompatibilitás elérésében.
- Régebben úgy gondolták, hogy a Java lassabb, mint a C, de ez az utóbbi években már kevésbé fontos, mert a számítógépek gyorsabbak.
- A Java rendelkezik kivételkezeléssel, amely megköveteli a programozótól, hogy kezelje a hibafeltételeket, például a bemeneti/kimeneti hibákat.
- Az egy Java platformon lefordított kód futtatható más, Java-t támogató platformokon a forráskód és a bájtkód módosítása nélkül. Ez azt jelenti, hogy valaki készíthet egy Java programot egy Windows számítógépre, és futtathatja azt egy Linux vagy egy Mac számítógépen.
Kritika
A Javát is kritizálták. A kritikák közül néhány a következő:
- A generikákat úgy adták hozzá a Javához, hogy a meglévő kód továbbra is futtatható maradjon. Ezt a típustörléssel valósították meg. Ez azt jelenti, hogy a fordítás során a generikus argumentum tényleges típusa eltávolításra kerül. Ez időnként ahhoz vezethet, hogy a Java-értelmező váratlanul viselkedik.
- A Java nem rendelkezik előjel nélküli egész szám típusokkal, amelyeket a C-hez hasonló nyelvek nagymértékben használnak. Ez azt is jelenti, hogy a C és a Java programok között nem lehet közvetlenül numerikus adatokat cserélni. A kriptográfia is bizonyos mértékig ilyen típusokra támaszkodik; ez megnehezíti a kriptográfiát használó alkalmazások Java nyelven történő megírását.
- Az IEEE definiálta a lebegőpontos aritmetikára vonatkozó szabványt, az IEE 754-et. A Java a szabvány jellemzőinek csak egy részét támogatja.
Kérdések és válaszok
K: Mi a neve a Sun Microsystems által létrehozott programozási nyelvnek?
V: A Sun Microsystems által létrehozott programozási nyelv neve Java.
K: Ki támogatja és tartja naprakészen jelenleg a Java-t?
V: Jelenleg az Oracle Corporation támogatja és tartja naprakészen a Java-t.
K: Melyek a Java jelenlegi hosszú távú támogatási (LTS) verziói?
V: A Java jelenlegi hosszú távú támogatású (LTS) verziói a 17-es, a 11-es és a 8-as verzió.
K: Mikor jelent meg a Java legújabb verziója?
V: A Java legújabb, 19-es verziója 2022 szeptemberében jelent meg.
K: Van más vállalat is, amelyik támogatja a Java-t az Oracle-en kívül?
V: Igen, az Eclipse Adoptium is támogatja a Java-t legalább 2026 májusáig a 8-as verzió esetében és legalább 2027 szeptemberéig a 17-es verzió esetében.
K: Milyen típusú kódot használ a Java?
V: A Java objektumorientált kódot használ, ami azt jelenti, hogy olyan objektumokra épül, amelyek együttműködve végzik el a programok feladatát. Hasonlít a C, a C++ vagy a C# nyelvekhez, de az ezekkel a nyelvekkel írt kód a legtöbb esetben nem fog változtatás nélkül működni.
K: Hogyan teszi magát platformfüggetlenné a Java?
V: A Java úgy teszi magát platformfüggetlenné, hogy a fordító a kódot gépi kód helyett egy speciális formátumba, a bytecode-ba alakítja át. Ez azt jelenti, hogy a program végrehajtásakor a bytecode-ot egy virtuális gépnek nevezett speciális program értelmezheti, amely lefordítja azt gépi kódra, így az különböző operációs rendszereken, például az Androidon is futhat.
Keres