6 ответов:
Я думаю, что это историческая вещь - если пакет вводится как дополнение к существующему JRE, он входит как
javax. Если он впервые представлен как часть из JRE (как NIO был, я считаю), то он приходит какjava. Не знаю, почему новая дата и время API будет в конечном итоге какjavaxхотя, следуя этой логике... если только он также не будет доступен отдельно в качестве библиотеки для работы с более ранними версиями (что было бы полезно). Примечание от много лет спустя: это на самом деле оказался вjavaв конце концов.Я считаю, что есть ограничения на
javaпакет-я думаю, что загрузчики классов настроены на только разрешить занятия в рамкахjava.*чтобы быть загруженным отrt.jarили что-то подобное. (Там, конечно, РегистрацияClassLoader.preDefineClass.)EDIT: хотя официальное объяснение (предложенный поиск orbfish не дал ни одного на первой странице или около того) не вызывает сомнений в" ядре "против " расширения", я все еще подозреваю, что во многих случаях решение по какому-либо конкретному пакету также имеет историческую причину. Это
java.beansнеужели это "ядро" для Java, например?
первоначально javax предназначался для расширений, и иногда вещи будут продвигаться из javax в java.
одной из проблем был Netscape (и, вероятно, IE) ограничивающие классы, которые могут быть в пакете java.
когда Swing был установлен на "выпуск" на java из javax, был своего рода мини-взрыв, потому что люди поняли, что им придется изменить весь свой импорт. Учитывая, что обратная совместимость является одной из основных целей Java, они изменились их ум.
в тот момент, по крайней мере, для сообщества (возможно, не для Солнца) весь смысл javax был потерян. Итак, теперь у нас есть некоторые вещи в javax, которые, вероятно, должны быть на java... но помимо людей, которые выбрали имена пакетов, я не знаю, Может ли кто-нибудь понять, что такое обоснование в каждом конкретном случае.
пакеты java являются "базовыми", а пакеты javax являются расширениями.
Swing был расширением, потому что AWT был оригинальным API пользовательского интерфейса. Свинг пришел позже, в версии 1.1.
пространство имен javax-это обычно (это громкое слово) используется для стандартных расширений, в настоящее время известный как дополнительные пакеты. Стандартные расширения являются подмножеством неосновных API; другой сегмент неосновных API, очевидно, называется нестандартными расширениями, занимая пространства имен, такие как com.солнце.* или com.компания IBM.. Основные API-интерфейсы занимают java. пространство имен.
Не все в мире Java API начинается в ядре, именно поэтому расширения обычно рождаются из запросов JSR. В конечном итоге они продвигаются до ядра, основанного на "мудром совете".
интерес к этой номенклатуре, вышел из faux pas со стороны Sun - расширения могли быть продвинуты до ядра, т. е. перемещены из javax.* на java.* нарушение обещания обратной совместимости. Программисты хрипло закричали, и здравый смысл возобладал. Вот почему Swing API, хотя и является частью ядра, продолжает оставаться в javax.* пространство имен. И именно так пакеты продвигаются от расширений к ядру - они просто становятся доступными для загрузки как часть JDK и JRE.
java.* пакеты являются основными языковыми пакетами Java, что означает, что программисты, использующие язык Java, должны были использовать их, чтобы сделать любое полезное использование языка java.
javax.* пакеты являются необязательными пакетами, что обеспечивает стандартный масштабируемый способ сделать пользовательские API доступными для всех приложений, работающих на платформе Java.
Javax используется только для расширений. Однако позже sun добавила его в библиотеку java, забыв удалить x. разработчики начали создавать код с помощью javax. Но позже в свое время suns решили изменить его на java. Разработчикам не понравилась эта идея, потому что их код будет разрушен... так пакета javax держали.
Comments