Listen to this article

Java(소프트웨어 플랫폼)

Java (software platform)
Java(소프트웨어 플랫폼)
The Java technology logo
Java 테크놀로지 로고
원저작자제임스 고슬링, Sun Microsystems
개발자오라클 코퍼레이션
초기 릴리즈1996년 1월 23일, 26년 전(1996-01-23)[1][2]
안정된 릴리스18.0.1.1 (2022년 5월 2일, 3개월 전 (2022-05-02) [±]

17.0.3.1 LTS (2022년 5월 2일, 3개월 전(2022-05-02)) [±]
11.0.15.1 LTS (2022년 5월 2일, 3개월 전 (2022-05-02)[3] [±]

8u333 LTS (2022년 5월 2일, 3개월 전 (2022-05-02)[4] [±]
기입처Java, C++, C, 어셈블리[5] 언어
운영 체제Microsoft Windows, Linux, macOS [6]및 이전 버전: Solaris
플랫폼x64, ARMv8 및 이전 버전의 경우: ARMv7, IA-32, SPARC(Java 14까지 지원)(Java 8Windows에 대한 32비트 지원을 포함하지만 Oracle에서는 상업용으로 [6]더 이상 무료로 지원되지 않습니다.)
이용가능기간:영어, 중국어, 프랑스어, 독일어, 이탈리아어, 일본어, 한국어, 포르투갈어, 스페인어, 스웨덴어[7]
유형소프트웨어 플랫폼
면허증.듀얼 라이선스: GNU General Public License 버전2 (클래스 패스 [8]예외 포함)및 독점 [9]라이선스
웹 사이트java.com
Java 기반 프로그램

JavaSun Microsystems의 James Gosling이 개발컴퓨터 소프트웨어 및 사양서 세트이며, 이후 Oracle Corporation에 인수되어 애플리케이션 소프트웨어를 개발하고 크로스 플랫폼 컴퓨팅 환경에 도입하기 위한 시스템을 제공합니다.Java는 임베디드 기기 및 휴대폰에서 엔터프라이즈 서버 및 슈퍼컴퓨터에 이르기까지 다양한 컴퓨팅 플랫폼에서 사용됩니다.Java 애플릿은 독립형 Java 애플리케이션보다 일반적이지 않지만 HTML 페이지에 내장되어 네이티브 애플리케이션의 많은 기능을 제공하기 위해 일반적으로 안전한 샌드박스 환경에서 실행되었습니다.

Java 프로그래밍 언어로 쓰는 것은 Java Virtual Machine(JVM; Java 가상 머신)에서 바이트 코드로 배포되는 코드를 생성하는 주요 방법입니다. 바이트 코드 컴파일러는 Ada, JavaScript, Python Ruby를 포함한 다른 언어에서도 사용할 수 있습니다.또한 Clojure, Groovy, Scala 등 JVM에서 네이티브로 실행되도록 설계된 언어가 있습니다.Java 구문은 C와 C++에서 많이 차용되지만 객체 지향 기능은 Smalltalk와 Objective-C[10]본떠서 모델링되었습니다.Java는 포인터와 같은 특정 하위 수준의 구성을 회피하고 오브젝트가 힙에 할당되는 매우 단순한 메모리 모델을 가지고 있습니다(오라클에 의해 현재 지원되는 일부 구현은 이스케이프 분석 최적화를 사용하여 대신 스택에 할당될 수 있습니다). 오브젝트 유형의 모든 변수는 참조입니다.메모리 관리는 JVM에 의해 실행되는 통합 자동 가비지 수집을 통해 처리됩니다.

2006년 11월 13일, Sun Microsystems는 Java 구현의 대부분을 GNU General Public License(GPL)[11][12] 이용할 수 있도록 했습니다.

최신 버전은 2022년 3월에 출시된 자바 18이고, 최신 장기 지원(LTS)인 자바 17은 2021년 9월에 출시되었습니다.오픈 소스 플랫폼인 Java에는 Amazon, IBM, Azul Systems, AdapeOpenJDK를 비롯한 많은 디스트리뷰터가 있습니다.배포에는 Amazon Corretto, Zulu, Adapte Open이 포함됩니다.JDK와 리베리카.Oracle에 대해서는 Java 8을 배포하고 Java 11 등 현재 LTS 버전도 지원하고 있습니다.Oracle(및 기타)은 해결되지 않은 보안 [14][15][16]문제로 인해 심각한 위험이 있으므로 Java [13]8보다 오래된 버전의 Java를 제거할 것을 강력히 권장합니다.Java 9(및 10, 12, 13, 14, 15 및 16)는 더 이상 지원되지 않으므로 Oracle은 사용자에게 지원되는 버전으로 "즉각 전환"할 것을 권장합니다.오라클은 2019년 1월에 레거시 Java 8 LTS에 대한 마지막 무료 상용 공개 업데이트를 출시했으며, 개인 사용을 위한 공개 업데이트와 함께 Java 8을 계속 지원할 예정입니다.Oracle의 Java 6 확장 지원은 2018년 [17]12월에 종료되었습니다.

플랫폼

Java 플랫폼은 Java 프로그래밍 언어로 작성된 프로그램을 쉽게 개발하고 실행할 수 있는 프로그램 모음입니다.Java 플랫폼에는 실행 엔진(가상 머신이라고 함), 컴파일러 및 라이브러리 세트가 포함됩니다.요건에 따라 추가 서버와 대체 라이브러리가 존재할 수도 있습니다.Java 플랫폼은 Java 프로그램을 모든 하드웨어 및 운영 체제에서 동일하게 실행할 수 있도록 다양한 하드웨어 및 운영 체제에 구현되어 있습니다.플랫폼마다 다른 클래스의 디바이스 및 응용 프로그램도메인을 대상으로 합니다.

  • Java Card: 스마트 카드 및 이와 유사한 소형 메모리 장치에서 소규모 Java 기반 애플리케이션(애플릿)을 안전하게 실행할 수 있는 기술입니다.
  • Java ME(Micro Edition):저장, 디스플레이 및 전력 용량이 제한된 장치에 대해 몇 가지 다른 라이브러리 세트(프로파일)를 지정합니다.모바일 기기, PDA, TV 셋톱 박스 및 프린터용 응용 프로그램을 개발하는 데 자주 사용됩니다.
  • Java SE(Standard Edition):데스크톱 PC, 서버 및 이와 유사한 디바이스에서의 범용 사용.
  • 자카르타 EE(엔터프라이즈 에디션):Java SE 및 멀티 계층 클라이언트 서버 엔터프라이즈 애플리케이션에 유용한 다양한 API를 제공합니다.

Java 플랫폼은 여러 프로그램으로 구성되어 있으며, 각 프로그램은 전체 기능의 일부를 제공합니다.예를 들어 Java 소스 코드를 Java 바이트 코드(JVM의 중간 언어)로 변환하는 Java 컴파일러는 Java Development Kit(JDK)의 일부로 제공됩니다.Java Runtime Environment(JRE)는 JVM을 JIT(Just-in-Time) 컴파일러로 보완하여 중간 바이트 코드를 즉시 네이티브 머신 코드로 변환합니다.Java 플랫폼에는 광범위한 라이브러리 세트도 포함되어 있습니다.

플랫폼의 필수 구성 요소는 Java 언어 컴파일러, 라이브러리 및 Java 중간 바이트 코드가 가상 시스템 사양에 명시된 규칙에 따라 실행되는 런타임 환경입니다.

Java 가상 머신

Java 플랫폼의 핵심은 Java 바이트 코드 프로그램을 실행하는 "가상 머신"입니다.이 바이트 코드는 프로그램이 실행되고 있는 하드웨어나 운영체제에 관계없이 동일합니다.그러나 Java 10(이전의 경우) 등의 새로운 버전에서는 작은 변경이 이루어졌습니다.즉, 바이트 코드는 일반적으로 순방향으로만 호환됩니다.Java Virtual Machine(JVM) 내에 JIT(Just In Time) 컴파일러가 있습니다.JIT 컴파일러는 런타임에 Java 바이트 코드를 네이티브 프로세서 명령으로 변환하고 실행 중에 네이티브 코드를 메모리에 캐시합니다.

바이트 코드를 중간 언어로 사용하면 가상 시스템을 사용할 수 있는 플랫폼에서 Java 프로그램을 실행할 수 있습니다.JIT 컴파일러를 사용하면 Java 응용 프로그램이 로드 중에 잠시 지연된 후 JIT 컴파일을 통해 "워밍업"되고 나면 네이티브 [18][19][20]프로그램만큼 빠르게 실행되는 경향이 있습니다.JRE 버전 1.2 이후 Sun의 JVM 구현에는 인터프리터 대신 저스트타임 컴파일러가 포함되어 있습니다.

Java 프로그램은 크로스 플랫폼 또는 플랫폼에 의존하지 않지만 이러한 프로그램을 실행하는 Java Virtual Machine(JVM; Java 가상 머신)의 코드는 그렇지 않습니다.지원되는 모든 운영 플랫폼에는 자체 JVM이 있습니다.

클래스 라이브러리

대부분의 최신 운영체제(OS)에서는 프로그래머의 작업을 단순화하기 위해 재사용 가능한 코드가 다수 제공됩니다.이 코드는 일반적으로 응용 프로그램이 런타임에 호출할 수 있는 동적으로 로드 가능한 라이브러리 세트로 제공됩니다.Java 플랫폼은 특정 운영체제에 의존하지 않기 때문에 응용 프로그램은 기존 OS 라이브러리에 의존할 수 없습니다.대신 Java 플랫폼은 최신 운영 체제에서 흔히 볼 수 있는 동일한 재사용 가능한 기능을 포함하는 자체 표준 클래스 라이브러리의 포괄적인 세트를 제공합니다.대부분의 시스템 라이브러리는 Java로도 작성됩니다.예를 들어 Swing 라이브러리는 사용자 인터페이스를 도색하고 이벤트 자체를 처리하므로 플랫폼에 따라 컴포넌트가 처리되는 방식에 많은 미묘한 차이가 없습니다.

Java 클래스 라이브러리는 Java 플랫폼 내에서 세 가지 목적을 수행합니다.첫째, 다른 표준 코드 라이브러리와 마찬가지로 Java 라이브러리는 프로그래머에게 항목 목록을 유지하거나 복잡한 문자열 해석을 수행하는 것과 같은 공통 태스크를 수행하기 위한 잘 알려진 함수 집합을 제공합니다.둘째, 클래스 라이브러리는 일반적으로 하드웨어와 운영 체제에 크게 의존하는 작업에 대한 추상적인 인터페이스를 제공합니다.네트워크 액세스나 파일 액세스등의 태스크는, 각 플랫폼의 독자적인 실장과 밀접하게 관련되어 있는 경우가 많습니다.java.net그리고.java.io라이브러리는 네이티브 OS 코드로 추상화 레이어를 구현한 후 Java 응용 프로그램이 이러한 태스크를 수행하기 위한 표준 인터페이스를 제공합니다.마지막으로 Java 응용 프로그램이 기대하는 모든 기능을 지원하지 않는 기본 플랫폼이 있는 경우 클래스 라이브러리는 대체 기능을 제공하는 에뮬레이션 또는 적어도 특정 기능의 존재를 확인하는 일관된 방법을 제공함으로써 존재하지 않는 컴포넌트를 적절하게 처리합니다.

언어들

"Java"라는 단어는 보통 Java 플랫폼과 함께 사용하도록 설계된 Java 프로그래밍 언어를 나타냅니다.자바 프로그래밍 언어는 자바 7 이전 자바 플랫폼의 핵심 부분으로 나열되었지만 일반적으로 "플랫폼"이라는 문구의 범위를 벗어납니다.따라서 언어와 실행 시간은 일반적으로 단일 단위로 간주되었습니다.그러나 Java 7 규격에서는 Java 언어와 Java Virtual Machine을 더 명확하게 별개의 엔티티로 취급하여 더 이상 단일 유닛으로 [21]간주되지 않도록 했습니다.

서드파티는 JVM을 타깃으로 하는 컴파일러 또는 인터프리터를 다수 생산하고 있습니다.이 중 일부는 기존 언어용이고 다른 일부는 Java 언어 확장용입니다.여기에는 다음이 포함됩니다.

  • BeanShell – Java용 경량[22] 스크립트 언어(JShell도 참조)
  • Ceilon – 객체 지향적이고 강력한 정적 유형의 프로그래밍 언어로 불변성을 강조합니다.
  • Clojure – Java 플랫폼 상의 Lisp 프로그래밍 언어의 현대적이고 역동적이며 기능적인 방언
  • Gosu – Apache License 2.0으로 출시된 범용 Java Virtual Machine 기반 프로그래밍 언어
  • Groovy – Python, Ruby, Perl 및 Smalltalk의 기능을 갖춘 완전한 Java 상호운용성, Java 구문 호환, 정적 및 동적 언어
  • JRuby루비 인터프리터
  • Jython – Python 인터프리터
  • Kotlin완전Java 상호 운용성을 갖춘 JVM용 산업용 프로그래밍 언어
  • RhinoJavaScript 인터프리터
  • Scala – "더 나은 자바"로 설계된 Java 호환성이 없는 구문을 가진 다중 패러다임 프로그래밍 언어

유사한 플랫폼

Java와 write once run anywhere 컨셉의 성공으로 인해 다른 유사한 노력, 특히 가 이루어졌습니다.2002년부터 등장한 NET Framework.Java의 성공적 측면을 많이 포함하고 있습니다.NET은 여러 프로그래밍 언어를 지원하기 위해 처음부터 구축되었으며, Java 플랫폼은 Java 언어만 지원하도록 처음 구축되었지만, 그 이후 많은 다른 언어가 JVM용으로 만들어졌습니다.자바처럼.NET 언어는 바이트 코드로 컴파일되어 JVM과 용도가 유사한 Common Language Runtime(CLR)에 의해 실행됩니다.JVM과 마찬가지로 CLR은 가비지 자동 수집을 통해 메모리 관리를 제공하며,를 허용합니다.여러 운영 체제에서 실행되는 NET 바이트 코드입니다.

.NET은 처음에 J++라는 자바와 유사한 언어를 포함하였고, 그 후 Java 사양과 호환되지 않는 Visual J#이라는 언어를 포함하였습니다.2007년에 단종되어 2015년에 지원이 종료되었습니다.

Java 개발 키트

Java Development Kit(JDK)는 Java 개발자를 대상으로 한 Sun 제품입니다.Java가 도입된 이후 지금까지 가장 널리 사용되고 있는 Java 소프트웨어 개발 키트(SDK)[citation needed]입니다.Java 컴파일러, Java Runtime Environment(JRE; Java 런타임 환경)의 풀 카피 및 기타 많은 중요한 개발 도구가 포함되어 있습니다.

Java 런타임 환경

Oracle이 출시한 Java Runtime Environment(JRE)는 독립형 JVM(HotSpot), 구성 도구인 Java 표준 라이브러리(Java Class Library) 및 JDK 9에서 종료될 때까지 브라우저 플러그인을 포함하는 무료 소프트웨어 배포입니다.이는 노트북 및 데스크톱 폼 팩터의 개인용 컴퓨터에 설치된 가장 일반적인 Java 환경입니다.JVM과 함께 제공되는 피처폰이나 초기 스마트폰 의 휴대폰에는 Java 플랫폼의 Micro Edition을 대상으로 하는 애플리케이션을 실행하기 위한 JVM이 포함되어 있을 가능성이 높습니다.한편 Java 앱을 실행하는 대부분의 최신 스마트폰, 태블릿 컴퓨터 및 기타 휴대용 PC는 JVM 사양과 호환되지 않는 오픈 소스 가상 머신을 포함하는 Android 운영 체제를 지원함으로써 이러한 작업을 수행할 가능성이 높습니다.(Google의 Android 개발 툴은 Java 프로그램을 입력 및 출력 Dalvik 바이트 코드로 사용합니다.Dalvik 바이트 코드는 Android 기기에서 가상 머신의 네이티브 입력 형식입니다.)

성능

JVM 사양은 구현 세부 사항에 대해 구현자에게 많은 자유를 줍니다.Java 1.3 이후 Oracle의 JRE에는 HotSpot이라는 JVM이 포함되어 있습니다.하이 퍼포먼스 JVM으로 설계되어 있습니다.

코드 실행 속도를 높이기 위해 HotSpot은 적시 컴파일을 사용합니다.HotSpot은 개체 할당 및 가비지 수집 속도를 높이기 위해 생성 힙을 사용합니다.

세대 힙

Java 가상 시스템 힙은 동적 메모리 [23]할당을 위해 JVM에서 사용하는 메모리 영역입니다.

HotSpot에서는 힙은 다음 세대로 나뉩니다.

  • 젊은 세대는 생성된 단수명 개체를 저장하고 즉시 가비지 수집을 수행합니다.
  • 오래 지속되는 객체는 이전 세대(테너링 세대라고도 함)로 이동됩니다.이 메모리는 첫 번째와 다음 가비지 컬렉션에서 살아남은 오브젝트가 저장되는 (2개의) 서바이버 공간으로 세분됩니다.

영구 생성(또는 permgen)은 Java 8 이전 클래스 정의 및 관련 메타데이터에 사용되었습니다.영구 생성은 [24][25]힙의 일부가 아닙니다.영구 세대는 Java [26]8에서 삭제되었습니다.

원래 영구 생성은 없었고 개체와 클래스가 같은 영역에 함께 저장되었습니다.그러나 클래스 언로딩은 오브젝트가 수집되는 것보다 훨씬 드물게 발생하므로 클래스 구조를 특정 영역으로 이동하면 성능이 크게 [24]향상되었습니다.

보안.

오라클의 JRE는 다수의 시스템에 설치됩니다.따라서 오래된 버전의 JRE를 사용하는 최종 사용자는 많은 알려진 공격에 취약합니다.이것은 Java가 본질적으로 [27]안전하지 않다는 널리 알려진 믿음으로 이어졌다.Java 1.7 이후 Oracle의 Windows용 JRE에는 자동 업데이트 기능이 포함되어 있습니다.

Java 브라우저 플러그인이 중단되기 전에 웹 페이지에서 Java 애플릿이 실행되어 악의적인 웹 사이트에 쉽게 액세스할 수 있는 공격 표면이 제공되었을 수 있습니다.2013년 Kaspersky Labs는 자바 플러그인이 컴퓨터 범죄자들이 선택한 방법이라고 보고했습니다.Java 부정 이용은 해커들이 해킹된 [28]웹 사이트에 배포하는 많은 부정 이용 팩에 포함되어 있습니다.Java 애플릿은 2018년 9월 25일에 출시된 Java 11에서 제거되었습니다.

역사

제임스 고슬링

Java 플랫폼과 언어는 1990년 12월 Sun Microsystems의 내부 프로젝트로 시작되었으며, C++/C 프로그래밍 언어의 대안을 제공합니다.엔지니어 Patrick Naughton은 Sun의 C++ 및 C Application Programming Interface(API; 애플리케이션 프로그래밍 인터페이스)와 툴의 상태 및 조직의 NeWS 프로젝트 처리 방식에 점점 더 불만을 느끼고 있었습니다.노튼은 Sun을 떠나 NeXT로 이사할 계획을 Scott McNealy에게 알렸다. McNealy는 그가 신인 척하고 회사를 고치는 방법을 설명하는 이메일을 보내달라고 요청했다.Naughton은 다른 Sun 프로젝트를 지연시키는 관료주의 없이 자율적으로 일할 수 있는 작은 팀의 창설을 상상했다.McNealy는 Sun의 다른 중요한 사람들에게 메시지를 전달했고, 스텔스 프로젝트가 시작되었다.[29]

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

이 팀은 당초 C++ 사용을 고려했지만 여러 가지 이유로 이를 거부했습니다.리소스가 제한된 임베디드 시스템을 개발 중이었기 때문에 C++가 너무 많은 메모리를 필요로 하고 그 복잡성이 개발자 오류로 이어졌다고 판단했습니다.언어의 가비지 컬렉션이 부족하기 때문에 프로그래머는 시스템 메모리를 수동으로 관리해야 했습니다.이 작업은 어렵고 오류가 발생하기 쉬운 작업입니다.이 팀은 또한 C++ 언어의 보안, 분산 프로그래밍, 스레드화를 위한 휴대용 설비의 부족에 대해 걱정했다.마지막으로, 그들은 모든 종류의 기기에 쉽게 이식할 수 있는 플랫폼을 원했습니다.

조이는 메사와 C를 결합한 새로운 언어를 구상했었다.Fore라는 논문에서 그는 Sun에 엔지니어가 C++를 기반으로 객체 지향 환경을 생성해야 한다고 제안했습니다.처음에 Gosling은 C++(C+++ --라고 부르는 제안된 개발)를 수정하고 확장하려고 시도했지만 곧 사무실 [31]바로 밖에 있는 트리의 이름을 따서 Oak라고 부르는 새로운 언어를 만드는 것을 포기했다.

1992년 여름까지 팀은 Green OS, Oak 언어, 라이브러리 및 하드웨어를 포함한 새로운 플랫폼의 일부를 시연할 수 있었습니다.1992년 9월 3일 첫 시연은 그래픽 인터페이스와 사용자를 지원하는 스마트 에이전트인 "Duke"를 갖춘 Star7이라는 이름[1] PDA(Personal Digital Assistant) 기기를 구축하는 데 초점을 맞췄다.그 해 11월, Green Project는 Sun Microsystems의 완전 소유 자회사인 First Person으로 분사되어 [32]팀은 캘리포니아의 Palo Alto로 이전했습니다.First Person 팀은 매우 인터랙티브한 기기를 만드는 데 관심이 있었고, Time Warner가 셋톱박스에 대한 제안서(RFP)를 발행했을 때 First Person은 목표를 변경하고 셋톱박스 플랫폼에 대한 제안으로 응답했습니다.그러나 케이블 업계는 자사의 플랫폼이 사용자에게 너무 많은 통제권을 준다고 느꼈고, First Person은 SGI에 대한 입찰에서 패배했다.셋톱박스에 대한 3DO Company와의 추가 계약도 실현되지 못했습니다.텔레비전 업계에서 관심을 끌지 못하자, 회사는 Sun으로 돌아갔습니다.

Java와 웹의 만남

존 게이지

1994년 6월과 7월, 3일간 John Gage(Sun의 과학 디렉터), Gosling, Joy, Naughton, Wayne Rosing Eric Schmidt와 브레인스토밍을 한 후, 팀은 플랫폼을 월드 와이드 웹으로 재지정했습니다.그들은 모자이크 같은 그래픽브라우저의 등장으로 인터넷이 케이블 TV에서 상상했던 것과 같은 고도의 인터랙티브 매체로 발전할 수 있을 것이라고 느꼈다.시제품으로서 노튼은 1995년에 핫자바라는 이름[30] 딴 작은 브라우저인 웹러너를 만들었다.

Sun은 상표 검색 결과 Oak Technology[33]Oak이라는 이름을 사용한 으로 밝혀진 후 Oak 언어의 이름을 Java로 바꿨다.Java 1.0a는 1994년에 다운로드가 가능했지만, HotJava 브라우저를 탑재한 Java 1.0a2의 첫 공개 릴리스는 1995년 5월 23일 Gage에 의해 SunWorld 컨퍼런스에서 발표되었다.Gage의 발표와 함께 Netscape Communications Corporation의 부사장인 Marc Andreessen은 예기치 않게 Netscape 브라우저에 Java 지원이 포함될 것이라고 발표했다.1996년 1월 9일, Sun Microsystems는 이 [34]기술을 개발하기 위해 JavaSoft 그룹을 결성했습니다.

웹 브라우저용 자바 애플릿은 더 이상 Java의 가장 인기 있는 사용법(예: 더 많이 사용되는 서버 측)이나 코드 클라이언트 측을 실행하는 가장 인기 있는 방법(JavaScript가 더 인기 있는 것으로 대체됨)이 아니지만, JVM 지원이 중단된 후에도 여전히 웹 브라우저에서 Java(또는 Kotlin과 같은 다른 JVM 언어)를 실행할 수 있습니다.예를 들어, 예를 들어 를 사용합니다.TeaVM.

버전 이력

Java 언어는 1996년 1월 23일 JDK(Java Development Kit) 1.0이 출시된 이후 몇 가지 변경과 더불어 표준 라이브러리에 수많은 클래스 및 패키지가 추가되었습니다.J2SE 1.4 이후 Java Community Process(JCP; Java 커뮤니티 프로세스)는 Java 언어의 진화를 지배하고 있습니다.JCP는 Java Specification Request(JSR; Java 사양 요청)를 사용하여 Java 플랫폼에 대한 추가 및 변경을 제안 및 지정합니다.Java Language Specification(JLS; Java 언어 사양)은 언어를 지정합니다.JLS에 대한 변경은 JSR 901에서 [35]관리합니다.

Sun은 1997년 2월 19일에 JDK 1.1을 발매했습니다.주요 추가 사항으로는 AWT 이벤트 모델의 광범위한 리툴링, 언어에 추가된 내부 클래스, JavaBeans 및 JDBC 등이 있습니다.

J2SE 1.2(1998년 12월 8일)– 코드네임 플레이그라운드J2SE 5.0 이후의 릴리스는 Java 2로 리브랜딩되었으며 J2E(Java 2 Platform, Enterprise Edition) 및 J2ME(Java 2 Platform, Enterprise Edition)와 구별하기 위해 버전 이름 "J2SE"(Java 2 Platform, Standard Edition)가 JDK를 대체했습니다.주요 추가 사항으로는 리플렉션, 컬렉션 프레임워크, Java IDL(CORBA 상호 운용성을 위한 인터페이스 기술 언어 구현), Swing 그래픽 API의 코어 클래스 통합 등이 있습니다.자바 플러그인이 출시되었고, Sun의 JVM에는 처음으로 JIT 컴파일러가 탑재되었다.

J2SE 1.3 (2000년 5월 8일)– 코드명 Kestrel주목할 만한 변경 사항으로는 HotSpot JVM(HotSpot JVM은 1999년 4월에 J2SE 1.2 JVM용으로 처음 출시), JavaSound, Java Naming and Directory Interface(JNDI) 및 Java Platform Debugger Architecture(JPDA) 번들이 있습니다.

J2SE 1.4 (2002년 2월 6일)– 코드네임 멀린이는 Java Community Process에서 JSR [36]59로 개발된 Java 플랫폼의 첫 번째 릴리스가 되었습니다.주요 변경 사항으로는 Perl을 모델로 한 정규 표현식, 예외 체인, 통합 XML 파서와 XSLT 프로세서(JAXP), Java Web Start 등이 있습니다.

J2SE 5.0 (2004년 9월 30일)– 코드네임 Tiger원래 번호는 1.5로, 현재도 내부 [37]버전 번호로 사용되고 있습니다.JSR 176으로 개발된 Tiger는 각 루프, 제네릭, 오토박스var-arg를 포함한 [38]몇 가지 중요한 새로운 언어 기능을 추가했습니다.

Java SE 6 (2006년 12월 11일)– 코드네임 Mustang데이터베이스 매니저와 함께 번들되며 JVM에서 스크립트 언어(예: Mozilla의 Rhino 엔진사용하는 JavaScript)를 쉽게 사용할 수 있습니다.이 버전에서 Sun은 "J2SE"라는 이름을 Java SE로 대체하고 버전 [39]번호에서 ".0"을 삭제했습니다.기타 주요 변경 사항으로는 플러그형 주석 지원(JSR 269), Windows Vista의 외관과 느낌을 지원하는 네이티브 UI 기능 확장, 감시와 트러블 슈팅 향상을 위한 Java Platform Debugger Architecture(JPDA) 및 JVM Tool Interface 기능 확장 등이 있습니다.

Java SE 7 (2011년 7월 28일)– 코드네임 돌핀이 버전은 JSR 336에서 [40]개발되었습니다.스위치 문자열, 리소스 사용 시도, 범용 인스턴스 생성을 위한 유형 추론 등 많은 작은 언어 변경 사항이 추가되었습니다.JVM은 동적 언어 지원을 통해 확장되었으며 클래스 라이브러리는 조인/포크 프레임워크,[41] 개선된 새로운 파일 I/O 라이브러리 및 SCTP와 같은 새로운 네트워크 프로토콜 지원을 통해 확장되었습니다.Java 7 Update 76은 2015년 1월에 출시되었으며 만료일은 2015년 [42]4월 14일입니다.

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

Java SE 8 (2014년 3월 18일)– 코드네임 Kenai주목할 만한 변경 사항으로는 lamda 식(클로저)과 기본 메서드에 대한 언어 수준 지원, Project Nashorn JavaScript 런타임, Joda Time에서 영감을 받은 새로운 날짜 및 시간 API, PermGen 제거 등이 있습니다.이 버전은 Windows XP [44]플랫폼에서 공식적으로 지원되지 않습니다.단, Java 7의 라이프 사이클이 종료되었기 때문에 XP 사용자에게 권장되는 버전입니다.이전에는 Windows XP SP3에 대해 비공식적인 수동 설치 방법만 설명되었습니다.Java Runtime [45]Environment를 포함한 Java용 개발 플랫폼인 JDK8을 말합니다.Java 8은 Windows Server 2008 R2 SP1, Windows Vista SP2 및 Windows 7 SP1, Ubuntu 12.04 LTS 이후(및 기타 OS)[46]에서 지원됩니다.

Java SE 9 10은 시스템 요건이 더 높았습니다.Windows 7 또는 Server 2012 (및 웹 브라우저 최소 인증은 Internet Explorer 11 또는 기타 웹 브라우저에 추가됨)와 Oracle은 모든 플랫폼에 대한 32비트 호환성을 폐기했습니다.[47]즉, Oracle의 "64비트 Java 가상 머신(JVM)"만이 인증되었습니다.

Java SE 11은 버전 9부터 급속 출시 모델이 채택된 이후 첫 번째 LTS 릴리스인 2018년 9월에 출시되었습니다.OpenJDK 11은 GNU General Public License에서 Java 플랫폼용 완전한 소스 코드를 나타내며 Oracle은 여전히 옵션의 독점 라이선스로 듀얼 라이선스를 부여하고 있지만 자체 라이선스 버전에 [48]고유한 코드 차이도 모듈도 없습니다.Java 11 기능에는 2개의 새로운 가비지 컬렉터 구현, 심각한 문제를 디버깅하는 Flight Recorder, WebSocket [49]지원을 포함한 새로운 HTTP 클라이언트가 포함됩니다.

자바 SE 12는 2019년 [50]3월에 출시되었습니다.

자바 SE 13은 2019년 [51]9월에 출시되었습니다.

Java SE 14는 2020년 [52]3월에 출시되었습니다.

Java SE 15는 2020년 9월에 출시되었습니다.

Java SE 16은 2021년 3월에 출시되었습니다.

Java SE 17은 2021년 9월에 출시되었습니다.

Java SE 18은 2022년 3월에 출시되었습니다.


언어의 변경에 가세해 Java 클래스 라이브러리는, JDK 1.0에서는 수백개의 클래스에서 J2SE 5.0에서는 3,000개가 넘는 클래스로 큰폭으로 변화하고 있습니다.Swing이나 Java 2D같은 새로운 API가 모두 진화하여 원래의 JDK 1.0 클래스나 메서드는 대부분 폐지되었습니다.

사용.

데스크톱 사용

Windows Vista 데스크톱 컴퓨터에서 실행되는 Java 프로그램(Java 8에서 지원되지만 Java 11과 같은 이후 버전에서는 공식적으로 지원되지 않음)

2010년 Oracle에 따르면 Java Runtime Environment는 8억 5천만 [53]대 이상의 PC에서 발견되었습니다.Microsoft는 Sun Microsystems가 번들된 Java 런타임 환경에 Windows 고유의 클래스를 추가하고 Visual J++[citation needed]를 통해 새로운 클래스를 제공했다는 이유로 Microsoft를 제소한 이후 운영 체제에 Java Runtime Environment(JRE)를 번들하지 않았습니다.버전 10.7부터 Apple은 OS X를 탑재한 Java 런타임은 포함되어 있지 않지만 JRE를 필요로 하는 어플리케이션이 처음 [citation needed]실행될 때 다운로드하여 설치하라는 메시지가 나타납니다.대부분의 Linux 배포에는 OpenJDK 런타임이 기본 가상 시스템으로 포함되어 있으므로 전용 Oracle [54]JRE를 다운로드할 필요가 없습니다.

NetBeans Eclipse 통합 개발 환경, LimeWireVuze와 같은 파일 공유 클라이언트 등 일부 Java 애플리케이션은 상당히 널리 사용되고 있습니다.Java는 또한 MATLAB 수학 프로그래밍 환경에서 사용자 인터페이스를 렌더링하기 위해 그리고 핵심 시스템의 일부로 사용됩니다.Java는 Lotus Notes와 같은 일부 하이엔드 협업 응용프로그램에 교차 플랫폼 사용자 인터페이스를 제공합니다.

Oracle은 먼저 JDK 9의 Java Runtime Environment에서 별도로 설치할 수 있는 Java 브라우저 플러그인을 폐지한 후 향후 출시에서 완전히 삭제하여 웹 개발자가 [55]대체 기술을 사용하도록 할 계획입니다.

마스코트

플레인 올 듀크

듀크는 자바의 [56]마스코트이다.

Sun이 Java SE와 Java ME가 무료 소프트웨어 라이센스(GNU General Public License)로 출시될 이라고 발표했을 때,[57] 동시에 Duke 그래픽스를 무료 BSD 라이센스로 출시했습니다.매년 [58]새로운 공작의 인격이 생겨난다.예를 들어, 2011년 7월에 "Future Tech Duke"에는 더 큰 코, 제트팩, 그리고 파란 [59]날개가 포함되어 있었다.

라이선스

Sun의 Java 구현 소스 코드(즉, 사실상의 참조 구현)는 한동안 사용 가능했지만 [60]최근까지 라이센스 조건에 따라 Sun과 계약을 체결하지 않고 실행할 수 있는 작업(일반적으로 비용을 지불)이 크게 제한되었습니다.이러한 용어들은 오픈 소스 이니셔티브 또는 자유 소프트웨어 재단의 오픈 소스 또는 자유 소프트웨어로 간주되는 요건을 충족하지 못했기 때문에 Sun Java는 독점 [61]플랫폼이었습니다.

몇몇 서드파티 프로젝트(GNU Classpath 및 Apache Harmony 등)가 무료 소프트웨어 부분 Java 구현을 만들었지만, 클린룸 메서드의 사용과 결합된 Sun 라이브러리의 큰 크기는 Java 라이브러리(컴파일러와 VM은 비교적 작고 잘 정의되어 있음)의 구현이 불완전하다는 것을 의미합니다.ULLY 호환.또한 이러한 구현은 Sun의 [citation needed]구현보다 훨씬 덜 최적화되는 경향이 있었습니다.

무료 소프트웨어

Sun은 JavaOne 2006에서 Java가 무료 오픈 소스 소프트웨어가 [62] 것이라고 발표했으며 2006년 10월 25일 오라클 OpenWorld 컨퍼런스에서 Jonathan I. Schwartz는 이 회사가 30~60일 [63]이내에 핵심 Java Platform의 무료 오픈 소스 소프트웨어 출시를 발표할 예정이라고 말했습니다.

Sun은 2006년 11월 13일에 Java HotSpot 가상 머신과 컴파일러를 GNU General Public License에 따라 무료 소프트웨어로 출시했습니다.이때 나머지 JDK(JRE 포함)는 2007년 3월까지 GPL에 포함하기로 약속했습니다.(Sun이 배포 가능한 소스 형식으로 퍼블리시할 권한이 없는 컴포넌트를 제외).r GPL')[64]을 클릭합니다.Richard Stallman에 따르면, 이것은 "자바 트랩"[65]의 종말을 의미할 것이다.Mark Shuttleworth는 첫 언론 발표를 "자유 소프트웨어 커뮤니티의 진정한 이정표"[66]라고 표현했다.

Sun은 2007년 5월 8일 GPL클래스 라이브러리의 소스 코드를 공개했습니다.단, Sun에 의해 라이선스된 일부 한정 부품은 무료 소프트웨어 및 오픈 소스 [67]라이센스로 릴리스되는 것을 원치 않는 서드파티에서 제외했습니다.폰트 렌더링 및 2D 래스터라이징과 같은 일부 기능이 플랫폼의 중요한 부분으로 밝혀졌지만, 나중에 Sun에 의해 오픈 소스로 출시되었습니다(OpenJDK 클래스 라이브러리 참조).

Sun의 목표는 독점적이고 폐쇄적인 소스로 남아 있는 부품을 대체 구현으로 대체하고 클래스 라이브러리를 완전히 자유롭고 오픈 소스로 만드는 것이었습니다.한편, IceTea라고 하는 서드 파티의 프로젝트는 장애가 있는 코드를 GNU Classpath의 stub 또는 코드로 대체함으로써 완전히 무료이며 가용성이 높은 JDK를 만들었습니다.그러나 이후 OpenJDK는 (OpenJDK 6 b10부터[68]) 불필요한 부품 없이 빌드할 수 있게 되어 대부분의 Linux [69][70][71][72]디스트리뷰션에서 기본 런타임 환경이 되었습니다.

2008년 6월, IceTea6(Fedora 9의 OpenJDK 패키지 버전)는 Technology Compatibility Kit 테스트를 통과했으며, 완전한 호환성을 갖춘 Java 6 [73]구현이라고 주장할 수 있습니다.

OpenJDK는 GPL에 포함되어 있기 때문에 최종 사용자(또는 해당 시스템 관리자)가 올바른 버전의 Oracle JRE를 다운로드하여 각 시스템에 직접 설치하도록 요구하지 않고 커스텀 버전의 JRE를 소프트웨어 [74][75]애플리케이션과 함께 재배포할 수 있습니다.

비판

대부분의 경우 웹 브라우저에서는 Java 지원이 불필요하며 보안 전문가들은 반드시 [76]필요한 경우가 아니면 브라우저에서 Java를 실행하지 않을 것을 권장합니다.몇몇 웹 사이트에서 Java가 필요한 경우 사용자는 해당 사이트에 [citation needed]대해 별도의 브라우저를 설치해야 한다고 제안되었습니다.

범용

범용 클래스가 Java 5.0에 추가되었을 때 이미 대규모 클래스 프레임워크(대부분은 이미 사용되지 않음)가 존재했기 때문에 범용 클래스는 이행 호환성과 기존 클래스의 재사용을 위해 소거를 사용하여 구현되도록 선택되었습니다.이로 인해 이 추가 기능으로 제공되는 기능이 일부 다른 언어에 [77][78]비해 제한되었습니다.타입 와일드카드의 추가에 의해,[79] Java는 사운드가 없어졌습니다.

부호 없는 정수형

Java에는 네이티브 부호 없는 정수 형식이 없습니다.서명되지 않은 데이터는 종종 C로 작성된 프로그램에서 생성되며 이러한 유형의 부족으로 인해 C와 Java 간의 직접적인 데이터 교환이 방해됩니다.부호 없는 큰 숫자는 암호화를 포함한 많은 수치 처리 필드에서도 사용되고 있기 때문에 Java는 이러한 [80]작업에 사용하기 편리하지 않을 수 있습니다.변환 코드나 대용량 데이터 타입을 사용하면 이 문제를 부분적으로 회피할 수 있지만, 서명되지 않은 데이터를 처리하는 데 Java를 사용하는 것은 번거로운 일입니다.32비트 부호 있는 정수를 사용하여 16비트 부호 없는 값을 비교적 쉽게 유지할 수 있지만 32비트 부호 없는 값은 64비트 부호 있는 정수가 필요합니다.또한 Java 언어에는 64비트보다 큰 유형이 없기 때문에 Java의 정수 유형을 사용하여 64비트 부호 없는 값을 저장할 수 없습니다.함수를 사용하여 추상화된 경우 함수 호출은 일부 다른 언어에 고유한 많은 작업에 필요합니다.또는 Java의 부호 있는 정수를 사용하여 같은 크기의 부호 없는 정수를 에뮬레이트할 수도 있지만, 이를 위해서는 복잡한 비트 단위 [81]연산에 대한 자세한 지식이 필요합니다.

부동 소수점 산술

Java의 부동소수점 산술은 주로 IEEE 754(Standard for Binary Floating Point 산술용 표준)에 기반하고 있지만 특정 기능은 지원되지 않습니다.strictfp예외 플래그나 다이렉트 라운딩 등의 수식어– IEEE 표준754에 의해 요구되는 기능.또, 754 로 허가되어 많은 프로세서에 존재하는 확장 정밀 부동 소수점 타입은,[82][83] Java 에서는 허가되지 않습니다.

성능

Java 초기(2000년 Java 1.3에 HotSpot VM이 구현되기 전)에는 성능에 대한 몇 가지 비판이 있었습니다.벤치마크에서는 일반적으로 Java가 C(네이티브 [84][85][86]코드로 컴파일되는 언어)보다 약 50% 느리다고 보고했습니다.

Java의 성능은 초기 [18]버전보다 상당히 향상되었습니다.네이티브 컴파일러와 비교한 JIT 컴파일러의 퍼포먼스는 일부 최적화된 테스트에서 상당히 [18][19][20]유사한 것으로 나타났습니다.

Java 바이트 코드는 실행 시 가상 머신에 의해 해석되거나 로드 시 또는 런타임에 컴퓨터 하드웨어에서 직접 실행되는 네이티브 코드로 컴파일될 수 있습니다.해석은 네이티브 실행보다 느리고 로드 시 또는 런타임 시 컴파일은 컴파일에 대한 초기 성능 저하가 있습니다.최신 성능의 JVM 구현은 모두 컴파일 방식을 사용하기 때문에 초기 시작 시간 이후 성능은 네이티브 코드와 동일합니다.

보안.

Java 플랫폼은 사용자가 신뢰할 수 없는 바이트 코드를 "샌드박스" 방식으로 실행할 수 있도록 설계된 보안 아키텍처를[87] 제공하여 악의적인 소프트웨어나 잘못 작성된 소프트웨어로부터 보호합니다.이 "샌드박스" 기능은 로컬 파일 시스템 액세스, 임의 명령 실행, 통신 네트워크 액세스 등 멀웨어에 의해 악용될 수 있는 특정 플랫폼 기능 및 API에 대한 액세스를 제한함으로써 사용자를 보호하는 것을 목적으로 합니다.

최근 몇 년 동안 연구진은 Oracle을 포함하여 널리 사용되는 Java 구현에서 수많은 보안 결함을 발견했는데, 이를 통해 신뢰할 수 없는 코드가 샌드박스 메커니즘을 우회하여 사용자를 악의적인 공격에 노출시킬 수 있습니다.이러한 결함은 퍼블릭웹 사이트에서 다운로드한 Java 애플릿을 실행하는 웹 브라우저 플러그인 등 임의의 신뢰할 수 없는 바이트 코드를 실행하는 Java 응용 프로그램에만 영향을 미칩니다.사용자가 실행 중인 모든 코드를 신뢰하고 완전히 제어할 수 있는 응용 프로그램에는 영향이 없습니다.

2012년 8월 31일 Microsoft Windows, OS X 및 Linux에서 Java 6 및 7(당시 모두 지원됨)에 심각한 보안 결함이 발견되어 악의적인 웹 [88]페이지를 로드하는 것만으로 원격 공격이 발생할 수 있습니다.Java 5도 [89]나중에 결함이 있는 것으로 판명되었습니다.

2013년 1월 10일, 세 명의 컴퓨터 전문가가 로이터 통신에 자바는 안전하지 않으며 사람들은 자바를 비활성화해야 한다고 목소리를 높였다.AlienVault Labs의 랩 매니저 Jaime Blasco는 다음과 같이 말했습니다.Java는 엉망진창입니다.안전하지 않다.비활성화해야 합니다."[90]이 취약성은 Java 7에 영향을 미치며 Java 6에 영향을 미치는지 여부가 불분명하므로 소비자가 비활성화하는 [91][92]것이 좋습니다.Oracle의 보안 경고는 Java에 [93]대한 중요한 보안 관련 패치 일정을 알려줍니다.

2013년 1월 14일 보안 전문가들은 이 업데이트가 여전히 PC를 [94]공격으로부터 보호하는 데 실패했다고 말했습니다.이 취약점 때문에 미국 국토안보부는 사용자에게 [16]Java를 비활성화하거나 제거하도록 권장했습니다.애플은 바이러스 방지 프로그램을 [95]통해 자사의 OS X 운영 체제를 실행하는 모든 컴퓨터에 대해 제한된 순서로 Java를 블랙리스트에 올렸습니다.

2014년에 보안 블로거 Brian Krebs는 당시 Java 보안 및 취약성 문제에 대응하여 사용자에게 Java 브라우저 플러그인과 소프트웨어 전체를 제거해 줄 것을 요구했습니다."나는 세계에 자바 플러그(분기 1회 패치 업데이트에 대해 상기시키는 것을 갖지 않도록) 먹지만 아마 몇년 전에 이 플러그는 다양한 형태의 대부분 최종 수요자 시스템 전 세계에서 제거되게 된다."[96]"Once 유망한, 실제로는 cyb 트러블을 치료할 수 있게 된 악몽은 브라우저의 유용성을 지속할 수 있다.ercrimals in the computer [97]user's or crimals in the computer user." "모든 PC와 Mac에서 Java를 제거한 후 다시 추가할 필요가 있는지 신중하게 생각해야 한다고 생각합니다.일반적인 홈 유저라면, 이것 없이도 충분히 할 수 있을 것입니다.비즈니스 사용자라면 선택의 [98]여지가 없을 수 있습니다."

애드웨어

Oracle이 배포한 Java 런타임 환경에는 설치 시 및 매월 배포되는 업데이트 중에 기본적으로 설치되는 후원 소프트웨어를 번들링한 이력이 있습니다.여기에는 브라우저 검색을 광고로 리디렉션하는 "Ask.com 도구 모음"과 "McAfee Security Scan Plus"[99]가 포함됩니다.이러한 오퍼는 Java 제어판의 설정을 통해 차단할 수 있습니다.단, 이는 명백하지 않습니다.이 설정은 Java 제어판의 "Advanced" 탭에 있는 "Miscellaneous" 제목 아래에 있으며, 이 옵션에는 "Sponsor offers"를 표시하지 않는 선택사항으로 레이블이 지정됩니다.

시스템 업데이트

자바는 구글[101] 크롬이나 플래시 [102]플레이어와 달리 사용자 개입과 관리 권한이[100] 필요 없는 자동 업데이트 프로그램을 아직 출시하지 않았다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "JavaSoft ships Java 1.0" (Press release). Archived from the original on February 5, 2008. Retrieved February 9, 2016.
  2. ^ Ortiz, C. Enrique; Giguère, Éric (2001). Mobile Information Device Profile for Java 2 Micro Edition: Developer's Guide (PDF). John Wiley & Sons. ISBN 978-0471034650. Retrieved May 30, 2012.
  3. ^ "JDK Releases". Oracle Corporation. Retrieved January 21, 2022.
  4. ^ "JDK Releases". Oracle Corporation. Retrieved January 21, 2022.
  5. ^ "HotSpot Group". Openjdk.java.net. Retrieved February 9, 2016.
  6. ^ a b "Oracle JDK 8 and JRE 8 Certified System Configurations Contents". Oracle.com. April 8, 2014. Retrieved February 9, 2016.
  7. ^ "Java SE 7 Supported Locales". Oracle.com. Retrieved February 9, 2016.
  8. ^ "OpenJDK: GPLv2 + Classpath Exception". Openjdk.java.net. April 1, 1989. Retrieved February 9, 2016.
  9. ^ "BCL For Java SE". Oracle.com. April 2, 2013. Retrieved February 9, 2016.
  10. ^ Naughton, Patrick. "Java Was Strongly Influenced by Objective-C". Virtual School. Archived from the original on August 13, 2012.
  11. ^ "Sun Opens Java". Sun Microsystems. November 13, 2006. Archived from the original on May 13, 2008.
  12. ^ O'Hair, Kelly (December 2010). "OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed". Oracle Corporation. Retrieved November 25, 2011.
  13. ^ "Why should I uninstall older versions of Java from my system?". www.java.com. Archived from the original on February 12, 2018. Retrieved February 6, 2018.
  14. ^ "Why should I uninstall older versions of Java from my system?". Oracle. Retrieved September 9, 2016.
  15. ^ a b "Oracle Critical Patch Update - July 2016". www.oracle.com.
  16. ^ a b Whittaker, Zack (January 11, 2013). "Homeland Security warns to disable Java amid zero-day flaw". ZDNet. Retrieved February 9, 2016.
  17. ^ Alexander, Christopher. "Java SE 6 Advanced". www.oracle.com. Retrieved May 20, 2018.
  18. ^ a b c Lewis, J. P.; Neumann, Ulrich. "Performance of Java versus C++". Graphics and Immersive Technology Lab, University of Southern California.
  19. ^ a b "The Java Faster than C++ Benchmark". Kano.net. November 14, 2003. Retrieved February 9, 2016.
  20. ^ a b FreeTTS – Willie Walker, Paul Lamere, Philip Kwok Wayback Machine에서 2009-03-25년에 아카이브된 퍼포먼스 케이스 스터디
  21. ^ "Chapter 1. Introduction". docs.oracle.com.
  22. ^ www.beanshell.org
  23. ^ "Frequently Asked Questions about Garbage Collection in the Hotspot Java Virtual Machine". Sun Microsystems. February 6, 2003. Retrieved February 7, 2009.
  24. ^ a b Masamitsu, Jon (November 28, 2006). "Presenting the Permanent Generation". Archived from the original on August 25, 2016. Retrieved February 7, 2009.
  25. ^ Nutter, Charles (September 11, 2008). "A First Taste of InvokeDynamic". Retrieved February 7, 2009.
  26. ^ "JEP 122: Remove the Permanent Generation". Oracle Corporation. December 4, 2012. Retrieved March 23, 2014.
  27. ^ "What Is Java, Is It Insecure, and Should I Use It?". Lifehacker.com. January 14, 2013. Retrieved June 26, 2015.
  28. ^ "Is there any protection against Java exploits? Kaspersky Lab". Kaspersky.com. September 9, 2013. Archived from the original on April 4, 2015. Retrieved June 26, 2015.
  29. ^ Southwick, Karen (1999). High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems. New York [u.a.]: Wiley. pp. 120–122. ISBN 0471297135.
  30. ^ a b Byous, Jon (April 2003). "Java Technology: The Early Years". Sun Microsystems. Archived from the original on May 30, 2008. Retrieved August 2, 2009.
  31. ^ Southwick, Karen (1999). High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems. New York [u.a.]: Wiley. p. 124. ISBN 0471297135.
  32. ^ Walrath, Kathy (December 21, 2001). "Foreword". Sun Microsystems. Retrieved August 2, 2009.
  33. ^ Murphy, Kieron (4 October 1996). "So why did they decide to call it Java?". JavaWorld. Retrieved 2020-07-15. 'The lawyers had told us that we couldn't use the name "OAK" because [it was already trademarked by] Oak Technologies,' said Frank Yellin, a senior engineer at Sun. 'So a brainstorming session was held to come up with ideas for a new name.'
  34. ^ "Sun Microsystems announces formation of JavaSoft" (Press release). Sun Microsystems. 9 January 1996. Archived from the original on 2008-02-10.
  35. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 63". Jcp.org. Retrieved February 9, 2016.
  36. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 59". Jcp.org. Retrieved February 9, 2016.
  37. ^ "Version 1.5.0 or 5.0?". Java.sun.com. Retrieved February 9, 2016.
  38. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 176". Jcp.org. Retrieved February 9, 2016.
  39. ^ "Java Naming". Java.com. Oracle. Retrieved August 25, 2011.
  40. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 336". Jcp.org. Retrieved February 9, 2016.
  41. ^ Lea, Doug (September 13, 2004). "JSRs: Java Specification Requests: JSR 166: Concurrency Utilities". Java Community Process. Oracle Corp.
  42. ^ "Java™ SE Development Kit 7 Update 76 Release Notes". Oracle.com. Retrieved February 9, 2016.
  43. ^ "Java 7 and Java 8 Releases by Date". www.java.com.
  44. ^ "Windows XP and Java". Java.com. April 8, 2014. Retrieved February 9, 2016.
  45. ^ "java - installing JDK8 on Windows XP - advapi32.dll error". Stack Overflow.
  46. ^ "Oracle JDK 8 and JRE 8 Certified System Configurations". www.oracle.com.
  47. ^ "Oracle JDK 10 Certified System Configurations". www.oracle.com. Retrieved March 27, 2018. Only X.org Mode supported. Wayland mode is unsupported.
  48. ^ "Oracle Java SE Support Roadmap". Oracle Corporation. September 25, 2018. Retrieved September 25, 2018.
  49. ^ "JDK 11". Oracle Corporation. September 25, 2018. Retrieved September 26, 2018.
  50. ^ "JDK 12". OpenJDK. Retrieved March 22, 2019.
  51. ^ "JDK 13". OpenJDK. Retrieved September 17, 2019.
  52. ^ "JDK 14". OpenJDK. Retrieved March 25, 2020.
  53. ^ "What is Java technology and why do I need it?". Archived from the original on September 25, 2010. Retrieved December 15, 2011. Java runs on more than 850 million personal computers worldwide, and on billions of devices worldwide, including mobile and TV devices.
  54. ^ "Java - Fedora Project Wiki". fedoraproject.org.
  55. ^ Topic, Dalibor (January 27, 2016). "Moving to a plugin-free web". Oracle.
  56. ^ "Duke, the Java Mascot". Oracle. Retrieved March 18, 2019.
  57. ^ "duke: Project Home Page". Sun Microsystems. Archived from the original on June 18, 2007. Retrieved March 18, 2007.
  58. ^ "Duke, the Java Mascot".
  59. ^ "Future Tech Duke (The Java Source)". Tori Wieldt. Archived from the original on August 20, 2011. Retrieved August 17, 2011.
  60. ^ Smith, Donald (September 11, 2018). "Oracle JDK Releases for Java 11 and Later".
  61. ^ Stallman, Richard (May 24, 2006). "The Curious Incident of Sun in the Night-Time". Groklaw.
  62. ^ Schwartz, Jonathan. "?". Jonathan Schwartz's Blog. Sun Microsystems. Archived from the original on July 15, 2006.
  63. ^ "Oracle OpenWorld: UnBreakable Linux / 5015.2 not on the horizon Formtek Blog". Formtek.com. October 26, 2006. Retrieved February 9, 2016.
  64. ^ "Oracle and Sun Microsystems Strategic Acquisitions Oracle". Sun.com. Retrieved February 9, 2016.
  65. ^ "Free but Shackled - The Java Trap - GNU Project - Free Software Foundation". Gnu.org. April 12, 2004. Retrieved February 9, 2016.
  66. ^ "Sun 'releases' Java to the World". BBC News. November 13, 2006. Retrieved May 6, 2010.
  67. ^ "Open JDK is here!". Sun Microsystems. May 8, 2007. Retrieved May 9, 2007.
  68. ^ Wielaard, Mark (May 30, 2007). "OpenJDK6 b10 source posted". Retrieved July 12, 2008.
  69. ^ "Redhat Java".
  70. ^ "Fedora Java".
  71. ^ "Debian Java".
  72. ^ "Ubuntu Java".
  73. ^ Sharples, Rich (June 19, 2008). "Java is finally Free and Open". Archived from the original on June 20, 2008.
  74. ^ libgdx (December 9, 2013). "Bundling a jre · libgdx/libgdx Wiki · GitHub". Github.com. Retrieved February 9, 2016.
  75. ^ "Question about bundling custom OpenJDK". Java-Gaming.org. Archived from the original on March 4, 2016. Retrieved February 9, 2016.
  76. ^ Cluley, Graham (January 15, 2013). ""Unless it is absolutely necessary to run Java in web browsers, disable it", DHS-sponsored CERT team says – Naked Security". Nakedsecurity.sophos.com. Retrieved February 9, 2016.
  77. ^ "Generics in Java". Object Computing, Inc. Archived from the original on January 2, 2007. Retrieved December 9, 2006.
  78. ^ "What's Wrong With Java: Type Erasure". December 6, 2006. Retrieved December 9, 2006.
  79. ^ "Java and Scala's Type Systems are Unsound" (PDF).
  80. ^ "Java libraries should provide support for unsigned integer arithmetic". Bug Database, Sun Developer Network. Oracle. Retrieved January 18, 2011.
  81. ^ Owens, Sean R. (November 5, 2009). "Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)". darksleep.com. Retrieved October 9, 2010.
  82. ^ Kahan, W.; Darcy, Joseph D. (March 1, 1998). "How Java's Floating-Point Hurts Everyone Everywhere" (PDF). Retrieved December 9, 2006.
  83. ^ "Types, Values, and Variables". Sun Microsystems. Retrieved December 9, 2006.
  84. ^ 어떤 프로그래밍 언어가 가장 빠릅니까? 컴퓨터 언어 벤치마크 게임 2011년 8월 14일 Wayback Machine에서 아카이브
  85. ^ 스피드 © C++ GNU g++ 스피드 컴퓨터 언어 벤치마크 게임 2011년 9월 26일 Wayback Machine에서 아카이브
  86. ^ "C++ vs Java performance; It's a tie! Blog of Christian Felde". Blog.cfelde.com. June 27, 2010. Retrieved February 9, 2016.
  87. ^ "Java Security Architecture: Contents". Docs.oracle.com. October 2, 1998. Retrieved February 9, 2016.
  88. ^ Horowitz, Michael (August 31, 2012). "Java security flaw: yada yada yada Computerworld". Blogs.computerworld.com. Archived from the original on July 24, 2014. Retrieved February 9, 2016.
  89. ^ Brook, Chris. "The first stop for security news". Threatpost. Archived from the original on March 8, 2013. Retrieved February 9, 2016.
  90. ^ "Why and How to Disable Java on Your Computer Now - Technology & science - Innovation". NBC News. January 12, 2013. Retrieved February 9, 2016.
  91. ^ "US Department of Homeland Security Calls On Computer Users To Disable Java". Forbes.com. Retrieved February 9, 2016.
  92. ^ Brook, Chris. "The first stop for security news". Threatpost. Archived from the original on April 9, 2013. Retrieved February 9, 2016.
  93. ^ "Critical Patch Updates and Security Alerts". Oracle.com. Retrieved February 9, 2016.
  94. ^ Finkle, Jim (January 14, 2013). "Emergency patch for Java fails to fix cybercrime holes, warn experts". Independent.ie. Retrieved February 9, 2016.
  95. ^ Kelly, Meghan (January 14, 2013). "Oracle issues fix for Java exploit after DHS warns of its holes". VentureBeat. Retrieved February 9, 2016.
  96. ^ Krebs, Brian (February 16, 2016). "Good Riddance to Oracle's Java Plugin". KrebsOnSecurity.
  97. ^ Gonsalves, Antone (September 5, 2012). "Java Is No Longer Needed. Pull The Plug-In". ReadWrite. Wearable World.
  98. ^ "Java: should you remove it?". The Guardian. February 8, 2013.
  99. ^ Bott, Ed. "A close look at how Oracle installs deceptive software with Java updates". ZDNet.com. ZDNet. Retrieved December 14, 2014.
  100. ^ "windows 7 - How do I update Java from a non-admin account?". Super User.
  101. ^ "Update Google Chrome - Computer - Google Chrome Help". support.google.com.
  102. ^ "Adobe Security Bulletin". helpx.adobe.com.

외부 링크

기사 듣기 (42분)
Spoken Wikipedia icon
이 오디오 파일은 2013년 8월 19일(2013-08-19) 본 문서의 개정판에서 작성되었으며 이후 편집 내용은 반영되지 않습니다.