Po wielu latach prac, Oracle ogłosił, że 22 września 2016 zostanie wydana nowa Java 9. Jest ona bardzo długotrwałym i żmudnym projektem, który rozpoczął się niemal od czasu gdy Oracle przejął firmę Sun Microsystems. Po tym zdarzeniu firma musiała skompletować od początku zespół, który rozpoczął proces zmian oraz modularyzacji języka. Pojawiły się nowe wersje Javy, w szczególności Java 8, oraz dużo poprawek błędów w trakcie trwania tego procesu.
Na początku maja szef architektów Java Platfom Mark Reinhold upublicznił harmonogram prac nad Java 9:
- 2015-12-10: Feature Complete
- 2016-02-04: All Tests Run
- 2016-02-25: Rampdown Start
- 2016-04-21: Zero Bug Bounce
- 2016-06-16: Rampdown Phase 2
- 2016-07-21: Final Release Candidate
- 2016-09-22: General Availability
Jak widać, Reinhold daje Oracle dużo czasu pomiędzy etapami na ewentualne poprawki błędów. Największą zmianą w Javie 9 jest przejście do modułowości. Tak zwana „układanka” to zbiór klas, bibliotek i różnych innych danych wraz z metadanymi. Pierwszym moim skojarzeniem były pudełka z klockami, która można dokładać do projektu kawałkami w miarę potrzeby. Już widzieliśmy wstęp do wprowadzenia modułowości w Javie 8, a mianowicie były to profile kompaktowe. Ale te klocki zawarte w Javie 9 będą dużo mniejsze. Założeniem projektu jest usunięcie problematycznych plików RT i JAR, a zastąpienie ich przez profile kompaktowe (compact profiles).
Modułowość również poprawi bezpieczeństwo aplikacji, co jest bardzo potrzebne. Java 9 wprowadzi wyraźne różnice pomiędzy komponentami i jasno określi, co musi pozostać wewnątrz modułu, a co może się znaleźć na zewnątrz. Dzięki temu możliwość ataków poprzez odnoszenie się do metod, które poszerzą uprawnienia aplikacji lub jej dostęp do danych, pozostanie mocno zmniejszona. Nowy linker, który zajmie się linkowaniem modułu został nazwany jlink
.
Pozostaje nam czekać cierpliwie na premierę długo wyczekiwanej przez entuzjastów języka Java nowej 9-tki.
Czy ten artykuł jest dla przedszkolaków? „pudełka z klockami”, „bezpieczeństwo aplikacji, co jest bardzo potrzebne”, „Nowy linker, który zajmie się linkowaniem”.
Czekam tylko na to aby Oo po raz kolejny aby zaczął biadolić jaka to Java wolna, zasobożerna i zła…
Dzień dobry!
Java jest zajebista, tak samo jak Windows! :D
Prawda szczera ;-)
Oj tak :D
Jak z wydajnością programów skompilowanych Javą 9 w stosunku do Javy 8? Czy Java dogodni kiedyś C++ jesli chodzi o szybkosc wykonywanego kodu? Kiedys dla zabawy przepisalem generator posuniec programu szachowego do javy i okazalo sie ze jest o polowe wolniejsza w porownaniu do c++. TRAGEDIA!!!
W pewnych wąskich zastosowaniach Java jest w stanie prześcignąć c++, zresztą c++ nie jest tak przenośny. Po prostu każdy język ma jakąś swoją niszę, gdy chcesz mieć kod szybki od samego początku piszesz w C++, jeśli kod ma się wykonać wszędzie i nie brać wielu zasobów bierzesz Pythona, gdy chcesz mieć aplikację o przenośności Pythona i wydajności długoterminowej zbliżonej do c++ bierzesz Javę. Proste.
A na koniec: https://osworld.pl/czy-java-faktycznie-jest-taka-wolna/
Z całym szacunkiem, ale:
1) Java nie powstała po to, żeby programy w JVM były wykonywane szybciej, niż w C++. Chodziło raczej o to, żeby koszt tworzenia oprogramowania był mniejszy, niż dla C++. (To tak w dużym uproszczeniu i skrócie.)
Co nie zmienia faktu, że rzeczywiście w niektórych przypadkach szybkość JVM jest większa, niż szybkość oprogramowania pisanego w C++.
2) Co do Twojego generatora – to czy słowo „TRAGEDIA” odnosi się do Javy, czy też do Twoich umiejętności używania Javy?
Nie chcę ani Cię atakować, ani niczego sugerować. Po prostu zwracam uwagę na fakt, że język programowania to tylko narzędzie. Nawet jeśli mamy dobre narzędzie, to niekoniecznie znaczy, że jesteśmy w stanie dobrze je wykorzystać.
Pamiętam, kiedy z Pythona przesiadłem się na Javę. Przez pierwszy miesiąc próbowałem pisać w Javie tak, jakbym pisał w Pythonie. Wyniki były opłakane. Każdy język ma swoją specyfikę, którą trzeba poznać. W Javie piszemy inaczej, niż w Pythonie czy C++. Z mojego doświadczenia wynika, że takie jednorazowe eksperymenty z przepisywaniem kodu na inny język dają raczej kiepskie wyniki. Zupełnie inaczej jest, kiedy oprogramowanie od początku zostanie zaprojektowane do wykorzystania tego innego języka.
Ani Java, ani C++ nie są przesadnie wydajne jeśli programuje się w nich w tradycyjny sposób.
A czym są nie-tradycyjne sposoby? Piszemy stopami? :D (Serio pytam, nie wiem. :/)
Twierdzenie, że Java jest wolna na pulpicie, to powiem tak: Java nie została stworzona na desktop, ale dla rynku Enterprise. I przy pamięciożernych aplikacjach pokazuje swoje zalety nad wieloma językami. Zresztą ostatnio pisane było, że PlayOnLinux przechodzi na Java: https://osworld.pl/playonlinux-5-bedzie-napisany-w-javie/. tam nawet są odnośniki do testów wydajnościowych.
Ciekaw jestem czy Java 9 REPL da radę powalczyć z Pythonem/Rubym na polu języków skryptowych.
Nie.
Tu chodzi o prostotę w API.
Kompletnie nie rozumiem Twojej odpowiedzi.
[…] jest co najmniej szokująca dla wielu, ponieważ za miesiąc jest konferencja JavaOne 2015, a Java 9 ma już wyznaczoną datę premiery. Oracle chce się w tym momencie skupić na usługach w chmurze i konkurować z takimi […]