맨위로가기

자바 (소프트웨어 플랫폼)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

자바(Java)는 자바 프로그래밍 언어로 개발된 프로그램을 개발하고 실행하기 위한 소프트웨어 플랫폼으로, 가상 머신, 컴파일러, 라이브러리 등을 포함한다. 자바 플랫폼은 다양한 하드웨어 및 운영 체제에서 자바 프로그램의 동일한 실행을 지원하며, 자바 카드, 자바 ME, 자바 SE, 자카르타 EE 등 여러 에디션으로 구성된다. 자바는 프로그래밍 언어이자 플랫폼의 핵심 요소로 간주되며, 오라클에 의해 관리되는 Java SE는 데스크톱, 서버, 임베디드 시스템 등에서 널리 사용된다. 자바는 오픈 소스 라이선스로 제공되지만, 보안 취약점 및 제네릭, 부호 없는 정수, 부동소수점 연산 지원의 제한, 툴바 번들 등의 비판을 받기도 한다.

더 읽어볼만한 페이지

  • 자바 플랫폼 - 블루레이
    블루레이 디스크는 DVD 후속 매체로, 청색 레이저를 사용하여 고화질 영상과 음향을 제공하며 HD DVD와의 경쟁 후 고밀도 광디스크 표준으로 자리 잡았으나 스트리밍 서비스 성장으로 녹화용 디스크 생산이 중단되는 추세이다.
  • 자바 플랫폼 - 자바 플랫폼, 마이크로 에디션
    자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
자바 (소프트웨어 플랫폼) - [IT 관련 정보]에 관한 문서
개요
자바 기술 로고
자바 기술 로고
이름자바 (소프트웨어 플랫폼)
영어Java Platform
개발
개발자제임스 고슬링, 썬 마이크로시스템즈
현재 개발자오라클
출시
기술 정보
프로그래밍 언어자바, C++, C, 어셈블리어
운영 체제마이크로소프트 윈도우, 리눅스, macOS, 솔라리스 (구 버전)
플랫폼x64, ARMv8, ARMv7, IA-32, SPARC (구 버전)
지원 언어영어, 중국어, 프랑스어, 독일어, 이탈리아어, 일본어, 한국어, 포르투갈어, 스페인어, 스웨덴어
장르소프트웨어 플랫폼
라이선스
라이선스이중 라이선스: GNU 일반 공중 사용 허가서 버전 2 (클래스패스 예외 포함) 및 사유 소프트웨어 라이선스
관련 링크
웹사이트oracle.com/java/
java.com
dev.java
자바 플랫폼 에디션
에디션 종류자바 카드
자바 ME (Micro)
자바 SE (Standard)
자카르타 EE (Enterprise)
자바FX (8부터 10까지는 자바 런타임 환경에 기본 포함되나 자바FX 1.x, 2.x, 그리고 11 이후로는 별도 설치)
퍼스널자바 (중단)
최신 버전
최신 버전{{LSR





{{LSR





{{LSR





{{LSR





{{LSR




2. 플랫폼

자바 플랫폼은 자바 프로그래밍 언어로 작성된 프로그램을 개발하고 실행하는 데 도움이 되는 프로그램들의 모임이다. 여기에는 실행 엔진(가상 머신), 컴파일러, 그리고 라이브러리가 포함된다.[115] 자바 플랫폼은 자바 프로그램이 모든 플랫폼에서 동일하게 실행될 수 있도록 다양한 하드웨어 및 OS에 대해 구현되었다.

자바 플랫폼은 운영 체제나 하드웨어에 의존하지 않는 바이트 코드(중간 언어)로 표현된다. 따라서 자바 프로그램 실행에 필요한 가상 머신과 개발에 필요한 표준 라이브러리 세트 및 컴파일러를 개별 환경에 맞춰 만들면 자바 프로그램은 모든 환경에서 동일하게 작동한다. 자바 플랫폼은 이러한 실행 환경 및 개발 환경을 말한다.

자바 플랫폼에는 몇 가지 에디션이 있다.



자바 플랫폼은 다양한 프로그램으로 구성되어 있으며, 각 프로그램은 전체 기능에서 완전히 다른 일부를 제공한다. 예를 들어, 자바 소스 코드를 자바 바이트 코드로 변환하는 자바 컴파일러자바 개발 키트(JDK)의 일부로 제공된다. 실행 환경인 자바 런타임 환경(JRE)은 일반적으로 바이트 코드를 네이티브 머신 코드로 변환하는 JIT 컴파일러로 구현된다. 또한, 자바 바이트 코드로 미리 컴파일된 대규모 라이브러리가 존재한다.[115]

2. 1. Java Development Kit (JDK)

자바 개발 키트(JDK)는 자바 소스 코드를 자바 바이트 코드로 변환하는 자바 컴파일러를 포함한다. 이 바이트 코드는 자바 가상 머신(JVM)을 위한 중간 언어이다. JDK는 자바 프로그램 개발에 필요한 도구 모음이다.[115]

2. 2. Java Runtime Environment (JRE)

오라클(Oracle)에서 배포하는 자바 런타임 환경(JRE)은 독립형 JVM (HotSpot), 표준 라이브러리, 구성 도구를 포함하는 무료 소프트웨어 배포판이다. JDK 9에서 단종되기 전까지는 브라우저 플러그인도 포함되어 있었다.[12] JRE는 노트북 및 데스크톱 폼 팩터의 개인용 컴퓨터에 설치되는 가장 일반적인 자바 환경이다.

오라클 BCL(Binary Code License) 계약[12]을 가진 JRE의 마지막 Critical Path Update 버전은 8u201이었고, 동일한 라이선스를 가진 마지막 Patch Set Update 버전은 8u202였다.[13][14] 라이선스 체계에 관계없이 마지막 오라클 JRE 구현은 9.0.4였다.[15]

자바 플랫폼 SE 9부터 전체 플랫폼은 모듈로 그룹화되었다.[16] 자바 SE 구현의 모듈화는 개발자가 사용자 장치에 적합한 자바 SE 구현이 있는지 여부에만 의존하는 대신, 애플리케이션을 애플리케이션에서 사용되는 모든 모듈과 함께 묶을 수 있도록 한다.[17][18][19][20]

자바 프로그램은 OS나 하드웨어에 의존하지 않는 바이트 코드 (중간 언어)로 표현된다. 따라서 자바 프로그램 실행에 필요한 가상 머신과 개발에 필요한 표준 라이브러리 세트 및 컴파일러를 개별 환경에 맞춰 만들면 자바 프로그램은 모든 환경에서 동일하게 작동한다.

실행 환경인 자바 런타임 환경 (JRE)은 일반적으로 온더플라이로 바이트 코드를 네이티브 머신 코드로 변환하는 JIT 컴파일러로 구현된다.

2. 3. 클래스 라이브러리

대부분의 현대 운영 체제(OS)는 프로그래머의 작업을 쉽게 하기 위해 재사용 가능한 방대한 양의 코드를 제공한다. 이 코드는 일반적으로 응용 프로그램이 런타임에 호출할 수 있는 동적 로드 라이브러리 형태로 제공된다. 자바 플랫폼은 특정 운영 체제에 종속되지 않기 때문에 응용 프로그램은 기존 OS 라이브러리에 의존할 수 없다. 대신, 자바 플랫폼은 현대 운영 체제에서 일반적으로 발견되는 많은 재사용 가능한 기능을 포함하는 자체 표준 클래스 라이브러리 세트를 제공한다. 대부분의 시스템 라이브러리 또한 자바로 작성되었다. 예를 들어, Swing 라이브러리는 사용자 인터페이스를 그리고 이벤트를 자체적으로 처리하여, 서로 다른 플랫폼이 구성 요소를 처리하는 방식 간의 미묘한 차이점을 제거한다.[115]

자바 클래스 라이브러리는 자바 플랫폼 내에서 세 가지 목적을 수행한다. 첫째, 다른 표준 코드 라이브러리와 마찬가지로, 자바 라이브러리는 항목 목록 유지 또는 복잡한 문자열 구문 분석과 같은 일반적인 작업을 수행하기 위한 잘 알려진 일련의 기능을 프로그래머에게 제공한다. 둘째, 클래스 라이브러리는 일반적으로 하드웨어 및 운영 체제에 크게 의존하는 작업에 대한 추상 인터페이스를 제공한다. 네트워크 액세스 및 파일 액세스와 같은 작업은 종종 각 플랫폼의 고유한 구현과 밀접하게 관련되어 있다. `java.net` 및 `java.io` 라이브러리는 네이티브 OS 코드에서 추상화 계층을 구현한 다음, 자바 응용 프로그램이 해당 작업을 수행할 수 있도록 표준 인터페이스를 제공한다. 마지막으로, 일부 기본 플랫폼이 자바 응용 프로그램이 기대하는 모든 기능을 지원하지 않는 경우, 클래스 라이브러리는 대체 기능을 제공하기 위한 에뮬레이션을 통해, 또는 최소한 특정 기능의 존재 여부를 확인할 수 있는 일관된 방법을 제공하여 부재하는 구성 요소를 자연스럽게 처리하도록 작동한다.[116]

2. 4. Java Virtual Machine (JVM)

자바 플랫폼의 핵심은 자바 바이트코드 프로그램을 실행하는 "가상 머신" 개념이다. 이 바이트코드는 프로그램이 실행되는 하드웨어나 운영 체제에 관계없이 동일하다. 자바 가상 머신(JVM) 내에는 JIT(Just In Time) 컴파일러가 있는데, 실행 시에 자바 바이트코드를 네이티브 프로세서 명령어로 변환하고 실행 중에 네이티브 코드를 메모리에 캐싱한다.[95][96][97]

바이트코드를 중간 언어로 사용하면 자바 프로그램이 가상 머신을 사용할 수 있는 모든 플랫폼에서 실행될 수 있다. JIT 컴파일러를 사용하면 자바 애플리케이션은 로딩 시 약간의 지연 시간이 지난 후, JIT 컴파일되어 "워밍업"되면 네이티브 프로그램만큼 빠르게 실행되는 경향이 있다. JRE 버전 1.2부터 Sun의 JVM 구현에는 인터프리터 대신 JIT 컴파일러가 포함되어 있다.

자바 프로그램은 크로스 플랫폼 또는 플랫폼 독립적이지만, 이러한 프로그램을 실행하는 JVM 코드는 그렇지 않다. 지원되는 모든 운영 플랫폼에는 자체 JVM이 있다.

JVM 명세는 구현과 관련하여 구현자에게 많은 여지를 제공한다. 자바 1.3 이후, 오라클의 JRE는 HotSpot이라는 JVM을 포함하고 있는데, 이는 고성능을 내도록 설계되었다. 코드 실행 속도를 높이기 위해 HotSpot은 적시 컴파일을 사용한다.

2. 4. 1. Generational Heap

HotSpot에서 힙은 다음과 같은 ''세대''로 나뉜다.

  • ''영 제너레이션''은 생성된 직후 가비지 수집되는 수명이 짧은 객체를 저장한다.
  • 더 오래 유지되는 객체는 ''올드 제너레이션''(또는 ''테뉴어드 제너레이션'')으로 이동한다. 이 메모리는 최초 및 다음 가비지 수집에서 살아남은 객체가 저장되는 (두 개의) 서바이버 공간으로 세분화된다.


''퍼머넌트 제너레이션''(또는 ''permgen'')은 Java 8 이전에는 클래스 정의 및 관련 메타데이터에 사용되었다. 퍼머넌트 제너레이션은 힙의 일부가 아니었다.[24][25] ''퍼머넌트 제너레이션''은 Java 8에서 제거되었다.[26]

원래는 퍼머넌트 제너레이션이 없었고, 객체와 클래스는 동일한 영역에 함께 저장되었다. 그러나 클래스 언로딩은 객체 수집보다 훨씬 드물게 발생하므로, 클래스 구조를 특정 영역으로 이동하면 성능을 크게 향상시킬 수 있었다.[24]

3. 지원되는 언어

일반적으로 "자바"라는 단어는 자바 프로그래밍 언어를 가리킨다. 프로그래밍 언어는 "플랫폼"이라는 문구의 범위를 벗어나지만, 자바 7 이전에는 자바 프로그래밍 언어가 자바 플랫폼의 핵심 부분으로 나열되었다. 따라서 언어와 런타임은 일반적으로 단일 단위로 간주되었다. 그러나 자바 7 사양을 통해 자바 언어와 자바 가상 머신을 더 명확하게 별도의 엔터티로 취급하여 더 이상 단일 단위로 간주되지 않도록 노력했다.[21]

JVM을 대상으로 하는 많은 컴파일러 또는 인터프리터가 제3자에 의해 제작되었다. 이 중 일부는 기존 언어용이고, 다른 일부는 자바 언어의 확장용이다. 여기에는 다음이 포함된다.


  • BeanShell – 자바용 경량 스크립팅 언어[22] (JShell 참조)
  • 세일론 – 불변성에 중점을 둔 객체 지향적이며 강력하고 정적으로 형식화된 프로그래밍 언어 (2023년부터 더 이상 유지 관리되지 않음)
  • 클로저 – 자바 플랫폼의 현대적이고 동적이며 함수형 방언인 Lisp 프로그래밍 언어
  • 고수 – 아파치 라이선스 2.0에 따라 출시된 범용 JVM 기반 프로그래밍 언어
  • 그루비 – Python, Ruby, Perl 및 Smalltalk의 기능을 갖춘 완전한 자바 상호 운용 가능한 자바 구문 호환 정적 및 동적 언어
  • JRuby루비 인터프리터
  • Jython – 파이썬 인터프리터
  • 코틀린 – 완전한 자바 상호 운용성을 갖춘 JVM용 (예: 데스크톱 및 iOS와 같은 비 JVM) 프로그래밍 언어 (Android용 Google에서 선호하는 언어이며, 이전에는 지원했었던 자바보다 선호되고 여전히 지원됨)
  • Rhino – 자바스크립트 인터프리터
  • 스칼라 – "더 나은 자바"로 설계된 자바 호환 구문을 사용하지 않는 다중 패러다임 프로그래밍 언어
  • AspectJ - 관점 지향 프로그래밍을 실현할 수 있는 Java
  • Generic Java영어 - 이것은 Java SE 5.0에 정식으로 Java에 통합되었다.
  • 포트리스
  • Kawa - Lisp 방언 중 하나인 Scheme 인터프리터
  • 프로세싱

4. 역사

제임스 고슬링


자바 플랫폼과 언어는 1990년 12월 썬 마이크로시스템즈의 내부 프로젝트로 시작되었으며, C/C++ 프로그래밍 언어를 대체할 수 있는 대안을 제공했다.[29] 엔지니어 패트릭 노튼은 썬의 C++와 C 응용 프로그래밍 인터페이스(API) 등에 대해 점점 더 좌절감을 느꼈고, 스콧 맥닐리에게 썬을 떠나 NeXT로 이사할 계획이라고 알렸다. 맥닐리는 그에게 회사 문제를 해결하는 방법에 대한 이메일을 보내라고 요청했고, 노튼은 소규모 팀을 만드는 것을 구상했다. 맥닐리는 이 메시지를 썬의 다른 사람들에게 전달했고, '스텔스 프로젝트'가 시작되었다.[29]

스텔스 프로젝트는 곧 '그린 프로젝트'로 이름이 바뀌었고, 제임스 고슬링과 마이크 쉐리던이 노튼에 합류했다. 그들은 캘리포니아주 멘로 파크의 샌드 힐 로드에 있는 작은 사무실에서 작업을 시작했다.[30] 그들은 썬이 주요 새로운 기회를 제공할 것으로 기대하는 차세대 스마트 기기를 프로그래밍하기 위한 새로운 기술을 개발하는 것을 목표로 했다.[30]

팀은 원래 C++를 사용하는 것을 고려했지만, 여러 가지 이유로 거부했다. 제한된 자원을 가진 임베디드 시스템을 개발하고 있었기 때문에 C++가 너무 많은 메모리를 필요로 하고, 복잡성으로 인해 개발자 오류가 발생한다고 결정했다. 이 언어에 가비지 컬렉션이 없다는 것은 프로그래머가 시스템 메모리를 수동으로 관리해야 함을 의미했는데, 이는 어렵고 오류가 발생하기 쉬운 작업이었다. 팀은 또한 C++ 언어에 보안, 분산 프로그래밍, 스레딩에 대한 이식 가능한 기능이 부족하다는 점에 대해 우려했다. 마지막으로, 그들은 모든 유형의 장치로 쉽게 이식할 수 있는 플랫폼을 원했다.

빌 조이는 Mesa와 C를 결합한 새로운 언어를 구상했다. 그는 "Further"라는 논문에서 썬의 엔지니어들이 C++를 기반으로 하는 객체 지향 프로그래밍 환경을 만들어야 한다고 제안했다. 처음에 고슬링은 C++를 수정하고 확장하려고 시도했지만, 곧 새로운 언어를 만드는 쪽으로 방향을 바꾸었다. 그는 자신의 사무실 바로 밖에 서 있던 나무를 따서 '오크'라고 불렀다.[31]

1992년 여름까지 팀은 그린 운영 체제, 오크 언어, 라이브러리 및 하드웨어를 포함한 새로운 플랫폼의 일부를 시연할 수 있었다. 1992년 9월 3일에 있었던 첫 번째 시연은 개인 휴대 정보 단말기(PDA) 장치인 ''스타7(Star7)''을 구축하는 데 중점을 두었다.[32] 그해 11월, 그린 프로젝트는 썬 마이크로시스템즈의 완전 자회사인 ''퍼스트퍼슨''으로 분사되었고, 팀은 캘리포니아주 팔로 알토로 이전했다.[32] 퍼스트퍼슨 팀은 고도로 상호 작용하는 장치를 만드는 데 관심을 가졌고, 타임 워너가 제안 요청을 셋톱 박스에 대해 발표하자, 퍼스트퍼슨은 목표를 바꾸어 셋톱 박스 플랫폼에 대한 제안으로 대응했다. 그러나 케이블 TV 업계는 그들의 플랫폼이 사용자에게 너무 많은 제어 권한을 부여한다고 생각했고, 그래서 퍼스트퍼슨은 실리콘 그래픽스(SGI)에 입찰에서 패했다. 3DO 컴퍼니와의 셋톱 박스에 대한 추가 계약도 성사되지 못했다. 텔레비전 업계에서 관심을 끌지 못해 회사는 다시 썬으로 편입되었다.

존 게이지


1994년 6월과 7월, 존 게이지(썬의 과학 담당 이사)와 고슬링, 조이, 노튼, 웨인 로싱, 에릭 슈미트와 3일간의 브레인스토밍을 거친 후, 팀은 플랫폼을 월드 와이드 웹을 목표로 재설정했다. 그들은 모자이크와 같은 그래픽 웹 브라우저의 등장으로 인터넷이 케이블 TV를 위해 그들이 구상했던 것과 같은 고도로 상호작용적인 매체로 발전할 수 있다고 생각했다. 노튼은 프로토타입으로 작은 브라우저인 WebRunner를 작성했으며, 1995년에 HotJava로 이름을 변경했다.[30]

썬은 상표 검색 결과 Oak Technology가 ''Oak''라는 이름을 사용하고 있다는 사실을 발견한 후, Oak 언어의 이름을 ''Java''로 변경했다.[33] 썬은 시장 점유율을 높이기 위해 Java 라이선스 가격을 원가 이하로 책정했다.[34] Java 1.0a가 1994년에 다운로드 가능하게 되었지만, HotJava 브라우저가 포함된 Java의 첫 번째 공개 릴리스인 Java 1.0a2는 1995년 5월 23일에 썬월드 컨퍼런스에서 게이지에 의해 발표되었다. 게이지의 발표에 이어, 넷스케이프 커뮤니케이션즈의 부사장인 마크 앤드리슨은 넷스케이프 브라우저가 Java를 지원할 것이라고 예기치 않게 발표했다. 1996년 1월 9일, 썬 마이크로시스템즈는 기술 개발을 위해 JavaSoft 그룹을 설립했다.[35]

웹 브라우저용 Java 애플릿은 더 이상 Java의 가장 인기 있는 사용 사례가 아니며(주로 서버 측에서 사용됨), 클라이언트 측에서 코드를 실행하는 가장 인기 있는 방법도 아니다(JavaScript가 더 인기를 얻음). 그럼에도 불구하고 TeaVM을 사용하여 JVM 지원이 중단된 후에도 웹 브라우저에서 Java(또는 Kotlin과 같은 다른 JVM 언어)를 실행하는 것이 가능하다.

자바의 성공과 그 개념인 한 번 작성, 어디서나 실행은 2002년에 등장한 .NET Framework 플랫폼 등 다른 유사한 시도를 이끌었으며, 이는 자바의 성공적인 측면을 많이 받아들였다. 그러나 .NET의 완전한 구현은 마이크로소프트 윈도우만을 대상으로 한다. 반면, 자바는 많은 플랫폼에서 완벽하게 지원된다. .NET은 많은 서로 다른 프로그래밍 언어를 공통 중간 언어로 컴파일하는 언어 독립적인 라이브러리의 사용성에 중점을 두고 있어 언어 독립적인 호환성 측면에서 자바보다 성공적이다. 하지만 자바에도 스칼라, Jython, Groovy, JRuby 등 JavaVM을 실행 플랫폼으로 하는 언어 처리계가 여러 개 존재한다.

.NET에는 Visual J#이라는 자바 구현이 존재하지만, 이는 본가 자바와 호환되지 않으며, 관련 클래스 라이브러리는 거의 언어 버전이 오래된 '''JDK 1.1'''을 기반으로 한다. 이는 Visual J#가 .NET의 주요 언어로 설계된 것이 아니라, 자바에서 .NET 플랫폼으로 마이그레이션하기 위해 준비된 언어이기 때문이다.

최근에는 오픈 소스 커뮤니티에 의해 IKVM.NET이라는 공통 언어 런타임에서 동작하는 자바 가상 머신이 등장하여 일방적이긴 하지만, 호환성 및 상호 이용성이 급격히 향상되고 있다.

자바 언어는 1996년 1월 23일에 자바 개발 키트(JDK) 1.0이 출시된 이후 여러 번 변경되었으며, 표준 라이브러리에 수많은 클래스와 패키지가 추가되었다. J2SE 1.4 이후 자바 커뮤니티 프로세스(JCP)가 자바 언어의 발전을 관리해 왔으며, JCP는 ''자바 사양 요청''(JSR)을 사용하여 자바 플랫폼에 대한 추가 및 변경 사항을 제안하고 명시한다. ''자바 언어 사양''(JLS)은 언어를 명시하며, JLS에 대한 변경 사항은 JSR 901에 따라 관리된다.[38]

자바 버전연도변경 사항
232024
212023장기 지원(LTS) 릴리스
172021LTS 릴리스, switch 문에 대한 패턴 일치와 봉인된 클래스 제공
162021레코드 클래스, 패턴 일치, 봉인된 클래스 도입 (데이터 모델링 기능 향상)
152020텍스트 블록, 봉인된 클래스 도입 (문자열 및 클래스 처리 향상, 미리 보기 기능)
142020레코드 클래스instanceof패턴 일치 도입 (미리 보기 기능)
132019텍스트 블록, 레거시 소켓 API 재구현
122019스위치 표현식, 새로운 Shenandoah 가비지 수집기 도입
112018LTS 릴리스, 새로운 HTTP 클라이언트 도입, Java EE 및 CORBA 모듈 제거
102018지역 변수 형식 추론(var) 도입 (형식 지정 없이 지역 변수 선언 허용)
92017Java Platform Module System(JPMS) (애플리케이션 모듈화), JShell 대화형 Java REPL 도입
82014람다 표현식, 새로운 날짜 및 시간 API 도입 (생산성 향상)
72011try-with-resources, 문자열 스위치, 다이아몬드 연산자 도입, 확장된 예외 처리, 새로운 파일 I/O 라이브러리(NIO.2) 포함
62006스크립팅 언어 지원(JSR 223), 웹 서비스 향상, JDBC 4.0 제공 (SQL XML 지원)
52004제네릭, 향상된 for 루프, 오토박싱/언박싱, 정적 임포트, 가변 인자, 열거형, 주석 포함
42002정규 표현식, 예외 체이닝, NIO(New Input/Output) 도입, 새로운 로깅 API
32000HotSpot JVM 포함, Java Naming and Directory Interface(JNDI), Java Platform Debugger Architecture(JPDA) 도입
21998컬렉션 프레임워크, Java 문자열 메모리 맵(상수), Just In Time (JIT) 컴파일러, Swing API(GUIs용) 도입
1.11997내부 클래스, 반사, Java Beans, JDBC API(데이터베이스 액세스용) 도입
1.01996자바 프로그래밍 언어의 첫 번째 버전, 객체 지향 프로그래밍과 바이트코드를 도입하여 크로스 플랫폼 지원


4. 1. GNU General Public License

2006년 11월 13일, 썬 마이크로시스템즈는 자바 구현의 대부분을 GNU 일반 공중 사용 허가서(GPL)에 따라 공개했다.[36][37]

조나단 I. 슈워츠(Jonathan I. Schwartz)


썬 마이크로시스템즈(Sun Microsystems)는 2006년 JavaOne에서 자바가 자유 소프트웨어오픈 소스 소프트웨어가 될 것이라고 발표했으며,[70] 2006년 10월 25일 오라클(Oracle) OpenWorld 컨퍼런스에서 조나단 I. 슈워츠(Jonathan I. Schwartz)는 핵심 자바 플랫폼을 30~60일 이내에 자유 및 오픈 소스 소프트웨어로 출시할 것이라고 발표했다.[71]

썬은 2006년 11월 13일 GNU GPL에 따라 자바 핫스팟 가상 머신과 컴파일러를 자유 소프트웨어로 출시했으며, 나머지 JDK (JRE 포함)는 2007년 3월까지 GPL 하에 배치될 것이라고 약속했다 ("썬이 GPL에 따라 배포 가능한 소스 형태로 게시할 권한이 없는 몇 가지 구성 요소 제외").[72] 리처드 스톨만(Richard Stallman)에 따르면, 이것은 "자바 트랩"의 종말을 의미했다.[73] 마크 셔틀워스(Mark Shuttleworth)는 초기 언론 발표를 "자유 소프트웨어 커뮤니티에게 진정한 이정표"라고 불렀다.[74]

썬은 클래스 라이브러리의 소스 코드를 2007년 5월 8일 GPL에 따라 출시했다. 단, 써드파티로부터 썬이 라이선스를 받은 일부 제한적인 부분은 자유 소프트웨어 및 오픈 소스 라이선스로 코드를 공개하는 것을 원치 않았다.[75] 일부 제한된 부분은 글꼴 렌더링 및 2D 래스터화와 같은 플랫폼의 핵심 부분임이 밝혀졌지만, 이후 썬에 의해 오픈 소스로 출시되었다 (OpenJDK 클래스 라이브러리 참조).

썬의 목표는 독점적이고 폐쇄적인 부분을 대체 구현으로 교체하고 클래스 라이브러리를 완전히 자유롭고 오픈 소스로 만드는 것이었다. 그동안 IcedTea라는 써드파티 프로젝트는 제한된 코드를 스텁 또는 GNU Classpath의 코드로 대체하여 완전히 자유롭고 매우 유용한 JDK를 만들었다. 그러나 OpenJDK는 이후 제한된 부분 없이 빌드할 수 있게 되었고 (OpenJDK 6 b10[76]부터) 대부분의 리눅스 배포판에서 기본 런타임 환경이 되었다.[77][78][79][80]

2008년 6월, IcedTea6 (페도라 리눅스(Fedora Linux) 9에서 OpenJDK의 패키지 버전)가 기술 호환성 키트 테스트를 통과했으며 완전한 자바 6 구현이라고 주장할 수 있다고 발표되었다.[81]

OpenJDK는 GPL 하에 있으므로, 최종 사용자 (또는 시스템 관리자)가 각 시스템에 독점적인 오라클(Oracle) JRE의 올바른 버전을 다운로드하여 설치하도록 요구하는 대신, 사용자 지정 버전의 JRE를 소프트웨어 응용 프로그램과 함께 직접 재배포할 수 있다.[82][83]

4. 2. 버전 역사

버전연도변경 사항232024212023장기 지원(LTS) 릴리스172021LTS 릴리스, switch 문에 대한 패턴 일치와 봉인된 클래스 제공162021레코드 클래스, 패턴 일치, 봉인된 클래스 도입 (데이터 모델링 기능 향상)152020텍스트 블록, 봉인된 클래스 도입 (문자열 및 클래스 처리 향상, 미리 보기 기능)142020레코드 클래스instanceof패턴 일치 도입 (미리 보기 기능)132019텍스트 블록, 레거시 소켓 API 재구현122019스위치 표현식, 새로운 Shenandoah 가비지 수집기 도입112018LTS 릴리스, 새로운 HTTP 클라이언트 도입, Java EE 및 CORBA 모듈 제거102018지역 변수 형식 추론(var) 도입 (형식 지정 없이 지역 변수 선언 허용)92017Java Platform Module System(JPMS) (애플리케이션 모듈화), JShell 대화형 Java REPL 도입82014람다 표현식, 새로운 날짜 및 시간 API 도입 (생산성 향상)72011try-with-resources, 문자열 스위치, 다이아몬드 연산자 도입, 확장된 예외 처리, 새로운 파일 I/O 라이브러리(NIO.2) 포함62006스크립팅 언어 지원(JSR 223), 웹 서비스 향상, JDBC 4.0 제공 (SQL XML 지원)52004제네릭, 향상된 for 루프, 오토박싱/언박싱, 정적 임포트, 가변 인자, 열거형, 주석 포함42002정규 표현식, 예외 체이닝, NIO(New Input/Output) 도입, 새로운 로깅 API32000HotSpot JVM 포함, Java Naming and Directory Interface(JNDI), Java Platform Debugger Architecture(JPDA) 도입21998컬렉션 프레임워크, Java 문자열 메모리 맵(상수), Just In Time (JIT) 컴파일러, Swing API(GUIs용) 도입1.11997내부 클래스, 반사, Java Beans, JDBC API(데이터베이스 액세스용) 도입1.01996자바 프로그래밍 언어의 첫 번째 버전, 객체 지향 프로그래밍과 바이트코드를 도입하여 크로스 플랫폼 지원



자바 언어는 1996년 1월 23일에 자바 개발 키트(JDK) 1.0이 출시된 이후 여러 번 변경되었으며, 표준 라이브러리에 수많은 클래스와 패키지가 추가되었다. J2SE 1.4 이후 자바 커뮤니티 프로세스(JCP)가 자바 언어의 발전을 관리해 왔으며, JCP는 ''자바 사양 요청''(JSR)을 사용하여 자바 플랫폼에 대한 추가 및 변경 사항을 제안하고 명시한다. ''자바 언어 사양''(JLS)은 언어를 명시하며, JLS에 대한 변경 사항은 JSR 901에 따라 관리된다.[38]

썬은 1997년 2월 19일에 ''JDK 1.1''을 출시했다. 주요 추가 사항으로는 추상 윈도우 툴킷(AWT) 이벤트 모델의 광범위한 재구성, 내부 클래스, 자바빈, 자바 데이터베이스 연결(JDBC) 등이 있다.

''J2SE 1.2''(1998년 12월 8일, 코드명 ''Playground'')와 이후 J2SE 5.0까지의 릴리스는 "자바 2"로 브랜드가 변경되었고, 버전 이름 "J2SE"(자바 2 플랫폼, 표준 에디션)는 JDK를 대체하여 기본 플랫폼을 J2EE(자바 2 플랫폼, 엔터프라이즈 에디션) 및 J2ME(자바 2 플랫폼, 마이크로 에디션)와 구별했다. 주요 추가 사항으로는 반사, 컬렉션 프레임워크, 자바 IDL(CORBA 상호 운용성을 위한 인터페이스 설명 언어 구현), Swing 그래픽 API를 핵심 클래스에 통합한 것이다. 자바 플러그인이 출시되었고, 썬의 JVM은 처음으로 JIT 컴파일러를 갖추게 되었다.

''J2SE 1.3''(2000년 5월 8일, 코드명 ''Kestrel'')의 주목할 만한 변경 사항으로는 HotSpot JVM 번들링(HotSpot JVM은 1999년 4월에 J2SE 1.2 JVM용으로 처음 출시), JavaSound, 자바 명명 및 디렉터리 인터페이스(JNDI) 및 자바 플랫폼 디버거 아키텍처(JPDA)가 있다.

''J2SE 1.4''(2002년 2월 6일, 코드명 ''Merlin'')는 JSR 59에 따라 개발된 자바 플랫폼의 첫 번째 릴리스였다.[39] 주요 변경 사항으로는 Perl을 모델로 한 정규 표현식, 예외 체이닝, 통합된 XML 파서 및 XSLT 프로세서 (JAXP), 자바 웹 시작이 있다.

''J2SE 5.0''(2004년 9월 30일, 코드명 ''Tiger'')은 원래 1.5로 번호가 매겨졌으며, 이는 여전히 내부 버전 번호로 사용된다.[40] JSR 176에 따라 개발된 Tiger는 for-each 루프, 제네릭, 오토박싱 및 var-args를 포함한 여러 가지 중요한 새로운 언어 기능을 추가했다.[41]

''Java SE 6''(2006년 12월 11일, 코드명 ''Mustang'')에는 데이터베이스 관리자가 함께 제공되었으며, JVM에서 스크립트 언어(Mozilla의 Rhino 엔진을 사용하는 자바스크립트 등)를 사용할 수 있도록 지원한다. 이 버전부터 썬은 "J2SE" 이름을 ''Java SE''로 바꾸고 버전 번호에서 ".0"을 삭제했다.[42] 다른 주요 변경 사항으로는 플러그 가능한 어노테이션(JSR 269), Windows Vista의 모양과 느낌을 지원하는 네이티브 UI 향상을 포함한 많은 GUI 개선, 자바 플랫폼 디버거 아키텍처(JPDA) & JVM 도구 인터페이스 개선을 통한 더 나은 모니터링 및 문제 해결 기능이 있다.

''Java SE 7''(2011년 7월 28일, 코드명 ''Dolphin'')은 JSR 336에 따라 개발되었다.[43] 문자열 스위치, try-with-resources 및 제네릭 인스턴스 생성에 대한 타입 추론을 포함한 많은 작은 언어 변경 사항이 추가되었다. JVM은 동적 언어를 지원하도록 확장되었으며, 클래스 라이브러리는 join/fork 프레임워크,[44] 개선된 새로운 파일 I/O 라이브러리 및 SCTP와 같은 새로운 네트워크 프로토콜 지원 등으로 확장되었다. Java 7 업데이트 76은 2015년 1월에 출시되었으며, 만료일은 2015년 4월 14일이다.[45]

2016년 6월, Java 7의 마지막 공개 업데이트 이후,[46] Java 6, 7 및 8에서 "원격으로 악용 가능한" 보안 버그가 발표되었다.[47]

''Java SE 8''(2014년 3월 18일, 코드명 ''Kenai'')의 주목할 만한 변경 사항으로는 람다 표현식(클로저) 및 기본 메서드에 대한 언어 수준 지원, Project Nashorn 자바스크립트 런타임, Joda Time에서 영감을 받은 새로운 날짜 및 시간 API, PermGen 제거 등이 있다. 이 버전은 Windows XP 플랫폼에서 공식적으로 지원되지 않지만,[48] 작동하는 것으로 알려져 있다. Java 7의 수명 주기가 종료되었으므로 XP 사용자에게 권장되는 버전이다. 이전에는 Windows XP SP3에 대한 비공식적인 수동 설치 방법만 설명되었다. 이는 완전한 기능을 갖춘 자바 런타임 환경을 포함하는 자바 개발 플랫폼인 JDK8을 참조한다.[49] Java 8은 Windows Server 2008 R2 SP1, Windows Vista SP2 및 Windows 7 SP1, Ubuntu 12.04 LTS 이상 (및 일부 다른 OS)에서 지원된다.[50]

''Java SE 9'' 및 ''10''은 더 높은 시스템 요구 사항을 가지고 있다. 즉, Windows 7 또는 Server 2012 (및 웹 브라우저 최소 인증은 인터넷 익스플로러 11 또는 기타 웹 브라우저로 상향됨)이며, 오라클은 모든 플랫폼에 대해 32비트 호환성을 중단했다. 즉, 오라클의 "64비트 자바 가상 머신 (JVM)만 인증되었다.[51]

''Java SE 11'' LTS는 2018년 9월에 출시되었으며, 버전 9부터 시작된 신속한 출시 모델 이후 첫 번째 LTS 릴리스이다. 처음으로 OpenJDK 11은 GNU 일반 공중 사용 허가서에 따라 자바 플랫폼에 대한 완전한 소스 코드를 나타내며, 오라클은 선택적 독점 라이선스로 이중 라이선스를 제공하지만 독점 라이선스 버전에 고유한 코드 차이점이나 모듈이 없다.[52] Java 11 기능에는 두 개의 새로운 가비지 수집기 구현, 심층적인 문제를 디버깅하기 위한 Flight Recorder, WebSocket 지원을 포함한 새로운 HTTP 클라이언트가 포함된다.[53]

''Java SE 12''는 2019년 3월,[54] ''Java SE 13''은 2019년 9월,[55] ''Java SE 14''는 2020년 3월,[56] ''Java SE 15''는 2020년 9월, ''Java SE 16''은 2021년 3월, ''Java SE 17'' LTS는 2021년 9월, ''Java SE 18''은 2022년 3월, ''Java SE 19''는 2022년 9월, ''Java SE 20''은 2023년 3월, ''Java SE 21'' LTS는 2023년 9월, ''Java SE 22''는 2024년 3월에 출시되었다.

언어 변경 사항 외에도 자바 클래스 라이브러리는 수년에 걸쳐 상당한 변경을 거쳤으며, JDK 1.0의 수백 개의 클래스에서 J2SE 5.0의 3천 개 이상으로 증가했다. Swing 및 자바 2D와 같은 완전히 새로운 API가 발전했으며, 원래 JDK 1.0 클래스 및 메서드의 대부분은 더 이상 사용되지 않음(일부 "영구적으로 사용 중단")되었으며, 예를 들어 최종화와 관련된 것이다.[57]

적어도 하나의 매우 드물게 사용되는 API (스레딩용)가 Java 22에서 제거되었다.[58][59]

5. 비판

대부분의 경우 웹 브라우저에서 자바 지원은 불필요하며, 보안 전문가들은 꼭 필요한 경우가 아니라면 브라우저에서 실행하지 않도록 권장한다.[84] 일부 웹 사이트에서 자바가 필요한 경우에는 해당 사이트 전용의 별도 브라우저 설치를 해야 한다고 제안되었다.

자바 플랫폼의 보안 문제점에 대해서는 보안 하위 섹션을 참고하면 된다.

5. 1. 보안

자바 플랫폼은 사용자가 신뢰할 수 없는 바이트코드를 "샌드박스" 방식으로 실행하여 악성 또는 부실하게 작성된 소프트웨어로부터 보호하도록 설계된 보안 아키텍처를 제공한다.[98] 이 "샌드박스" 기능은 맬웨어가 로컬 파일 시스템에 접근하거나, 임의의 명령을 실행하거나, 통신 네트워크에 접근하는 등 악용할 수 있는 특정 플랫폼 기능 및 API에 대한 접근을 제한하여 사용자를 보호하기 위한 것이다.

최근 몇 년 동안 연구자들은 오라클을 포함한 일부 널리 사용되는 자바 구현에서 수많은 보안 결함을 발견했으며, 이러한 결함으로 인해 신뢰할 수 없는 코드가 샌드박스 메커니즘을 우회하여 사용자가 악성 공격에 노출될 수 있다. 이러한 결함은 공용 웹사이트에서 다운로드한 자바 애플릿을 실행하는 웹 브라우저 플러그인과 같이 임의의 신뢰할 수 없는 바이트코드를 실행하는 자바 애플리케이션에만 영향을 미친다. 사용자가 실행되는 모든 코드를 신뢰하고 완벽하게 제어하는 애플리케이션은 영향을 받지 않는다.

2012년 8월 31일, 마이크로소프트 윈도우, OS X, 리눅스에서 자바 6 및 7(당시 모두 지원)에 심각한 보안 결함이 발견되어 악성 웹 페이지를 로드하기만 해도 원격 익스플로잇이 발생할 수 있었다.[99] 역시 결함이 있는 것으로 밝혀졌다.[100]

2013년 1월 10일, 세 명의 컴퓨터 전문가는 자바가 안전하지 않으며 사람들이 자바를 비활성화해야 한다고 로이터에 밝혔다. AlienVault Labs의 랩 매니저인 하이메 블라스코는 "자바는 엉망이다. 안전하지 않다. 비활성화해야 한다."라고 말했다.[101] 이 취약점은 자바 7에 영향을 미치며 자바 6에 영향을 미치는지 불분명하므로 소비자는 자바를 비활성화하는 것이 좋다.[102][103] 오라클의 보안 경고는 자바에 대한 중요 보안 관련 패치의 일정을 발표한다.[104]

2013년 1월 14일, 보안 전문가들은 업데이트가 여전히 PC를 공격으로부터 보호하는 데 실패했다고 말했다.[105] 이 익스플로잇 홀은 사용자에게 자바를 비활성화하거나 제거하도록 권장하는 미국 국토안보부의 대응을 촉구했다.[106] 애플은 바이러스 백신 프로그램을 통해 OS X 운영 체제를 실행하는 모든 컴퓨터에 대해 자바를 제한적으로 블랙리스트에 올렸다.[107]

2014년, 당시의 자바 보안 및 취약성 문제에 대응하여 보안 블로거 브라이언 크레브스는 사용자들에게 적어도 자바 브라우저 플러그인과 전체 소프트웨어를 제거할 것을 요구했다. "자바 플러그인이 없는 세상을 기대하며 (분기별 패치 업데이트에 대해 독자에게 상기시켜야 하는 일이 없어지는 것도) 전 세계 최종 사용자 시스템에서 이 플러그인의 다양한 버전이 대부분 제거되기까지는 아마 수년이 걸릴 것입니다."[108] "한때 유망했지만 브라우저에서 그 유용성을 다했으며, 컴퓨터 사용자를 희생시키는 사이버 범죄자들을 기쁘게 하는 악몽이 되었습니다."[109] "모두가 모든 PC와 Mac에서 자바를 제거한 다음 다시 추가해야 할지 신중하게 생각해야 한다고 생각합니다. 일반적인 가정 사용자의 경우 자바 없이도 사용할 수 있습니다. 비즈니스 사용자의 경우 선택의 여지가 없을 수 있습니다."[110]

참조

[1] 간행물 JavaSoft ships Java 1.0 https://www.sun.com/[...] 2016-02-09
[2] 서적 Mobile Information Device Profile for Java 2 Micro Edition: Developer's Guide https://archive.org/[...] John Wiley & Sons 2012-05-30
[3] 웹사이트 HotSpot Group https://openjdk.java[...] Openjdk.java.net 2016-02-09
[4] 웹사이트 Oracle JDK 8 and JRE 8 Certified System Configurations Contents https://www.oracle.c[...] 2016-02-09
[5] 웹사이트 Java SE 7 Supported Locales https://www.oracle.c[...] Oracle.com 2016-02-09
[6] 웹사이트 OpenJDK: GPLv2 + Classpath Exception https://openjdk.java[...] Openjdk.java.net 2016-02-09
[7] 웹사이트 BCL For Java SE https://www.oracle.c[...] Oracle.com 2016-02-09
[8] 웹사이트 Java Was Strongly Influenced by Objective-C http://virtualschool[...]
[9] 웹사이트 Why should I uninstall older versions of Java from my system? https://www.java.com[...] 2018-02-06
[10] 웹사이트 Why should I uninstall older versions of Java from my system? https://www.java.com[...] Oracle 2016-09-09
[11] 웹사이트 Java SE 6 Advanced https://www.oracle.c[...] 2018-05-20
[12] 웹사이트 BCL for Java SE https://www.oracle.c[...] 2022-08-14
[13] 웹사이트 Java CPU and PSU Releases Explained http://www.oracle.co[...]
[14] 웹사이트 Archived copy https://www.oracle.c[...] 2022-08-14
[15] 웹사이트 Archived copy https://www.oracle.c[...] 2022-08-14
[16] 웹사이트 Understanding Java 9 Modules https://www.oracle.c[...] 2022-08-14
[17] 웹사이트 Java Modules https://jenkov.com/t[...]
[18] 웹사이트 Java 9 Structural Changes in the JDK and JRE https://www.develope[...] 2017-10-30
[19] 웹사이트 IBM Developer https://developer.ib[...]
[20] 웹사이트 A Guide to Java 9 Modularity | Baeldung https://www.baeldung[...] 2018-04-18
[21] 웹사이트 Chapter 1. Introduction https://docs.oracle.[...]
[22] URL www.beanshell.org/
[23] 웹사이트 Frequently Asked Questions about Garbage Collection in the Hotspot Java Virtual Machine http://java.sun.com/[...] Sun Microsystems 2009-02-07
[24] 웹사이트 Presenting the Permanent Generation https://blogs.oracle[...] 2009-02-07
[25] 웹사이트 A First Taste of InvokeDynamic http://blog.headius.[...] 2009-02-07
[26] 웹사이트 JEP 122: Remove the Permanent Generation http://openjdk.java.[...] Oracle Corporation 2014-03-23
[27] 웹사이트 What Is Java, Is It Insecure, and Should I Use It? http://lifehacker.co[...] Lifehacker.com 2015-06-26
[28] 웹사이트 Is there any protection against Java exploits? | Kaspersky Lab https://www.kaspersk[...] Kaspersky.com 2015-06-26
[29] 서적 High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems https://archive.org/[...] Wiley 1999
[30] 웹사이트 Java Technology: The Early Years http://java.sun.com/[...] Sun Microsystems 2009-08-02
[31] 서적 High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems https://archive.org/[...] Wiley 1999
[32] 웹사이트 Foreword http://java.sun.com/[...] Sun Microsystems 2009-08-02
[33] 웹사이트 So why did they decide to call it Java? https://www.infoworl[...] 2020-07-15
[34] 간행물 The Java Saga https://www.wired.co[...] 2022-10-04
[35] 간행물 Sun Microsystems announces formation of JavaSoft https://www.sun.com/[...] Sun Microsystems 1996-01-09
[36] 웹사이트 Sun Opens Java https://www.sun.com/[...] Sun Microsystems 2006-11-13
[37] 웹사이트 OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed https://mail.openjdk[...] Oracle Corporation 2011-11-25
[38] 웹사이트 The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 63 https://www.jcp.org/[...] Jcp.org 2016-02-09
[39] 웹사이트 The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 59 http://www.jcp.org/e[...] Jcp.org 2016-02-09
[40] 웹사이트 Version 1.5.0 or 5.0? http://java.sun.com/[...] Java.sun.com 2016-02-09
[41] 웹사이트 The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 176 http://www.jcp.org/e[...] Jcp.org 2016-02-09
[42] 웹사이트 Java Naming http://www.java.com/[...] Oracle 2011-08-25
[43] 웹사이트 The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 336 http://www.jcp.org/e[...] Jcp.org 2016-02-09
[44] 웹사이트 JSRs: Java Specification Requests: JSR 166: Concurrency Utilities http://www.jcp.org/e[...] Oracle Corp 2004-09-13
[45] 웹사이트 Java™ SE Development Kit 7 Update 76 Release Notes https://www.oracle.c[...] Oracle.com 2016-02-09
[46] 웹사이트 Java 7 and Java 8 Releases by Date https://www.java.com[...]
[47] 웹사이트 Oracle Critical Patch Update - July 2016 https://www.oracle.c[...]
[48] 웹사이트 Windows XP and Java http://www.java.com/[...] Java.com 2016-02-09
[49] 웹사이트 java - installing JDK8 on Windows XP - advapi32.dll error https://stackoverflo[...]
[50] 웹사이트 Oracle JDK 8 and JRE 8 Certified System Configurations https://www.oracle.c[...]
[51] 웹사이트 Oracle JDK 10 Certified System Configurations https://www.oracle.c[...] 2018-03-27
[52] 웹사이트 Oracle Java SE Support Roadmap https://www.oracle.c[...] Oracle Corporation 2018-09-25
[53] 웹사이트 JDK 11 https://openjdk.java[...] Oracle Corporation 2018-09-26
[54] 웹사이트 JDK 12 https://openjdk.java[...] 2019-03-22
[55] 웹사이트 JDK 13 https://openjdk.java[...] 2019-09-17
[56] 웹사이트 JDK 14 https://openjdk.java[...] 2020-03-25
[57] 웹사이트 Deprecated List (Java SE 22) https://cr.openjdk.o[...] 2024-04-16
[58] 웹사이트 Remove Thread.countStackFrames https://bugs.openjdk[...] 2024-04-16
[59] 웹사이트 Java SE 22 ( JSR 397) https://cr.openjdk.o[...] 2024-04-16
[60] 웹사이트 What is Java technology and why do I need it? http://java.com/en/d[...] 2011-12-15
[61] 웹사이트 Java - Fedora Project Wiki https://fedoraprojec[...]
[62] 웹사이트 IntelliJ Platform https://www.jetbrain[...]
[63] 웹사이트 Moving to a plugin-free web https://blogs.oracle[...] Oracle 2016-01-27
[64] 웹사이트 Duke, the Java Mascot https://www.oracle.c[...] Oracle 2019-03-18
[65] 웹사이트 duke: Project Home Page https://duke.dev.jav[...] Sun Microsystems 2007-03-18
[66] 웹사이트 Duke, the Java Mascot https://www.oracle.c[...]
[67] 웹사이트 Future Tech Duke (The Java Source) http://blogs.oracle.[...] Tori Wieldt 2011-08-17
[68] 웹사이트 Oracle JDK Releases for Java 11 and Later https://blogs.oracle[...] 2018-09-11
[69] 웹사이트 The Curious Incident of Sun in the Night-Time http://www.groklaw.n[...] 2006-05-24
[70] 웹사이트 ? http://blogs.sun.com[...] Sun Microsystems
[71] 웹사이트 Oracle OpenWorld: UnBreakable Linux / 5015.2 not on the horizon | Formtek Blog http://www.formtek.c[...] Formtek.com 2016-02-09
[72] 웹사이트 Oracle and Sun Microsystems | Strategic Acquisitions | Oracle https://www.sun.com/[...] Sun.com 2016-02-09
[73] 웹사이트 Free but Shackled – The Java Trap – GNU Project – Free Software Foundation https://www.gnu.org/[...] Gnu.org 2016-02-09
[74] 뉴스 Sun 'releases' Java to the World http://news.bbc.co.u[...] BBC News 2010-05-06
[75] 웹사이트 Open JDK is here! http://mail.openjdk.[...] Sun Microsystems 2007-05-09
[76] 웹사이트 OpenJDK6 b10 source posted http://mail.openjdk.[...] 2008-07-12
[77] 웹사이트 Redhat Java https://access.redha[...]
[78] 웹사이트 Fedora Java https://fedoraprojec[...]
[79] 웹사이트 Debian Java https://wiki.debian.[...]
[80] 웹사이트 Ubuntu Java https://www.digitalo[...]
[81] 웹사이트 Java is finally Free and Open http://blog.softwher[...] 2008-06-19
[82] 웹사이트 Bundling a jre · libgdx/libgdx Wiki · GitHub https://github.com/l[...] Github.com 2016-02-09
[83] 웹사이트 Question about bundling custom OpenJDK http://www.java-gami[...] Java-Gaming.org 2016-02-09
[84] 웹사이트 "Unless it is absolutely necessary to run Java in web browsers, disable it", DHS-sponsored CERT team says – Naked Security http://nakedsecurity[...] Nakedsecurity.sophos.com 2016-02-09
[85] 웹사이트 Generics in Java http://www.ociweb.co[...] Object Computing, Inc. 2006-12-09
[86] 웹사이트 What's Wrong With Java: Type Erasure http://www.safalra.c[...] 2006-12-09
[87] 웹사이트 Java and Scala's Type Systems are Unsound https://raw.githubus[...]
[88] 웹사이트 Java libraries should provide support for unsigned integer arithmetic http://bugs.sun.com/[...] Oracle 2011-01-18
[89] 웹사이트 Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof) http://darksleep.com[...] 2010-10-09
[90] 웹사이트 How Java's Floating-Point Hurts Everyone Everywhere http://www.cs.berkel[...] 2006-12-09
[91] 웹사이트 Types, Values, and Variables https://java.sun.com[...] Sun Microsystems 2006-12-09
[92] 웹사이트 Which programming languages are fastest? http://shootout.alio[...]
[93] 웹사이트 speed ÷ C++ GNU g++ speed http://shootout.alio[...]
[94] 웹사이트 C++ vs Java performance; It's a tie! | Blog of Christian Felde http://blog.cfelde.c[...] Blog.cfelde.com 2016-02-09
[95] 웹사이트 Performance of Java versus C++ http://scribblethink[...] Graphics and Immersive Technology Lab, [[University of Southern California]]
[96] 웹사이트 The Java Faster than C++ Benchmark http://www.kano.net/[...] Kano.net 2016-02-09
[97] webarchive FreeTTS – A Performance Case Study http://research.sun.[...] 2009-03-25
[98] 웹사이트 Java Security Architecture: Contents http://docs.oracle.c[...] Docs.oracle.com 2016-02-09
[99] 웹사이트 Java security flaw: yada yada yada | Computerworld http://blogs.compute[...] Blogs.computerworld.com 2016-02-09
[100] 웹사이트 The first stop for security news http://threatpost.co[...] Threatpost 2016-02-09
[101] 웹사이트 Why and How to Disable Java on Your Computer Now - Technology & science - Innovation http://www.nbcnews.c[...] NBC News 2016-02-09
[102] 웹사이트 US Department of Homeland Security Calls On Computer Users To Disable Java https://www.forbes.c[...] 2016-02-09
[103] 웹사이트 The first stop for security news http://threatpost.co[...] Threatpost 2016-02-09
[104] 웹사이트 Critical Patch Updates and Security Alerts https://www.oracle.c[...] Oracle.com 2016-02-09
[105] 웹사이트 Emergency patch for Java fails to fix cybercrime holes, warn experts http://www.independe[...] Independent.ie 2016-02-09
[106] 웹사이트 Homeland Security warns to disable Java amid zero-day flaw https://www.zdnet.co[...] ZDNet 2013-01-11
[107] 웹사이트 Oracle issues fix for Java exploit after DHS warns of its holes https://venturebeat.[...] VentureBeat 2013-01-14
[108] 웹사이트 Good Riddance to Oracle's Java Plugin http://krebsonsecuri[...] 2016-02-16
[109] 웹사이트 Java Is No Longer Needed. Pull The Plug-In http://readwrite.com[...] Wearable World 2012-09-05
[110] 웹사이트 Java: should you remove it? https://www.theguard[...] 2013-02-08
[111] 웹사이트 A close look at how Oracle installs deceptive software with Java updates https://www.zdnet.co[...] ZDNet
[112] 웹사이트 windows 7 - How do I update Java from a non-admin account? https://superuser.co[...]
[113] 웹사이트 Update Google Chrome - Computer - Google Chrome Help https://support.goog[...]
[114] 웹사이트 Adobe Security Bulletin https://helpx.adobe.[...]
[115] 웹사이트 Java SE 8の名称とバージョン http://www.oracle.co[...] Oracle 2014-05-20
[116] 웹사이트 Sun Open Sources Java Platform http://www.sun.com/s[...] Sun Microsystems 2006-11-13
[117] 웹인용 JAVASOFT SHIPS JAVA 1.0 http://www.sun.com/s[...] Web.archive.org null
[118] 서적 Mobile Information Device Profile for Java 2 Micro Edition: Developer's Guide http://www.oracle.co[...] John Wiley & Sons
[119] 웹인용 HotSpot Group http://openjdk.java.[...] Openjdk.java.net null
[120] 웹인용 Oracle JDK 7 and JRE 7 Certified System Configurations http://www.oracle.co[...] Oracle.com 2014-04-08
[121] 웹인용 Java SE 7 Supported Locales http://www.oracle.co[...] Oracle.com null
[122] 웹인용 OpenJDK: GPLv2 + Classpath Exception http://openjdk.java.[...] Openjdk.java.net 1989-04-01
[123] 웹인용 BCL For Java SE http://www.oracle.co[...] Oracle.com 2013-04-02
[124] 웹인용 OpenJDK FAQ http://openjdk.java.[...] Openjdk.java.net 2010-12-18
[125] 웹인용 JDK Releases https://java.com/rel[...] 2022-12-09
[126] 웹인용 JDK Releases https://java.com/rel[...] 2024-01-17



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com