Java 9 modulesystem

Java 9 modulesystem
NikolaPolov
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 7 lat
  • Lokalizacja:Warszawa
  • Postów:106
1

Cześć czytałem ostatnio o tym że w javie 9 ma być możliwość uruchomienie programu bez zainstalowanego JRE na komputerze użytkownika . Czy ktoś bardziej w temacie mógłby mi przybliżyć jak to wygląda w praktyce . Jakie są plusy , jakie minusy ?


Nie byłbym sobą gdybym był kimś innym
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 19 godzin
3

Prawdopodobnie chodziło o dorzucanie JRE do samej aplikacji. Dzięki modularnemu JRE w Javie 9 możesz go mocno poobcinać wedle własnych potrzeb.

Poza tym jest jeszcze coś takiego jak: JEP 295: Ahead-of-Time Compilation wprowadzone w Javie 9, gdzie kompilujesz bajtkod Javowy wprost do natywnej binarki. Ma jednak pewne ograniczenia, np:

AOT initial release in JDK 9 is provided for experimental-only use and is restricted to Linux x64 systems running 64-bit Java with either Parallel or G1 GC.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 3x, ostatnio: Wibowit
NikolaPolov
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 7 lat
  • Lokalizacja:Warszawa
  • Postów:106
0

Dziękuje za odpowiedz . Rozumiem że będzie to pewnego rodzaju rewolucja . Jak to interpretować ?


Nie byłbym sobą gdybym był kimś innym
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 19 godzin
2

Pożyjemy, zobaczymy. Ekosystem Javy jest na tyle duży, że na dynamiczne zmiany nie ma co liczyć. Biblioteki będą stopniowo przenosić się do świata modułowego oferując przez długi czas wsteczną kompatybilność.

Trzeba też wziąć pod uwagę, że na modułowość Javy 9 składają się dwie rzeczy:

  • modułowość samej Javy o czym już wspomniałem - to pozwala na obcinanie JRE dołączanego do aplikacji, ale także na przyspieszanie uruchamiania JVMa (bo skoro nasza aplikacja korzysta tylko z części modułów Javy to resztę można w ogóle wyłączyć)
  • modułowość aplikacji - tutaj mamy mechanizm zależności modułów oraz wystawiania ich interfejsów. Są to narzędzia do segregowania API oraz weryfikacji kompletności zestawu bibliotek.

Największy zysk moim zdaniem będzie z lepszej kontroli widoczności klas. Skoro w module-info.java można wpisać tylko część paczek jako widocznych dla użytkowników biblioteki, to w innych paczkach można mieć publiczne klasy bez ryzyka używania ich wprost przez użytkowników biblioteki. Wymusi to mniejsze sprzężenie między biblioteką, a aplikacją, a co za tym idzie ułatwi migrację na nowsze wersje biblioteki.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

Dokładnie, np. mamy coś takiego:
http://google.github.io/guava/releases/7.0/api/docs/com/google/common/base/internal/Finalizer.html
dzięki modularyzacji taka klasa może być widoczna wewnątrz jarka a nie na zewnątrz :)


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.