[Java] 자바에 대해 알아봐요(feat. 역사, 버전)

최지수·2022년 2월 19일
0

Java

목록 보기
1/27
post-thumbnail

자바(Java)의 시작

컴퓨터 언어 혁명은 프로그래밍 과학의 진보와 컴퓨터 환경의 변화로 이뤄졌어요. 자바는 당시 최고의 프로그래밍 언어인 C/C++에서 물려받은 유산을 선별 채택을하였고, 이는 지금 현재의 최신 프로그래밍 경향을 반영하는 요소들로 채워졌어요.

1991년, Sun Microsytems의 제임스 고슬링James Gosling, 패트릭 노튼Patrick Naughton, 크리스 와츠Chris Warth, 에드 프랭크Ed Frank 그리고 마이크 쉐리든Mike Sheridan에 의해 창안되었죠.

처음에 이 언어는 제임스 고슬링 씨가 초기 언어 개발 때 나무를 보고 Oak라고 명명했었는데, 1995년에 자바Java로 재명명을 했어요. 개발자들이 즐겨 마시던 인도네시아산 커피인 Java에서 따왔단 설이 있어요.

플랫폼에 독립적인 언어를 만들자!

요즘 자바Java는 인터넷을 통한 웹 서비스나 안드로이드Android와 같은 모바일 환경에 자주 쓰이죠. 물론 처음부터 이럴 목적으로 만든 건 아니었어요.

자바가 지향했던 것은 토스터, 전자레인저 등의 가전제품이 내장될 소프트웨어를 위한 플랫폼Platform, '기반 OS'나 '개발 환경'에 독립적인 언어를 만드는 것이었어요.

대부분의 컴퓨터 언어는 특수한 CPU 아키텍처나 운영체제에 맞게 컴파일되도록 설계되어 있어요. CPU는 각각 고유의 명령어를 가지고 있어요. 그래서 이 명령어를 조합해 프로그래밍 언어와 컴파일러(언어 해석기)를 만들 때 특수 CPU 아키텍처에 맞게 설계 해줘야해요. 이 뿐만 아니라 운영체제의 종류에 따라 이를 위한 API를 만들어줘야 해요. 이를 위한 비용과 시간은 매우 비싸다는 문제가 있어요.

그래서 자바는 다르게 설계되었어요

보다 나은 방식을 위해서 제임스 고슬링과 동료들은 다양한 환경의 CPU에서 실행되는 코드를 생성할 수 있는, 이식성이 뛰어난 크로스 플랫폼Cross Platform 언어 개발에 착수했어요. 이러한 배경을 바탕으로 Write Once, Run Anywhere와 같은 철학을 가진 자바의 탄생으로 이어졌어요.

인터넷과 자바의 만남

그리고 월드 와이드 웹WWW, 인터넷의 출현으로 자바가 급부상하게 되었어요. 인터넷은 다양한 컴퓨터, 운영 체제 그리고 CPU로 넘쳐나는 광대한 분산형 시스템이었어요.

따라서 모든 환경에서 작동하는 것을 요구했기에, 이식성이 뛰어난 자바가 여기에 제격이었어요. 기존에 이식성 문제는 프로그래머들의 초기 경험을 통해 이식성이 좋은 프로그램을 만드는 것은 어렵다고 판단해서, 비록 이에 대한 개발의 요구는 오래 지속되어 오긴 했지만, 다른 문제들에 의해 뒷전으로 밀려나 있는 상태였어요. 오직 자바만 이를 중점으로 두고 해결한 것이었죠.

그래서 자바의 초점은 가전제품에서 인터넷으로 옮겨지게 되었어요. 요약하자면 자바 언어 설계의 최초의 영감을 제공한 것은 아키텍처 중립적인 프로그래밍 언어에 대한 요구였으나, 궁극적으로 자바가 대성공을 이루도록 한 것은 인터넷이라 할 수 있어요.

Oracle JDK vs. OpenJDK

자바를 개발하기 위한 개발 환경을 Java Development KitJDK라고 해요. 그리고 JDK는 오라클 JDKOracle JDKOpenJDK가 있어요.

JDK는 뭔가요?

JDKJava Development Kit는 자바 개발 환경으로 스탠다드 에디션SE, 엔터프라이즈 에디션EE 그리고 모바일 에디션ME가 존재해요. 그리고 컴퓨터의 운영체제 소프트웨어 상에서 실행되고 클래스 라이브러리와 특정 자바 프로그램이 실행되어야 하는 리소스를 제공하는 자바 런타임 환경Java Runtime Environment, JRE를 제공해요. 모든 JDK는 항상 호환 가능한 JRE가 포함되요.

다시 본문으로

그럼 각 JDK에 대해 설명하자면, 오라클 JDK는 Oracle 사에서 제공하는 JDK고, OpenJDK는 오픈소스로 배포하는 SE JDK이에요. 둘 다 자바를 구동시키는 환경을 제공한다는 점에서 같고, 사소한 차이가 있어요.

OpenJDK의 버전

OpenJDK의 기반 버전은 OracleJDK 버전과 조금 상이해요.

그 이유는 OracleJDK가 릴리즈 배포되고 나서 OpenJDK가 배포되기 때문이에요.

배포 주기

Oracle JDK는 매 3년을 주기로 릴리즈를 배포해요. 그리고 OpenJDK는 매 6개월을 주기로 릴리즈를 배포하고요.

모태가 3년을 주기로 배포하는데 OpenJDK가 어떻게 6개월을 주기로 배포하나면, Oracle JDK는 배포를 할 때, 장기간 지원Long-term Supported, LTS할 릴리즈를 배포하는 반면, OpenJDK의 일부 버전은 장기간 지원하지 않고 LTS 버전 출시 전까지만 지원해요.

라이센스

Oracle JDK는 Oracle Binary Code 라이센스 협약을 따라요. 그리고 OpenJDK는 GNU General Public 라이센스GNU GPL ver. 2협약을 따르죠.

이 의미는 오라클 사가 공표한 바에 따르면, 2019년 1월 이후 배포한 Oracle 사의 자바 SE 8는 상업적인 목적으로 사용될 수 없다는 의미에요. 하지만 OpenJDK는 완전한 오픈 소스라서 자유롭게 사용 가능해요.

여기서, 자주 사용하는 버전 Java SE 8이에요. 왜냐하면,

  1. 자바 역사를 통틀어 가장 많은 변화가 일어남
  2. 자연어에 더 가까운 방식으로 간단하게 코드 구현 가능.
  3. 멀티코어 CPU 대중화를 이끌어냄. 이전이라면 스레드로 구현하라고 했을 것. 하지만 스레드는 관리하기 어려움
    • 자바 1.0에서는 스레드와 락, 메모리 모델까지 지원.
    • 특별 전문가로 구성된 프로젝트팀이 아닌 한 이와 같은 저수준 기능을 활용하기 어려움.
    • 자바 5에서는 스레드 풀, 병렬 실행 컬렉션 등을 도입.
    • 자바 7에서는 병렬 실행에 도움을 줄 수 있는 포크/조인 프레임워크 제공. 여전히 개발자가 활용하기에는 어려움.
    • 자바 8에서는 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방식 제공.

하지만 8버전은 22년 기준, 향후 몇 년 내에 지원되지 않을 거래요. 그래서 빨리 Java SE 11 버전을 사용하길 권고한대요.

성능

Oracle JDK는 OpenJDK에 비해 보다 빠른 성능을 보인다고 해요. 또한 기업 고객들에게 안정성을 제공한다고 해요당연히 돈받고 하니까.

OpenJDK는 아무래도 빠른 주기로 배포를 하다보니까 그만큼 안정성은 보장할 수 없다고 해요. 그리고 일부 유저들은 성능적인 이슈를 발견했다고 해요.

참고

holaxprogramming님 블로그
baeldung님 블로그 - Difference Between Oracle JDK and OpenJDK
hashmap27님 블로그
Microsoft - Java 11이상으로 전환해야 하는 이유
Reddit - OpenJDK vs. OracleJDK

profile
#행복 #도전 #지속성

0개의 댓글