Java — definícia, vlastnosti a verzie programovacieho jazyka
Java: definícia, kľúčové vlastnosti, verzie a LTS (8,11,14,17). Platformová nezávislosť, JVM, použitie v Android a moderné vývojové trendy.
Java je názov programovacieho jazyka vytvoreného spoločnosťou Sun Microsystems. Túto spoločnosť odkúpila spoločnosť Oracle Corporation, ktorá ho naďalej aktualizuje. Java má pravidelný plán vydaní (nové verzie približne každých šesť mesiacov) a zároveň niekoľko verzií s dlhodobou podporou (LTS). Medzi významné LTS vydania patria Java 8, Java 11 (vydaná 25. septembra 2018) a Java 17 (LTS, vydaná v septembri 2021). Novšie LTS verzie a krátkodobé vydania prinášajú ďalšie jazykové prvky a vylepšenia výkonu; pre produkčné nasadenia si organizácie zvyčajne vyberajú konkrétnu LTS verziu podľa požiadaviek a podpory.
Krátka história a pomenovanie
Java, ktorá sa v čase svojho vývoja nazývala Oak, vznikla s cieľom vytvoriť prenositeľný, bezpečný a jednoduchý objektovo orientovaný jazyk vhodný pre vstavané zariadenia a sieťové aplikácie. Názov Java sa stal synonymom pre široký ekosystém nástrojov, knižníc a runtime prostredí.
Vlastnosti jazyka
- Objektovo orientovaná: Java je primárne založená na objektovo orientovanom prístupe, kde sú programy organizované do tried a objektov, ktoré spolu komunikujú.
- Silné typovanie: Java má statické a silné typovanie, čo znamená, že typy premenných sú kontrolované počas kompilácie a mnoho chýb sa odhalí skôr než sa program spustí.
- Nezávislosť od platformy: Kód Javy sa kompiluje do bajtového kódu, ktorý interpretuje alebo JIT-kompiluje virtuálny stroj Java (JVM). Tento princíp „write once, run anywhere“ umožňuje spúšťať ten istý bytecode na rôznych operačných systémoch.
- Automatická správa pamäte: Java obsahuje garbage collector, ktorý automaticky uvoľňuje nepoužívanú pamäť, čím sa znižuje riziko únikov pamäte a chýb súvisiacich s manuálnym uvoľňovaním pamäte.
- Súbežnosť: Java má vstavanú podporu pre vlákna a súbežné programovanie; novšie verzie priniesli ďalšie mechanizmy a optimalizácie pre škálovateľnosť a paralelizmus.
- Rozsiahla štandardná knižnica: Java poskytuje bohatú štandardnú API (kolekcie, I/O, siete, XML/JSON, bezpečnosť a ďalšie), ktorá urýchľuje vývoj bežných i pokročilých funkcií.
- Zadné kompatibility: Java sa silne zameriava na udržiavanie spätné kompatibility binárneho a jazykového kódu, čo uľahčuje aktualizácie a dlhodobú údržbu projektov.
Kompilácia a spúšťanie
Kompilátor jazyka Java prevádza zdrojový kód do bajtového kódu, nie priamo do strojového kódu. Tento bajtový kód vykonáva JVM, ktorá môže bajtový kód interpretovať alebo ho počas behu JIT (Just-In-Time) kompilovať do natívneho strojového kódu cieľovej platformy. Vďaka tomu sú programy v Jave prenositeľné medzi rôznymi OS a hardvérom bez nutnosti znovu-kompilácie.
Komponenty ekosystému
- JDK (Java Development Kit): obsahuje kompilátor, nástroje pre vývoj, knižnice a JVM. Používa sa pri tvorbe aplikácií.
- JRE (Java Runtime Environment): poskytuje JVM a štandardné knižnice potrebné len na spúšťanie Java aplikácií (v modernej praxi je často súčasťou JDK alebo distribuované ako modulárne runtime).
- OpenJDK a ďalšie distribúcie: OpenJDK je otvorená implementácia Javy. Existujú aj iné distribúcie a buildy (napr. Oracle JDK, Eclipse Temurin, Amazon Corretto, Azul, BellSoft Liberica), ktoré poskytujú rôzne modely podpory a licencovania.
- HotSpot a alternatívne JVM: HotSpot je štandardný JVM od Oracle/OpenJDK. Existujú aj ďalšie VM implementácie a optimalizácie (napr. GraalVM pre AOT kompiláciu a polyglot podporu).
Vývoj jazykových prvkov v novších verziách
V posledných vydaniach Java priniesla množstvo moderných prvkov, ktoré zjednodušujú zápis a výkon aplikácií: lambda výrazy a Stream API (Java 8), modulárny systém (JPMS) a REPL (JShell) (Java 9), lokálna inferencia typov (var, Java 10), textové bloky, records, pattern matching a sealed triedy v následných verziách. Tieto vylepšenia uľahčujú vývoj čistšieho a expresívnejšieho kódu.
Použitie a ekosystém
Java sa používa v rôznych oblastiach:
- serverové a enterprise aplikácie (frameworky ako Spring, Jakarta EE),
- desktopové aplikácie,
- big data (napr. Apache Hadoop, Apache Spark majú silné Java/Scala väzby),
- zabudované a IoT zariadenia,
- mobilné aplikácie — historicky Android používal Javu; dnes Google preferuje Kotlin, no Java kód a knižnice sú stále široko používané.
Okrem jazyka samotného patrí k ekosystému množstvo nástrojov pre vývoj (Maven, Gradle), testovanie, deployment (Docker, Kubernetes) a monitorovanie, čo z Javy robí populárnu voľbu pre podnikové riešenia.
Bezpečnosť a licencia
Java kladie dôraz na bezpečné vykonávanie kódu (sandboxing, bezpečnostné manažéry a kryptografické knižnice). Licenčné podmienky sa v priebehu rokov menili — organizácie preto často volia medzi Oracle JDK (komerčná podpora) a OpenJDK alebo inými distribúciami s odlišnými podpornými podmienkami.
Pre koho je Java vhodná
Java je vhodná pre vývojárov, ktorí potrebujú stabilnú, výkonnú a prenosnú platformu s bohatým ekosystémom knižníc a nástrojov. Je obzvlášť silná v oblasti backendu, enterprise riešení, distribuovaných systémov a veľkých dát.
Ak sa chcete učiť Javu, začnite so základmi jazyka (syntaxi, OOP), potom prejdite na kolekcie, výnimky, I/O, súbežnosť a nakoniec na moderné prvky (lambda, Stream API, moduly). Praktické projekty a používanie build nástrojov (Maven/Gradle) a frameworkov (napr. Spring) výrazne zrýchlia osvojenie jazyka.
Koncepty Java
Java bola vyvinutá na dosiahnutie piatich hlavných cieľov. Sú to:
- Java by mala byť ľahko naučiteľná, objektovo orientovaná a distribuovaná.
- Java by mala byť bezpečná a silná.
- Java by nemala závisieť od žiadnej počítačovej architektúry alebo platformy.
- Java by mala fungovať dobre.
- Java by mala mať možnosť mať pre ňu napísaný interpreter, podporovať paralelizmus a používať dynamické typovanie.
Platforma Java
Platforma Java označuje skupinu softvérových produktov spoločnosti Sun Microsystems. Platforma sa používa na vývoj a spúšťanie programov Java. Súčasťou platformy je vykonávací stroj (nazývaný Java Virtual Machine), ktorý umožňuje, aby programy v jazyku Java vykonávali tú istú činnosť na rôznych počítačových systémoch.
Táto schopnosť vyvíjať softvér na jednej platforme a spúšťať ho na iných platformách sa nazýva "medziplatformová schopnosť".
Príklad programu v jazyku Java
Príklad programu "Hello World" v jazyku Java:
Typy programov v Jave
Existuje mnoho typov programov Java, ktoré sa spúšťajú rôzne:
- Java Applet - malý program napísaný v jazyku Java, ktorý sa stiahne z webovej lokality a spustí vo webovom prehliadači na klientskom počítači.
- Aplikácia - vykonáva sa na klientskom počítači. Ak je online, musí sa pred spustením stiahnuť.
- Súbor JAR (archív Java) - používa sa na zabalenie súborov Java do jedného súboru (takmer rovnako ako súbor .zip).
- Servlet - beží na webovom serveri a pomáha vytvárať webové stránky.
- Swing aplikácia - používa sa na vytvorenie aplikácie s grafickým používateľským rozhraním (okná, tlačidlá, ponuky atď.).
- EJB - beží na webovom serveri a používa sa na vývoj veľkých, komplexných webových stránok.
Výhody
Java sa bežne používa na výučbu študentov ako prvý programovací jazyk, ale stále ju používajú aj profesionáli.
- Java vyžaduje, aby bola každá premenná inicializovaná. Niektoré staršie jazyky, ako napríklad C, umožňujú neinicializáciu premenných, čo môže spôsobiť náhodné zlyhania so záhadnými chybami.
- Java vyžaduje, aby každá metóda deklarovala návratový typ - metóda by mala vždy vracať hodnotu, okrem prípadov, keď je jej návratový typ void. Tým sa tiež predchádza chybám.
- Java obsahuje veľkú sadu tried a metód, Java API, ktoré sa dajú použiť bez toho, aby ste museli vyvíjať toľko kódu "od nuly".
- Na rozdiel od jazyka C majú primitívne typy jazyka Java, ako napríklad int, vždy rovnakú veľkosť v počte bitov, čo pomáha dosiahnuť kompatibilitu medzi platformami.
- Java sa kedysi považovala za pomalšiu ako jazyk C, ale v posledných rokoch to už nie je také dôležité, pretože počítače sú rýchlejšie.
- Java má spracovanie výnimiek, ktoré od programátora vyžaduje, aby spracoval chybové stavy, ako sú napríklad vstupné/výstupné chyby.
- Kód skompilovaný na jednej platforme Java možno spustiť na iných platformách, ktoré podporujú Javu, bez úpravy zdrojového kódu alebo bajtového kódu. To znamená, že človek môže vytvoriť program v Jave pre počítač s Windows a spustiť ho na počítači s Linuxom alebo Macom.
Kritika
Java bola tiež kritizovaná. Niektoré z nich sú nasledovné:
- Generické kódy boli do Javy pridané takým spôsobom, aby existujúci kód fungoval aj naďalej. To sa uskutočnilo pomocou vymazávania typov. To znamená, že počas kompilácie sa odstráni skutočný typ generického argumentu. To môže viesť k tomu, že interpret jazyka Java sa niekedy správa neočakávaným spôsobom.
- Java nemá celočíselné typy bez znamienka, ktoré jazyky ako C vo veľkej miere používajú. To tiež znamená, že nie je možné priamo vymieňať číselné údaje medzi programami v jazyku C a Java. Aj kryptografia sa do určitej miery spolieha na takéto typy; to sťažuje písanie aplikácií, ktoré používajú kryptografiu v jazyku Java.
- IEEE definovala štandard pre aritmetiku s pohyblivou rádovou čiarkou, IEE 754. Java podporuje len časť funkcií tohto štandardu.
Otázky a odpovede
Otázka: Ako sa volá programovací jazyk vytvorený spoločnosťou Sun Microsystems?
Odpoveď: Programovací jazyk vytvorený spoločnosťou Sun Microsystems sa nazýva Java.
Otázka: Kto v súčasnosti podporuje a aktualizuje jazyk Java?
Odpoveď: Spoločnosť Oracle Corporation v súčasnosti podporuje a aktualizuje jazyk Java.
Otázka: Aké sú aktuálne verzie Javy s dlhodobou podporou (LTS)?
Odpoveď: Súčasné verzie dlhodobej podpory (LTS) jazyka Java sú verzie 17, 11 a 8.
Otázka: Kedy bola vydaná najnovšia verzia jazyka Java?
Odpoveď: Najnovšia verzia jazyka Java, verzia 19, bola vydaná v septembri 2022.
Otázka: Existuje okrem spoločnosti Oracle ešte nejaká iná spoločnosť, ktorá podporuje jazyk Java?
Odpoveď: Áno, spoločnosť Eclipse Adoptium tiež podporuje jazyk Java minimálne do mája 2026 pre verziu 8 a minimálne do septembra 2027 pre verziu 17.
Otázka: Aký typ kódu používa Java?
Odpoveď: Java používa objektovo orientovaný kód, čo znamená, že je založená na objektoch, ktoré spolupracujú, aby programy vykonávali svoju prácu. Vyzerá podobne ako C, C++ alebo C#, ale kód napísaný v týchto jazykoch nebude vo väčšine prípadov fungovať bez toho, aby bol zmenený.
Otázka: Ako sa Java stáva platformovo nezávislou?
Odpoveď: Java je platformovo nezávislá tým, že kompilátor namiesto strojového kódu mení kód do špeciálneho formátu nazývaného bytecode. To znamená, že keď sa program spustí, bytecode môže byť interpretovaný špeciálnym programom nazývaným virtuálny stroj, ktorý ho preloží do strojového kódu, takže môže bežať na rôznych operačných systémoch, ako je napríklad Android.
Prehľadať