개념 정리

자바(Java)란 무엇인가?

조요피 2021. 10. 4. 22:31

참조

https://namu.wiki/w/Java

https://hermeslog.tistory.com/480

 

Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리

출처 : jsonobject.tistory.com/395 Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 Oracle JDK와 OpenJDK Java 애플리케이션을 실행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 일반..

hermeslog.tistory.com


개요

썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어.

창시자는 제임스 고슬링.

2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 Java의 저작권을 소유.

자바 에디션

  • Java SE(Java Standard Edition / J2SE)
    • 대부분의 사람들이 가장 많이 접하는 표준 에디션.
    • Java의 핵심 API와 기능들을 제공.
  • Jakarta EE, 구 Java EE(Java Enterprise Edition / J2EE)
    • 기업에서 운영하는 서버 페이지에 특화된 에디션.
    • JSP와 서블릿을 비롯한 웹 애플리케이션 서버에 관련된 기술들이 포함.
  • Java ME(Java Micro Edition / J2ME)
    • PDA나 셋톱박스, 센서 등의 임베디드 시스템 환경에 특화된 에디션.
  • JavaFX
    • 데스크톱 애플리케이션 개발 및 배포를 위한 에디션.
    • 크로스플랫폼 이식과 GUI 라이브러리를 제공.

Java SE (Java Standard Edition)

자바 언어의 스펙을 뜻한다.(자바 언어 개발 명세서)

이 스펙은 자바 커뮤니티에서 결정한다.

https://www.jcp.org/

 

The Java Community Process(SM) Program

Welcome to jcp.org, home of the Java Community ProcessSM (JCPSM) Program. The JCP is the mechanism for developing standard technical specifications for Java technology. Anyone can register for the site and participate in reviewing and providing feedback fo

www.jcp.org

JDK (Java Development Kit)

 

Java SE에 따라서 구현된 구현체.(소프트웨어)

Java SE의 구현체는 JDK와 JRE(Java Runtime Environment)가 있다.

  • JRE = JVM + 표준 클래스 라이브러리
  • JDK = JRE + 개발에 필요한 도구

Open JDK

OpenJDK(Open Java Development Kit)는 자바 플랫폼, 스탠더드 에디션 (자바 SE)의 자유-오픈 소스 구현체이다.

- 위키백과 -

Oracle JDK vs Open JDK

기본적으로 자바의 소스 코드는 오픈 소스 OpenJDK 프로젝트의 소스 하나만 존재한다.

누구나 이 소스를 가져다 빌드하여 최종 결과물인 JDK를 제공할 수 있다.

오라클이 아닌 서드파티 업체가 OpenJDK를 기반으로 공인된 JDK를 제작하여 배포하려면 오라클의 유료 라이센스인 OCTLA에 가입해야 한다. (가입된 회사 : http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html)

이 회사들이 OpenJDK 기반의 자체 구현체를 배포하려면 오라클의 엄격한 TCK 인증을 통과해야 한다.

 

오라클 JDK도 이런 식으로 빌드되어 제공되는 구현체의 한 종류이며 여기에는 재산권과 관련된 플러그인들이 포함되어 있다. 특정 벤더가 표준 소스를 가지고 각자의 구현체를 배포할 때 브랜딩을 다르게 하거나 특정 유틸리티를 추가하거나 또는 패키징을 다르게 할 수 있어 각 빌드들은 다를 수 있다. 예를 들어, 어떤 벤더는 설치 프로그램을 포함하여 제공할 수 있고, 어떤 곳은 설치 프로그램 없이 그냥 압축 파일을 풀어서 직접 설치하게 할 수도 있다.


Java 11부터는 기본적으로 Oracle JDK와 Open JDK가 같은 것으로 봐도 무방하다. 다만 소프트웨어에 대한 지원, 패치가 얼마나 빨리 적용되는지 등에 따라 유료 버전을 선택할지 무료 버전을 선택할지 결정하면 된다. 무료 버전을 원한다면 OpenJDK 빌드중의 하나를 다운로드 받아서 사용하면 된다.

(*Oracle은 3년마다 릴리스를 제공하고 OpenJDK는 6개월마다 릴리스한다. Oracle은 릴리스에 대한 장기적인 지원을 제공한다. 반면 OpenJDK는 다음 버전이 릴리스 될 때까지만 릴리스에 대한 변경 사항을 지원한다.)

역사

버전 설명
JDK 1.0a 1994년 첫 발표.
JDK 1.0a2 1995년 정식 발표.
JDK 1.0 1.0.2 버전에서 이름 변경(Oak -> Java)
JDK 1.1  
J2SE 1.2 JDK에서 J2SE(Java 2 Standard Edition)로 표기하기 시작
J2SE 1.3  
J2SE 1.4  
J2SE 5 버전의 1을 생략함.
하지만 내부적으로 8 버전까지 1.8로 사용됨.
Java SE 6 J2SE에서 SE로 변경.
Java SE 7  
Java SE 8 (LTS) 현업에서 이미 만들어진 프로젝트의 경우 1.8 버전이 가장 흔하다.
32비트를 지원하는 마지막 공식 Java 버전.
Java SE 9 2017년 9월 21일 발표.
완벽하게 1.x 버전을 버림. (1.8 -> 9)
Project Jigsaw 기반으로 런타임이 모듈화된 것이 가장 큰 특징.
Java SE 9부터는 6개월마다 새로운 버전이 업데이트.
이 버전부터 64비트 버전만 출시.
Java SE 10  
Java SE 11 (LTS) 2018년 9월 25일 발표.
이클립스 재단으로 넘어간 Java EE가 JDK에서 삭제되고, JavaFX도 JDK에서 분리되어 별도의 모듈로 제공. 
Java SE 11부터 Oracle JDK의 독점 기능이 오픈 소스 버전인 OpenJDK에 이식된다. 이는 다시 말해 Oracle JDK와 OpenJDK가 완전히 동일해진다는 뜻.
Oracle JDK가 구독형 유료 모델로 전환.
이 때문에 많은 기업들이 Oracle JDK에서 발을 빼고 있으며, OpenJDK를 기반으로 한 다른 서드파티 JDK가 대안으로 떠오르고 있다.
Java SE 12  
Java SE 13  
Java SE 14  
Java SE 15  
Java SE 16 OpenJDK 의 버전 관리가 Mercurial 이었으나, 이제 Git으로 바뀐다.
이제 OpenJDK 소스를 GitHub 에서 볼 수 있다.
Java SE 17 (LTS) Oracle JDK 8, 11 버전을 이을 세 번째 LTS 버전.

 

'개념 정리' 카테고리의 다른 글

스프링 시큐리티 정리  (0) 2023.08.21
TDD란 무엇인가?  (0) 2023.04.13
애자일(Agile) 개발 방법론  (0) 2023.03.23
GraphQL 개념 정리  (0) 2022.12.12
프로그래밍(Programming)이란?  (0) 2021.07.19