Java 언어

Kenneth·2021년 2월 13일
0

java

목록 보기
1/1

새 회사에서는 자바로 개발하게 될 예정이라, 입사 전에 최대한 java/spring에 익숙해지려 합니다.

프로그래밍 언어에도 역사가 있습니다. 이는 언어의 생태계에나 향방에 적지 않은 영향을 미치고 전체적인 이해도를 높이는데 큰 도움이 되기에 언어를 배우기에 앞서 그 언어가 등장한 배경과 시대상황, 어떻게 발전해왔는지 등을 살펴보면 많은 도움이 됩니다.

그래서 오늘의 시작은 간단한 java의 역사입니다.

Ownership?

C언어나 JS처럼 ISO/IEC 혹은 ECMA같은 표준기구에서 관리하는 언어도 있는가 하면, Python과 Python Software Foundation처럼 그 목적을 위한 비영리단체에서 관리하는 언어도 있고, Java, Kotlin, Swift 등 사기업에서 만들어 보유하고 관리하는 언어도 있습니다.

그 중 Java는 Sun Microsystems에서 개발하여 소유하다 2010년에 Oracle에 인수되면서 현재는 Oracle에서 권리를 갖고 있습니다. Java의 많은 부분이 오픈소스이며 무료이지만, Sun 시절부터 Enterprise Edition을 유료로 판매해왔기 때문에 라이센스에 대한 고려가 필요했으며, 그래서 여러 distribution이 있는걸지도 모르겠습니다.

Distribution?

이 블로그 글에 정리되어 있는 것 처럼 몇 가지 distribution이 존재합니다.

공식, 가장 대표적인 것은 Oracle Java SE입니다. Oracle Binary Code License Agreement라고 하는 유료 라이센스가 적용되고, LTS (Long-term Support) 가 존재합니다. 이에 반해 무료인 Oracle OpenJDK는 GPLv2이지만 LTS 계획이 존재하지 않습니다.

그 다음으로 AdoptOpenJDK가 있습니다. JUG (Java User Group)의 산출물로, Oracle OpenJDK의 커뮤니티 버전이라고 생각하면 될 것 같습니다. AdoptOpenJDK는 2020년 6월 Eclipse Foundation에 편입되었고, 앞으로도 계속 오픈소스 자바 생태계의 주축으로서 자리할 것 같습니다. GPLv2로 제공되며, 2024 8월까지 Java 11에 대한 LTS 계획 등이 있습니다.

그 외에 주목할만한 distribution이 있다면 Amazon Corretto나 Redhat정도일 것 같은데요. Amazon Corretto는 Amazon에서 관리하고 있는 OpenJDK로, GPLv2이며 무료인만큼 별도의 support는 존재하지 않지만 Amazon 수준의 유지보수를 기대할 수 있다는 장점이 있겠습니다.

Version?

각설하고, 현재는 Java 8 / 11 / 15 이 세 메이저 버전이 보편적으로 사용되고 있습니다. (자세한 내용은 위키피디아 문서이런 글을 비롯한 다른 글을 찾아보시면 좋겠습니다.)

Java 8은 legacy의 완성이라고 할 수 있겠습니다. 기존의 독특한 versioning을 따라가며 (1.8.x), JRE (Java Runtime Environment)와 JDK(Java Development Kit)가 분리되어 있습니다. Oracle이 2019년에 발표한 라이선스 정책 변화로, 다음 LTS (Java 11)로 올리면 유료 라이선스를 사용해야 하기 때문에 아직도 많은 프로젝트들이 Java 8을 이용하고 있습니다. 그래서인지 지금 시점에서 가장 긴 LTS (~2030년 12월) 가 약속되어 있습니다.

Java 11은 차세대 LTS 버전으로, Oracle의 새 라이선스 정책이 적용되는 버전입니다.

Java 8 - 15까지의 Java/JVM 변화를 요약해놓은 좋은 글이 있어 소개합니다.

Java Virtual Machine?

Java는 Java Virtual Machine 위에서 작동합니다. 그리고 Python에 여러 interpreter 종류가 있듯, Java에도 공식 VM - Hotspot 이 있으며 그 외에 이클립스 재단의 Open J9 등이 있습니다. (리스트)

JVM-supported Languages?

JVM은 bytecode 를 작동시키는 가상머신으로, Java가 아닌 다른 언어라 하더라도 bytecode로 컴파일 될 수 있다면 JVM에서 작동할 수 있습니다. 그렇게 JVM 위에서 동작하는 언어로 Kotlin, Groovy, Scala 등이 있습니다. Kotlin은 JetBrains, Groovy는 Apache Foundation, Scala는 로잔느공대 프로그래밍 방법론 연구실 소유이군요.

기타 읽어볼만한 글

profile
개발자 + @

0개의 댓글