18 października 2011

Pierwszy rozdział o Java 7 od Packt

Już kiedyś wspominałem o zbiegach okoliczności i nie inaczej mógłbym zacząć ten wpis.

Skontaktowało się ze mną wydawnictwo Packt Publishing z propozycją recenzji technicznej książki o Java 7. Jakby zadań było mało, od razu się zgodziłem, aby przy okazji, a może przede wszystkim, zacząć poznawać nowości Java 7. W końcu i tak miałem się za to zabrać, a zbiegło się to w czasie z moimi planami na dokończenie października w ten sposób, więc mogę i "machnąć" recenzję.

Przeczytałem pierwszy rozdział, w którym wypisano zmiany określane mianem Project Coin. Napisałem "wypisano", ponieważ, jak na 40 stron, to i tak za mało w nich rozważań o zaletach tych zmian, więc na "opisano" to zdecydowanie za mało. Jeśli jednak wziąć pod uwagę, że książka zakłada styl ala książka kucharska (ang. cookbook), gdzie wiemy co i jak zastosować, ale niekoniecznie dlaczego, to przyjmuję ten styl.

W Java 7, dzięki Coin, dostajemy następujące zmiany (cytując stronę Coin):
  • Strings in switch
  • Binary integral literals and underscores in numeric literals
  • Multi-catch and more precise rethrow
  • Improved type inference for generic instance creation (diamond)
  • try-with-resources statement
  • Simplified varargs method invocation
W trakcie poznawania zmian dodatkowo poznałem java.lang.AutoCloseable (przy okazji tego wpisu zauważyłem, że jest nowa szata javadoc!), @SafeVarargs, java.util.Currency (klasie dostępnej od Java 1.4!), typie byte (przysiągłbym, że gdyby mnie zapytać o niego, to miałbym wątpliwości, czy istniał wcześniej, mimo częstego stosowania ByteArrayInputStream - a jest od Java 1.1!), java.nio.file.Paths i wreszcie heap pollution.

Dla mnie najbardziej wartościową zmianą w składni języka jest "more precise rethrow". Resztę uważam za ciekawą - try-with-resources, czasami mniej - strings in switch, a nawet zbędną - underscores in numeric literals.

Pewnie wiele z tych zmian, gdyby zaproponowano je w innym języku, albo zachęcano nimi do niego, nie znalazłyby uznania, ale zmian w samej konstrukcji języka Java 7 pewnie ominąć się nie da i, nawet jeśli nie ja je użyję, to zapewne inni, których kod będę czytał.

Zachęcam do zapoznania się ze wskazanymi dokumentami (pod linkami), aby po trochu zaznajamiać się z nieuniknionym.

A czy Ty masz już okazję pracować z Java 7? Która ze zmian przypadła Ci do gustu? Co w Java 7 API zasługuje na szczególną uwagę?