Java je ime programskega jezika, ki ga je ustvarilo podjetje Sun Microsystems. To podjetje je odkupila korporacija Oracle, ki ga še naprej posodablja in prispeva tudi v odprtokodni projekt OpenJDK. Po letu 2017 je razvoj Jave organiziran v polletnem izdajnem ciklu; nekatere različice pa so označene kot LTS (Long Term Support) in imajo daljšo podporo. Med pomembnejše LTS različice sodijo Java 8, Java 11 (izdana 25. septembra 2018) in Java 17 (LTS, september 2021), pozneje pa je izšla tudi Java 21 (LTS, september 2023). Java 8 ostaja zelo razširjena zaradi združljivosti in dolgoletne podpore, medtem ko številna podjetja in razvijalci prehajajo na novejše LTS različice ali na gradnje OpenJDK.

Java, ki se je v času razvoja imenovala Oak, je objektno usmerjena, kar pomeni, da temelji na predmetih, ki sodelujejo med seboj in omogočajo, da programi opravljajo svoje naloge. Njena sintaksa je sorodna jezikom C, C++ ali C#, vendar kode iz teh jezikov običajno ni mogoče neposredno uporabiti v Javi brez prilagoditev. Java združuje statno tipiziranje, podporo za razrede in vmesnike, generike, anotacije, lambda-izraze in bogat standardni razredni paket (JDK). V novejših različicah so bile dodane funkcionalnosti, kot so modularni sistem (Java 9), lokalna inferenca tipov (var, Java 10), records, pattern matching, text blocks in druge izboljšave, ki poenostavljajo pisanje in vzdrževanje kode.

Java deluje v številnih različnih operacijskih sistemih, vključno z Androidom, najbolj priljubljenim mobilnim operacijskim sistemom na svetu. Zaradi načela "write once, run anywhere" je Java neodvisna od platforme: prevajalnik Jave (javac) izvorno kodo prevede v bitečko kodo (bytecode), ki jo nato izvaja Java Virtual Machine (JVM). JVM interpretira ali s pomočjo JIT (Just-In-Time) prevajalnika prevaja bytecode v strojno kodo, kar omogoča kombinacijo prenosljivosti in visoke učinkovitosti. Java ponuja tudi sistem za upravljanje pomnilnika z avtomatskim zbiralcem smeti (GC) — obstaja več zbirk smeti (npr. G1, ZGC, Shenandoah), ki se razlikujejo po zmogljivostih in namenom uporabe.

Pomembne sestavine Java-ekosistema so JDK (Java Development Kit), ki vsebuje orodja za razvijalce (prevajalnik, orodja za paketiranje, dokumentiranje itd.), in JRE (Java Runtime Environment), ki vsebuje JVM in knjižnice za izvajanje aplikacij. Obstajajo različne distribucije JDK/JRE (Oracle JDK, OpenJDK in drugi komercialni ali odprtokodni gradniki), zato je pri izbiri pomembno upoštevati licenčne pogoje in podporo.

Tipične uporabe Jave vključujejo:

  • razvoj strežniških/enterprise aplikacij (s pomočjo ogrodij kot sta Spring in Jakarta EE),
  • web-aplikacije in servisi (servlet strežniki kot Tomcat, Jetty),
  • razvoj mobilnih aplikacij za Android (kjer se še naprej uporablja Java-koda, a Google pogosto priporoča Kotlin kot alternativni jezik),
  • big data rešitve in porazdeljene aplikacije (Hadoop, Spark),
  • namizne aplikacije (Swing, JavaFX) in vgrajene sisteme,
  • visoko-frekvenčno finančno programiranje, znanstvene aplikacije in orodja za avtomatizacijo.

V okolju Jave je razvit širok ekosistem orodij in ogrodij, med katerimi so orodja za avtomatizacijo gradnje (Maven, Gradle), priljubljena razvojna okolja (IntelliJ IDEA, Eclipse, NetBeans) in številne knjižnice za testiranje, serializacijo, varnost in integracijo. Java je znana po močni poudarjenosti združljivosti navzdol: nova različica običajno omogoča zagon stare kode brez ali z majhnimi spremembami.

Prednosti Jave so prenosljivost, zrelost in obsežen ekosistem, stabilnost, bogata zbirka knjižnic in orodij ter aktivna skupnost. Omejitve pogosto omenjajo višjo porabo pomnilnika in daljši čas zagonov v primerjavi z nekaterimi lahkimi jezikovnimi rešitvami, pa tudi občasno bolj verbosen zapis koder v primerjavi s sodobnejšimi jeziki. Alternativni jeziki, kot sta Kotlin ali Scala, delujejo na JVM in omogočajo drugačen slog programiranja ob ohranitvi interoperabilnosti z Java-knjižnicami.

Če se želite začeti učiti Javo ali posodobiti obstoječe znanje, je smiselno delati z najnovejšo LTS različico (za stabilnost v produkcijskem okolju) ali z gradnjami OpenJDK in spremljati uradne vire, dokumentacijo ter skupnostne vodiče in vaje.