czwartek, stycznia 29

JSR294 – modułowość w Javie 7

Problem modułowości i reużywalności aplikacji pisanych w Javie znany jest nie od dziś. Chyba najważniejszą właściwością następnego wydania Javy (7.0) ma być modułowość sporego i czasami zbyt ciężkiego pakietu programistycznego JDK. Podkreślił to ostatnio także Mark Reinhold, główny architekt platformy Java Standard Edition, który jest odpowiedzialny za prace nad następną wersją. W swoim blogu zapowiedział inaugurację projektu Jigsaw, inicjatywy w ramach społeczności OpenJDK, której celem jest modułowość JDK 7 oraz praca nad specyfikacją JSR 294 "Improved Modularity Support in the Java Programming Language".

JSR 294 określa wprowadzenie tzw. superpakietów, a także rozszerzenie języka Java oraz wirtualnej maszyny Javy (JVM), w celu zagwarantowania możliwości tworzenia modularnego oprogramowania w Javie. Reinhold zamierza uwzględnić JSR 294 w Javie 7.
Kolejnymi specyfikacjami odnoszącymi się do tej tematyki są JSR 277 i JSR 291.
JSR 277 "Java Module System" wprowadza format dystrybucyjny oraz repozytorium dla pakietów Javy oraz przynależnych zasobów. Oprócz tego specyfikacja opisuje mechanizmy ładowania i integracji klas w czasie działania programu. Specyfikacja ta jest jednak krytykowana za zbyt małą elastyczność. JSR 277 nie będzie uwzględniona w Javie 7. Jak ktoś nie lubi czytać to więcej można się dowiedzieć z serwisu parleys.com, jest tam prezencja JSR-277 Java Module System


Z kolei specyfikacja JSR 291 "Dynamic Component Support for Java" została opublikowana w lutym 2006 roku przez firmę IBM. Określa ona standaryzację centralnych modułów frameworka OSGi w ramach JCP i osadzenie ich w platformie Java Standard Edition. Jako przykład służy tutaj obowiązująca w przypadku platformy JavaME specyfikacja JSR 232 "Mobile Operational Management". Celem JSR 291 jest zdefiniowanie dynamicznego frameworka, który obsługiwałby istniejące środowiska Java SE bazujące na dynamicznym modelu komponentów OSGi. Sun od samego początku podawał w wątpliwość konieczność wprowadzania tej specyfikacji, ponieważ koncepcja osadzenia podobna do JSR 291 została już opisana w specyfikacji wydanej przez konsorcjum OSGi. Mimo że pomysł OSGi został pierwotnie opracowany na platformie Javy, istnieją komponenty OSGi niezintegrowane z tym językiem. Ponieważ Reinhold nie wspomina o tej specyfikacji JSR 291, nie należy przypuszczać, aby została ona uwzględniona w Javie 7.


Jeżeli interesuje was problem modularności oprogramowania polecam linki (najlepiej oglądać w kolejności :P):