W JDK7 dodadzą bibliotekę czy raczej framework Fork-Join pozwalający na łatwiejsze pisanie aplikacji, które mogą skorzystać z wielowątkowości. To taki odpowiednik Google'owego MapReduce.
I tu ciekawostka, większość przykładów w sieci pokazujących jakie to fajne jest Fork-Join używa w środku metody
forkJoin()
, której nie ma w wersji Fork-Join która jest dostępna w obecnych wersjach JDK7 :-)Jak zauważyłem w swoich testach, dobrze
forkJoin()
zastępuje wywołanie na przekazywanych do forkJoin()
taskach najpierw fork()
, a później helpJoin()
.Ogólnie będzie to chyba fajna zabawka, chociaż "cały ciężar" spada na programistę, bo ktoś musi stwierdzić czy w ogóle da się dany algorytm zrównoleglić ;-) Bo nie wszystko, albo nawet wiele rzeczy, trudno zmienić na działanie wg. zasady dziel i zwyciężaj.
Przydałaby się jakaś dobra dokumentacja, albo dobry tutorial.
Ta fajna zabawka Fork-Join ślicznie działa na Azule :-) Wczoraj miałem szkolenie/wykład z Multi-core programming in Java i pod koniec prowadzący pokazał nam zabawkę jaką mają w laboratorium :-) Czyli "serwer" Azule, z 2 procesorami po 54 core'y każdy, czyli łącznie 108 procesorów, z których 100 dostępnych jest dla aplikacji w Java'ie.
Wszystko działa tak, że w systemie [przykłady były pokazywane na Linuksie jako maszynie skąd "startowały" programy] trzeba było wskazać, że chcemy używać maszyny wirtualne Azule, a nie np. Sunowskiej, po czym program odpalało się przy pomocy tej Azulowej maszyny i po chwili wszystko ślicznie działało na 100 procesorach Azule :-) Konfiguracja którą nam pokazywano to jedna z mniejszych [druga od końca] czyli 108 core'ów i tylko 96GB RAM :-)
Robi wrażenie. Taki serwer obliczeniowy.
Jak już przy Java 7 jestem, to takie pytanie. Android i jego Dalvik to taka dziwna Java, z innym bytecodem. Jeśli chodzi o ficzery języka to jest to Java 5/6, jeśli chodzi o "pośredni" etap bytecodu Java'owego to akceptuje Java 6.
W Java 7 wchodzą nowe ficzery języka, z których jak mniemam, ale to tylko przypuszczenie, część będzie związana z całkiem nowymi bytecodami [co najmniej chyba te rzeczy związane z językami dynamicznymi, a może też domknięcia].
Stąd moje pytanie, kiedy Android/Dalvik staną się kompatybilne z tymi nowymi ficzerami Java'y? I czy będzie to oznaczało kolejną zmianę wersji Androida? :-)
A jak Android to mój widget do Androida nabiera kształtów :-) Okazało się też, że Layouty w Androidzie nie są takie trudne. Jak na razie bazuję głównie na LinearLayout, którego największą tajemnicą, której nie znałem jest to, że może pracować w trybie vertical lub horizontal :-) to znacznie ułatwia :-)
Jeszcze o Androidzie, w Euro można kupić HTC Desire za 1769 złotych :-) ktoś mi chce zasponsorować? :-) [sam na razie nie mam zamiaru wydać 1769 złotych na telefon, ale jakby się okazało, że dostanie Androida 2.2 to się będę poważnie zastanawiał ;-) Chociaż chyba i tak wolałbym Nexus One, może ciut gorszy, bo nie ma radia i Sense UI, ale Google będzie chyba do niego częściej system wypuszczać]
Wracając do tego Multi-core programming in Java. Dwie konstatacje, pierwsze to to, że bardzo dobrze robię, że zaglądam w kod JDK. Tam się można wiele nauczyć i dostrzec geniusz ludzi, którzy je pisali. Np. taka klasa
ConcurrentHashMap
jest genialna, już sam pomysł by do zmniejszenia ilości potencjalnych konfliktów między wątkami użyć większej ilości HashMap
zasługuje na pochwałę :-)Konstatacja druga jest taka, że chociaż o wielowątkowości wiem pewnie więcej od 80-90% programistów Java'y to jeszcze dużo muszę zrozumieć :-) Chociaż z plusów muszę sobie przyznać, że po jakimś czasie dotarło do mnie samego, że jak się pisze cache współpracuję z bazą danych to dobrze by było żeby obiekty z danymi obsługiwały metodę
clone()
bo wtedy jest to "ciut" bezpieczniejsze ;-)Z życzeń: mogłoby przestać padać.
Podobne postybeta
Azule i Android - przyszłość Java'y?
No i z lambdy nici
Poprawiamy JDK7 ;-)
Tnę i przerabiam na mniejsze, czyli nieprzewidziane skutki refactoringu
Wyznania programoholika ;-)
Brak komentarzy:
Prześlij komentarz