Home /
Blog /
Java, de taal voor het IoT

Java, de taal voor het IoT

dinsdag 2 juni 2015
 
 
 

IoT Voor de één is Java een taal waarvan je ooit eens de basis hebt geleerd tijdens college. Voor de ander is Java veel meer de ‘lingua franca’ van de meeste bedrijven binnen de ICT-sector. Maar welke rol vervult Java in de toekomst? Naar mijn mening is Java de perfecte taal voor embedded computing en de ondersteuning van real-time applicaties. Met andere woorden: Java is de taal voor het Internet of Things (IoT). Ik geef je 3 redenen waarom Java dat is. 

 

1. Java is het beste in staat om de groei van het IoT op te vangen

Om te kunnen begrijpen waarom Java de ideale taal is voor het IoT, moeten we eerst begrijpen wat het IoT is. Andrew C. Oliver, voormalig bestuurder van het Open Source Initiative en oprichter van het Apache POI project, zegt het treffend. Het IoT gaat om teamwork. Daar heeft hij gelijk in. Het gaat om teamwork tussen mens en machine. Maar het gaat vooral om teamwork tussen machines onderling. Dit is het idee van pervasive computing. Het idee dat elk denkbaar apparaat embedded is met chips. En op die manier verbonden is met een oneindig netwerk van andere apparaten.

Dat we daadwerkelijk naar een situatie gaan waarin het IoT niet meer weg te denken is uit ons leven, kunnen we zien aan het online komen van technologieën die het IoT ondersteunen. Zo is HTTP/2 een cruciaal netwerkprotocol dat voor een deel is geüpdatet om machine-tot-machine-communicatie te accommoderen. En zo is Thingsee een developerkit die je in staat stelt om je ‘eigen’ IoT te ontwikkelen.

Deze machine-tot-machine-communicatie zal ons een heleboel beslissingen uit handen gaan nemen. Nu zien we dat terug in ontwikkelingen die wat verder van ons bed staan. Denk aan technologie die het gebruik van pesticides in de landbouw reguleert. Of aan technologie die het vaststellen van medische diagnoses voor een groot deel uit handen van dokters kan nemen. In de nabije toekomst zullen deze ontwikkelingen veel dichter bij ons bed komen te staan.

Neem bijvoorbeeld een snoepautomaat die goed onderhouden is en uitgerust is met voldoende voorraad. Geef je de automaat een bevel, dan interacteren er een aantal mechanismen met elkaar, met als uiteindelijk gevolg dat jouw honger gestild wordt. Voor dat proces hoef je de details van implementatie niet te begrijpen. Je maag is tevreden met het resultaat. Nu zijn er snoepautomaten die verbonden zijn met het IoT. Geef je een IoT-snoepautomaat een bevel, dan interacteren er op globaal niveau allerlei mechanismen met elkaar. Waardoor mechanismen niet alleen zorgen dat jouw honger wordt gestild, maar ook zorgen dat het apparaat goed onderhouden blijft en de voorraad tijdig wordt aangevuld. Al die processen worden geregeld door het IoT.

Verwacht wordt dat we van 2 miljard apparaten die verbonden zijn met het internet, naar een wereld gaan waarin zich 10 miljard embedded processoren bevinden. Dit toenemend belang van embedded computing zal worden opgevangen door Java.

Waarom? Omdat Java wereldwijd diepgeworteld en geïmplementeerd is. Het IoT zal zijn invloed hebben op gebieden waar Java al de ‘common language’ is. Dit blijkt mede uit allerlei instanties die heel veel middelen beschikbaar stellen om Java door te geven aan een nieuwe generatie programmeurs. Op die manier worden allerlei processen (denk aan productieprocessen die volledig afhankelijk zijn van Java) gewaarborgd.


2. Java is ooit ontworpen voor embedded computing

Wat veel mensen vergeten, is dat Java ooit bedoeld is voor embedded computing. De eerste versies van Java waren geschreven voor huishoudelijke apparaten. Denk aan set-top interfaces van televisies. James Gosling zag Java als taal voor de communicatie tussen apparaat en gebruiker, maar ook voor de communicatie tussen apparaten. Deze originele designeigenschappen zijn 20 jaar later klaar om het IoT te ondersteunen.

Dit bovenstaande verklaart waarom een Java programmeur zich alleen bewust hoeft te zijn van de verschillende onderdelen van het Java platform, wil hij Java embedded gaan programmeren. De manier van programmeren of het lezen van programma’s verandert voor een Java programmeur niet. Java programmeurs zijn in staat om embedded bron code net zo gemakkelijk te lezen als de broncode behorend bij typische desktop enterprise applicaties. Het verschil met embedded programmeren? De bibliotheken, met name de development- en testingomgevingen, zijn gespecificeerd. Het belangrijkste is dat een Java programmeur de juiste toolchain heeft, behorend bij de embedded omgeving waarin hij wil werken.

Door alle Java standards en tools kan Java meer en meer worden aangewend voor de originele bedoeling: embedded computing. Had je het tussen 2000 en 2010 over embedded computing, dan dacht je aan J2ME. Nu is Java ME de standaard omgeving voor embedded applicaties. Hoewel Java ME (met name de profiles en configurations) cruciaal blijft, leggen mobile Java developers meer de nadruk op Android en HTML5 voor user interfaces. Profiles en configurations zijn cruciale concepten bij embedded programmeren. Een embedded profile, zoals MIDP, is een collectie van API’s. Een configuration is een frameworkspecificatie. Hoewel het niet helemaal waar is, kun je profiles zien als onderdelen behorend bij configurations. Inclusief het meest opvallende CLDC. In aanvulling op de profiles en configurations van Java ME hebben een aantal enterprise Java technologieën potentie voor embedded development. Denk bijvoorbeeld aan de Java Management Extensions (JMX). Daarnaast neemt Real-time Java een belangrijke plaats in bij het embedded programmeren van het IoT.


3. Java voldoet nu wel aan real-time eisen van embedded applicaties

Het IoT betekent dus een toename van embedded applicaties. Veel embedded applicaties die verbonden zijn met sensoren (in bijvoorbeeld de medische of agrarische sector), stellen real-time eisen. Hoewel het zeker James Gosling zijn bedoeling was om Java aan de meeste real-time eisen te laten voldoen, waren de real-time computations van Java in eerste instantie zeker niet het sterkste punt. Zo waren Java runtimes onbetrouwbaar. Vooral bij garbage collection lag de zwakte. Als antwoord daarop kwamen RTSJ (de real-time spec van Java) en andere standards. Zij zorgden dat er een aantal taken werd ondersteund, zodat vertragingen bij garbage collection werden voorkomen.

RTSJ werd in 2002 geïmplementeerd in een aantal Java VM’s. Maar sindsdien lag RTSJ stilletjes op de plank. Tot februari 2015. RTSJ is inmiddels meerdere malen geüpdatet. Zie bijvoorbeeld Jamaica VM.

Oracle draagt bijvoorbeeld Java SE aan voor real-time systemen. Volgens Oracle heeft Java SE zich zodanig ontwikkeld dat het in ieder geval aan de meeste soft real-time eisen voldoet. Soft real-time eisen zien op ‘gebruikelijk’ gedrag . Denk aan een banktransactie, waarbij het gebruikelijk is dat hij binnen 300 miliseconden als opdracht wordt verwerkt. Een harde real-time eis ziet op het voorspelbaar zijn van het ‘slechtste’ scenario. Daarbij gaat het erom dat in het slechtste scenario een applicatie binnen een bepaalde tijd een opdracht moet kunnen verwerken. Denk aan de solenoid van een locomotief. Die moet in het slechtste geval binnen 1,15 seconde na een afgegeven alarm kunnen sluiten.

Het kunnen voldoen aan soft real-time eisen is goed genoeg voor de meeste embedded applicaties. Voor applicaties die harde real-time eisen stellen, richten Java developers zich met name tot JSR-302: Safety Critical Java Technology.

Dus ook de real-time eisen die veel IoT-applicaties stellen, lijken voor Java geen probleem meer te zijn. Kortom: Java lijkt in 2015 voldoende uitgerust om de taal te worden van het IoT.

 

> Artikelen die je misschien ook interessant vindt

 

> Populaire artikelen

 

Terug naar overzicht
 
 
Terug naar overzicht

Heb je nog vragen?

Je kunt ons bellen
Telefoon:
020 - 5300500
... of we bellen jou
of je mailt ons