Pierwsza ciekawostka dla mnie to nazewnictwo - Java SE 8 vs JDK 8. Nie było to tak oczywiste, bo Java SE 8 to specyfikacja, a JDK 8 jej implementacją od Oracle. Jakoś wcześniej mi to umykało. Tak przynajmniej napisano w dokumentacji.
Mówi się, że najlepszym sposobem na naukę nowego języka jest po prostu korzystać z niego. Dotyczy to języka mówionego i dobrze sprawdza się również z językiem programowania. W ten sposób właśnie zamierzam poznać Java 8. Na swoim blogu proponuję pracę z IntelliJ IDEA 13. Właśnie kilka dni temu wyszła wersja 13.1.1 i wystarczy pobrać bezpłatną wersję Community Edition.
Przy założeniu, że Java 8 została zainstalowana, w IDEA wybierasz Create New Project, a później Java, wciskasz Next, aż pojawi się panel, w którym po raz pierwszy wybieramy Java 8 jako środowisko pracy.
Po stworzeniu projektu, upewnij się, że Project language level ustawiony jest na 8.0 - Lambdas, type annotations, etc.
Mając projekt można zacząć rozpoznawać Java 8 API. Od czego zaczniemy? Może java.util.stream?! A nie inaczej, skoro jest to (wraz z lambdami) jedna z ważniejszych zmian w tej wersji języka.
Za Collections Framework Enhancements in Java SE 8:
"Classes in the new java.util.stream package provide a Stream API to support functional-style operations on streams of elements. The Stream API is integrated into the Collections API, which enables bulk operations on collections, such as sequential or parallel map-reduce transformations."
Zaczniemy właśnie od Stream API, bo rozpoznając ten kawałek Java 8 nie sposób nie dotknąć innych zmian jak chociażby wspomniane lambdy.
Przez Collections Framework Enhancements in Java SE 8 dochodzimy do…i tu znowu cała masa dokumentacji. Zachęcam do lektury New and Enhanced APIs That Take Advantage of Lambda Expressions and Streams in Java SE 8.
Na tej stronie można doświadczyć pierwszego spotkania ze zmianami w Java 8:
Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8 }; ListZacznijmy od tego kawałka.listOfIntegers = new ArrayList<>(Arrays.asList(intArray)); System.out.println("Sum of integers: " + listOfIntegers .stream() .reduce(Integer::sum).get());
Na początku rzuciło mi się, dlaczego new
ArrayList<>(Arrays.asList(intArray))
zamiast po prostu Arrays.asList(intArray)
? Pewnie jakaś ukryta wiedza magiczna.Dla adeptów Java 8 nową metodą w
java.util.List<t>
, a dokładniej java.util.Collection
jest default Stream"Returns a sequential Stream with this collection as its source."
- Po pierwsze, co oznacza default przy sygnaturze?
- Po drugie, czym jest Stream?
- Po trzecie, skoro stream() zwraca “a sequential Stream”, to czy istnieje inny rodzaj Stream, np. non-sequential?
Brak komentarzy:
Prześlij komentarz