자바 플랫폼, 스탠더드 에디션
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
자바 플랫폼, 스탠더드 에디션(Java SE)은 자바 가상 머신(JVM) 규격을 지원하며, 리플렉션 API와 참조 객체 API를 통해 JVM 구현에 영향을 미친다. 리플렉션 API는 런타임에 자바 코드가 자바 구성 요소를 검사하고 사용할 수 있도록 하며, 참조 객체 API는 가비지 컬렉션을 세밀하게 제어할 수 있게 한다. Java SE API는 자바 EE에 포함되며, UI 관련 API, 입출력 API, 자바빈즈 지원 등 다양한 API를 제공한다. 또한, 자바 SE는 보안 취약점에 대한 지속적인 관심과 대응이 필요하다.
더 읽어볼만한 페이지
- 자바 사양 요청 - 자바 플랫폼, 마이크로 에디션
자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다. - 자바 사양 요청 - 자바 커뮤니티 프로세스
자바 커뮤니티 프로세스는 자바 기술 명세의 개발 및 관리를 담당하는 조직으로, 자바 기술 표준화와 발전에 기여해왔으나 운영 방식에 대한 비판과 여러 논란에 직면해 있다. - 자바 플랫폼 - 블루레이
블루레이 디스크는 DVD 후속 매체로, 청색 레이저를 사용하여 고화질 영상과 음향을 제공하며 HD DVD와의 경쟁 후 고밀도 광디스크 표준으로 자리 잡았으나 스트리밍 서비스 성장으로 녹화용 디스크 생산이 중단되는 추세이다. - 자바 플랫폼 - 자바 플랫폼, 마이크로 에디션
자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
자바 플랫폼, 스탠더드 에디션 |
---|
2. 자바 가상 머신 규격
자바 SE는 자바 가상 머신(JVM) 규격[11] 전체를 지원한다. JVM 규격 변경이 필요한 기능은 일반적으로 자바 SE에 먼저 제안된 후 자바 EE 및 ME에 통합된다. JVM 규격의 일부는 아니지만, 실행 시간에 클래스 정보를 얻고 메서드를 호출할 수 있는 리플렉션(reflection) API와 가비지 컬렉션을 더 세밀하게 제어할 수 있는 참조 객체 API(java.lang.ref)도 JVM 구현에 영향을 미치며, 자바 SE는 이러한 API들을 완전하게 지원한다.
2. 1. 리플렉션 API
reflection영어 API는 실행 시간에 클래스에 대한 정보를 얻고 메서드를 호출할 수 있게 하는 자바 API의 구성 요소이다.[11] `java.lang.reflect` 패키지의 클래스들은 `java.lang.Class` 및 `java.lang.Package`와 함께 디버거, 인터프리터, 객체 검사기, 클래스 브라우저, 객체 직렬화, JavaBeans 등 대상 객체의 공개 멤버(런타임 클래스 기반) 또는 지정된 클래스에 의해 선언된 멤버에 접근해야 하는 서비스와 같은 애플리케이션을 지원한다. 이 패키지는 JDK 1.1에 추가되었다.리플렉션은 클래스를 인스턴스화하고 이름을 사용하여 메서드를 호출하는 데 사용되며, 이는 동적 프로그래밍을 허용하는 개념이다. 클래스, 인터페이스, 메서드, 필드, 생성자는 모두 런타임에 발견되어 사용될 수 있다. 리플렉션은 JVM이 프로그램에 대해 가지고 있는 메타데이터에 의해 지원된다.
2. 2. 참조 객체 API
`java.lang.ref` 패키지는 애플리케이션과 자바 가상 머신(JVM)의 가비지 수집기 간의 상호 작용을 통해 더 유연한 참조 유형을 제공한다. J2SE 1.2에 추가된 이 패키지는 가비지 컬렉션을 좀 더 세밀하게 제어할 수 있게 한다.[11]자바는 일반적인 "강한 참조" 외에도 `java.lang.ref` 패키지를 통해 소프트, 약한, 팬텀 참조의 세 가지 다른 유형의 참조를 제공한다.
- 소프트 참조 (SoftReference): 캐시 구현에 사용된다. 소프트하게 접근 가능한 객체는 가비지 수집기의 재량에 따라 가비지 수집될 수 있으며, 일반적으로 메모리가 부족할 때만 수집된다.
- 약한 참조 (WeakReference): 약한 맵 구현에 사용된다. 약하게 접근 가능한 객체는 다음 가비지 컬렉션 주기에서 수집된다. `WeakHashMap` 클래스에서 이 동작이 사용된다. 문자열 인터닝 풀에도 응용 가능하다.
- 팬텀 참조 (PhantomReference): 가비지 컬렉션을 위해 표시되고 파이널라이즈되었지만 아직 회수되지 않은 객체를 참조하는 데 사용된다. 파이널라이제이션 메커니즘만으로는 불가능한 더 유연한 정리를 허용한다.
각 참조 유형은 `Reference` 클래스를 확장하며, 참조된 객체에 대한 강한 참조를 반환하는 `get()` 메서드와 참조를 지우는 `clear()` 메서드를 제공한다.
`java.lang.ref` 패키지는 또한 `ReferenceQueue` 클래스를 제공하여 참조 유형이 변경된 객체를 추적할 수 있다. `Reference`가 생성될 때 선택적으로 참조 큐에 등록되며, 애플리케이션은 참조 큐를 통해 접근 가능성 상태가 변경된 참조를 확인할 수 있다.
3. API
자바 EE에 포함되며, 자바 ME에는 일부만 포함된다. JCP(Java Community Process) 및 과거 썬 마이크로시스템즈에서 설계한 API는 `java` 또는 `javax` 패키지 이름을 가진다.
`java`로 시작하는 API는 처음부터 자바 SE의 일부로 설계되었고, `javax`로 시작하는 API는 선택적으로 사용하도록 제안되었거나 나중에 자바 SE에 포함되었다.
다음은 자바 6 기준 API 개요이다.
패키지 | 설명 |
---|---|
java.beans java.beans.* | 자바빈즈(JavaBeans) 지원 |
java.lang java.lang.* | String 등 자바 언어 핵심 API, 애노테이션(annotation) 지원 (자바 5 추가), 성능 프로파일러(profiler) 구현, JVM 모니터링, 가비지 콜렉터 상호 작용을 위한 참조 객체 API, 실행 시 클래스 정보 획득, 메서드/필드 호출 및 값 지정 |
java.math | BigDecimal, BigInteger (임의 정확도) |
java.rmi java.rmi.* | RMI(Remote Method Invocation) 지원 |
java.security java.security.* | 전자 서명 기반 코드 보안 모델, 암호키, 암호학적 해시, 인증서, 전자 서명 관련 API |
java.sql | JDBC(Java DataBase Connectivity) - 관계형 DB 접속, 질의, 결과 수신 |
java.text java.text.* | 문자열, 날짜, 숫자 포맷팅 |
java.util java.util.* | 리스트, 맵 등 콜렉션 API, 기타 편의 API, 다중 스레드 프로그래밍 지원 (동기화 수단 등), JAR, ZIP 파일 생성/읽기, 로그 메시지 삽입, 시스템/사용자 설정 기록 및 읽기 (윈도 레지스트리 등), 문자열 정규식 |
javax.accessibility | 장애인 UI 지원 기본 규약 (AWT, Swing 지원) |
javax.activation | 자바빈즈 활성화 프레임워크 API |
javax.annotation javax.annotation.* | 일반 표준 애노테이션 정의 (JSR 250 일부), CORBA activity 서비스 관련 예외, 컴파일 전 애노테이션 처리 프로세서 정의 규약 |
javax.crypto javax.crypto.* | 암호화/복호화, 키 생성, 키 동의 등 암호화 연산 |
javax.rmi | RMI-IIOP 프로토콜 원격 통신 |
javax.xml.bind.annotation | 자바-XML 스키마 매핑 커스터마이징 |
org.omg.CORBA org.omg.PortableInterceptor | 일반 상호 ORB 프로토콜 원격 통신, CORBA 지원 (Java 9부터 사용 중단, Java 11에서 제거)[7], ORB 훅 등록 메커니즘 (ORB 서비스의 ORB 정상 실행 흐름 가로채기) |
3. 1. javax의 유래
패키지 이름이 `java`로 시작되는 API는 처음부터 자바 SE의 일부로 설계된 것이고, `javax`로 시작되는 API는 자바 SE와 별개로 선택적으로 사용하도록 제안된 API이거나 그랬던 API가 추후 자바 SE에 수용된 것이다. `java`와 `javax`를 구분하게 된 것은 AWT를 기반으로 구현된 GUI 프레임워크인 스윙(Swing) API의 개발과 밀접한 관계가 있다. 초기 스윙 개발 당시 스윙은 기존 자바 1.1과 새로운 자바 1.2에서 모두 실행되는 것을 목표로 했다. 따라서 자바 1.1에는 별도로 다운로드하여 사용하거나 애플릿 혹은 애플리케이션과 함께 다운로드되는 선택적인 라이브러리였고, 동시에 추후 자바 1.2에는 표준으로 포함되어야 했다.[12] 문제는 `java`로 시작하는 패키지 이름은 특별히 취급되어 다운로드된 코드에서는 사용할 수 없었다는 점이다. 따라서 자바 1.1에서 `java`로 시작하는 패키지 이름을 사용할 수 없어 다른 패키지 이름을 선택해야 했다.[13]3. 2. SPI 패키지
SPI는 서비스 제공자 인터페이스(Service Provider Interface)의 약자로, API에 기능을 추가할 수 있도록 정의된 인터페이스를 포함한다. 예를 들어, `java.awt.im` 패키지는 한글, 한자 입력 엔진 등 다양한 입력 방법에 독립적인 API를 제공하는데, `java.awt.im.spi` 내의 인터페이스를 이용하면 새로운 언어를 위한 입력 방법을 추가할 수 있다.[1]3. 3. UI 관련 API
자바 UI는 AWT(Abstract Window Toolkit)와 스윙을 포함한다. AWT는 하부 윈도 시스템에 대한 추상화 계층 역할을 하며, 스윙은 AWT를 기반으로 고수준 API를 제공한다. AWT는 윈도, 사용자 입력, 2D 그래픽 등의 기본적인 서비스를 제공한다. 초기에는 GUI 컴포넌트에 대한 껍데기 역할에 머물렀으나, 이후 자바 2D, 프린팅, 클립보드, 드래그 앤 드롭, 입력 방법, 접근성 지원, 이미지 파일 입출력, 트레이 지원 등 데스크톱 통합을 위한 기능들이 추가되면서 확장되었다.3. 3. 1. AWT 관련 패키지
- java.applet: 웹 페이지에 삽입되는 작은 애플리케이션인 애플릿을 지원하기 위한 API이다. 애플리케이션과 시스템과의 인터페이스이나, 웹 페이지 상의 그래픽 영역을 나타내므로 UI 컴포넌트 형태로 정의되어 있다.
- java.awt: 기본적인 2D 그래픽(자바 2D) 및 하부 윈도 시스템 컴포넌트를 감싼 무거운 컴포넌트(heavyweight component영어)를 담고 있다.
- java.awt.event: 키, 마우스 등 입력과 하부 윈도 시스템과의 통신을 위한 이벤트 및 리스너 인터페이스 정의를 담고 있다.
- java.awt.color, java.awt.geom, java.awt.font: 색 공간(color space영어) 및 프로파일, 벡터 그래픽 연산, 글꼴 등 자바2D의 일부가 되는 API를 담고 있다.
- java.awt.dnd, java.awt.datatransfer: 드래그 앤 드롭과 클립보드 관련 API를 정의하고 있다.
- java.awt.im, java.awt.im.spi: 다국어 입력을 위해 하부 윈도 시스템에서 제공하는 입력 방법과 인터페이스를 할 수 있게 하고 자바로 입력 방법을 작성할 수 있게 한다.
- java.awt.image, java.awt.image.renderable, javax.imageio, javax.imageio.event, javax.imageio.plugins.bmp, javax.imageio.plugins.jpeg, javax.imageio.spi, javax.imageio.stream: 이미지 처리 및 입출력 기능을 제공한다.
- java.awt.print: 프린팅을 위한 기능을 제공한다.
- javax.accessibility: 장애가 있는 사람을 위한 접근성 제공을 위해 UI 컴포넌트가 구현해야 하는 규약을 정의한다. 이를 통해 접근성을 위한 지원 기술들을 통해 UI에 접근할 수 있다. 스윙과 함께 설계되었고 추후 AWT 중량 컴포넌트들에도 적용되었다.
3. 3. 2. 스윙 관련 패키지
- javax.swing: 스윙 컴포넌트와 그에 따른 모델(데이터 또는 상태) 및 기타 API를 정의한다.
- javax.swing.event: 스윙 컴포넌트에서 사용되는 이벤트 객체 및 리스너 인터페이스를 정의한다.
- javax.swing.undo: Undo 지원을 위한 API를 정의하고 있다.
- javax.swing.border: 컴포넌트 테두리 관련 API들을 정의한다.
- javax.swing.colorchooser, javax.swing.filechooser, javax.swing.table: 색 선택, 파일 선택 대화 상자, 테이블 등 복잡한 컴포넌트에 딸린 API를 정의하고 있다.
- javax.swing.plaf 및 부 패키지들: javax.swing에 정의된 컴포넌트들에 대해 룩앤필을 교체하기 위한 규약을 정의하고 있으며, basic, metal, synth, multi 등의 부 패키지에는 각각 서로 다른 룩앤필 구현이 포함되어 있다. API가 공개된 룩앤필은 다른 룩앤필을 만드는데 활용하도록 만들어졌기 때문이다.
- javax.swing.text 및 부 패키지들: 텍스트 컴포넌트를 위한 API를 정의하고 있으며 부 패키지들에서는 HTML, RTF 같은 파일 형식을 읽거나 편집하기 위한 구현이 포함되어 있다.
3. 4. 입출력 API
java.io영어 패키지는 스트림 기반 입출력 모델과 기본적인 파일 시스템을 다룰 수 있는 API를 제공하며, 네트워킹, 이미지 입출력 등 입출력이 필요한 API에서 두루 사용되었다. 자바 1.4부터는 메모리 영역인 버퍼를 기반으로 채널이라는 새로운 개념을 도입한 NIO (New I/O) API가 소개되어 더 고성능에 유연한 입출력이 가능해졌다.- java.io영어: 기본적인 파일 입출력과 다양한 스트림 기반의 입출력 API를 제공한다. 스트림 클래스는 데코레이터 패턴을 따르며, 스트림 클래스에 특색을 더한 기본 서브 클래스를 확장한다.
송신자/송신처 | 접두사 | 스트림형 | 입출력 | 클래스 |
---|---|---|---|---|
바이트 배열 (byte[] ) | ByteArray | byte | in, out | , |
문자 배열 (char[] ) | CharArray | char | in, out | , |
파일 | File | byte, char | in, out | , , , |
문자열 (StringBuffer ) | String | char | in, out | , |
스레드 (Thread ) | Piped | byte, char | in, out | , , , |
명령 | 접두사 | 스트림형 | 입출력 | 클래스 |
---|---|---|---|---|
버퍼링 | Buffered | byte, char | in, out | , , , |
「푸시백」 마지막 값을 읽기 | Pushback | byte, char | in | , |
읽기/쓰기 원시 자료형 | Data | byte | in, out | , |
직렬화 (객체 읽기/쓰기) | Object | byte | in, out | , |
- java.nio영어: java.io영어와 달리 좀 더 유연하고 고성능인 버퍼(buffer영어) 기반의 입출력 모델을 제공한다. 특히 직접 버퍼(direct buffer영어)는 JVM에서 자바 힙(heap영어) 밖의 메모리를 직접 빠르게 읽고 쓰게 할 수 있게 해 주고 파일을 메모리에 매핑할 수 있도록 해 준다.
- java.nio.channels영어, java.nio.channels.spi영어: java.nio영어에 정의된 버퍼를 기반으로 채널(channel영어) 모델을 정의한다. 이를 통해 논블록킹(non-blocking영어) 및 비동기(asynchrous영어) 입출력, 흩어진 버퍼를 이용한 입출력, 다수의 채널을 하나의 스레드에서 다중화해서 처리하는 등의 고성능 입출력을 위한 수단을 제공한다.
- java.nio.charset영어, java.nio.charset.spi영어: java.nio영어의 버퍼를 기반으로 16비트 유니코드와 다양한 문자 인코딩 사이의 변환을 담당한다.
J2SE 1.4에서는 메모리 맵 I/O를 지원하고, 때로는 획기적으로 향상된 성능으로 기본 하드웨어에 더 가까운 입출력 작업을 용이하게 하는 NIO (논블로킹 I/O) 패키지가 추가되었다.
3. 4. 1. java.io
java.io영어 패키지는 입출력을 지원하는 클래스를 포함하고 있다. 이 패키지의 클래스는 주로 스트림 지향적이지만, 랜덤 액세스 파일을 위한 클래스도 제공된다.[1] 이 패키지의 핵심 클래스는 각각 바이트 스트림에서 읽고 쓰는 추상 기본 클래스인 및 이다.[1] 관련 클래스 및 는 각각 문자 스트림에서 읽고 쓰는 추상 기본 클래스이다.[1] 이 패키지에는 호스트 파일 시스템과의 상호 작용을 지원하는 몇 가지 기타 클래스도 있다.[1]스트림 클래스는 기본 하위 클래스를 확장하여 스트림 클래스에 기능을 추가하는 데코레이터 패턴을 따른다.[1] 기본 스트림 클래스의 하위 클래스는 일반적으로 다음 속성 중 하나에 대해 이름이 지정된다.[1]
스트림 하위 클래스는 `''XxxStreamType''` 명명 패턴을 사용하여 이름이 붙여지며, 여기서 `''Xxx''`는 기능을 설명하는 이름이고 `''StreamType''`은 `InputStream`, `OutputStream`, `Reader` 또는 `Writer` 중 하나이다.[1]
다음 표는 `java.io` 패키지에서 직접 지원하는 소스/대상을 보여준다.[1]
소스/대상 | 이름 | 스트림 유형 | 입력/출력 | 클래스 |
---|---|---|---|---|
byte 배열 (byte[] ) | ByteArray | byte | 입력, 출력 | , |
char 배열 (char[] ) | CharArray | char | 입력, 출력 | , |
파일 | File | byte , char | 입력, 출력 | , , , |
문자열 (StringBuffer ) | String | char | 입력, 출력 | , |
스레드 (Thread ) | Piped | byte , char | 입력, 출력 | , , , |
다른 표준 라이브러리 패키지는 메서드에서 반환된 `InputStream` 또는 Java EE 클래스와 같은 다른 대상에 대한 스트림 구현을 제공한다.[1]
스트림 데이터의 데이터 유형 처리 및 처리 또는 필터링은 스트림 필터를 통해 수행된다.[1] 필터 클래스는 모두 생성자에 다른 호환 스트림 객체를 매개변수로 받아들이고 추가 기능을 사용하여 포함된 스트림을 ''데코레이트''한다.[1] 필터는 기본 필터 클래스 , , 또는 중 하나를 확장하여 생성된다.[1]
`Reader` 및 `Writer` 클래스는 실제로 바이트를 문자로 변환하기 위해 데이터 스트림에서 추가 처리가 수행되는 바이트 스트림일 뿐이다.[1] 이는 J2SE 5.0 현재 정적 메서드에서 반환된 으로 표현되는 플랫폼의 기본 문자 인코딩을 사용한다.[1] 클래스는 `InputStream`을 `Reader`로 변환하고 클래스는 `OutputStream`을 `Writer`로 변환한다.[1] 이 두 클래스 모두 사용할 문자 인코딩을 지정하는 것을 지원하는 생성자를 가지고 있다.[1] 인코딩을 지정하지 않으면 프로그램은 플랫폼의 기본 인코딩을 사용한다.[1]
다음 표는 `java.io` 패키지가 직접 지원하는 다른 프로세스 및 필터를 보여준다.[1] 이 모든 클래스는 해당 `Filter` 클래스를 확장한다.[1]
작업 | 이름 | 스트림 유형 | 입력/출력 | 클래스 |
---|---|---|---|---|
버퍼링 | Buffered | byte , char | 입력, 출력 | , , , |
마지막으로 읽은 값을 "푸시 백" | Pushback | byte , char | 입력 | , |
원시 자료형 읽기/쓰기 | Data | byte | 입력, 출력 | , |
객체 직렬화 (객체 읽기/쓰기) | Object | byte | 입력, 출력 | , |
클래스는 파일의 ''임의 접근'' 읽기 및 쓰기를 지원한다.[1] 이 클래스는 다음 읽기 또는 쓰기 작업에 대한 파일 내의 바이트 오프셋을 나타내는 ''파일 포인터''를 사용한다.[1] 파일 포인터는 읽거나 쓸 때 암묵적으로 이동하며, 또는 메서드를 호출하여 명시적으로 이동한다.[1] 파일 포인터의 현재 위치는 메서드에 의해 반환된다.[1]
클래스는 파일 또는 디렉터리 경로를 파일 시스템 내에서 나타냅니다.[1] `File` 객체는 파일 및 디렉터리의 생성, 삭제 및 이름 변경과 ''읽기 전용'' 및 ''최종 수정 타임스탬프''와 같은 파일 속성 조작을 지원합니다.[1] 디렉터리를 나타내는 `File` 객체는 포함된 모든 파일 및 디렉터리 목록을 가져오는 데 사용할 수 있습니다.[1]
클래스는 바이트의 소스 또는 싱크(대상)를 나타내는 파일 디스크립터입니다.[1] 일반적으로 파일이지만, 시스템 콘솔 또는 네트워크 소켓일 수도 있습니다.[1] `FileDescriptor` 객체는 `File` 스트림을 만드는 데 사용됩니다.[1] 이들은 `File` 스트림과 `java.net` 소켓 및 데이터그램 소켓에서 얻습니다.[1]
3. 4. 2. java.nio
java.nio는 java.io와 다르게 좀 더 유연하고 고성능인 버퍼(buffer영어) 기반의 입출력 모델을 제공한다. 특히 직접 버퍼(direct buffer영어)는 JVM에서 자바 힙(heap영어) 밖의 메모리를 직접 빠르게 읽고 쓰게 할 수 있게 해 주고 파일을 메모리에 매핑할 수 있도록 해 준다.- java.nio.channels, java.nio.channels.spi: java.nio에 정의된 버퍼를 기반으로 채널(channel영어) 모델을 정의한다. 이를 통해 논블록킹(non-blocking영어) 및 비동기(asynchrous영어) 입출력, 흩어진 버퍼를 이용한 입출력, 다수의 채널을 하나의 스레드에서 다중화해서 처리하게 하는 등의 고성능 입출력을 위한 수단을 제공한다.
- java.nio.charset, java.nio.charset.spi: java.nio의 버퍼를 기반으로 16비트 유니코드와 다양한 문자 인코딩 사이의 변환을 담당한다.
자바 2 플랫폼, 스탠다드 에디션 1.4(J2SE 1.4)에서는 메모리 맵 I/O를 지원하고, 때로는 획기적으로 향상된 성능으로 기본 하드웨어에 더 가까운 입출력 작업을 용이하게 하는 NIO (논블로킹 I/O) 패키지가 추가되었다. java.nio 패키지는 여러 버퍼 유형에 대한 지원을 제공한다. 하위 패키지 java.nio.charset은 문자 데이터에 대한 다양한 문자 인코딩을 지원한다. 하위 패키지 java.nio.channels는 파일 및 소켓과 같이 I/O 작업을 수행할 수 있는 엔터티에 대한 연결을 나타내는 ''채널''에 대한 지원을 제공한다. java.nio.channels 패키지는 또한 파일의 세분화된 잠금에 대한 지원을 제공한다.[1]
3. 5. 기타 API
패키지 | 설명 |
---|---|
java.beans java.beans.* | 자바빈즈(JavaBeans영어) 지원 |
java.lang | String 등 자바 언어 핵심 API |
java.lang.annotation | 애노테이션(annotation영어) 지원 (자바 5 추가) |
java.lang.instrument | 성능 프로파일러(profiler영어) 구현, JVM 모니터링 |
java.lang.management | JVM 모니터링 |
java.lang.ref | 가비지 콜렉터 상호 작용을 위한 참조 객체 API |
java.lang.reflect | 실행 시 클래스 정보 획득, 메서드/필드 호출 및 값 지정 |
java.math | BigDecimal, BigInteger (임의 정확도) |
java.rmi java.rmi.* | RMI(Remote Method Invocation) 지원 |
java.security java.security.* | 전자 서명 기반 코드 보안 모델, 암호키, 암호학적 해시, 인증서, 전자 서명 관련 API |
java.sql | JDBC(Java DataBase Connectivity) - 관계형 DB 접속, 질의, 결과 수신 |
java.text java.text.* | 문자열, 날짜, 숫자 포맷팅 |
java.util | 리스트, 맵 등 콜렉션 API, 기타 편의 API |
java.util.concurrent java.util.concurrent.* | 다중 스레드 프로그래밍 지원 (동기화 수단 등) |
java.util.zip java.util.jar | JAR, ZIP 파일 생성/읽기 |
java.util.logging | 로그 메시지 삽입 |
java.util.prefs | 시스템/사용자 설정 기록 및 읽기 (윈도 레지스트리 등) |
java.util.regex | 문자열 정규식 |
javax.accessibility | 장애인 UI 지원 기본 규약 (AWT, Swing 지원) |
javax.activation | 자바빈즈 활성화 프레임워크 API |
javax.annotation | 일반 표준 애노테이션 정의 (JSR 250 일부) |
javax.activity | CORBA activity 서비스 관련 예외 |
javax.annotation.processing | 컴파일 전 애노테이션 처리 프로세서 정의 규약 |
javax.crypto javax.crypto.* | 암호화/복호화, 키 생성, 키 동의 등 암호화 연산 |
javax.rmi | RMI-IIOP 프로토콜 원격 통신 |
javax.xml.bind.annotation | 자바-XML 스키마 매핑 커스터마이징 |
org.omg.CORBA | 일반 상호 ORB 프로토콜 원격 통신, CORBA 지원 (Java 9부터 사용 중단, Java 11에서 제거)[7] |
org.omg.PortableInterceptor | ORB 훅 등록 메커니즘 (ORB 서비스의 ORB 정상 실행 흐름 가로채기) |
4. 보안
Java SE는 과거 여러 보안 취약점이 보고되었으며,[8][9] 오라클은 정기적으로 보안 경고 및 Java SE에 대한 중요한 보안 관련 패치를 발표한다.[10] 보안 지원, 메시지 다이제스트 알고리즘은 Java security영어 패키지에 포함되어 있다.
한국의 경우, 공인인증서 및 전자서명 관련 보안 취약점에 대한 지속적인 관심과 대응이 필요하다.
참조
[1]
웹사이트
Java SE Overview
http://www.oracle.co[...]
Oracle Corporation
2017-02-26
[2]
웹사이트
Java SE 6 Release Contents
https://www.jcp.org/[...]
Oracle Corporation and/or its affiliates
2013-01-01
[3]
웹사이트
Moving to OpenJDK as the official Java SE 7 Reference Implementation
https://blogs.oracle[...]
[4]
웹사이트
Java Platform, Standard Edition 7 Reference Implementations
http://jdk.java.net/[...]
[5]
웹사이트
Java Platform, Standard Edition 8 Reference Implementations
http://jdk.java.net/[...]
[6]
웹사이트
Java Specification Requests Overview
https://jcp.org/en/j[...]
Oracle Corporation and/or its affiliates
2013-01-01
[7]
웹사이트
JEP 320: Remove the Java EE and CORBA Modules
https://openjdk.java[...]
Openjdk.java.net
2019-05-23
[8]
뉴스
Dangerous vulnerability in latest Java version
http://www.h-online.[...]
The H Security
2013-01-10
[9]
웹사이트
Another critical Java vulnerability puts 1 billion users at risk
http://blogs.compute[...]
Computerworld Security Blog
2012-09-25
[10]
웹사이트
Critical Patch Updates, Security Alerts and Third Party Bulletin
http://www.oracle.co[...]
Oracle
[11]
문서
자바 가상 머신 규격
http://java.sun.com/[...]
[12]
문서
JFC 패키지 이름 제안
http://java.sun.com/[...]
[13]
문서
ClassLoader API 문서: "java."로 시작하는 패키지에 클래스를 정의하려고 하는 경우 예외가 발생
http://download.orac[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com