W tym tekście przybliżę Wam jakich zmian dokonało Oracle w JDK 9 oraz w Java 9 API. Jeśli jesteś developerem na pewno zainteresuje Cię to, jakie nowości wprowadza nowe wydanie platofrmy od Oracle. Zapraszam do lektury.

Trochę o Javie i JVM

Java i JVM to dwie, całkiem różne od siebie rzeczy. Java to język, w którym programujemy, a JVM to zespół oprogramowania będącego maszyną wirtualną, czyli swoistą warstwą pośredniczącą między nami, a tzw. “bare hardware”. To dzięki takiej strukturze programista JVM(nie, nie Javy) może w ogóle nie przejmować się sprawami czysto sprzętowymi takimi jak alokacja zmiennych w pamięci RAM,  pilnowanie zwalniania jej, pilnowanie zużycia CPU czy GPU czy inne.

Główne wady środowiska

Od zawsze zarzucano Javie(tak na prawdę to JVM), że jest bardzo zasobożerna. W rzeczywistości chodziło wyłącznie o zużycie RAMu, gdyż nigdy JVM nie zużywało specjalnie mocy obliczeniowej CPU. Działo się tak, gdyż programiści nigdy nie starali się tej pamięci oszczędzać, Garbage Collector nie działał do końca sprawnie, a  do tego JVM ma “tendencję” do alokowania większej ilość pamięci niż potrzeba. Dodatkowo Java zawsze potrafiła trochę “mulić”. A prawda jest inna. Java jest “wolniejsza”, jeśli chodzi o czas wykonywania względem języków jak C, C++ czy Rust, jednak nie jest to taka różnica by człowiek ją mógł zauważyć w formie lagów.

Zatem jakie te zmiany?

 

Struktura i dostęp w Java 9

Przede wszystkim zmianie ulegnie struktura logiczna JDK, jeśli chodzi o strukturę plików. Stara struktura opierała się na 3 folderach: lib, bin, jre, a następnie jre miała w sobie jeszcze foldery lib i bin. Ten układ został uproszczony do struktury 3 folderów: bin, lib, conf. Oba te układy prezentuje grafika poniżej. Dodatkowo usunięto pliki: tools.jar oraz rt.jar.

Java 9 Struktura w JDK 8 i JDK 9

Inną zmianą jest wprowadzenie JShell. Jest to interfejs zgodny z REPL, czyli Read-Eval-Print-Loop, występujacy np. w Pythonie. Dzięki temu będziemy mogli przetestować jakieś API ręcznie poprzez JShell, wykonując komendy jak w normalnym CMD(CommandLine).

W Javie 9 zostanie zmieniony też system budowania archiwów .jar. Zostanie on zastąpiony systemem modularnym, podobnym do tego znanego z Maven(zasada zależności i repozytoriów).

W strukturze JVM zmianie uległ jeszcze jeden istotny element: GarbageCollector. Zostanie on w domyśle ustawiony na G1, który znany jest od Javy 1.7, ale był tylko alternatywą, a nie tym używanym domyślnie w trakcie wykonywania kodu naszej aplikacji.

Zmiany w Java 9 API

Zmienione zostanie też dość znacznie Java API. Dodane zostaną ulepszenia do tego co istnieje, ale rownież zostaną niektóre paczki usunięte.

Rozszerzone zostanie API dotyczące “konkurencji”(ang. concurrency API). Chodzi tu przede wszystkim o “Reactive Streams API”, czyli API pomagające streamować dane tak, by nie powodować efektu “back-pressure”, ciśnienia, które odkłada się na procesorze i powoduje spadki wydajności. Poza tym ulepszone będzie wsparcie dla opóźnień i “timeoutów”, dziedziczenie w zakresie podklasowości oraz “kilka” metod. Obok tego jedną z najważniejszych zmian jest dodanie klasy StackWalker, która pozwoli nam szybko przemieszczać się wzdłuż “stack trace’u” naszej paczki.

List frames = StackWalker.getInstance().walk(s ->
s.dropWhile(f -> f.getClassName().startsWith("com.foo."))
.limit(10)
.collect(Collectors.toList()));

W Java 9 nie będzie potrzebne już dodawanie zewnętrznego API czy frameworka do operowania z protokołem HTTP przy wzorcu RESTful – przywitajmy się z HTTP 2.0

Kolejnym udogodnieniem jest dodanie “kopa” Process API Javy. Klasa Process oraz Runtime zapewniały do tej pory dość słabe wsparcie dla komunikacje z powłoką systemową. Od teraz będzie można np. pobrać PID jedną linijką kodu.

System.out.println("Your pid is " + Process.getCurrentPid());

Skoro powiedziane jest co zostanie dodane, to teraz czas powiedzieć co usunięte będzie.

Przede wszystkim usunięte zostało większość paczek sun.* z internalnego API Javy. Prócz tego nie znajdziemy jeszcze w Java 9 natywnego JSON API, ale to najmniejszy problem, gdyż tych jest bardzo wiele takich jak minimal json API czy Gson API od Google. Oracle nie zdecydowało się jeszcze na dodanie API służącego do przeliczania nominałów i walut w Javie, ale to też nie wydaje się być bardzo dużą stratą w dzisiejszych czasach.

Do tego wszystkiego trzeba jeszcze dodać zaostrzenie interpretacji słowa kluczowego public. Zmiany dotycząc przede wszystkim interpretacji żądania dostępu do klasy lub struktury danych czy też zmiennej oznaczonej tym słowem kluczowym przy użyciu mechanizmow refleksji.

Podsumowanie

Jak widać bardzo wyraźnie Oracle zapowiada bardzo dużo ciekawych feature’ów w najnowszym wydaniu Javy. Moim zdaniem wszystkie zmiany są bardzo pozytywne i zapowiadają się obiecująco, a co z tego wyjdzie to czas pokaże. W tekście postarałem się wymienić najważniejsze zmiany moim zdaniem, jednak tych zmian jest o wiele, wiele więcej. Wszystkie możecie znaleźć oczywiście w Release notes.

To by było na tyle w tym poście. Trzymajcie się!

WARTO PRZECZYTAĆ:

spotify kursy wideo Spotify dodało kursy wideo! Można uczyć się m.in. tworzenia muzyki
Spotify ciągle próbuje rozszerzać swoją ofertę, dodając coraz to kolejne funkcjonalności. Oprócz piosenek, podcastów i audiobooków na platformie pojawił się właśnie nowy typ treści —
suyu nintendo GitLab usunął Suyu. Nintendo kontynuuje walkę z emulatorami Switcha
W branży emulatorów Nintento Switcha znów zawrzało. GitLab, popularna platforma do zarządzania kodem źródłowym, usunęła repozytorium Suyu — odnogi emulatora switchowego emulatoraYuzu. Wszystko przez złożone
pacjent z chipem mózgowym Jak wygląda pierwszy pacjent, u którego wszczepiono chip mózgowy? Już wiadomo
O tym, że wszczepiono chip mózgowy u pierwszego pacjenta, informowaliśmy już prawie dwa miesiące temu. Nieznane były jednak jego dane. Teraz to się zmieniło –
Udostępnij

Administrator

Nasza redakcja składa się z zapalonych pasjonatów gamingu i technologii. Każdy ma swoją niszę, dzięki czemu razem możemy zaproponować Wam szeroki przekrój eksperckich materiałów. Dzielimy się najświeższymi wiadomościami, recenzjami i poradami, aby nasi czytelnicy byli na bieżąco z tym, co najważniejsze w świecie techu i gier.

10Komentarze

  • Karol, 6 grudnia 2017 @ 16:07 Odpowiedz

    Dzięki za wpis. Zastanawiam się czy 1.9 Java będzie działać w Windows XP.

    • Userr, 24 grudnia 2017 @ 03:18 Odpowiedz

      Minęły już ponad 3 lata od porzucenia przez Microsoft systemu Windows XP. Java 8 nie posiadała już oficjalnego wsparcia dla tegoż systemu. Obecnie coraz więcej oprogramowania nie jest z nim kompatybilne (począwszy od gier, przez przeglądarki, a kończąc na programach zabezpieczających), więc nie byłoby to zaskoczeniem gdyby tak przełomowa wersja 9. nie byłaby kompatybilna z Windowsem XP czy Vista.

  • CeylonRedHat, 31 stycznia 2018 @ 17:29 Odpowiedz

    A czy mogę się uczyć Scala lub Kotlin nie znając w ogóle Javy? Jak na moje oko są jakieś prostsze do nauki, nie mają średników kod jest zwięzły i miły dla oka. Do tego Scala ma piękną składnie i Scala.js, nie musiał bym się babrać w okropnym Javascript!

  • Czym jest Java? | Niezgrani.pl, 19 grudnia 2019 @ 14:51 Odpowiedz

    […] i programy internetowe czy aplikacje mobilne. Ponadto cały czas wykonywane są różnorakie zmiany https://techpolska.pl/java-9-zmiany/, które mają za zadanie sprawić, aby wciąż był to język aktualny i […]

  • Nauka Javy – czy warto? | Ajkomp.pl, 19 grudnia 2019 @ 14:52 Odpowiedz

    […] co sprawia, że przestają one być aktualne. Chodzi o narzędzie Jshell, które udostępniła Java 9. Czasami jednak długi kod nie jest wcale wadą, a zaletą – łatwiej wyłapać w nim pomniejsze […]

  • Języki programowania – które z nich warto znać? My już wiemy, 26 marca 2020 @ 07:22 Odpowiedz

    […] Osoby operujące tym językiem stale mogą rozwijać swoje umiejętności i nie brakuje stron https://techpolska.pl/java-9-zmiany/, na których pojawiają się nowinki w tym temacie. W ostatnim czasie Oracle dokonało zmian w JDK […]

  • Karol, 20 kwietnia 2020 @ 12:40 Odpowiedz

    Dzięki za wpis. Zastanawiam się czy 1.9 Java będzie działać w Windows XP.

    • Userr, 20 kwietnia 2020 @ 12:45 Odpowiedz

      Minęły już ponad 3 lata od porzucenia przez Microsoft systemu Windows XP. Java 8 nie posiadała już oficjalnego wsparcia dla tegoż systemu. Obecnie coraz więcej oprogramowania nie jest z nim kompatybilne (począwszy od gier, przez przeglądarki, a kończąc na programach zabezpieczających), więc nie byłoby to zaskoczeniem gdyby tak przełomowa wersja 9. nie byłaby kompatybilna z Windowsem XP czy Vista.

  • CeylonRedHat, 20 kwietnia 2020 @ 12:45 Odpowiedz

    A czy mogę się uczyć Scala lub Kotlin nie znając w ogóle Javy? Jak na moje oko są jakieś prostsze do nauki, nie mają średników kod jest zwięzły i miły dla oka. Do tego Scala ma piękną składnie i Scala.js, nie musiał bym się babrać w okropnym Javascript!

  • Co warto wiedzieć o Javie? - DNAsoftware.pl, 21 maja 2020 @ 12:41 Odpowiedz

    […] już kilkanaście wersji Javy, a każda z nich wprowadziła mniej lub bardziej odczuwalne zmiany https://techpolska.pl/java-9-zmiany/. Dlatego też dobry programista Javy powinien cały czas być na bieżąco z najnowszymi trendami, […]

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *