javax 대 자바 패키지


385

javax 패키지의 근거는 무엇입니까? Java에는 무엇이 있고 javax에는 무엇이 있습니까?

나는 많은 엔터프라이즈 패키지가 javax로 알고 있지만 Swing, 새로운 날짜 및 시간 API (JSR-310) 및 기타 J2SE 패키지도 알고 있습니다.



옵션 패키지는 오픈 표준 API (옵션 패키지의 예를 구현 한 것입니다 JavaServlet, Java3D). javax.*예외가있을 수 있지만 대부분의 선택적 패키지는 네임 스페이스에 뿌리를두고 있습니다.
Lucky

답변:


212

패키지가 기존 JRE에 추가 ​​된 것으로 소개되면 다음과 같이 제공됩니다 javax. JRE의 일부로 처음 소개 된 경우 (NIO와 마찬가지로) 생각 java합니다. 새 날짜 및 시간 API가 왜이 javax논리 를 따르는 지 확실하지 않습니다 . 몇 년 후 참고하십시오. 실제로 결국에는 끝났습니다 java.

java패키지 에 제한이 있다고 생각합니다. 클래스 로더는 클래스 java.* 로드 rt.jar하거나 이와 유사한 것을 허용하도록 설정되어 있다고 생각 합니다. (체크인이 ClassLoader.preDefineClass있습니다.)

편집 : 공식 설명 (첫 번째 페이지에서 제안 된 검색 orbfish가 나오지 않았습니다)은 "핵심"대 "확장자"에 대해 의심의 여지가 없지만 여전히 많은 경우 특정 패키지에 대한 결정에 그 뒤에 역사적인 이유도 있습니다. 가 java.beans자바가 "핵심"예를 들어, 정말?


7
iPad를 사용하여 잘라내어 붙여 넣는 것보다 독자가 alt-t를 누르고 입력하는 것이 더 쉽기 때문에? ;). 그래도 download.oracle.com/javase/tutorial/ext/index.html을 의미 한다고 생각 합니다. 위반 없음 BTW 나는 보통 당신의 답변이 유용하다고 생각합니다.
orbfish

1
"javax"라는 용어는이 주석 스레드의 앞부분에서 제안 된 링크의 어느 곳에도 나타나지 않습니다.
팜플렛

새로운 날짜 및 시간 API는 결국 결국 끝났습니다 java.time.
Michael Piefel

234

원래 javax는 확장 용으로 만들어졌으며 때로는 javaxJava로 홍보 될 수 있습니다 .

한 가지 문제는 Java 패키지에있을 수있는 Netscape (및 아마도 IE) 제한 클래스였습니다.

스윙이 "졸업"으로 설정되었을 때 java부터 javax정렬합니다이 있던 사람들이 자신의 수입을 모두 수정해야한다는 것을 깨달았 때문에 최대 미니 날려. 이전 버전과의 호환성은 Java의 주요 목표 중 하나이므로 마음이 바뀌 었습니다.

그 시점에서, 적어도 커뮤니티 (Sun에게는 해당되지 않음)의 경우 전체 포인트 javax가 손실되었습니다. 이제 우리는 javax에 있어야 할 것들이 java있지만 패키지 이름을 선택한 사람들을 제외하고 누군가가 이론적 근거가 사례별로 무엇인지 알 수 있는지 모르겠습니다.


12
"Swing이 javax에서 java로"졸업 "으로 설정되었을 때 사람들은 그들이 가져 오기를 모두 수정해야한다는 것을 깨달았 기 때문에 일종의 미니 블로우 업이있었습니다. 사람들은 preproduciton 품질 코드를 사용한 정규 표현식으로 달성 할 수있는 것에 대해 불평하고 있습니까?
Sled

10
예. Sun이 javax 패키지에 보관하기로 결정하기 전에 Visual Cafe에서 도구 (javax와 java) 사이를 변환하는 도구를 작성했습니다.
TofuBeer

51

java패키지는 base 이고 javax패키지는 확장입니다.

AWT가 원래 UI API이기 때문에 Swing은 확장이었습니다. 이후 버전 1.1에서 스윙이 나왔습니다.


스윙은 1.1의 일부가 아니었다. 1.1 버전의 라이브러리로 실행되는 Swing 버전이있었습니다.
Tom Hawtin-tackline

JDK의 일부가 아닌 "라이브러리"키가 있습니다. 버전이 잘못 되었습니까? 내 javadocs는 JButton이 1.3 이후라고 제안 했으므로 아마도 내 기억에 실패했을 것입니다.
duffymo

1
그렇다면 왜 javax .. date and time의 새로운 날짜 및 시간 API가 "기본"이 아닌가?
Pacerier

1
"... 새로운 날짜 및 시간 API (JSR-310) ..."-Oracle / Sun의 누군가가 핵심 라이브러리의 새로운 확장 기능이기 때문에 javax에 더 적합하다고 결정했습니다. 당신이 동의하지 않으면, 그들과 함께하는 것이 가장 좋습니다.
duffymo

참고로 : 그들은 그 결정을 되돌리고 JSR-310은 다음과 같이되었습니다 java.time: docs.oracle.com/javase/8/docs/api/java/time/…
Mark Rotteveel

37

javax 네임 스페이스는 일반적으로 현재 선택적 패키지 로 알려진 표준 확장에 사용됩니다 (로드 된 단어 임) . 표준 확장은 비 핵심 API의 하위 집합입니다. 비 코어 API의 다른 세그먼트는 분명히 비표준 확장이라고하며 com.sun. * 또는 com.ibm과 같은 네임 스페이스를 차지합니다. . 핵심 API는 Java를 사용합니다. 네임 스페이스.

Java API 세계의 모든 것이 핵심에서 시작되는 것은 아니기 때문에 확장은 일반적으로 JSR 요청에서 생성됩니다. 그들은 결국 '현명한 조언'을 바탕으로 핵심으로 승진합니다.

이 명명법에 대한 관심은 썬 측의 가짜 문제에서 나왔다. 확장은 코어로 승격 될 수있다. 즉, javax. *에서 java. *로 이동하여 이전 버전과의 호환성 약속을 깨뜨릴 수있다. 프로그래머는 쉰 목소리를 내며 더 나은 감각이 우세했습니다. 이것이 Swing API가 코어의 일부이지만 javax. * 네임 스페이스에 계속 남아있는 이유입니다. 또한 확장에서 코어로 패키지를 승격시키는 방법도 있습니다. JDK 및 JRE의 일부로 간단히 다운로드 할 수 있습니다.


2

Javax는 확장 기능에만 사용되었습니다. 그러나 나중에 sun은 x를 제거하는 것을 잊어 버린 Java 라이브러리에 추가했습니다. 개발자들은 javax로 코드를 만들기 시작했습니다. 그러나 나중에 태양은 그것을 자바로 바꾸기로 결정했습니다. 개발자들은 코드가 망가 졌기 때문에 아이디어가 마음에 들지 않았습니다. 그래서 javax가 유지되었습니다.


1

java. * 패키지는 핵심 Java 언어 패키지입니다. 즉, Java 언어를 사용하는 프로그래머가 Java 언어를 가치있게 사용하려면 패키지를 사용해야했습니다.

javax. * 패키지는 선택적 패키지이며, Java 플랫폼에서 실행되는 모든 응용 프로그램에서 사용자 정의 API를 사용할 수 있도록 확장 가능한 표준 방법을 제공합니다.


0

같은 일부 패키지 javax.swing는 처음에 Java 표준 라이브러리에 포함되지 않았습니다. 썬 회사는 그것들을 공식적인 것으로 간주하고 표준 라이브러리 또는 표준 확장으로 자바의 초기 버전에 포함시켰다.

관례에 따르면 모든 표준 확장 프로그램은 X잠시 후에 시작하여 시간이 지남에 따라 일등석으로 승격 될 수 있습니다 javax.swing.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.