24 sep 2011 Nieuwe features in Oracle Java 7 Nieuws Enigszins vertraagd door de overname van Sun door Oracle is alweer sinds 28 juli Java 7 beschikbaar. Java 7 bevat geen hele grote wijzigingen zoals Java 5, dat o.a. generics introduceerde, maar bevat toch een aantal handige verbeteringen. Volgens Oracle levert Java 7 een betere productiviteit, een nieuw filesystem api, en een verbeterde virtual machine. In het onderstaande artikel een aantal verbeteringen: Diamond Syntax Strings in switch statements Precise re-throw Multi-catch 1.) Diamond syntax Alhoewel met generics type-safe collections mogelijk werden, levert het ook meer typewerk op, bijvoorbeeld: Map<String, String> myMap = new HashMap<String, String>(); Omdat polymorphisme niet van toepassing is op generic types en dus het <String, String> aan beide kanten gelijk moet zijn, lijkt het overbodig dat zowel links als rechts te herhalen. Met de komst van Java 7 is dat inderdaad niet meer nodig: Map<String, String> myMap = new HashMap<>(); Deze lege “<> “ wordt vanwege zijn vorm de diamond syntax genoemd en scheelt (een beetje) type- en leeswerk. 2) Strings in switch statements Een veel gestelde vraag tijdens de OCP Java SE 6 Programmer examen training is waarom we geen Strings kunnen gebruiken in een switch statement. Die vraag is met de komst van Java 7 overbodig, want vanaf nu kan het wel: String s = "dinsdag "; switch (s) { case "maandag ": ... ; case "dinsdag ": ... ; case "woensdag ": ... ; ... } 3.) Precise re-throw Wat exception handling betreft zijn er twee handige aanpassingen toegevoegd aan Java 7. Het is nu mogelijk om bij het catch-en en doorgooien van algemene Exceptions de specifieke exception class aan te geven in de throws-clause, in plaats van een algemene en nietszeggende “throws Exception”. Java 6 en eerder: public void example() throws Exception { try { // code that may throw IOException } catch (Exception e) { e.printStacktrace(); throw e; } } Java 7: public void example() throws IOException { try { // code that may throw IOException } catch (Exception e) { e.printStacktrace(); throw e; } } Op deze manier blijft de informatie over welke exception gegooid kan worden zo specifiek mogelijk. 4.) Multi-catch Een tweede uitbreiding bestaat uit het kunnen catch-en van meerdere exceptions in een enkel catch blok, met behulp van het |-karakter: try { ... } catch (IOException | ParseException e) { e.printStacktrace(); } De variabele ‘e’ wordt dan van het type Exception, de eerst gedeelte superclass van IOException en ParseException. Op deze manier hoef je de exception-handling code van de eerste exception niet nogmaals te herhalen voor de tweede. Naast deze nieuwe features bevat Java 7 o.a. een nieuw IO framework “NIO2” en de mogelijkheid grote taken op te breken in kleinere en parallel uit te voeren (Fork/Join Framework). Er zijn nog geen details bekend over de inhoud van een Oracle Certified Professional Java SE 7 Programmer certificaat, maar ga er maar vanuit dat een aantal van bovenstaande nieuwe features deel zal gaan uitmaken van de examenstof! Dit artikel is geschreven door Bram Rooijmans docent van de OCP Java SE 6 Programmer examen training. Op dit moment krijgt de Java Programming cursus van Vijfhart een update naar Java 7, binnenkort dus te volgen! Gerelateerde artikelen Vijfhart: kennispartner in de Digitale Transformatie Java voor testers (met Startgarantie) Help je loopbaan vooruit als MCSA Windows Server 2016