답변:
패키지가 기존 JRE에 추가 된 것으로 소개되면 다음과 같이 제공됩니다 javax
. JRE의 일부로 처음 소개 된 경우 (NIO와 마찬가지로) 생각 java
합니다. 새 날짜 및 시간 API가 왜이 javax
논리 를 따르는 지 확실하지 않습니다 . 몇 년 후 참고하십시오. 실제로 결국에는 끝났습니다 java
.
java
패키지 에 제한이 있다고 생각합니다. 클래스 로더는 클래스 만java.*
로드 rt.jar
하거나 이와 유사한 것을 허용하도록 설정되어 있다고 생각 합니다. (체크인이 ClassLoader.preDefineClass
있습니다.)
편집 : 공식 설명 (첫 번째 페이지에서 제안 된 검색 orbfish가 나오지 않았습니다)은 "핵심"대 "확장자"에 대해 의심의 여지가 없지만 여전히 많은 경우 특정 패키지에 대한 결정에 그 뒤에 역사적인 이유도 있습니다. 가 java.beans
자바가 "핵심"예를 들어, 정말?
java.time
.
원래 javax
는 확장 용으로 만들어졌으며 때로는 javax
Java로 홍보 될 수 있습니다 .
한 가지 문제는 Java 패키지에있을 수있는 Netscape (및 아마도 IE) 제한 클래스였습니다.
스윙이 "졸업"으로 설정되었을 때 java
부터 javax
정렬합니다이 있던 사람들이 자신의 수입을 모두 수정해야한다는 것을 깨달았 때문에 최대 미니 날려. 이전 버전과의 호환성은 Java의 주요 목표 중 하나이므로 마음이 바뀌 었습니다.
그 시점에서, 적어도 커뮤니티 (Sun에게는 해당되지 않음)의 경우 전체 포인트 javax
가 손실되었습니다. 이제 우리는 javax에 있어야 할 것들이 java
있지만 패키지 이름을 선택한 사람들을 제외하고 누군가가 이론적 근거가 사례별로 무엇인지 알 수 있는지 모르겠습니다.
java
패키지는 base 이고 javax
패키지는 확장입니다.
AWT가 원래 UI API이기 때문에 Swing은 확장이었습니다. 이후 버전 1.1에서 스윙이 나왔습니다.
javax 네임 스페이스는 일반적으로 현재 선택적 패키지 로 알려진 표준 확장에 사용됩니다 (로드 된 단어 임) . 표준 확장은 비 핵심 API의 하위 집합입니다. 비 코어 API의 다른 세그먼트는 분명히 비표준 확장이라고하며 com.sun. * 또는 com.ibm과 같은 네임 스페이스를 차지합니다. . 핵심 API는 Java를 사용합니다. 네임 스페이스.
Java API 세계의 모든 것이 핵심에서 시작되는 것은 아니기 때문에 확장은 일반적으로 JSR 요청에서 생성됩니다. 그들은 결국 '현명한 조언'을 바탕으로 핵심으로 승진합니다.
이 명명법에 대한 관심은 썬 측의 가짜 문제에서 나왔다. 확장은 코어로 승격 될 수있다. 즉, javax. *에서 java. *로 이동하여 이전 버전과의 호환성 약속을 깨뜨릴 수있다. 프로그래머는 쉰 목소리를 내며 더 나은 감각이 우세했습니다. 이것이 Swing API가 코어의 일부이지만 javax. * 네임 스페이스에 계속 남아있는 이유입니다. 또한 확장에서 코어로 패키지를 승격시키는 방법도 있습니다. JDK 및 JRE의 일부로 간단히 다운로드 할 수 있습니다.
java.time
지금 download.java.net/jdk8/docs/api/java/time/package-summary.html