Java 7

Enigszins vertraagd door de overname van Sun door Oracle is 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.

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.

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 ": ... ;
...
}

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.

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 geplaatst in java en getagged met , . Bookmark de permalink.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>