Java 클래스 라이브러리
Java Class LibraryJava Class Library(JCL)는 Java Virtual Machine(JVM) 언어가 런타임에 호출할 수 있는 동적으로 로드 가능한 라이브러리 세트입니다.Java Platform은 특정 운영 체제에 의존하지 않기 때문에 응용 프로그램은 플랫폼 네이티브 라이브러리에 의존할 수 없습니다.대신 Java Platform은 최신 운영 체제에 공통적인 기능을 포함하는 포괄적인 표준 클래스 라이브러리 세트를 제공합니다.
JCL은 JVM 내에서 다음 세 가지 목적을 수행합니다.
- 다른 표준 코드 라이브러리와 마찬가지로 컨테이너 클래스 및 정규 표현 처리와 같은 잘 알려진 유용한 기능 세트를 프로그래머에게 제공합니다.
- 라이브러리는 네트워크 액세스 및 파일 액세스와 같이 일반적으로 하드웨어 및 운영 체제에 크게 의존하는 작업에 대한 추상적인 인터페이스를 제공합니다.
- 일부 기본 플랫폼은 Java 응용 프로그램이 기대하는 모든 기능을 지원하지 않을 수 있습니다.이러한 경우 라이브러리 구현은 이러한 기능을 에뮬레이트하거나 특정 기능의 존재를 확인하는 일관된 방법을 제공할 수 있습니다.
구현 및 구성
JCL은 하드웨어 및 운영 체제에 직접 액세스해야 하는 부분(I/O 또는 비트맵 그래픽용 등)을 제외하고 거의 전체가 Java로 작성됩니다.이러한 기능에 대한 액세스를 제공하는 클래스는 일반적으로 Java Native Interface 래퍼를 사용하여 운영 체제 API에 액세스합니다.
거의 모든 JCL은 JRE 및 JDK 배포와 함께 제공되는 "rt.jar"라는 단일 Java 아카이브 파일에 저장됩니다.Java Class Library(rt.jar)는 기본[1] 부트스트랩클래스 패스에 있으며 응용 프로그램에 대해 선언된 클래스 패스에 표시할 필요가 없습니다.런타임은 부트스트랩클래스 로더를 사용하여 JCL을 검색합니다.
Java Module System(Java 9 릴리스의 일부)은 모노리식 "rt.jar" JAR 파일을 부수고 JCL 자체를 지정된 [2]종속성을 가진 여러 모듈로 모듈화했습니다.
준거
Java를 구현하려면 JCL 테스트를 포함한 Java Technology Compatibility Kit 컴플라이언스 테스트를 통과해야 합니다.
주요 기능
JCL 기능은 패키지로 제공되는 클래스를 통해 액세스할 수 있습니다.
java.lang
에는 언어 및 런타임시스템과 밀접하게 관련되어 있는 기본 클래스와 인터페이스가 포함되어 있습니다.- I/O 및 네트워킹은 플랫폼 파일 시스템에 액세스하고 보다 일반적으로는
java.io
,java.nio
그리고.java.net
패키지.네트워킹의 경우 SCTP는 다음 URL을 통해 제공됩니다.com.sun.nio.sctp
. - 수학 패키지:
java.math
는 수학식 및 평가, 임의의 소수점 및 정수 데이터형을 제공합니다. - Collections and Utilities : 정규 표현식, 동시성, 로깅 및 데이터 압축용 내장 Collection 데이터 구조 및 유틸리티 클래스.
- GUI 및 2D 그래픽스: AWT 패키지 (
java.awt
)의 기본적인 GUI 조작과 기반이 되는 네이티브시스템에 바인드 됩니다.2D 그래픽스 API도 포함되어 있습니다.Swing 패키지(javax.swing
)는 AWT를 기반으로 구축되어 플랫폼에 의존하지 않는 위젯 툴킷과 플러그형 외관을 제공합니다.편집 가능한 텍스트 구성 요소와 편집 불가능한 텍스트 구성 요소도 다룹니다. - 사운드: 사운드 데이터의 읽기, 쓰기, 시퀀스 지정 및 합성을 위한 인터페이스와 클래스.
- 텍스트:
java.text
텍스트, 날짜, 숫자 및 메시지를 다룹니다. - 이미지 패키지:
java.awt.image
그리고.javax.imageio
이미지 쓰기, 읽기 및 수정을 위한 API를 제공합니다. - XML: SOAP 프로토콜 및 JAX-WS와 같은 웹 서비스용 SAX, DOM, StAX, XSLT 변환, XPath 및 다양한 API.
- CORBA 및 RMI API(내장 ORB 포함)
- 보안 제공자:
java.security
및 암호화 서비스는javax.crypto
. - 데이터베이스: 경유로 SQL 데이터베이스에 액세스
java.sql
- 스크립트 엔진 액세스:그
javax.script
패키지는 일치하는 스크립트 언어에 대한 액세스를 제공합니다. - 애플릿:
java.applet
네트워크를 통해 애플리케이션을 다운로드하여 보호된 샌드박스 내에서 실행할 수 있습니다. - 자바빈:
java.beans
에 재사용 가능한 컴포넌트를 조작하는 방법을 나타냅니다. - Introspection and reflection: java.lang.클래스는 클래스를 나타내지만 메서드나 컨스트럭터 등의 다른 클래스는 에서 사용할 수 있습니다.
java.lang.reflect
.
라이선스
이전 라이선스
OpenJDK가 출시되기 전에 JDK는 독점 라이선스를 기반으로 했습니다.
그들의 약속은 완전히 세울 수 있는 자바 개발 키트 거의 완전히 무료 오픈 소스 코드에 상반기에 기반을 발매한 데 이어 2007,[3]태양은 GPL아래 5월 8일 2007년에 태양에 의해 그들의 코드 a에 제공되지 않게 제3자로부터의 승인을 받았습니다 일부 제한된 부분을 제외하고 클래스 라이브러리의 완전한 소스 코드를 발표했다아니요.펜 소스 [4]라이선스Sun의 목표는 독점적이고 폐쇄적인 소스로 남아 있는 부품을 대체 구현으로 대체하고 클래스 라이브러리를 완전히 자유롭고 오픈 소스로 만드는 것이었습니다.
2010년 12월까지 자바 개발 키트의 남아 있는 비효율 부분 사용 가능한 태양으로 오라클 이진 Plugs[5]로 자바 개발 키트를 만들려고 했지만 실행해야 하지 않도록 하였다. 5월 2007[업데이트], 등급 도서관의 5월 2007[업데이트]의 OpenJDK 7,[6]과 1%미만에 closed-source(4%독점은 오직 일부분으로 만들어졌다. 5월 2008[업데이트]과 Ope다.nJDK[7][8] 6)[9][10]은 다음과 같습니다.
2007년 5월 첫 번째 출시 이후 Sun은 커뮤니티의 도움을 받아 오픈 소스로 출시되거나 거의 모든 코드를 오픈 소스로 대체했습니다.
- 소프트웨어 신시사이저를 포함한 모든 오디오 엔진 코드가 오픈 [10][11]소스가 되었습니다.클로즈드 소스 소프트웨어 신시사이저는 Gervill이라는 [12]OpenJDK용으로 개발된 새로운 신시사이저로 대체되었습니다.
- 모든 암호화 클래스는 오픈 [13]소스로 공개되었습니다.
- 글꼴 크기를 조정하고 래스터화하는 코드는 오픈 소스[14][15][16] FreeType을 사용합니다.
- 네이티브 색상 관리에서는 오픈 소스 LittleCMS를 [15]사용합니다.JDK에는 플러그 가능한 레이어가 있어 상용 릴리스의 Java는 원래의 독자적인 컬러 매니지먼트 시스템을, OpenJDK는 LittleCMS를 사용할 수 있습니다.
- 안티에이리어싱 그래픽스 래스터라이저 코드는 phoneME [15][17][18]프로젝트에서 사용되는 오픈소스 Pisces 렌더러를 사용합니다.
- JavaScript 플러그인은 오픈소스입니다(JavaScript 엔진 자체는 처음부터 [19]오픈소스였습니다).
오픈 소스 릴리즈
2010년 12월부터 모든 바이너리 플러그가 오픈 소스 대체로 대체되어 JDK 전체가 [20]오픈되었습니다.
대체 구현
GNU Classpath는 Java용 다른 기본 무료 소프트웨어 클래스 라이브러리입니다.다른 구현과 달리 Class Library만 구현되며 많은 자유 Java 런타임(Kaffe, SableVM, JamVM 등)에서 사용됩니다.
Apache Harmony는 또 다른 무료 소프트웨어 클래스 라이브러리였다.Java 스택의 다른 부분(Virtual Machine, Compiler 및 Java 구현에 필요한 기타 도구)을 구현하는 것이 목적입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "How Classes are Found". Oracle Corporation. Retrieved 2015-12-05.
- ^ "JDK Module Summary". Oracle Corporation. 2015-10-23. Retrieved 2015-11-29.
- ^ http://www.sun.com/software/opensource/java/faq.jsp#b4
- ^ Rich Green (2007-05-08). "Open JDK is here!". Sun Microsystems. Retrieved 2011-11-25.
- ^ "OpenJDK Binary Plugs". Sun Microsystems. 2007-05-08. Archived from the original on 2012-08-26. Retrieved 2011-11-25.
- ^ Fitzsimmons, Thomas (2007-05-18). "Plans for OpenJDK". Retrieved 2007-05-22.
- ^ Angel, Lillian (2008-03-13). "OpenJDK to replace IcedTea in Fedora 9". Archived from the original on 2012-12-10. Retrieved 2008-04-05.
- ^ Wade, Karsten (2008-03-13). "OpenJDK in Fedora 9!". redhatmagazine.com. Archived from the original on 2008-04-21. Retrieved 2008-04-05.
Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.
- ^ Herron, David (2007-10-04). "Plans for OpenJDK". Archived from the original on 2007-10-11. Retrieved 2007-10-09.
- ^ a b c "OpenJDK 6 b10 source posted". 2008-05-30. Retrieved 2008-06-01.
- ^ 오디오 엔진 프로젝트 페이지
- ^ "Gervill - Software Synthesizer". Archived from the original on 2011-10-04. Retrieved 2008-06-01.
- ^ "Crypto has been added to OpenJDK". 2007-09-27. Retrieved 2007-10-07.
- ^ 글꼴 변환기 프로젝트 페이지
- ^ a b c Java2D 프로젝트 페이지
- ^ "Freetype font rasteriser". 2007-08-07. Retrieved 2007-11-24.
- ^ phoneme.dev.java.net/ Wayback Machine에서 2007-06-10 아카이브 완료
- ^ 그래픽스 래스터라이저 프로젝트 페이지
- ^ "Javascript is encumbered and there is no javascript plugin support". IcedTea. 2008-03-11. Retrieved 2008-06-01.
Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support.
- ^ Kelly O'Hair (December 2010). "OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed". Oracle Corporation. Retrieved 2011-11-25.
외부 링크
- Java SE 메인 페이지
- Java SE 10 API Javadocs
- Java SE API 문서
- Java 소프트웨어 개발 키트 (2006년 8월[update] 현재 상태):