środa, 19 marca 2014

hello java 8

Wczoraj Oracle wypuścił pełną wersję javy 8.
Java rozwija się w takim kierunku aby sprostać dzisiejszym wyzwaniom jakim jest Big Data (przetwarzanie terabajtów danych) i efektywne wykorzystanie wielordzeniowych procesorów.
Pozwala na skuteczne pisanie złożonych algorytmów, wydajne przetwarzanie kolekcji w połączeniu ze skutecznym wykorzystaniem rdzeni procesora.
Pamiętacie join/fork z javy 7 ? :) Teraz zrobimy to prościej dzięki parallel stream.
A to tylko wierzchołek góry lodowej. Dzięki lambda zbliżamy się w kierunku języków funkcyjnych jak scala lub groovy (closures). Nasz kod teraz powinien być solidniejszy, pozbawiony zbędnych powtórzeń

Dobre wieści są takie, od grudnia 2013 Spring wspiera java 8 .
  W duchu lambda mamy:
  - JdbcTemplate - RowMapper
  - JmsTemplate - odświeżony na MessageCreator
  - TransactionTemplate - TransactionCallback

Features :
  - lambda expressions - umożliwia programowanie funkcyjne JSR-335
     (redukcja boilerplate code - metody anonimowe, reduce verbosity)
     (bazuje na invokeDynamic),
     (thread-safe)
      Podsumowując teraz możesz tworzyć kod bardziej abstrakcyjny, bardziej   czytelny oraz odporny na błędy, mniej podatny na mutowalność przez co  łatwiejszy do zrównoleglania.
      
  - stream - sekwencyjne oraz równoległe przetwarzanie danych
      (analogia do pipe w systemach linux, zyskujemy bardzo dużą elestyczność )
      (bazuje na join/fork)
  - compact profiles
  - prepare to Modularization
  - more and stronger algorithms
  - remove the permanent generation (nigdy już nie dostaniesz OutOfMemoryError : PermGen error)
  - Data & Time API -> joda (Wprowadza nową datę , czas i API )
    (Partial, duration, period, intervals, date ,time , instant , time-zone)
  - jdbc 4.2
  - bulk data operations for collections (filter/map/reduce)
    (bazuje na interfejsach : Function, Predicate, Consumer , Supplier , oraz Stream, Collector)
    (Przetwarza szeregowo i równolegle z wykorzystaniem wyrażenia Lambda)
    (Równoległość oparta jest na Fork-Join)
    (Lazy evaluation)
  - small VM (wsparcie dla urządzeń o małych zasobach pamięci - mobile device)
  - nashorn (natywny silnik js wbudowany w jre)
  - JavaFX 8

Dzięki zastosowaniu Javy 8 zwiększymy skalowalność oraz wydajność naszych aplikacji:
  - ForkJoin : 
      - inna polityka cache
      - szybszy obsługa małych i krótko żyjących tasków
      - łatwiejsza impl dzięki Streams
     - Atomics (Typy Atomowe)
        - szybsze wstawianie , wyjmowanie i inkrementacja
     - Nowe biblioteki 
           - operacje takie jak count , sum etc teraz bazują na wielu wątkach w celach poprawienia wydajności
      - Szybsza kompilacja
      - szybszy start aplikacji
      - PermGen  = (OutOfMemoryError  brak)
      - Metaspace  (-XX:MaxMetaspaceSize={size})
      - InvokeDynamic  - całkowicie przepisany (JSR 292) lepsza stabilność , wydajność i utrzymywanie
 

Wparcie dla IDE :
- eclipse kepler  : link











- sts 3.4.0 nie udało mi się użyć lambdy tak aby kompilator IDE się nie czepiał
- sts 3.5.0 m2 - podobna sytuacja
- netbeans 8.0 działa bez zarzutu
- idea też ma pełne wsparcie 


Opis nowej funkcjonalności w następnych postach

Brak komentarzy:

Prześlij komentarz