Java is de naam van een programmeertaal die door Sun Microsystems is gemaakt. Dit bedrijf werd later overgenomen door Oracle Corporation, dat het taal- en platformonderhoud voortzet, naast de ontwikkeling van de OpenJDK-implementatie. Sinds 2021 worden LTS-releases (Long Term Support) regelmatig uitgebracht: na Java 11 (LTS, 2018) en Java 17 (LTS, 2021) is de meest recente LTS-versie Java 21 (LTS), uitgebracht in september 2023. Naast Oracle zijn er meerdere leveranciers die gratis en commerciële builds van Java / OpenJDK uitbrengen (bijvoorbeeld Adoptium, Azul, Amazon Corretto), en Oracle heeft in de loop der tijd ook licentie- en updatevoorwaarden aangepast voor commerciële productieomgevingen.

Wat is Java in technische zin?

Java is van oorsprong een objectgeoriënteerde taal: programma's zijn opgebouwd uit objecten en klassen die samen gedrag en gegevens modelleren. Tijdens de ontwikkeling had Java de werktitel Eiken. De syntaxis van Java lijkt op talen als C, C++ en C#, maar Java heeft zijn eigen regels, runtime en bibliotheken, zodat broncode uit die andere talen meestal niet zonder aanpassing in Java kan draaien.

Platformonafhankelijkheid en de Java Virtual Machine

Een van de belangrijkste kenmerken van Java is de platformonafhankelijkheid: Java-code wordt gecompileerd naar bytecode, een tussenformaat dat door de Java Virtual Machine (JVM) wordt geïnterpreteerd of JIT-gecompileerd naar machinecode op het doelsysteem. Daardoor geldt het motto "write once, run anywhere"—eenzelfde Java-binaire (bytecode) kan op verschillende besturingssystemen worden uitgevoerd zonder hercompilatie, zolang er een geschikte JVM beschikbaar is.

Java draait op veel systemen, waaronder ook Android, 's werelds populairste mobiele besturingssysteem. Hoewel Android-toepassingen traditioneel in Java zijn geschreven en Java-API’s veel gebruikt worden, heeft Google Kotlin gepromoot als voorkeursprogrammeertaal voor Android; Kotlin en Java werken echter goed samen binnen hetzelfde project.

Belangrijke taal- en platformkenmerken

  • Sterke typenaamgeving en veiligheid: Java is statisch getypeerd en heeft gedurende zijn ontwikkeling veel mechanismen gekregen om type- en runtimefouten te beperken.
  • Automatic memory management: Java heeft ingebouwde garbage collection, waardoor geheugenbeheer voor de programmeur grotendeels wordt afgehandeld.
  • Multithreading: Java biedt ingebouwde ondersteuning voor meerdere threads en synchronisatiemechanismen, en heeft een uitgebreid concurrentie-API.
  • Rich standaardbibliotheek: de Java Class Library bevat API’s voor I/O, netwerken, XML/JSON, databaseconnecties (JDBC), cryptografie, en meer.
  • Moderne taalfeatures: in recente versies werden functies toegevoegd zoals lambda-expressies (Java 8), het module-systeem (Java 9), text blocks (later releases), en records en sealed classes (in latere releases geïntroduceerd als preview en vervolgens gestabiliseerd).
  • Backward compatibility: Java streeft eroverheen sterke achterwaartse compatibiliteit te bieden, waardoor veel oudere applicaties blijven werken op nieuwere JVMs.

JDK, JRE en toolchain

Voor ontwikkeling gebruik je de JDK (Java Development Kit), die de compiler (javac), tools en runtime bevat. De JRE (Java Runtime Environment) bevat de JVM en de noodzakelijke bibliotheken om Java-programma's uit te voeren. Populaire build- en dependencytools in het Java-ecosysteem zijn onder andere Maven en Gradle. Voor enterprise-ontwikkeling zijn frameworks zoals Spring en Jakarta EE veel gebruikt; voor object-relational mapping is Hibernate een bekende library.

Toepassingen van Java

  • Enterprise servers en webapplicaties (bank- en bedrijfssoftware)
  • Microservices en cloud-native applicaties
  • Android-applicaties (naast Kotlin)
  • Desktopapplicaties en GUI-programma's (bijv. via JavaFX)
  • Big data-ecosystemen en frameworks (bijv. onderdelen van Hadoop-ecosystemen)
  • Embedded systemen en IoT-apparaten
  • Wetenschappelijke en onderzoekssoftware

Ecosysteem en ondersteuning

Rond Java is een groot ecosysteem van libraries, frameworks, ontwikkelomgevingen (IDE’s zoals IntelliJ IDEA, Eclipse en NetBeans), buildtools en distributies ontstaan. Omdat Oracle commerciële support en licentieopties biedt, bestaan er ook meerdere onafhankelijke builds en leveranciers die server- en LTS-ondersteuning aanbieden. Voor productieomgevingen is het belangrijk om de licentievoorwaarden en updatebeleid van de gekozen Java-distributie te controleren.

Voor- en nadelen in het kort

  • Voordelen: platformonafhankelijkheid, volwassen ecosysteem, sterke backward compatibility, uitgebreide tooling en veel inzetbaarheid in enterprise-omgevingen.
  • Nadelen: soms meer boilerplate-code dan in sommige moderne talen, licentie- en supportkeuzes kunnen verwarrend zijn, en sommige applicaties vereisen periodiek onderhoud om van nieuwe taal- en JVM-verbeteringen te profiteren.

Samengevat is Java een volwassen, breed ingezet en continu doorontwikkeld platform voor het bouwen van betrouwbare, schaalbare software. De taal en runtime blijven evolueren met regelmatige releases en verbeteringen, waardoor Java relevant blijft voor een breed scala aan toepassingen.