Java 11 – sprawdzamy co nowego!Java 11 – sprawdzamy co nowego!Java 11 – sprawdzamy co nowego!Java 11 – sprawdzamy co nowego!
  • Usługi
  • Klienci
  • Blog
  • Praca
  • O firmie
  • Kontakt
polski
  • angielski
✕

Java 11 – sprawdzamy co nowego!

5 stycznia 2019
blank

We wrześniu pojawiła się Java 11. Nowa wersja jest pierwszym planowanym pojawieniem się długoterminowych wersji wsparcia Oracle (LTS). LTS jest nowy sześciomiesięczny cykl, który zakłada stworzenie nowej wersji Java.

Java FX 11

Java FX jest technologią do tworzenia graficznego interfejsu użytkownika. Od 2011 roku jest projektem open source, a wraz z pojawieniem się 11 wersji Javy zdecydowano, że nie będzie ona już częścią JDK, zamiast tego będzie dostępna do pobrania niezależnie.

Java FX 11 wprowadza kilka nowości do samej biblioteki. Najciekawsza to chyba wprowadzenie publicznego FX Robot API, które jest odpowiednikiem API Robot z pakietu AWT. Pozwala ono na symulowanie interakcji użytkownika – wciskania klawiszy, klikania przycisków myszy, przesuwania kursora, czy robienia zrzutów ekranu. Wszystko to może być przydatne np. do napisania prostego bota do gry.

Powstała także nowa strona projektu, gdzie znajdziemy dokumentację i przykłady zastosowań: openjfx.io

Lista zmian w Javie 11 nie jest bardzo długa, ale na kilka elementów szczególnie warto zwrócić uwagę z punktu widzenia dewelopera.

Skrypty

Do tej pory w celu uruchomienia dowolnej aplikacji napisanej w Javie trzeba było wykonać kilka czynności. Napisać kod, skompilować go i dopiero uruchomić na wirtualnej maszynie. W Javie 11 wprowadzono możliwość bezpośredniego uruchamiania kodów, które znajdują się w pojedynczym pliku z kodem źródłowym. Przypomnijmy, że w Javie 9 dodano JShell – interaktywny interpreter, który pozwala w wygodny sposób wykonywać kod Javy i w prosty sposób np. testować proste rzeczy bez konieczności uruchamiania środowiska. Powodem wprowadzenia tej zmiany jest m.in. zmniejszenie progu wejścia do nauki języka, dzięki temu zmniejsza się ilość ceremoniałów potrzebnych do uruchomienia najprostszego hello world. Kompilacja, uruchamianie, javac, java, wirtualna maszyna – dla osoby, która chce po prostu wydrukować kawałek tekstu w konsoli mogło się to wydawać dużo. Po drugie to nowe podejście może zwyczajnie usprawnić pisania prostych skryptów, które usprawnią nam codzienną pracę. Można teraz tak naprawdę na szybko naskrobać coś w zwykłym notatniku i szybko to uruchomić nie robiąc sobie jednocześnie na dysku śmietnika ze skompilowanymi plikami .class.

Nashorn Javascript – przestarzały silnik

Java od bardzo dawna posiadała silnik pozwalający wykonywać kod JavaScript. Nashorn wprowadzony w Javie 8 został dodany jako zastępstwo silnika Rhino, a teraz, wraz z wydaniem Javy 11, zostaje on oznaczony jako deprecated. Wynika to głównie z tego, że standard ECMAscript (którego JavaScript jest główną implementacją) rozwija się w ostatnich latach na tyle szybko, że twórcy Nashorna nie są w stanie nadążyć z jego rozwojem przy zapewnieniu jednocześnie odpowiedniej jakości wolnej od błędów.

Biorąc pod uwagę fakt, że w bardzo dynamicznym tempie rozwija się projekt GraalVM, który pozwoli uruchamiać nie tylko kod JavaScript, ale także kod napisany w wielu innych językach, to zmiana ta w perspektywie czasu nie będzie aż tak dotkliwa. Prawdopodobnie w kolejnych wersjach Javy Nashorn zostanie całkowicie usunięty, więc jeśli wasze aplikacje go wykorzystują, to potrzebne będą zmiany.

Czyszczenia API ciąg dalszy

Java 10 była pierwszą wersją Javy, w której zdecydowano się usunąć wybrane elementy API. Dotyczyło to głównie elementów, które oznaczone zostały jako @Deprecated już w Javie 1.2, jednak ze względu na duży nacisk na kompatybilność wsteczną „śmieci” takie pozostawały dostępne. O ile w Javie 10 usunięto tylko pojedyncze metody, tak w Javie 11 usunięto już całe wybrane moduły, głównie te, które związane były z Javą EE i nigdy nie powinny się tu znaleźć. Usunięto m.in. moduły JAXB, JAX-WS, JTA, CORBA. Usunięto też m.in. metodę destroy() z klasy Thread, która w rzeczywistości nigdy nie została zaimplementowana.

Drobne usprawnienia API

Z punktu widzenia kodu nie pojawiają się wielkie zmiany, ale jest kilka przyjemnych udogodnień.

  • Metody związane z białymi znakami – isBlank(), strip() , stripLeading() , stripTrailing()
  • metoda repeat(int repeats)
  • metoda lines() zwracająca strumień z wierszami tekstu

Doczekaliśmy się także usprawnień w pakiecie NIO. Od teraz w celu zapisania tekstu do pliku nie będzie już potrzebne definiowanie BufferedWritera, zamiast tego do dyspozycji dostajemy wygodną metodę Files.writeString(). Analogiczną metodę dostajemy także do odczytu – Files.readString(). Powstała też metoda do porównania dwóch plików – Files.isSameFile().

Inne

Wprowadzono także dwa dodatkowe garbage collectory. Pierwszy o nazwie Epsilon jest bardzo nietypowy. Jego zadaniem jest nie odśmiecanie pamięci, co może wydawać się absurdem, ale może to być bardzo przydatne do celów testowych. Drugi o nazwie ZGC ma być bardzo wydajny w wielogigabajtowych scenariuszach.   

Przejdźmy do spraw technicznych. Java 11 przynosi gniazda (nests), mechanizm kontroli dostępu opisany w JEP 181. Dostosowuje się on do zagnieżdżonych typów, dzięki czemu klasy będące logicznie częścią tej samej jednostki kodu, ale które są kompilowane do różnych plików klasy, mogą uzyskać bezpośredni dostęp do swoich prywatnych członków bez konieczności wstawiania przez kompilator pomostowych metod dostępności.    Oprócz tego warto zwrócić uwagę na rozszerzenie formatu pliku klas o nową formę puli stałych, która przerzuca tworzenie na metody bootstrapowe (JEP 309), oraz wprowadzenie nowego odśmiecacza pamięci Epsilon, który kontroluje alokację pamięci, ale nie implementuje mechanizmów recyklingu pamięci (JEP 318). Java 11 to także ustandaryzowany klient HTTP (JEP 321), teraz w pełni asynchroniczny, nowa składnia dla parametrów w wyrażeniach lambda (JEP 323), pozwalająca wykorzystać słowo kluczowe var przy ich deklarowaniu, podstawowa implementacja protokołu bezpiecznej komunikacji TLS 1.3 i kilka innych ulepszeń kryptograficznych.

Pełna lista nowości znajduje się w informacjach o wydaniu, trzeba jednak pamiętać, że wśród nich są także informacje o usunięciu czy porzuceniu przestarzałych technologii. Moduły Java EE i CORBA zostały usunięte. Usunięto też narzędzia Pack200 i ich API, stosowane od niepamiętnych czasów do kompresji plików JAR.

JAVA 12 – już w marcu!

W nowym, sześciomiesięcznym cyklu wydawania Java, należy spodziewać się nowych, ciekawych funkcji dla programistów w szybszym tempie. Nowa wersja Javy zostanie już oddana do użytku w marcu 2019 roku. Można wcześniej uzyskać dostęp do wersji Open JDK 12 i wypróbować niektóre nowe funkcje takie jak Switch Expressions czy Records.

Komercyjne wsparcie dla Javy 11 jest gwarantowane przez Oracle na przynajmniej następne osiem lat. Kolejnym wydaniem o wydłużonym okresie wsparcia będzie Java 17, planowana na wrzesień 2021 roku.

Podsumowując – pomimo, że Java 11 nie przynosi żadnych rewolucyjnych zmian, to biorąc pod uwagę, że od Javy 10 minęły zaledwie 3 miesiące, to widać konsekwentny i zauważalny postęp.

Innych ciekawych funkcji, można się spodziewać w Java 12 i później. Osobiście doceniam to, że społeczność Java ewoluuje i dąży do przeniesienia Java. W nowym sześciomiesięcznym cyklu wydawniczym powinniśmy spodziewać się szybszych wydań fajnych funkcji,

Udostępnij
0
Piotr Chmiel
Piotr Chmiel
W branży IT od kilku lat, głównie zajmuję się SEO. Z dnia na dzień pogłębiam swoją wiedzę z obszaru IT tj. : Tworzenie stron, Wordpress, Machine Learning, SEO, Big Data itp. itd. Prywatnie amator koszykarz, basista, szachista i kucharz.

Podobne publikacje

blank
14 stycznia 2022

Trendy Big Data i Data Science w 2022


Dowiedz się więcej
blank
14 września 2021

Przyszłość przetwarzania języka naturalnego – NLP


Dowiedz się więcej
blank
23 kwietnia 2021

Sztuczna inteligencja w przemyśle


Dowiedz się więcej

Szukaj na blogu

✕

Kategorie

  • Ecommerce
  • SEO
  • Software development
blank
Personalization, Recommendations, Messaging & User Testing in a Single Platform with a Single Tag implementation
Greenlogic Logo

Greenlogic - PolandPOLSKA
ul. Krupnicza 13
50-075 Wrocław
+48 505 020 036
[email protected]

Greenlogic - AustraliaAUSTRALIA
10a Mitford Street
3182 St. Kilda Melbourne
+61 490 235 843
[email protected]

Software House

  • Tworzenie oprogramowania
    • Aplikacje dedykowane Java
    • Machine learning
    • Big data dla ecommerce
    • Tworzenie stron internetowych WordPress
    • Sklepy internetowe WordPress + Woocommerce
    • Front end development
  • Projektowanie
    • Projektowanie usług
    • Projektowanie serwisów internetowych
    • Projektowanie aplikacji mobilnych (PWA)
    • Projektowanie i optymalizacja UX

Agencja Ecommerce

  • Badania i analiza danych
    • Doradztwo transakcyjne eCommerce
    • Analityka internetowa
    • Analiza on-page / off-page SEO
    • Badania UI / UX
  • Zwiększanie sprzedaży
    • Optymalizacja konwersji (CRO)
    • White Hat SEO
    • Content marketing
    • Online marketing

Greenlogic

  • O firmie
  • Blog
  • Polityka prywatności
  • Praca
  • Kontakt
© 2009- Greenlogic - Software House & Agencja Ecommerce

Sąd Rejonowy dla Wrocławia-Fabrycznej VI Wydział Gospodarczy KRS nr 0000602965. Kapitał zakładowy 50.000 zł opłacony w całości.

polski
  • polski
  • angielski