나는 국비 지원 교육 출신 개발자다.
학원 다닐 때에 운이 아주 좋았다.
좋은 선생님에게서 배웠기 때문이다.
사람도 첫인상이 중요하듯이, 뭐든지 처음 접할 때가 중요하다.
내 첫 프로그래밍은 좋은 선생님께서 이끌어 주셨다.
선생님은 말씀하셨다.
어딜 가든, 무얼 하든, 개발자라면 '개발 환경을 구축하는 일'부터가 시작이라고.
그만큼 개발 환경을 구축하는 일은 기본이고 중요하다.
근데 나는 기본이 안 된 개발자인 것 같다.
(선생님 죄송합니다 ㅠㅠ 흙흙)
jdk는 뭐고, jre는 뭐고, jvm은 뭐고,
java 8 을 깔아야 하는지
java 11 이나 17을 깔아야 하는지,
Oracle은 무슨 버전을 깔아야 하는지,
일일이 검색해 가며 설치해야 했다.
그래서 뭐가 뭔지 정리를 좀 해봤다.
jdk는 줄임말이고, 전체 말은 아래다.
Java Development Kit
'Development'에서 짐작하듯이,
jdk는 java를 사용하여 개발할 때에 필요한
도구들을 모아서 키트로 만들어 놓은 것이다.
jre는 아래의 줄임말이다.
Java Runtime Environment
'Runtime'에서 짐작하듯이,
jre는 java로 개발해 놓은 프로그램을
실행하는 데에 필요한 환경을 만들어 준다.
jvm은 Java Virtual Machine의 줄임말이다.
한국어로 해석하자면
"자바 가상 장치" 정도 된다.
뭐 하는 데에 쓰는 가상 장치일까?
java를 사용해 만든 프로그램을
실행하는 데에 필요한 가상 장치다.
이 뜻을 이해하기 위해서는 먼저
java가 어떤 방식으로 작동하는지 원리를 대충 알아야 한다.
사용자마다 디바이스도 다르고 OS도 다르다.
java에서 이 모든 환경을 대상으로
환경 구성을 할 수는 없는 노릇이다.
만약 가상으로 어떤 장치를 만들어 놓고,
그 장치 위에서 프로그램이 돌아가도록 한다면 어떨까.
다양한 디바이스나 OS에서도 이 가상 장치만 설치한다면
어느 정도 일관된 실행 환경을 만들 수 있다.
바로 이런 아이디어에서 java가 작동하고 있고,
이때 필요한 가상 장치가 jvm이다.
우리나라에서는 java 8 이 대세다.
그 이유는 LTS 버전이기 때문이다.
LTS 버전이란 무엇일까?
먼저 java의 업데이트 정책을 조금 알아야 한다.
java 9부터는 jdk 서비스 기간이 짧다.
6개월마다 버전을 업데이트하기로 한 것이다.
6개월이 지나고 나면 지난 버전에 대한 서비스는 지원하지 않기로 했다.
개발 중이거나 개발된 프로그램의 언어를
6개월마다 갈아 엎기란 쉽지 않다.
이런 불편함 때문에 java는 대책을 하나 내놓는다.
장기간 지원하는 버전을 일정 기간마다 내놓기로 한다.
이 버전을 LTS (Long-Term-Support) 라고 한다.
LTS 버전은 6개월이 지나고 새로운 버전이 나와도
몇 년간 더 지원을 이어간다.
이 LTS 버전은 아래와 같다.
2014년 java 8
2017년 java 11
2021년 java 17
이후로는 2년마다 출시하기로 한다.
라이센스 이용료도 영향을 끼쳤다.
java를 쓰려면 구독 서비스처럼 라이센스를 내야 한다.
자바를 관리하는 공식 업체(현재는 Oracle)에서
서비스 하는 버전 중에서도 무료 버전이 있고 유료 버전이 있다 보니,
조금 오래된 버전이라도 무료 버전을 아직 많이 사용하고,
이런 걸 쓰기 껄끄럽다면 오픈소스 기반의 무료 버전인 open jdk 를 써도 좋다.
이런 다소 복잡한 정책 때문에
java 8에 머무르는 곳이 많다.
나는 일단 많은 곳에서 쓰는 버전으로
공부하는 게 좋을 것 같아서 8로 설치했다.