Devoxx 2009: heeft Java toekomst?
De nieuwste trends op het gebied van Java en de JVM, relevante ontwikkelingen voor developers in het algemeen en een hoop inspiratie zijn de belangrijkste elementen die jaarlijks terugkeren op het grootste Java-evenement van Europa. Devoxx werd dit jaar voor de achtste keer georganiseerd, en ook dit jaar had ik de kans om hier naar toe te gaan. Uiteraard was er veel te zien en te horen, en een uitgebreid verslag kan dus niet achterwege blijven.
Java 7 wordt ook modern?
De belangrijkste ontwikkeling die op dit moment duidelijk te zien is op een evenement als Devoxx is dat er een beweging is richting aspecten van functionele programmeertalen. Dit varieert van het invoeren van functionele programmeertechnieken in bestaande talen – waaronder Java, maar ook nieuwe talen die in meer of mindere mate functioneel zijn opgezet.
Uiteraard volgt hier gelijk het opvallendste nieuws uit wat tijdens Devoxx is bekendgemaakt: Java krijgt mogelijk toch closures. Helaas kwam dit nieuws samen met de mededeling dat de release van van Java 7 wordt uitgesteld tot op zijn vroegst september 2010. Mark Reinhold, de specification lead voor Java 7, kondigde dit aan tijdens een update-session over JDK7. Er zijn behoorlijk wat opmerkelijke aspecten aan deze aankondiging. Ten eerste vond het niet plaats tijdens een van de keynotes van Devoxx (die werden ingevuld door Oracle, Java EE6 en Adobe Flash Catalyst, hierover later meer). Ten tweede kondigde Mark vorig jaar nog tijdens de Devoxx keynote aan dat JDK7 definitief geen closures zou krijgen. Blijkbaar zijn de gedachten hierover veranderd. Bovendien wijkt het nieuwe voorstel af van de eerdere voorstellen voor closures in Java. Volgens eigen zeggen heeft Mark Reinhold de syntax bedacht tijdens de vlucht van de Verenigde Staten naar België. Vrij snel na de aankondiging van Reinhold, publiceerde Neil Gafter zijn closure-whitepaper van een update van het BGGA-closure voorstel, maar in tegenstelling tot eerdere berichten is dit document niet gerelateerd aan het closure-voorstel van Reinhold en is dus geen officiële beschrijving van het nieuwe voorstel.
De reden voor de introductie van closures zou liggen in het feit dat JDK7 ook Parallel Array en andere elementen uit het Forkjoin-framework krijgt; een project dat volgt uit JSR-166y dat diverse ideeën uit functionele talen voor Java met zich meebrengt. Naast closures en parallel array, zou JDK7 mogelijk ook nog multicatch-ondersteuning krijgen, waarmee het afhandelen van exceptions vereenvoudigd zal kunnen worden. Een andere aankondiging is dat dankzij de vertraging er waarschijnlijk toch een overkoepelende JSR komt voor Java 7, zodat we de nieuwste Java-versie straks ook echt met deze naam mogen aanduiden.
Naast closures werd er op Devoxx 2009 wederom aandacht besteed aan de andere vernieuwingen die in Java 7 zullen komen. Mark Reinhold gaf een lezing over Project Jigsaw, dat tot doel heeft een nieuw module systeem in de JDK te introduceren, wat ook bijvoorbeeld JavaFX de nodige snelheidsverbeteringen zal opleveren. Joseph D. Darcy gaf een presentatie over Project Coin, waarvan hij de leider is. Dit project heeft als doel om kleine veranderingen in de Java-taal door te voeren die de productiviteit van ontwikkelaars moet verhogen. Inmiddels zijn de definitieve verbeteringen voor Java 7 bepaald en kondigde hij aan dat er in de toekomst wellicht opnieuw een Project Coin zal komen om kleine taalverbeteringen in Java door te voeren. In Java 7 kunnen we in ieder geval switch op String-objecten, generic type inference en null-safe dereference verwachten. De exacte lijst met geaccepteerde features voor Java 7 wordt al geruime tijd bijgehouden door Alex Miller.
Sommige talen zijn al modern
Naast de functionele verbeteringen voor Java, was er ook veel aandacht voor andere talen voor de Java Virtual Machine die al in meer of mindere mate functioneel zijn. Howard Lewis Ship, bedenker van onder andere het Tapestry-framework, gaf een introductie van de functionele taal Clojure. Deze taal is gebaseerd op Lisp en voegt – volgens Ship – het beste van Java en Lisp samen. Scala kreeg ook uitgebreide aandacht. Bill Venners gaf een lezing over zijn project ScalaTest, een testframework in Scala dat onder andere aspecten van JUnit, TestNG en RSpec combineren tot een veelzijdige testtool die ook voor projecten die niet in Scala zijn geschreven kan worden gebruikt. Dit laatste maakt het volgens Venners uitermate geschikt om ScalaTest als ‘excuus’ te gebruiken om Scala binnen een organisatie te introduceren. In een sessie over Lift gaf Timothy Perrett, een van de developers van het project, een inleiding tot dit webframework geschreven in Scala. Belangrijke aspecten van Lift die het onderscheid van de concurrentie zijn de view-first-aanpak (het is dus geen MVC-framework), snelheid en veiligheid.
Tot slot demonstreerde Dick Wall, een van de leden van de Java Posse, in een sessie hoe je als ‘JVM-developer’ functionele aspecten in je dagelijks werk kunt integreren. Hij presenteerde aan de hand van een praktijkvoorbeeld uit zijn dagelijkse werk hoe je in Java functionele technieken kunt toepassen. Wall werkt als software developer bij Navigenics, een bedrijf dat analyses op DNA uitvoert om op basis daarvan een kans te berekenen op het al dan niet krijgen van specifieke erfelijke ziektes. In zijn voorbeeld liet hij zien hoe zaken als Google Collections, Project Lombok en het forkjoin-framework de complexiteit van code kan verlagen en de leesbaarheid verbeteren. Daarnaast liet hij zien hoe het nieuwe closure-voorstel voor Java de hoeveelheid code zou reduceren. Hij eindigde zijn presentatie met voorbeelden in Scala, waarin des te meer duidelijk werd dat een functionele aanpak de hoeveelheid code drastisch kan verminderen terwijl de onderhoudbaarheid en performance toeneemt.
Grijze pakken
Uiteraard is het niet allemaal hip en fancy in de dagelijkse ontwikkelpraktijk en zal niet iedereen geïnteresseerd zijn in functionele talen voor de JVM. Ook die mensen konden hun hart ophalen met diverse nieuwe ontwikkelingen en presentaties.
In de eerste keynote van woensdag kwam Enterprise Java uitgebreid aan bod. Oracle begon de dag met het uitspreken van zijn betrokkenheid bij Java en de community. Steven Harris, vice-president product- en server-development bij Oracle, legde uit hoe de Java-ontwikkeling is verlopen en in de toekomst zal doorgaan. Diverse grapjes, waaronder een James Gosling in een gephotoshopt pak, moesten deze lezing wat luchtigheid geven. Opvallend was dat Harris zelf in een Glassfish-shirt liep, terwijl de presentatie voor een gedeelte werd gevuld met een demo van WebLogic DM – Oracle’s eigen OSGi-gebaseerde applicatieserver.
Roberto Chinici en Ludovic Champenos gaven hierna een update over de stand van zaken met betrekking tot Java EE 6. Het belangrijkste nieuws is dat er een releasedatum is genoemd: 10 december 2009. Naast Java EE 6 zal dan ook de definitieve versie van Glassfish 3 uit worden gebracht tezamen met Netbeans 6.8. Java EE 6 bevat een aantal belangrijke vernieuwingen. Onder andere Dependency Injection (JSR-330), JAX-* (JAX-RS, JAX-WS, JAX-B), Bean Validation (JSR-303), JAR-files met resources (afbeeldingen, html-bestanden, e.d.) en diverse updates van diverse bestaande standaarden, waaronder JSF 2.0, JPA 2.0, Servlet 3.0, JSP 2.2, JSTL 1.2 en EJB 3.1 (‘lite’ en ‘full’).
Ook van het momenteel wellicht meest gebruikte framework voor Java webapplicaties komt een update. Spring zal binnen enkele weken versie 3.0 officieel beschikbaar stellen. Arjen Poutsma gaf in zijn presentatie een overzicht van welke vernieuwingen deze nieuwe versie zal brengen. De nieuwste Spring-versie is ontwikkeld voor Java 5, waardoor ook veel API’s features uit deze Java-versie benutten, waaronder generics en varargs. Desondanks zal het een ‘drop-in-replacement’ voor Spring 2.5 moeten zijn, op enkele uitzonderingen na.
De belangrijkste verbeteringen zijn te vinden op het gebied van ondersteuning voor RESTful webservices, dankzij URI templating ondersteuning in de @RequestMapping-annotatie, de toevoeging van een @PathVariable-annotatie en de OXM (Object-to-XML-mapping) die de nieuwe versie met zich meebrengt. Ook het configureren van een applicatie met behulp van JavaConfig zal nieuwe mogelijkheden met zich meebrengen, waarbij XML-configuratie overbodig is zonder dat er allerlei Spring-afhankelijkheden aan de POJO’s worden toegevoegd. Voor de portal-ontwikkelaars biedt Spring 3.0 ondersteuning voor de Portlet 2.0-specificatie. Poutsma liet weten dat Spring 3 zoveel mogelijk ondersteuning voor Java EE 6 zal bieden, waarbij de API’s en standaarden uit deze Java EE-versie ook zoveel mogelijk in Spring terugkomen. Versie 3.1, die in de loop van 2010 uit zal komen, zal de volledige Java EE 6-support bevatten, zo meldde Poutsma. Dit houdt echter niet in dat Spring alle features van Java EE 6 zal ondersteunen, zoals sommige toehoorders dachten.
Frontend pracht en praal
Ook in de Rich Internet Applications (RIA)-wereld zijn er nog veel nieuwe ontwikkelingen. Hoewel Devoxx in eerste instantie op Java-ontwikkelaars is gericht, kwam ook dit aspect van de ontwikkelingen op softwaregebied uitgebreid aan de orde op Devoxx.
Adobe imponeerde een groot deel van het publiek tijdens de woensdag-keynote met een demonstratie van Flash Catalyst. Met deze tool is het eenvoudig om een ontwerp dat door een designer is gemaakt in bijvoorbeeld Photoshop om te zetten in een werkende Flash-applicatie. Tijdens de demo toonde men hoe een in Photoshop getekende scrollbar werd omgezet in een functionerende Flash-widget zonder dat er ook maar een regel code hoefde te worden getypt. Verder toonde Adobe de nieuwe features van Flash Player 10.1, die eerder die week was uitgekomen. Belangrijke verbetering in deze versie is een duidelijke afname in het geheugengebruik van de player, wat in sommige gevallen zal leiden tot een ruime halvering van het gebruikte werkgeheugen. Daarnaast is het nu ook mogelijk om diverse hardwarecomponenten direct te benaderen vanuit Flash, waardoor het bijvoorbeeld mogelijk is om te detecteren dat er een USB-opslagmedium is aangesloten en multitouch-features van een apparaat te benutten.
Ook JavaFX was weer prominent aanwezig tijdens Devoxx. Vorig jaar introduceerde Sun versie 1.0 van JavaFX tijdens Devoxx en was de meestgehoorde vraag ‘waar zijn de componenten?’. Die vraag werd dit jaar ruimschoots beantwoord in sessies waar JavaFX duidelijk werd gepositioneerd als tool om gebruiksvriendelijke userinterfaces voor enterprise applicaties te bouwen. JavaFX 1.3, waarvan de releasedatum nu nog volstrekt onduidelijk is, zal een grote collectie widgets bevatten. Helaas ontbreekt alleen nog een table- en richtext-control, maar die leemte wordt gevuld door het JFXtras project dat door Stephen Chin werd besproken in zijn lezing over JavaFX voor enterprise toepassingen. Richard Bair en Jasper Potss van het JavaFX team demonstreerden in hun sessie een aantal van de nieuwe controls die in JavaFX 1.3 beschikbaar zullen zijn en lieten tevens zien hoe JavaFX te gebruiken is als frontend voor services die zijn geschreven in Java. Op een vraag hoe Sun de positie van JavaFX zag binnen de RIA-wereld werd duidelijk gemeld dat JavaFX als de gedoodverfde opvolger voor Swing wordt gezien, maar ook als concurrentie voor Flex en Silverlight.
Ook werden er een aantal concrete applicaties getoond die de kracht van JavaFX lieten zien. Tor Norbye, lead-developer van de JavaFX designer tool, toonde een nieuwe versie van de tool die is bedoeld voor frontend-developers waarmee JavaFX-applicaties kunnen worden ontwikkeld. Tijdens JavaOne toonde Sun ook al een versie van de designer tool, maar toen was hij nog geschreven in Swing. Inmiddels is hij helemaal gebouwd in JavaFX en zag het geheel er indrukwekkend uit met allerlei fraaie transities en animaties. Daarnaast toonde James Gosling de Java Store waaraan Sun werkt. Ook dit project is volledig gebouwd met behulp van JavaFX.
Tijdens de Java Posse-sessie, waarbij live een aflevering van de Java Posse-podcast werd opgenomen, liet Tor Norbye zich ontvallen dat JavaFX niet perse de Java VM vereist, wat de mogelijkheid open laat dat het bijvoorbeeld mogelijk is om JavaFX-applicaties ook op andere platformen te deployen, zoals bijvoorbeeld de iPhone.
Veranderingen in de software industrie
Zoals inmiddels duidelijk is, was er op technisch gebied enorm veel te zien en te horen tijdens Devoxx. Uiteraard is dit artikel, ondanks dat het al behoorlijk lang is, eigenlijk nog te kort om alles wat ik heb gezien en gehoord te beschrijven. Veel onderwerpen vergen eigenlijk een eigen verhaal waarin alle details uitgelegd kunnen worden. Toch is er nog een ding wat eigenlijk niet onbesproken kan blijven in een artikel over Devoxx 2009. Dat is de keynote van donderdag. Tijdens deze keynote spraken een tweetal prominenten uit de software industrie, te weten Ivar Jacobson en Robert C. Martin, ook wel bekend als ‘Uncle Bob’.
Ivar Jacobson, voornamelijk bekend van zijn betrokkenheid bij de ontwikkeling van UML en RUP, had een presentatie waarin hij zich afvroeg of we eigenlijk wel weten hoe we software moeten ontwikkelen. Hij hield een betoog waarin hij uiteenzette dat de huidige software-industrie zich veel te veel door hypes en trends laat leiden en dat alles wat we nu doen over vijf jaar alweer overboord is gegooid. Hij doelde hierbij vooral op de gebruikte methodologieën om het ontwikkelproces te sturen. Daarom ziet hij de noodzaak tot het opzetten van een nieuwe beweging genaamd SEMAT, die als doel heeft om tot een algemene beschrijving van methodologieën te komen voor software ontwikkeling. Het voordeel hiervan is dat er een theoretische basis komt om nieuwe methodologieën op te baseren en het veranderen van deze processen binnen organisaties beter te sturen. De algemene ondertoon van deze presentatie was dat in zijn ogen de software-industrie nog lang niet volwassen is en er duidelijk dingen moeten verbeteren.
Robert C. Martin haakte hier op in tijdens zijn lezing. Tijdens deze presentatie ging hij verder waar zijn boek ‘Clean Code’ ophoudt, en hield hij een vurig pleidooi dat een software-ontwikkelaar een professionele houding moet hebben en vakmanschap moet nastreven. Hij ziet dit als oplossing voor de problemen die veel organisaties hebben met het ontwikkelen van software, waaronder het niet halen van deadlines en de algemene trend dat ontwikkelaars een hekel hebben aan het management en andersom. Hij vindt dat veel developers momenteel niet professioneel werken en daardoor ook door velen niet als zodanig worden gezien. Software ontwikkelaars zijn geen arbeiders die per uur zouden moeten worden afgerekend, omdat de hoeveelheid werk die wordt opgeleverd niet direct afhankelijk is van de gespendeerde tijd. Daarnaast sprak hij zich ook fel uit tegen de gangbare praktijk dat goede developers vaak het management in rollen, aangezien daardoor de hoog nodige praktijkervaring binnen teams zelden aanwezig is. Hij sloot zijn uitermate interessante verhaal af met een pleidooi dat elke developer een test-coverage van honderd procent moet nastreven, omdat dat de enige manier is om zeker te zijn dat de software ook daadwerkelijk doet wat men belooft. Wanneer een tester bugs aantreft in een programma betekent dit dat de ontwikkelaar heeft gefaald en zijn ‘proces’ niet deugt, aldus ‘Uncle Bob’.
De JVM heeft toekomst
Zoals hopelijk duidelijk is, was er een hoop te zien en te beleven tijdens Devoxx 2009 en is het zeker een goede inspiratie om nieuwe libraries, technologieën en ontwikkelingen nader te bekijken. Niet alle bezochte lezingen zijn aan bod gekomen, zo ben ik ook nog bij een presentatie over Maven 3 geweest door Jason van Zyl en een introductie van Solr door Erik Hatcher. De komende periode kunnen we weer een flink aantal nieuwe producten tegemoet zien die het leven van een (Java-)developer zal vergemakkelijken of veranderen. De economische crisis was zeker merkbaar, aangezien het aantal bezoekers en sponsoren duidelijk achterbleven ten opzichte van vorig jaar, maar innovatie staat zeker niet stil als gevolg daarvan. Of het toevoegen van closures de toekomst van Java als taal zeker stelt, is een vraag die voorlopig nog niet beantwoord zal kunnen worden, maar het platform gebaseerd op de JVM lijkt voorlopig nog lang niet aan relevantie te hebben verloren.
Tot slot is het voor iedereen mogelijk om vanaf heden een groot deel van de Devoxx 2009-sessies terug te kijken via een nieuwe versie van Parleys.com. Binnen twee weken zullen hier alle sessies beschikbaar zijn, echter dient er wel 49 euro te worden betaald om ze te bekijken. In de loop van volgend jaar zullen de presentaties ook gratis te bekijken zijn.

Reageer
RSS feed for comments on this post · TrackBack URI