<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:15:53 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>Java &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Javascript, altijd en overal?</title>
		<link>https://www.smalsresearch.be/javascript-altijd-en-overal/</link>
					<comments>https://www.smalsresearch.be/javascript-altijd-en-overal/#comments</comments>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Mon, 29 Sep 2014 12:59:44 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[angularjs]]></category>
		<category><![CDATA[backbone.js]]></category>
		<category><![CDATA[bootstrap.js]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[meteor]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=7285</guid>

					<description><![CDATA[De opmars van Javascript de laatste jaren is onstopbaar. De taal speelt een steeds grotere rol in de browser, via webapplicaties en andere interactieve websites. Ook de webserver is ze nu aan het innemen, onder de naam Node.js. Ze wordt ook vaak in één adem genoemd met HTML 5 en CSS 3, de talen die samen het [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2014/07/js5logo.png"><img decoding="async" class="alignleft  wp-image-7394" src="/wp-content/uploads/2014/07/js5logo-300x300.png" alt="js5logo" width="146" height="146" srcset="https://www.smalsresearch.be/wp-content/uploads/2014/07/js5logo-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2014/07/js5logo-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2014/07/js5logo.png 512w" sizes="(max-width: 146px) 100vw, 146px" /></a>De opmars van Javascript de laatste jaren is onstopbaar. De taal speelt een steeds grotere rol in de browser, via webapplicaties en andere interactieve websites. Ook de webserver is ze nu aan het innemen, onder de naam Node.js. Ze wordt ook vaak in één adem genoemd met HTML 5 en CSS 3, de talen die samen het nieuwe web vormen, maar zonder Javascript niet zoveel leven tonen. Een nieuwe grote groep van developers is ontstaan, die nagenoeg uitsluitend programmeren met deze drie talen.<span id="more-7285"></span></p>
<p>&nbsp;</p>
<p>Nochtans is Javascript qua programmeertaal niet meteen het neusje van de zalm&#8230; Een paar quotes:</p>
<ul>
<li>&#8220;JavaScript is a language with more than its share of bad parts.”</li>
<li>&#8220;Few classical programmers found prototypal inheritance to be acceptable, and classically inspired syntax obscures the language’s true prototypal nature. It is the worst of both worlds.”</li>
<li>“undefined and NaN are not constants. They are global variables, and you can change their values. That should not be possible, and yet it is. Don’t do it.</li>
</ul>
<p><span style="color: #181818;">(Uit: </span>Douglas Crockford, <a href="https://shop.oreilly.com/product/9780596517748.do">JavaScript: The Good Parts</a> )</p>
<p>Er zijn uiteraard ook goede delen aan Javascript (anders zou dat boek toch wel anders heten), maar al bij al zal Javascript geen schoonheidsprijzen in de wacht slepen. Het is een dynamisch getypeerde taal, met prototypische overerving, en het is erg gemakkelijk in Javascript om je programma heel onleesbaar te maken. Programmeurs die met een meer klassieke taal beginnen werken, zoals Java, en daarna pas Javascript leren, moeten typisch serieus wennen (en ontwennen)!</p>
<p><img decoding="async" class="alignright wp-image-7393 size-full" src="/wp-content/uploads/2014/07/wb_piggy1.jpg" alt="PiggyBacking" width="138" height="140" />De twee talen zijn trouwens, ondanks de naam en enkele gelijkenissen (e.g. dat ze beide een C-achtige syntax hebben), niet gerelateerd (men zou kunnen zeggen: <a href="https://stackoverflow.com/questions/245062/whats-the-difference-between-javascript-and-java">Javascript en Java zijn zoals Parket en Park</a>). Javascript kreeg zijn naam indertijd van NetScape in de hoop op de toenmalige populariteit van Java te kunnen <a href="https://en.wikipedia.org/wiki/Piggybacking">piggybacken</a>.</p>
<p>Tegenwoordig zijn er ook al verschillende talen die de syntactische tekortkomingen van Javascript trachten op te vangen: het zijn talen die sterk op Javascript lijken, en er ook in worden vertaald wanneer het tijd wordt om de code uit te voeren. Voorbeelden zijn <a href="https://coffeescript.org/">CoffeeScript</a> en <a href="https://www.dartlang.org/">Dart</a>. Voorlopig zijn deze talen echter nog maar weinig in gebruik in vergelijking met het origineel.</p>
<p>Waarom is Javascript dan zo populair? Dat heeft een aantal redenen. De belangrijkste daarvan is de <a href="https://en.wikipedia.org/wiki/V8_(JavaScript_engine)">V8 engine</a>, die zijn intrede maakte in Google Chrome. Deze engine (hetgeen wat de code daadwerkelijk uitvoert) heeft de performantie van de taal naar een nieuw niveau geheven, en wordt trouwens ook gebruikt in <a href="https://nodejs.org/">node.js</a>. Daarnaast is het uiteraard zowat de enige taal die nog gebruikt wordt om code uit te voeren in de browser zelf (aan de &#8220;client side&#8221;), wat, in een goed gebouwde website, de server en het netwerk serieus kan ontlasten, terwijl er toch een mooie en interactieve site of applicatie wordt gepresenteerd.</p>
<p>Een paar positievere quotes:</p>
<ul>
<li><span style="color: #444444;">de wet van <a href="https://blog.codinghorror.com/the-principle-of-least-power/">Jeff Atwood</a>: &#8220;</span>any application that <em>can </em>be written in JavaScript, <em>will </em>eventually be written in JavaScript<span style="color: #444444;">&#8220;</span></li>
<li> “After some abandoned experiments with static compilation, we looked around and saw how successfully JIT techniques are being applied in the JavaScript space: Chrome’s V8 engine, in particular, has greatly pushed the status quo of JavaScript performance.” &#8211; anoniem</li>
</ul>
<p>Javascript viert volgend jaar al z&#8217;n twintigste verjaardag&#8230; De taal werd vrij snel populair in het begin en er werd zelfs een standaard voor geschreven. Toch keken &#8220;echte&#8221; developers een tijdlang neer op de taal. Een grote doorbraak kwam er dankzij AJAX (<a href="https://en.wikipedia.org/wiki/Ajax_(programming)">Asynchronous JavaScript and XML</a>), een technologie die toelaat om niet bij elke communicatie met de server opnieuw de volledige webpagina te moeten laden. Deze technologie heeft een beetje een evolutie gekend voorheen, maar kreeg voor het eerst haar naam in 2005. Sindsdien is de groei van Javascript als taal van het web niet meer te onderschatten.</p>
<p>AJAX op zijn beurt heeft geleid tot twee recentere ontwikkelingen die de dominantie van de taal nogmaals onderstrepen: moderne Javascript raamwerken (Frameworks) en server-side Javascript onder de vorm van Node.js.</p>
<h1>Frameworks</h1>
<p>Websites bouwen met interactieve en dynamische graphics was vroeger erg moeilijk, maar daar zijn nu Javascript raamwerken voor. Het begon vooral in 2006 met <a href="https://jquery.com/">JQuery</a>: een Javascript pakket dat het een stuk eenvoudiger maakte, en nog altijd doet, om mooie zaken op het scherm te presenteren. JQuery evolueert nog steeds, en is ondertussen geïntegreerd geraakt in tal van andere pakketten en frameworks. Niet in het minst ligt JQuery aan de basis van zowat alle recentere Javascript raamwerken die het ontwikkelingsgemak nog een stapje verder nemen.</p>
<h3>Bootstrap.js</h3>
<p>Bootstrap werd oorspronkelijk ontwikkeld door Twitter, en in 2011 open source gemaakt. Het bestaat uit een collectie aan tools voor het ondersteunen van het bouwen van websites en -apps, vooral gebaseerd op templates voor allerlei UI-elementen. De huidige versies hebben een goede ondersteuning voor responsive design en hanteren de mobile first strategie.</p>
<h3>Backbone.js</h3>
<p>Backbone bestaat al sinds 2010 als Javascript raamwerk en volgt iets dat lijkt op het model-view-controller (MVC) principe. Het ondersteunt en vereenvoudigt ook de verbinding via REST van de front-end met de backend van de te ontwikkelen site.</p>
<p>Het is vrij populair geworden en wordt momenteel zelfs in de core van Drupal 8, het populaire CMS, ingebouwd.</p>
<h3>AngularJS<a href="/wp-content/uploads/2014/07/angular.png"><img decoding="async" class="alignright wp-image-7396 " src="/wp-content/uploads/2014/07/angular-300x300.png" alt="angular" width="200" height="200" srcset="https://www.smalsresearch.be/wp-content/uploads/2014/07/angular-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2014/07/angular-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2014/07/angular.png 500w" sizes="(max-width: 200px) 100vw, 200px" /></a></h3>
<p>Angular is een raamwerk dat zich focust op het via Javascript uitbreiden van het html-model van een website. Zo kan je via eenvoudige, zelf gedefiniëerde extra sleutelwoorden in de html-pagina tonnen functionaliteit toevoegen zonder aan de overzichtelijkheid van het html-model te raken. Er wordt op die manier ook een heel niveau van herbruikbaarheid toegevoegd aan web-ontwikkeling.</p>
<h2>Node.js</h2>
<p>Voor de allereerste keer is Javascript niet alleen aan de client side, maar ook op de server enorm populair aan het worden. Dit komt doordat het gebruik van <a href="https://nodejs.org/">node.js</a> verschillende voordelen heeft:</p>
<ul>
<li>Efficiëntie en compatibiliteit: er moet niet langer telkens een vertaalslag worden uitgevoerd tussen de gegevens die op de server staan en degene in de browser: alles is in javascript, dus de manier waarop data wordt gerepresenteerd, is voor de client en de server hetzelfde (typisch gebeurt dit met <a style="font-style: normal;" href="https://en.wikipedia.org/wiki/JSON">json</a>). Voor de vertaalslag hoeft dus ook geen code meer te worden geschreven. Daarnaast is een node.js server ook vrij performant: één server kan zeer veel requests van clients tegelijk afhandelen.</li>
<li>Leercurve: Developers hoeven nog maar één programmeertaal te leren alvorens ze een volledige webapplicatie kunnen bouwen. Niet langer moeten ze een server-taal leren, zoals php of java, en daarnaast nog eens Javasript voor de client.</li>
</ul>
<p>Dit laatste heeft trouwens ook zijn impact op de Javascript frameworks: nu zijn er al frameworks die zich niet alleen op de client, maar op de volledige stack richten, puur in Javascript: <a href="https://www.meteor.com/">Meteor</a> is zo&#8217;n framework.</p>
<p>Zal Javascript verder <a href="https://news.dice.com/2013/05/13/javascript-is-eating-the-world-2/">de wereld veroveren</a> en misschien zelfs <a href="https://webapplog.com/php-vs-node-js/">php naar de kroon steken</a>? Dat is moeilijk te voorspellen, de wereld van web development verandert razend snel. Een Javascript framework dat vandaag populair is kan over een paar jaar al ouderwets lijken in vergelijking met nieuwere frameworks. We kunnen alleen maar besluiten dat we het door deze snelle evoluties allicht steeds makkelijker zullen hebben om goed werkende webapplicaties te ontwikkelen, en dat het gebruik van een modern Javascript framework, of eventueel zelfs van node.js, een te overwegen optie is bij quasi alle web projecten.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/javascript-altijd-en-overal/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Java 7, What&#8217;s new?</title>
		<link>https://www.smalsresearch.be/java-7-whats-new/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 30 Aug 2011 11:27:38 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java 7]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[Swing]]></category>
		<guid isPermaLink="false">/?p=3184</guid>

					<description><![CDATA[Sinds enige tijd is de release-versie van Java 7 op het toneel verschenen. Voor een Java-bedrijf is het zeer interessant om de nieuwe features van de taal eens te bekijken, dus een blogpost kon niet uitblijven. Waar ik het in deze post niet (verder) over zal over hebben, is het debacle dat Oracle van de [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2011/08/thumb-java-duke-guitar.png"><img loading="lazy" decoding="async" class="alignleft size-full wp-image-3192" title="thumb-java-duke-guitar" src="/wp-content/uploads/2011/08/thumb-java-duke-guitar.png" alt="" width="220" height="188" /></a>Sinds enige tijd is de release-versie van Java 7 op het toneel verschenen. Voor een Java-bedrijf is het zeer interessant om de nieuwe features van de taal eens te bekijken, dus een blogpost kon niet uitblijven. Waar ik het in deze post niet (verder) over zal over hebben, is het <a title="debacle dat Oracle van de lancering heeft gemaakt" href="https://blog.eisele.net/2011/07/dont-use-java-7-are-you-kidding-me.html">debacle dat Oracle van de lancering heeft gemaakt</a>: er zit een serieuze bug in de compiler-optimizaties, dus best nog even wachten met upgraden! (Toch wat weinig tijd tussen de release candidate en de echte &#8216;rush-release&#8217; gelaten, naar mijn mening.)</p>
<p>Maar goed, ter zake! Wat brengt <a title="Java 7" href="https://jdk7.java.net/">Java 7</a> ons voor vernieuwingen?</p>
<p><span id="more-3184"></span></p>
<p>Ik moet echter beginnen met een disclaimer: na jaren van ontwikkeling is er natuurlijk heel wat meer bijgekomen in de taal dan ik hier kan beschrijven. Mijn oplijsting is dus niet <a title="exhaustief" href="https://openjdk.org/projects/jdk7/features/">exhaustief</a>. Het blijkt trouwens vrij moeilijk om een perfect juist beeld bij elkaar te googlen van wat er nu precies wél of niet inzit, en daarbij ook nog eens een goede uitleg over deze zaken te krijgen (maar vandaar ook het nut van een blogpost als deze).</p>
<p><em>De vernieuwingen dan:</em></p>
<p>Eerst de zaken die we niet meteen met het blote oog kunnen zien: de virtuele machine heeft een hele evolutie doorgemaakt <a title="sinds het begin" href="https://www.oracle.com/technetwork/java/javase/overview/javahistory-timeline-198369.html">sinds het begin</a> van Java, en in versie 7 is er voor gezorgd dat er goede support is voor dynamische talen, zoals <a title="Groovy" href="https://www.groovy-lang.org/">Groovy</a>. Deze talen zullen nu quasi even performant zijn als Java zelf (<a href="https://en.wikipedia.org/wiki/Java_performance">no pun intended</a>). Verder zijn er een aantal zaken verbeterd betreffende class loaders, die voor minder bugs zorgen wanneer er meerdere van gebruikt worden, en er is nu ook een URLClassLoader.</p>
<p>Ook de ondersteuning voor parallelisme is nog wat beter geworden, met nieuwe klassen in het concurrency framework zoals de <a href="https://download.oracle.com/javase/7/docs/api/java/util/concurrent/ForkJoinPool.html">ForkJoinPool</a> en de <a href="https://download.oracle.com/javase/7/docs/api/java/util/concurrent/TransferQueue.html">TransferQueue</a>. Dit lijken mij goeie toevoegingen, maar de ondersteuning voor multithreading, met een hoog niveau van abstractie, was reeds erg goed. Ik bespreek dit raamwerk graag nog uitgebreider in een toekomstige blogpost. Multithreading zal zeker nog aan belang winnen in de toekomst, wanneer we meer en meer cores in onze computers krijgen.</p>
<p>Wat IO en netwerken betreft, zijn er voorts nog een aantal interessante toevoegingen, zoals een vernieuwing van de IO api (New IO: &#8220;NIO&#8221;), scp en sctp ondersteuning, gebruik van windows vista ipv6 en, last but not least: TLS 1.2 (ook wel SSL 3.3 genoemd).</p>
<p>Voor de security mensen: Elliptic Curve Cryptography is nu out-of-the-box beschikbaar.</p>
<p>En dan één van mijn stokpaardjes: de client, en Swing! Er is nu een nieuwe rendering-pipeline voor Java2D, waardoor een aantal features van moderne gpu&#8217;s ter beschikking komen te staan. Verder is er ondersteuning voor translucente en onregelmatig gevormde vensters, een <a href="https://download.oracle.com/javase/tutorial/uiswing/lookandfeel/nimbus.html">nieuwe Look and Feel</a>, en een nieuwe sound synthesizer. En ten slotte, zoals gewoonlijk, zijn een aantal zaken van <a title="SwingLabs" href="https://swinglabs.org/">SwingLabs</a> gemigreerd naar de standaard Swing api.</p>
<p>Tot zover de &#8216;saaiere&#8217; vernieuwingen; de echte vraag die echter op ieders lippen ligt, is natuurlijk: Wat zijn de nieuwe dingen die we kunnen doen als programmeur? <em>Give us the language features!</em></p>
<p>Een eerste kleine verbetering, is de mogelijkheid om Strings te gebruiken in een switch statement. Persoonlijk vind ik dit niet supernuttig, dus ik ga er ook geen voorbeeld van geven. Volgens mij zijn <a href="https://download.oracle.com/javase/tutorial/java/javaOO/enum.html">enums</a> veel beter geschikt om &#8216;of-of-of&#8217; constructies op poten te zetten, en is een goed uitgedacht design, gebruik makende van <a title="Polymorfisme" href="https://en.wikipedia.org/wiki/Subtyping">polymorfisme</a> en <a href="https://en.wikipedia.org/wiki/Dynamic_dispatch">dynamische binding</a>, meestal zowiezo een beter alternatief. Maar goed, het was een zinloze beperking, en het is goed dat deze nu is weggewerkt.</p>
<p>Next! Naast hexadecimale, octale en (gewone) decimale getallen, komt er nu ook een voorstellingswijze voor binaire getallen: ik moet zeggen: in quasi alle gevallen: <strong>blijf er van weg</strong>! Wat wel interessant is, is dat men nu underscores in getallen kan plaatsen om de leesbaarheid te verhogen. Zo is b.v. 1_000_000 vanaf nu een correcte en beter leesbare voorstellingswijze voor het getal 1000000. Ook in de andere voorstellingswijzen, en in floating point getallen, kan men ze gebruiken. Een getal moet wel nog altijd met een cijfer starten en eindigen.</p>
<p>Nog een kleine, eenvoudige verbetering is type inferentie bij het aanroepen van de constructor van generische klassen. Stel: je declareert een List&lt;String&gt; en je wil deze lijst initialiseren als een arraylist. Vroeger moest je dan als volgt de constructor aanroepen: new ArrayList&lt;String&gt;(). Met type inferentie wordt dit gewoon: new ArrayList&lt;&gt;(). De compiler is dus eindelijk slim genoeg geworden om te raden welk type je wou maken. Bemerk dat er nog steeds een diamandje &#8220;&lt;&gt;&#8221; nodig is, anders heb je een raw type. Vandaar dat men deze verbetering &#8220;<strong>diamond</strong>&#8221; heeft gedoopt. Eenvoudig en handig.</p>
<p>Een iets minder voor de hand liggende taaluitbreiding, is automatic resource management (ARM). De standaard manier van werken om een InputStream of File terug vrij te geven in geval van onverwachte gebeurtenissen, is dit in een finally clausule te zetten ( finally { file.close(); } ). Dit kan echter problemen opleveren wanneer je meerdere close-statements moet uitvoeren en de eerste close-methode zelf een foutmelding geeft, waardoor de erop volgende close-statements niet meer worden uitgevoerd. De nieuwe manier van werken, is de resources aan te maken in een statement, ingesloten in haakjes, volgende op het &#8216;try&#8217;-keyword. Een beetje zoals de declaratie van de teller in een for-statement. Bijgevolg krijg je dan iets als volgt: try (InputStream i = &#8230;; OutputStream o = &#8230;) {&#8230;} finally {/*niet meer nodig*/}. Achter de schermen zou dit dan werken alsof men recursieve try-finally statements gebruikt om alle mogelijke fouten op te vangen (dus de eerste close zit nog in een extra try blok, gevolgd door een finally block met daarin de tweede close; het geheel van deze try-finally zit op zijn beurt in het finally blok van de uit te voeren code). Je kan je inbeelden dat, als je dit manueel moest doen voor meer dan twee resources, er nogal wat <strong>boilerplate code</strong> aan te pas kwam; dit is dus een vrij nuttige feature.</p>
<p>De laatste taaluitbreiding die ik wil bespreken, heeft opnieuw met exception-handling te maken, ditmaal met het catch-blok. Bij het loggen van excepties die men niet onmiddellijk kan afhandelen, zal men deze vaak vangen, loggen, en dan opnieuw gooien. Vaak heeft men echter een try-blok dat verschillende soorten uitzonderingen kan gooien, waardoor men hetzelfde stukje code moet herhalen in een hele resem catch-blokken. Een superklasse gebruiken voor het catch-blok is vaak gevaarlijk, omdat er eventueel exceptie-types kunnen omvat worden waarvoor dit in eerste instantie niet de bedoeling was. Wanneer men b.v. het type &#8220;Exception&#8221; gebruikt, omvat dit alle mogelijke RuntimeExceptions, terwijl men misschien enkel een aantal niet-gerelateerde checked exceptions wou opvangen. De boilerplate code die hierbij komt kijken, kan men nu voor een deel schrappen, doordat men in de catch-expressie nu een lijst van types kan geven, gescheiden door verticale of-strepen ( &#8220;|&#8221; ). Men zou bijvoorbeeld kunnen zeggen: catch (NullPointerException | IndexOutOfBoundsException e) {log(e); throw e;}, in plaats van voor elk type uitzondering een apart catch-blok te maken. Ik had nog niet echt stilgestaan bij deze problematiek, maar ik denk wel dat het kan helpen om robuuste code te maken, voorzien van alle toeters en bellen om ze &#8220;enterprise-ready&#8221; te maken.</p>
<p>Meer uitleg betreffende de kleine, handige taaluitbreidingen, kan je vinden op de site van <a title="Project Coin" href="https://openjdk.java.net/projects/coin/">Project Coin</a>. Een aantal goeie voorbeelden kan je bekijken op een <a title="presentatie" href="https://blogs.sun.com/darcy/resource/JavaOne/J1_2010-ProjectCoin.pdf">presentatie</a> die een tijdje terug op <a title="JavaOne" href="https://www.oracle.com/javaone/index.html">JavaOne</a> is gegeven.</p>
<p>Tussen haakjes: tijdens mijn zoektocht ben ik ook de <strong>filosofie</strong> van Java nog eens tegengekomen, wat betreft het evolueren van de taal:</p>
<ul>
<li>Reading is more important than writing</li>
<li>Code should be a joy to read</li>
<li>The language should not hide what is happening</li>
<li>Code should do what it seems to do</li>
<li>Simplicity matters</li>
<li>A clear semantic model greatly boosts readability</li>
<li>Every “good” feature adds more “bad” weight</li>
<li>Sometimes it is best to leave things out</li>
</ul>
<p>Of deze principes tot nu toe trouw gevolgd zijn, laat ik over aan de lezer.</p>
<p>En als afsluiter: wat zit er niet in? Een aantal zaken zijn reeds lang in ontwikkeling, maar voorlopig blijkbaar toch nog iets te moeilijk: Doorgedreven <a title="modularisatie" href="https://www.jcp.org/en/jsr/detail?id=294">modularisatie</a> is o.a. al zeker tot Java 8 uitgesteld. Ook de veelgeplaagde, vaak gevraagde closures (<a title="Project Lambda" href="https://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-3.html">Project Lambda</a>), zijn voorlopig nog even terug in de kast gestoken, alsook een meer directe <a title="taalondersteuning" href="https://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001108.html">taalondersteuning</a> voor het collection framework. Meer geluk eind 2012?</p>
<pre></pre>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
