Proces rozwoju Javy

JCP — Java Community Process

Java rozwijana jest w ramach sformalizowanego procesu zwanego Java Community Process. W ramach tego procesu procesowania są żądania zmian (JSR). Każdy przechodzi przez wieloetapowy proces gdzie zaproponowane zmiany są coraz bardziej poważnie, modyfikowane, analizowane i ewentualnie wdrażane, albo odrzucane.

JSR — Java Specification Request

JSR to dokument tworzony w ramach Java Community Process (JCP), który wyznacza zakres dla zespołu ludzi do opracowania nowej specyfikacji. Specyfikacje te są zawsze związane z Javą, ale często zajmują się rzeczami, które nie będą podstawową technologią Java SE lub Java EE. JSR podejmuje najczęściej dojrzałą technologię, albo zagadnienie. Chodzi o to, żeby nie tworzyć specyfikacji, która na starcie jest wadliwa, bo niektóre przypadki nie zostały przewidziane. Przykładowo JSR 310 podejmował temat daty i czasu, a jego wynikiem jest Java Date/Time API. Bazowali wtedy na wadach poprzedniej wersji (java.util.Date i java.util.Calendar) i istniejących implementacjach np. Joda-Time. Co ciekawe twórca tej biblioteki, Stephen Colebourne, brał udział w tym procesie.

JEP — JDK Enhancement Proposal

JEP jest dokumentem, który proponuje ulepszenie podstawowej technologii Javy. Propozycje te są zazwyczaj dla ulepszeń, które nie są jeszcze gotowe do specyfikacji. Jak mówi dokument JEP-0, JEP może wymagać eksploracji nowatorskich (nawet "dziwnych") pomysłów. Jest to często proces prototypowania i eksplorowania tego co jest możliwe. Często po dłuższym czasie okazuje się, że rozwiązanie, które zdawało się być gotowe trafia na ślepy zaułek i jest niekompatybilne z resztą języka. Na podstawie JEP może powstać JSR.

Projekty JDK

W przypadku gdy propozycje zmian są za duże, żeby "zmieściły się" w ramach JEP grupowane są w ramach projektów. Aktualnie istnieje sporo projektów, a najważniejsze z nich to:

JLS — Java Language Specification

JLS to specyfikacja języka Java. Opisuje wszystkie(!) elementy języka. W przypadku Java 18 jest to ponad 800 stron. Jest to definicja języka. Opisuje bardzo szczegółowo jakie warunki należy spełnić, żeby program się poprawnie kompilował. Co ciekawe, to specyfikacja jest napisana dosyć przystępnie i czasami można do niej sięgnąć jeśli natrafimy na jakiś przypadek, gdzie wydaje się, że powinno się kompilować, a tak nie jest. Tutaj link, gdzie znajdziesz odnośnik do najnowszej specyfikacji.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupe na Facebooku.