А Опциональный пакет представляет собой реализацию открытого, стандартного API (примеры дополнительных пакетов JavaServlet, Java3D). Большинство необязательных пакетов имеют корни в javax.*пространстве имен, хотя могут быть и исключения.
Счастливое
Ответы:
212
Я думаю, что это историческая вещь - если пакет вводится как дополнение к существующей JRE, он приходит как javax. Если он впервые был представлен как часть JRE (как, я полагаю, был NIO), то он выглядит как java. Не уверен, почему новый API даты и времени будет в конечном итоге javaxследовать этой логике, хотя ... если только он не будет доступен отдельно как библиотека для работы с более ранними версиями (что было бы полезно). Заметка от многих лет спустя: на самом деле все закончилось java.
Я полагаю, что существуют ограничения на javaпакет - я думаю, что загрузчики классов настроены так, что они позволяют загружать только классы внутри или что-то подобное. (Там, безусловно, регистрация .)java.*rt.jarClassLoader.preDefineClass
РЕДАКТИРОВАТЬ: Хотя официальное объяснение (предложенный поисковый шар не дал ни одного на первой странице или около того) не вызывает сомнений в отношении «ядро» против «расширение», я все еще подозреваю, что во многих случаях решение для любого конкретного пакета имеет историческая причина этого тоже. java.beansНапример, действительно ли это «ядро» Java?
Потому что читателю легче нажать alt-t и набрать его, чем мне вырезать и вставить с помощью iPad? ;). Вы правы, хотя, я думаю, я имел в виду download.oracle.com/javase/tutorial/ext/index.html . Без обид. Кстати, я обычно нахожу ваши ответы полезными. Я просто удивлен, что этот ответ был принят.
orbfish
1
Термин «javax» не встречается нигде в ссылке, предложенной ранее в этой ветке комментариев.
брошюра
Новый API даты и времени фактически закончился как в java.timeконце концов.
Майкл Пифель
234
Первоначально javaxбыло предназначено для расширений, а иногда вещи будут продвигаться из javaxJava.
Одной из проблем было Netscape (и, возможно, IE), ограничивающее классы, которые могут быть в пакете java.
Когда свинг был установлен в положение «выпускник» , чтобы javaот javaxбыл своего рода мини-удар, потому что люди поняли , что они должны изменить все их импорта. Учитывая, что обратная совместимость является одной из основных целей Java, они передумали.
В тот момент, по крайней мере, для сообщества (возможно, не для Sun) весь смысл javaxбыл потерян. Так что теперь у нас есть некоторые вещи в javax, которые, вероятно, должны быть в java... но кроме людей, которые выбрали имена пакетов, я не знаю, сможет ли кто-нибудь выяснить, каково обоснование для каждого конкретного случая.
«Когда Swing был настроен на« переход »на java из javax, это было своего рода мини-взрывом, потому что люди понимали, что им придется затем изменить весь свой импорт». Люди жаловались на что-то, что могло быть достигнуто с помощью регулярного выражения, которое было результатом того, что они использовали предварительный код качества?
сани
10
Ага. Я написал инструмент в Visual Cafe для преобразования между ними (javax и java) до того, как Sun решила оставить его в пакете javax.
TofuBeer
51
javaпакеты являются базовыми , а javaxпакеты являются расширениями.
Swing был расширением, потому что AWT был оригинальным интерфейсом API. Swing появился позже, в версии 1.1.
Качели не были частью 1.1. Была версия Swing, которая работала на 1.1 как библиотека.
Том Хотин - tackline
Там ключ - «библиотека», а не часть JDK. У меня неправильная версия? Мои javadocs предполагают, что JButton был с 1.3, поэтому, возможно, моя память подвела меня.
duffymo
1
Так почему же новый API даты и времени в javax .. дата и время не являются "базовыми"?
Pacerier
1
«... новый API даты и времени (JSR-310) ...» - кто-то из Oracle / Sun решил, что его лучше поместить в javax, потому что это более новое расширение основных библиотек. Если вы не согласны, лучше обсудить это с ними.
Пространство имен javax обычно (это загруженное слово) используется для стандартных расширений, в настоящее время известных как дополнительные пакеты . Стандартные расширения являются подмножеством неосновных API; другой сегмент неосновных API, очевидно, называется нестандартными расширениями, занимая пространства имен, такие как com.sun. * или com.ibm. , Основные API занимают Java. Пространство имен.
Не все в мире Java API начинается с ядра, поэтому расширения обычно рождаются из запросов JSR. В конечном итоге они получают звание основанного на «мудром совете».
Интерес к этой номенклатуре был вызван ошибкой со стороны Sun - расширения могли быть переведены в ядро, то есть перенесены из javax. * В java. * Нарушая обещание обратной совместимости. Программисты хрипло закричали, и здравый смысл возобладал. Вот почему Swing API, хотя и является частью ядра, продолжает оставаться в пространстве имен javax. *. И это также, как пакеты продвигаются от расширений к ядру - они просто становятся доступными для загрузки как часть JDK и JRE.
Javax раньше был только для расширений. Еще позже Sun добавила его в Java-библиотеку, забыв удалить x. Разработчики начали создавать код с помощью javax. Но позже солнце приняло решение изменить его на Java. Разработчикам не понравилась идея, потому что их код был бы разрушен ... так что javax был сохранен.
Пакеты java. * являются основными языковыми пакетами Java, а это означает, что программисты, использующие язык Java, должны использовать их для того, чтобы использовать язык java.
Пакеты javax. * - это необязательные пакеты, которые предоставляют стандартный масштабируемый способ сделать пользовательские API доступными для всех приложений, работающих на платформе Java.
Некоторые пакеты вроде javax.swingне были включены в стандартную библиотеку Java на первых порах. Компания Sun решила считать их официальными и включила их в ранние версии java как стандартные библиотеки или стандартные расширения.
По соглашению, все стандартные расширения начинаются с того времени, Xкогда их можно превратить в первоклассное со временем, как это было в случае с javax.swing.
java.time
Теперь в JSR 310 download.java.net/jdk8/docs/api/java/time/package-summary.htmlJavaServlet
,Java3D
). Большинство необязательных пакетов имеют корни вjavax.*
пространстве имен, хотя могут быть и исключения.Ответы:
Я думаю, что это историческая вещь - если пакет вводится как дополнение к существующей JRE, он приходит как
javax
. Если он впервые был представлен как часть JRE (как, я полагаю, был NIO), то он выглядит какjava
. Не уверен, почему новый API даты и времени будет в конечном итогеjavax
следовать этой логике, хотя ... если только он не будет доступен отдельно как библиотека для работы с более ранними версиями (что было бы полезно). Заметка от многих лет спустя: на самом деле все закончилосьjava
.Я полагаю, что существуют ограничения на
java
пакет - я думаю, что загрузчики классов настроены так, что они позволяют загружать только классы внутри или что-то подобное. (Там, безусловно, регистрация .)java.*
rt.jar
ClassLoader.preDefineClass
РЕДАКТИРОВАТЬ: Хотя официальное объяснение (предложенный поисковый шар не дал ни одного на первой странице или около того) не вызывает сомнений в отношении «ядро» против «расширение», я все еще подозреваю, что во многих случаях решение для любого конкретного пакета имеет историческая причина этого тоже.
java.beans
Например, действительно ли это «ядро» Java?источник
java.time
конце концов.Первоначально
javax
было предназначено для расширений, а иногда вещи будут продвигаться изjavax
Java.Одной из проблем было Netscape (и, возможно, IE), ограничивающее классы, которые могут быть в пакете java.
Когда свинг был установлен в положение «выпускник» , чтобы
java
отjavax
был своего рода мини-удар, потому что люди поняли , что они должны изменить все их импорта. Учитывая, что обратная совместимость является одной из основных целей Java, они передумали.В тот момент, по крайней мере, для сообщества (возможно, не для Sun) весь смысл
javax
был потерян. Так что теперь у нас есть некоторые вещи в javax, которые, вероятно, должны быть вjava
... но кроме людей, которые выбрали имена пакетов, я не знаю, сможет ли кто-нибудь выяснить, каково обоснование для каждого конкретного случая.источник
java
пакеты являются базовыми , аjavax
пакеты являются расширениями.Swing был расширением, потому что AWT был оригинальным интерфейсом API. Swing появился позже, в версии 1.1.
источник
java.time
: docs.oracle.com/javase/8/docs/api/java/time/…Пространство имен javax обычно (это загруженное слово) используется для стандартных расширений, в настоящее время известных как дополнительные пакеты . Стандартные расширения являются подмножеством неосновных API; другой сегмент неосновных API, очевидно, называется нестандартными расширениями, занимая пространства имен, такие как com.sun. * или com.ibm. , Основные API занимают Java. Пространство имен.
Не все в мире Java API начинается с ядра, поэтому расширения обычно рождаются из запросов JSR. В конечном итоге они получают звание основанного на «мудром совете».
Интерес к этой номенклатуре был вызван ошибкой со стороны Sun - расширения могли быть переведены в ядро, то есть перенесены из javax. * В java. * Нарушая обещание обратной совместимости. Программисты хрипло закричали, и здравый смысл возобладал. Вот почему Swing API, хотя и является частью ядра, продолжает оставаться в пространстве имен javax. *. И это также, как пакеты продвигаются от расширений к ядру - они просто становятся доступными для загрузки как часть JDK и JRE.
источник
Javax раньше был только для расширений. Еще позже Sun добавила его в Java-библиотеку, забыв удалить x. Разработчики начали создавать код с помощью javax. Но позже солнце приняло решение изменить его на Java. Разработчикам не понравилась идея, потому что их код был бы разрушен ... так что javax был сохранен.
источник
Пакеты java. * являются основными языковыми пакетами Java, а это означает, что программисты, использующие язык Java, должны использовать их для того, чтобы использовать язык java.
Пакеты javax. * - это необязательные пакеты, которые предоставляют стандартный масштабируемый способ сделать пользовательские API доступными для всех приложений, работающих на платформе Java.
источник
Некоторые пакеты вроде
javax.swing
не были включены в стандартную библиотеку Java на первых порах. Компания Sun решила считать их официальными и включила их в ранние версии java как стандартные библиотеки или стандартные расширения.По соглашению, все стандартные расширения начинаются с того времени,
X
когда их можно превратить в первоклассное со временем, как это было в случае сjavax.swing
.источник