Java on Sun Microsystems'i loodud programmeerimiskeele nimi. Selle ettevõtte ostis välja Oracle Corporation, mis jätkab keele ja selle keskkondade arendamist. Java esimene avalik versioon ilmus 1995. aastail ja on sellest ajast saanud laialdaselt kasutatava keele nii serveri- kui ka kliendipoolsetes lahendustes. Tänapäeval on olemas mitmeid Java väljaandeid ja -versioone; pärast Java 8 ja Java 11 LTS-versioone ilmusid hiljem Java 17 (LTS) ja Java 21 (LTS), mis on mõlemad olulised pikaajalise toe (LTS) väljaanded. Oracle pakub tasulist tuge uuematele väljaannetele, samas kui mitmed teised levitajad (OpenJDK‑põhised builds) pakuvad avatud lähtekoodiga variante.
Ajalugu ja versioonipoliitika
Arendusajaloos on Java-l olnud regulaarne väljaannete tsükkel: alates Java 9-st on uued funktsioonid jõudnud väljaannetes sagedamini (iga kuue kuu tagant), samas kui LTS (Long Term Support) versioonid ilmuvad harvemini ja neile antakse pikaajalist toetust. LTS-versioonid, nagu Java 8, Java 11, Java 17 ja Java 21, on ettevõtetes eriti populaarsed, sest neid toetatakse stabiilsemalt ja pikema aja jooksul.
Objektorienteeritud keel
Java, mille nimi oli Oak arendusfaasis, on objektorienteeritud keel. See tähendab, et programmide põhikonstruktsiooniks on objektid — andmete ja nendega seotud käitumise (meetodite) kombinatsioonid, mis suhtlevad üksteisega, et täita rakenduse ülesandeid. Java süntaks sarnaneb mitmel moel keeltega nagu C, C++ ja C#, kuid kood, mis on kirjutatud nendes keeltes, ei tööta automaatselt Java's ilma muutmiseta .
Platvormi sõltumatus ja Java Virtual Machine (JVM)
Java disaini üks peamisi eesmärke oli platvormi sõltumatus — tuntud lähenemine "kirjuta kord, käivita kõikjal" (write once, run anywhere). Selle saavutab Java nii, et kompilaator ei tõlgi lähtekoodi otse konkreetse masina masinkoodiks, vaid väljastab Java baatkoodi ehk bytecode'i. See bytecode on standardiseeritud ja seda suudab täita iga platvormi jaoks olemasolev Java Virtual Machine (JVM).
- JVM on spetsiaalne käituskeskkond, mis laeb Java klassifaile, kontrollib turvalisust, tõlgib bytecode'i jooksva masina masinkoodiks ja haldab tööaega (runtime).
- JVM-i implementatsioonid võivad sisaldada JIT‑kompilaatorit (Just‑In‑Time), mis kompileerib sagedasti käivitatava bytecode'i masinakoodiks käitusajal, parandades jõudlust.
- Lisaks süstemaatilisele jõudluse optimeerimisele sisaldavad JVM-id ka prügikoristust (garbage collection), mis vabastab automaatselt kasutamata mäluruumi.
Bytecode ja täitmisprotsess
Java kompilaator (.java -> .class) genereerib bytecode'i, mis on sõltumatu protsessori arhitektuurist. Selle bytecode'i võib:
- käivitada otse JVM-i kaudu, kus bytecode tõlgitakse või kompileeritakse jooksvalt masinakoodiks, või
- edasi töödelda vahenditega (näiteks AOT-kompileerimise või muude optimiseeride abil) konkreetsele platvormile.
Selline kihtidevaheline lähenemine annab Java'le paindlikkuse: sama bytecode võib töötada erinevatel operatsioonisüsteemidel ja riistvaradel, kui seal on vastav JVM.
Peamised omadused ja kasutusvaldkonnad
Java omadused teevad sellest sobiva keele paljude ülesannete jaoks:
- Staatiline tüübistus ja selge objektimudel, mis aitab vältida paljusid vigu juba kompileerimisel.
- Automaatsed mäluhaldusmehhanismid (garbage collection), mis vähendavad mälu lekete riski.
- Põhjalik standardteek (Java API), mis hõlmab kõike alates kollektsioonidest ja võrguühendusest kuni XML-i ja krüptograafiani.
- Suur ökosüsteem, tööriistad (nt JDK, build-tööriistad, IDE-d), raamistikud (nt Spring) ja konteinerid, mis tugevdavad Java positsiooni ärirakendustes.
- Kõrge jõudlusvõimalus tänu JIT-optimeeringutele ja JVM-i täiustustele.
- Pidev arendus — uusimate Java väljaannetega lisatakse keele ja JVM-i täiustusi, turvaparandusi ning jõudluse optimeerimisi.
Kus Java't kasutatakse
Java on levinud järgmistel aladel:
- Serveripoolsed äpi- ja mikroteenused (enterprise‑tarkvara, veebiserverid).
- Androidi rakendused (Androidi platvorm kasutab Java-laadset keskkonda ja API-sid, kuigi Google on tugevalt toetanud ka Kotlinit).
- Süsteemitarkvara ja suured andmeprotsessid (nt Hadoop‑ökosüsteem).
- Finants-, telekommunikatsiooni- ja muud tööstuslikud rakendused, kus on nõutav stabiilsus ja jõudlus.
JDK, JRE ja levitused
Java arendamiseks ja käivitamiseks kasutatakse erinevaid pakette:
- JDK (Java Development Kit) – sisaldab kompilaatorit (javac), tööriistu ja standardseid teeke arendamiseks.
- JRE (Java Runtime Environment) – sisaldab JVM-i ja standardteeke käivitamiseks (täna sageli integreeritud JDK-ga või asendatud OpenJDK paketiga).
- Lisaks Oracle'ile on olemas mitu OpenJDK‑põhist levikut, mis pakuvad tasuta ja avatud lähtekoodi variante erinevate tugutingimustega.
Kokkuvõttes on Java terve ökosüsteem — keel, standardteegid, JVM ja mitmed tööriistad — mis teeb sellest jätkuvalt ühe populaarseima valiku nii õppimiseks kui ka tootmiskeskkondades suuremahuliste süsteemide loomiseks.