Opcjonalny pakiet jest wdrożenie otwartego, standardowego API (przykłady opcjonalnych pakietów JavaServlet, Java3D). Większość opcjonalnych pakietów jest zrootowana w javax.*przestrzeni nazw, chociaż mogą istnieć wyjątki.
Lucky
Odpowiedzi:
212
Myślę, że to rzecz historyczna - jeśli pakiet zostanie wprowadzony jako dodatek do istniejącego środowiska JRE, pojawi się jako javax. Jeśli po raz pierwszy został wprowadzony jako część środowiska JRE (jak sądzę NIO), to pojawia się jako java. Nie jestem pewien, dlaczego nowy interfejs API daty i godziny skończy jako javaxzgodny z tą logiką ... chyba że będzie dostępny osobno jako biblioteka do pracy z wcześniejszymi wersjami (co byłoby przydatne). Zauważ, że wiele lat później: w końcu ostatecznie się pojawiło java.
Wydaje mi się, że istnieją ograniczenia dotyczące javapakietu - myślę, że moduły ładujące klasy są skonfigurowane tak, aby zezwalały tylkojava.* na ładowanie klas wewnątrz rt.jarlub coś podobnego. (Na pewno jest odprawa ClassLoader.preDefineClass.)
EDYCJA: Chociaż oficjalne wyjaśnienie (sugerowane orbfish wyszukiwania nie przyniosło żadnego na pierwszej stronie) nie ma wątpliwości co do „rdzenia” vs. uzasadnienie historyczne. Czy java.beanstak naprawdę na przykład jest to „rdzeń” Javy?
Czy czytelnikowi łatwiej jest nacisnąć Alt-T i wpisać go niż wycinać i wklejać za pomocą iPada? ;). Masz rację, myślę, że miałem na myśli download.oracle.com/javase/tutorial/ext/index.html . Bez obrazy BTW Zazwyczaj uważam twoje odpowiedzi za przydatne Jestem zaskoczony, że ta odpowiedź została zaakceptowana.
orbfish,
1
Termin „javax” nie pojawia się nigdzie w linku sugerowanym wcześniej w tym wątku komentarza.
broszura
W końcu nowy interfejs API daty i godziny skończy się tak, java.timejak powinien.
Michael Piefel,
234
Pierwotnie javaxmiał być przeznaczony na rozszerzenia, a czasem rzeczy były promowane z javaxjava.
Jednym z problemów było ograniczenie przez Netscape (i prawdopodobnie IE) klas, które mogą znajdować się w pakiecie java.
Kiedy Swing został ustawiony na „absolwenta”, by javaz javaxnie było coś w rodzaju mini-wysadzić ponieważ ludzie zdali sobie sprawę, że będą musieli zmodyfikować wszystkie ich importu. Biorąc pod uwagę, że kompatybilność wsteczna jest jednym z głównych celów Java, zmienili zdanie.
W tym momencie, przynajmniej dla społeczności (może nie dla Słońca) cały punkt javaxzostał utracony. Więc teraz mamy w javax kilka rzeczy, które prawdopodobnie powinny być java... ale oprócz ludzi, którzy wybrali nazwy pakietów, nie wiem, czy ktokolwiek może dowiedzieć się, jakie są uzasadnienia dla poszczególnych przypadków.
„Kiedy Swing został„ ukończony ”do java z javax, nastąpiło coś w rodzaju mini-wysadzenia, ponieważ ludzie zdali sobie sprawę, że będą musieli zmodyfikować cały import”. Ludzie narzekali na coś, co można osiągnąć za pomocą wyrażenia regularnego, które było wynikiem użycia przez nich kodu jakości przedprodukcyjnego?
Sled
10
Tak. Napisałem narzędzie w Visual Cafe do konwersji między nimi (javax i java), zanim Sun zdecydował się zachować je w pakiecie javax.
TofuBeer
51
javapakiety są podstawowe , a javaxpakiety są rozszerzeniami.
Swing był rozszerzeniem, ponieważ AWT był oryginalnym interfejsem API interfejsu użytkownika. Swing pojawił się później, w wersji 1.1.
Huśtawka nie była częścią 1.1. Była wersja Swinga, która działała na 1.1 jako biblioteka.
Tom Hawtin - tackline
Jest klucz - „biblioteka”, a nie część JDK. Czy mam błędną wersję? Moi javadocs sugerują, że JButton istnieje od 1.3, więc być może moja pamięć mnie zawiodła.
duffymo,
1
Dlaczego więc nowy interfejs API daty i godziny w javax .. data i godzina nie jest „podstawowy”?
Pacerier
1
„... nowy interfejs API daty i godziny (JSR-310) ...” - ktoś z Oracle / Sun zdecydował, że lepiej umieścić javax, ponieważ jest to nowsza wersja bibliotek podstawowych. Jeśli się nie zgadzasz, najlepiej się z nimi pogodzić.
Przestrzeń nazw javax jest zwykle (to załadowane słowo) używana dla standardowych rozszerzeń, obecnie znanych jako pakiety opcjonalne . Standardowe rozszerzenia są podzbiorem nie-podstawowych interfejsów API; drugi segment nie-podstawowych interfejsów API oczywiście nazywał się niestandardowymi rozszerzeniami, zajmując przestrzenie nazw, takie jak com.sun. * lub com.ibm. . Podstawowe interfejsy API zajmują java. przestrzeń nazw.
Nie wszystko w świecie Java API zaczyna się od rdzenia, dlatego rozszerzenia zwykle powstają z żądań JSR. W końcu awansują do rdzenia na podstawie „mądrej rady”.
Zainteresowanie tą nomenklaturą wynikało z faux pas ze strony Sun - rozszerzenia mogły być promowane do rdzenia, tj. Przeniesione z javax. * Do java. *, Przełamując obietnicę wstecznej kompatybilności. Programiści płakali ochryple i zwyciężył lepszy rozsądek. Dlatego API Swing, mimo że jest częścią rdzenia, nadal pozostaje w przestrzeni nazw javax. *. W ten sposób pakiety są promowane od rozszerzeń do rdzenia - są one po prostu udostępniane do pobrania jako część JDK i JRE.
Javax był kiedyś tylko dla rozszerzeń. Jednak później słońce dodało go do biblioteki Java, zapominając o usunięciu x. Programiści zaczęli tworzyć kod za pomocą javax. Jednak później z czasem słońca postanowiły zmienić go na java. Programiści nie spodobali się temu pomysłowi, ponieważ ich kod zostałby zrujnowany ... więc javax został zachowany.
Pakiety java. * są podstawowymi pakietami językowymi Java, co oznacza, że programiści używający języka Java musieli z nich korzystać, aby móc w pełni korzystać z języka Java.
Pakiety javax. * to pakiety opcjonalne, które zapewniają standardowy, skalowalny sposób udostępniania niestandardowych interfejsów API wszystkim aplikacjom działającym na platformie Java.
Niektóre pakiety, takie jak javax.swing, nie były początkowo zawarte w standardowej bibliotece Java. Firma Sun postanowiła uznać je za oficjalne i zawarła je we wczesnych wersjach Java jako standardowe biblioteki lub standardowe rozszerzenia.
Zgodnie z konwencją wszystkie standardowe rozszerzenia zaczynają się od Xchwili, gdy z czasem mogą stać się pierwszorzędnymi, tak jak to się stało javax.swing.
java.time
teraz download.java.net/jdk8/docs/api/java/time/package-summary.htmlJavaServlet
,Java3D
). Większość opcjonalnych pakietów jest zrootowana wjavax.*
przestrzeni nazw, chociaż mogą istnieć wyjątki.Odpowiedzi:
Myślę, że to rzecz historyczna - jeśli pakiet zostanie wprowadzony jako dodatek do istniejącego środowiska JRE, pojawi się jako
javax
. Jeśli po raz pierwszy został wprowadzony jako część środowiska JRE (jak sądzę NIO), to pojawia się jakojava
. Nie jestem pewien, dlaczego nowy interfejs API daty i godziny skończy jakojavax
zgodny z tą logiką ... chyba że będzie dostępny osobno jako biblioteka do pracy z wcześniejszymi wersjami (co byłoby przydatne). Zauważ, że wiele lat później: w końcu ostatecznie się pojawiłojava
.Wydaje mi się, że istnieją ograniczenia dotyczące
java
pakietu - myślę, że moduły ładujące klasy są skonfigurowane tak, aby zezwalały tylkojava.*
na ładowanie klas wewnątrzrt.jar
lub coś podobnego. (Na pewno jest odprawaClassLoader.preDefineClass
.)EDYCJA: Chociaż oficjalne wyjaśnienie (sugerowane orbfish wyszukiwania nie przyniosło żadnego na pierwszej stronie) nie ma wątpliwości co do „rdzenia” vs. uzasadnienie historyczne. Czy
java.beans
tak naprawdę na przykład jest to „rdzeń” Javy?źródło
java.time
jak powinien.Pierwotnie
javax
miał być przeznaczony na rozszerzenia, a czasem rzeczy były promowane zjavax
java.Jednym z problemów było ograniczenie przez Netscape (i prawdopodobnie IE) klas, które mogą znajdować się w pakiecie java.
Kiedy Swing został ustawiony na „absolwenta”, by
java
zjavax
nie było coś w rodzaju mini-wysadzić ponieważ ludzie zdali sobie sprawę, że będą musieli zmodyfikować wszystkie ich importu. Biorąc pod uwagę, że kompatybilność wsteczna jest jednym z głównych celów Java, zmienili zdanie.W tym momencie, przynajmniej dla społeczności (może nie dla Słońca) cały punkt
javax
został utracony. Więc teraz mamy w javax kilka rzeczy, które prawdopodobnie powinny byćjava
... ale oprócz ludzi, którzy wybrali nazwy pakietów, nie wiem, czy ktokolwiek może dowiedzieć się, jakie są uzasadnienia dla poszczególnych przypadków.źródło
java
pakiety są podstawowe , ajavax
pakiety są rozszerzeniami.Swing był rozszerzeniem, ponieważ AWT był oryginalnym interfejsem API interfejsu użytkownika. Swing pojawił się później, w wersji 1.1.
źródło
java.time
: docs.oracle.com/javase/8/docs/api/java/time/…Przestrzeń nazw javax jest zwykle (to załadowane słowo) używana dla standardowych rozszerzeń, obecnie znanych jako pakiety opcjonalne . Standardowe rozszerzenia są podzbiorem nie-podstawowych interfejsów API; drugi segment nie-podstawowych interfejsów API oczywiście nazywał się niestandardowymi rozszerzeniami, zajmując przestrzenie nazw, takie jak com.sun. * lub com.ibm. . Podstawowe interfejsy API zajmują java. przestrzeń nazw.
Nie wszystko w świecie Java API zaczyna się od rdzenia, dlatego rozszerzenia zwykle powstają z żądań JSR. W końcu awansują do rdzenia na podstawie „mądrej rady”.
Zainteresowanie tą nomenklaturą wynikało z faux pas ze strony Sun - rozszerzenia mogły być promowane do rdzenia, tj. Przeniesione z javax. * Do java. *, Przełamując obietnicę wstecznej kompatybilności. Programiści płakali ochryple i zwyciężył lepszy rozsądek. Dlatego API Swing, mimo że jest częścią rdzenia, nadal pozostaje w przestrzeni nazw javax. *. W ten sposób pakiety są promowane od rozszerzeń do rdzenia - są one po prostu udostępniane do pobrania jako część JDK i JRE.
źródło
Javax był kiedyś tylko dla rozszerzeń. Jednak później słońce dodało go do biblioteki Java, zapominając o usunięciu x. Programiści zaczęli tworzyć kod za pomocą javax. Jednak później z czasem słońca postanowiły zmienić go na java. Programiści nie spodobali się temu pomysłowi, ponieważ ich kod zostałby zrujnowany ... więc javax został zachowany.
źródło
Pakiety java. * są podstawowymi pakietami językowymi Java, co oznacza, że programiści używający języka Java musieli z nich korzystać, aby móc w pełni korzystać z języka Java.
Pakiety javax. * to pakiety opcjonalne, które zapewniają standardowy, skalowalny sposób udostępniania niestandardowych interfejsów API wszystkim aplikacjom działającym na platformie Java.
źródło
Niektóre pakiety, takie jak
javax.swing
, nie były początkowo zawarte w standardowej bibliotece Java. Firma Sun postanowiła uznać je za oficjalne i zawarła je we wczesnych wersjach Java jako standardowe biblioteki lub standardowe rozszerzenia.Zgodnie z konwencją wszystkie standardowe rozszerzenia zaczynają się od
X
chwili, gdy z czasem mogą stać się pierwszorzędnymi, tak jak to się stałojavax.swing
.źródło