OpenJDK pojawia się w systemie Windows 10 na ARM. Czy więc można już zacząć używać Microsoft Surface Pro jako maszynę do programowania Java?
ARM coraz popularniejsze
Ostatnio istnieje dość duży „rush” na stosowanie procesorów w architekturze ARM. Na przykład Apple stale dąży do rozpoczęcia używania własnego chipa opartego na ARM a i AWS jakiś czas temu wypuścił serwery ARM. Także Microsoft przejawia zdecydowanie coś na kształt entuzjazmu dla stosowania procesorów ARM, zwłaszcza w notebookach, a ostatnio w środowiskach chmurowych. Ich linia Surface X Pro działa na sprzęcie ARM, a w 2017 roku ogłoszono przecież zamiar wypróbowania ARM właśnie w infrastrukturze chmurowej. Teraz Microsoft poszedł nawet o krok dalej: tego lata wniósł bowiem swój pierwszy duży wkład w OpenJDK, przeprowadzając pierwszą fazę przenoszenia OpenJDK na Windows 10 ARM (AArch64). W szczególności oznacza to, że można tworzyć i uruchamiać kod Java na maszynach operacyjnych Windows 10 ARM.
Projekt OpenJDK Windows on Arm64
Kierownikiem projektu OpenJDK Windows on Arm64 jest Monica Beckwith. Jej codzienna praca polega na ulepszaniu maszyny wirtualnej Hotspot w OpenJDK. Pracowała z OpenJDK odkąd tylko Sun rozpoczął ten projekt w 2006 roku. Pracowała głównie nad wydajnością, optymalizując aplikacje, JVM i heurystykę GC. Zespół poświęcił swój czas i wysiłek głównie na:
1) dzielenie łatek na fragmenty łatwo przyswajalne przez społeczność OpenJDK (w tym przypadku cztery zestawy poprawek);
2) testowanie (funkcjonalne, wydajności i regresji obu).
Dodawanie obsługi nowego portu oznacza konieczność dodania zupełnie nowego kodu, a następnie bardziej skomplikowana przeróbka udostępnionego już kodu. Trzeba tu bardzo uważać na niezrobienie szkody temu, co już tam było napisane (Linux aarch64).
Przeczytaj także: OpenJDK przechodzi na GitHuba
Faktycznie te wysiłki mogą mieć sens. Arm64 ma bogaty ekosystem i wraz z wprowadzeniem serwerów Arm stało się jasne, że potrzebny jest port Java, aby wesprzeć inwestycje samego Microsoft we wprowadzanie innowacji dzięki procesorom serwerowym ARM do użytku w centrach danych tej firmy.
Pamiętajmy, że wcześniej już Red Hat wykonał kawał pracy, przenosząc OpenJDK na Linuksa na Arm64. Swoją pracą Microsoft chce zasygnalizować społeczności OpenJDK, że zamierza współpracować i pomagać w zakresie platformy Java.
Przebieg prac
Za najtrudniejszą część pracy uznano konieczność przerabiania kodu współdzielonego linux-aarch64 a także kodu Windows-x86-64. To oznaczało konieczność, jak to określają deweloperzy, zminimalizowania naszych szumów/ a więc wprowadzania możliwie czystych i minimalistycznych poprawek. Chciano mieć także pewność, że testy funkcjonalne zostaną przeprowadzone na wszystkich kombinacjach platform. Przeprowadzano również szereg testów porównawczych wydajności i testów regresji na platformach testowych Windows-Aarch64, linux-aarch64 i Windows-x86-64.
Port został dobrze przyjęty przez Reddit, Hacker News i różne usługi społeczności Java.
Praktyka
Microsoft ostrożnie wypowiada się co do możliwości bezpiecznego użycia portu w środowiskach produkcyjnych. Jak to ujął Martijn Verburg: Jesteśmy dość konserwatywni, jeśli chodzi o nasze zalecenia dotyczące produkcji. Mamy do pokonania kilka kamieni milowych jakości, zanim zadeklarujemy gotowość do produkcji..
Kod musi być jeszcze w pełni scalony w Mainline OpenJDK. Muszą zostać przeprowadzone wewnętrzne testy zestawu TCK (Technical Compatibility Kit). Deweloperzy muszą też upewnić się, że port przechodzi wszystkie testy AdoptOpenjDK Quality Assurance. Do tego dochodzą różnego rodzaju branżowe testy porównawcze funkcjonalności i wydajności. Już obecnie jednym z systemów pracy i testów Pani Beckwith jest Surface Pro X w laptopie i ponoć się sprawdza.
Związki OpenJDK z Microsoft – można więc powiedzieć – stale się zacieśniają.