Syntaktická cukrátka v Jave 7
Je libo a nelibo synataktická cukrátka?
Java se po vzoru dalších jazyků vydala na cestu přidávání nových syntatktických cukrátek. Podle zveřejněných informací verze 7 zřejmě tento trend jenom potvrdí. Pokud mají syntaktická cukrátka něco společného, pak je to fakt, že rozdělují komunitu ve dví. Co jedni vítají s otevřenou naručí, druzí nemohou strávit.
Kolekce
Inicializace kolekcí (seznam, mapa) pomocí syntaxe pro zápis pole. Že nevíte co mám přsně na mysli? Následující kód Vám to prozradí.
//Java 6 a starší
List polehouni = new ArrayList();
polehouni.add("Dagi");
polehouni.add("NkD");
polehouni.add("Roumen");//Java 7
List polehouni = ["Dagi", "NkD", "Roumen"];
nebo
List polehouni = new ArrayList() ["Dagi", "NkD", "Roumen"];Pro mapu by zápis mohl vypadat následovně.
//Java 7
Map = ["Abba" : 1972, "Beatles" : 1960, "Corrs" : 1995];Operátory
Přetížení aritmetických operátorů pro BigDecimal a BigInteger.
//Java 6 a starší
BigInteger c;
BigInteger a = new BigInteger(1);
BigInteger b = new BigInteger(1);
c = a.add(b);//Java 7
BigInteger c;
BigInteger a = new BigInteger(1);
BigInteger b = new BigInteger(1);
c = a + b;Property
Navrhované změny se týkají přístupu a definice k bean propertám.
//Java 6 a starší
public class Auto {
private int barva;
public void setBarva(int barva) {
this.barva=barva;
}
public int getBarva() {
return this.barva;
}
}//Java 7
public class Auto {
public int property barva;
}Pro přístup k jednotlivým propertám by se místo jména gettru/settru použije speciální znak (.,#, ->).
//Java 6 a starší
Auto auto = new Auto();
auto.setBarva(10);
int barva = auto.getBarva();//Java 7
Auto auto = new Auto();
auto->barva = 10;
int barva = auto->barva;Closures
Nový datový typ — funkce. Náhrada anonymních vnitřních tříd. Více se dočtete v dříve publikovaném článku Closures v Jave — funkce se bouří.
Jak jsem psal již výše tyto změny nenechájí klidného opravdu nikoho. Ne všechno je ještě posvěceno a většina z výše uvedených cukříků je ve stádui návrhu. To znamená, že není jisté jestli se do Javy 7 dostanou. Ač bych například definici kolekcí výše zmíněným způsobem uvítal, nejsem obecně příznivcem rozšiřování syntaxe.
Proti rozšiřování syntaxe hovořili v minulosti dva hlavní faktory, od Javy 6 jsou to dokonce faktory tři.
- Boří zpětnou kompatibilitu zdrojového kódu.
- Znepřehledňují syntaxi (výjimka zavádějí nový rozměr).
- Pro podobné zefektivnění je zde podpora dalších jazyků v JVM.
Na jednu stranu rozumím, že se vývojáři Javy snaží držet syntaxi konkurenceschopnou, ale na druhou stranu si kladu otázku: Proč se tenhle boj nenechá vybojovat skriptovacím jazykům na JVM?
Související články
Související články
Související epizody CZ Podcastu
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.
- #1 · Vývojová prostředí v Javě
První díl CZ Podcastu se věnuje vývojovým prostředím pro Javu.