Java (programmeertaal): wat is het? Definitie, kenmerken en toepassingen
Ontdek Java: definitie, kenmerken, LTS‑versies en toepassingen. Leer over platformonafhankelijkheid, JVM en waarom Java nog steeds veel gebruikt wordt voor enterprise, Android en cross‑platform ontwikkeling.
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.
Afbeeldingengalerij
2 AfbeeldingenWat 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.
Java-concepten
Java is ontwikkeld om vijf hoofddoelen te bereiken. Deze zijn:
- Java moet gemakkelijk te leren zijn, object georiënteerd, en gedistribueerd.
- Java moet veilig en sterk zijn.
- Java moet niet afhankelijk zijn van een computerarchitectuur of -platform.
- Java zou goed moeten functioneren.
- Java moet in staat zijn om een tolk te laten schrijven, en het parallellisme te ondersteunen en dynamisch te typen.
Java-platform
Het Java-platform verwijst naar een groep softwareproducten van Sun Microsystems. Het platform wordt gebruikt om Java-programma's te ontwikkelen en uit te voeren. Het platform bevat de uitvoeringsmotor (een Java Virtual Machine genaamd) die het mogelijk maakt dat Java-programma's hetzelfde doen op verschillende computersystemen.
Dit vermogen om software te kunnen ontwikkelen op het ene platform en het te laten draaien op andere platformen wordt "cross-platform capaciteit" genoemd.
Java-programmavoorbeeld
Een voorbeeld van een "Hallo Wereld" Java-programma:
Soorten Java-programma's
Er zijn vele soorten Java-programma's die anders lopen:
- Java Applet - klein programma geschreven in Java en dat wordt gedownload van een website en uitgevoerd binnen een webbrowser op een clientcomputer.
- Toepassing - voert uit op een clientcomputer. Als het online is, moet het worden gedownload voordat het wordt uitgevoerd.
- JAR-bestand (Java-archief) - wordt gebruikt om Java-bestanden samen te voegen tot één bestand (bijna precies zoals een .zip-bestand).
- Servlet - draait op een webserver en helpt bij het genereren van webpagina's.
- Swing applicatie - wordt gebruikt om een applicatie te bouwen die een GUI heeft (vensters, knoppen, menu's, etc.).
- EJB - draait op een webserver en wordt gebruikt om grote, complexe websites te ontwikkelen.
Voordelen
Java wordt vaak gebruikt om studenten te leren programmeren als eerste taal, maar wordt ook nog steeds gebruikt door professionals.
- Java vereist dat elke variabele wordt geïnitialiseerd. Sommige oudere talen, zoals C, staan toe dat variabelen uninitialized gaan, wat kan leiden tot willekeurige fouten met mysterieuze bugs.
- Java vereist dat elke methode een retourtype declareert - de methode moet altijd een waarde teruggeven, behalve als het retourtype ongeldig is. Dit voorkomt ook bugs.
- Java wordt geleverd met een grote set classes en methodes, de Java API die gebruikt kan worden zonder zoveel mogelijk code "vanaf nul" te hoeven ontwikkelen.
- In tegenstelling tot C zijn Java primitieve types, zoals int, altijd even groot in het aantal bits, wat helpt bij het bereiken van cross-platform compatibiliteit.
- Vroeger dacht men dat Java langzamer was dan C, maar dat is de laatste jaren minder belangrijk geworden omdat computers sneller zijn.
- Java heeft exception-handling die een programmeur nodig heeft om foutcondities zoals Input/Output-fouten af te handelen.
- Code gecompileerd op een Java-platform kan worden uitgevoerd op andere platformen die Java ondersteunen zonder wijziging van de broncode of de byte-code. Dit betekent dat een persoon een Java-programma kan maken voor een Windows-computer en deze een Linux-computer of een Mac-computer kan laten draaien.
Kritiek
Java is ook bekritiseerd. Enkele van de kritieken zijn:
- Generiek werd op zodanige wijze aan Java toegevoegd dat de bestaande code nog steeds zou blijven draaien. Dit werd gedaan met behulp van type wissing. Dit betekent dat tijdens het compileren het eigenlijke type van een generiek argument wordt verwijderd. Dit kan ertoe leiden dat de Java interpreter zich soms onverwacht gaat gedragen.
- Java heeft geen unsigned integer types, welke talen zoals C intensief gebruikt worden. Dit betekent ook dat het onmogelijk is om direct numerieke gegevens uit te wisselen tussen C en Java programma's. Cryptografie is ook tot op zekere hoogte afhankelijk van dergelijke typen; dit maakt het moeilijker om applicaties te schrijven die gebruik maken van cryptografie in Java.
- De IEEE heeft een standaard voor floating-point arithmetic, IEE 754, gedefinieerd. Java ondersteunt slechts een deel van de functies van deze standaard.
Gerelateerde artikelen
Auteur
AlegsaOnline.com Java (programmeertaal): wat is het? Definitie, kenmerken en toepassingen Leandro Alegsa
URL: https://nl.alegsaonline.com/art/49636
Bronnen
- codejava.net : "Java SE Versions History"
- upwork.com : "Java vs. C++: Which Language Is Right For Your Software Project?"
- androidauthority.com : "I want to develop Android Apps — What languages should I learn?"
- geeksforgeeks.org : "How is Java platform independent? - GeeksforGeeks"
- java.sun.com : The Java Language Environment. 1.2 Design Goals of the Java Programming Language.
- cs.dartmouth.edu : The Java Language: An Overview.