To nejlepší z Javy 7

Od prvního veřejného vydání Javy 7 uplynuly již téměř 4 roky (léto 2011) a je dnes běžnou součástí produkčních prostředí. Přesto některé novinky, které přinesla, mohly být pozapomenuty. V dnešním článku si je osvěžíme a někdy příště se podíváme na novinky z Javy 8.

Diamond operator

Toto je celkem drobnost, ale dokáže potěšit. Při volání konstruktoru generické třídy již není třeba duplicitně uvádět její typ, stačí použít tzv. diamond operátor “<>”.
Map<String, List<Trade>> foo = new TreeMap<>();

Stringy ve switch statementu

Dříve šlo ve switchi použít pouze byte, short, char, int (+ wrappery) a enumy. Nově lze použít i Stringy.

Podtržítka v numerických literálech

Další drobnost, která ale může zabránit nechtěným chybám. Mnohokráte jsem počítal, kolik že vlastně řádů to číslo má. Vzpomínám si i na produkční chybu. V Javě 7 lze využít podtržítek k dosažení lepší čitelnosti dlouhých (i destinných) čísel.
int oneHundredMillion = 10000000; // Really?
int oneHundredMillion = 100_000_000;

Lepší zpracování vyjímek

Novinkou Javy 7 je tzv. multi-catch blok. V jednom bloku lze tedy odchytávat vícero typů vyjímek. Hodí se to především v případech, kdy na různé typy výjimek reagujete stejně.
try {
	…
} catch (ExceptionA e) {
	… // handle somehow
} catch (ExceptionB | ExceptionC e) {
	… // handle differently
}

Try-with resources

Try-with blok zjednodušuje zavírání různých streamů či zdrojů. Dříve tento proces zahrnoval mnoho podpůrného kódu, nyní to jde mnohem snadněji. Posuďte sami.

Dříve

FileOutputStream fos1 = null;
try {
	fos1 = new FileOutputStream("file.txt");
	// ...
} catch (FileNotFoundException e) {
	e.printStackTrace();
} finally {
	try {
		if (fos1 != null) {
			fos1.close();
	}
	} catch (IOException e) {
		e.printStackTrace();
	}
}

Nyní

try (FileOutputStream fos2 = new FileOutputStream("file.txt")) {
	// ...
} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}

Druhou výhodu spatřuji v tom, že rozsah platnosti proměnné fos2 nepřesahuje try blok. V try bloku lze použít třídy, které implementují nové rozhraní Autocloseable (nový předek původního rozhraní Closeable).

Krom změn samotného jazyka Java 7 obsahuje zcela nová API (např. pro práci se soubory), také množství novinek v JVM, svých knihovnách a nástrojích. Kompletní přehled je dostupný zde.

A jaké jsou vaše oblíbené featury?

Článek obsahuje 1 komentář

  • Tomáš Záluský

    1
    Díky za článek. Inspiroval mě k vytříbení názoru a jeho formulování na vlastním blogu: http://tomaszalusky.blogspot.cz/2015/02/ohlednuti-za-marketingem-javy-7.html