🚦Java 유료화와 OpenJDK 의 오해와 진실
💬 Programming 언어가 유료화가 된다고?
프로젝트를 Java 언어로 진행하고 있거나 이미 운영중인 사람들 입장에서는 처음 Java 유료화 라는 말을 들었을 때 헉! 할수밖에 없을 것이다. 그만큼 Java 는 인기있는 언어이고 대체하기 위해서는 많은 리소스를 투자할 수 밖에 없다.
결론부터 얘기하자면 Java 라는 프로그래밍 언어 자체는 GPL 라이센스로 무료이다.
그럼 도대체 어떤것이 유료화가 된다는 말일까?
Java 프로그램을 실행하기 위해서는 아래의 2가지 핵심 기능이 필요하다
- Java 로 작성한 프로그램을 컴파일 해주는 JDK
- 컴파일된 결과물을 실행시켜주는 JVM
JDK 에 JVM 이 같이 패키징되어 배포되는 구조라 흔히들 JDK, JVM 을 합쳐 JDK 라 부르는데 이 JDK 가 유료화 되는것이다.
즉, 프로그래밍 언어로써 Java 를 사용하는건 무료이지만 이를 실행시키기위한 컴파일과 실행 머신이 유료라는 것이다.
JDK 는 크게 OracleJDK 와 OpenJDK 로 나뉘어지는데 이중 OracleJDK 가 유료화 정책을 펼치고 있다.
💬 OracleJDK 쓰면 무조건 돈내야해요?
OracleJDK는 BCL(Oracle Binary Code License) 이라는 라이센스를 적용하고 있는데 BCL 라이센스에서는 일반적인 목적의 컴퓨팅(General Purpose Computing)에 사용시에만 무료라고 밝히고 있다.
여기서 말하는 일반적인 목적의 컴퓨팅이란 데스크탑, 노트북, 스마트폰, 태플릿 등에서의 사용인 것인데 즉, 개인이 학습이나 테스트 목적으로 개인의 디바이스에 사용하는건 문제가 없다는 말이다.
반대로 특정 기능만을 위해 작동하는 시스템 및 솔루션에서 사용하는것은 일반적이지 않은 목적의 컴퓨팅이라 규정하고 있는데 이 표현이 모호하여 대부분의 상업 프로젝트를 진행하는 회사의 경우 라이센스 비용을 지불한다고 생각하는게 좋다.
그렇지만 모든 OracleJDK 가 유료인것은 아니고 2019년 01월 15일에 공개된 JDK 8u202 버전까지는 무료로 제공해주고 있다.
💬 OpenJDK 는 유료화 안되나요?
OpenJDK 는 JDK(Java SE) 의 오픈소스 구현체로 GPL v2 with the Classpath Exception 라이센스가 적용되어 무료이다.
많은 상업 벤더들이 구현체 개발에 참여하여 다양한 종류의 OpenJDK 가 존재하고 무료로 배포되고 있다.
💬 OpenJDK 는 OracleJDK 보다 성능이 떨어진다?
Jave SE 6 버전의 OpenJDK는 백포트 방식으로 구현되어 성능 저하 이슈가 존재했었다. 이로인해 OpenJDK 가 OracleJDK 에 비해 성능이 떨어질것이라는 인식이 생겼는데 Java SE 7부터 모든 JDK는 OpenJDK 레퍼런스 소스 코드를 기반으로 제작되도록 변경되어 두 JDK 간에 성능차이가 거의 없어졌다.
또한 오라클이 아닌 서드파티 업체가 OpenJDK를 기반으로 공인된 JDK를 제작하여 배포하려면 오라클의 엄격한 TCK 인증을 통과해야 한다. 수만가지의 테스트를 단 하나라도 통과하지 못하면 인증되지 않는다. 이러한 프로세스로 인해 OpenJDK 가 OracleJDK 보다 이슈나 트러블이 발생할 일은 없어졌다.
💬 그러면 무조건 OpenJDK 쓰면 되는거 아닌가요?
일반적인 서버 어플리케이션이나 오픈소스 솔루션은 OpenJDK 로 운영이 가능하기 때문에 굳이 OracleJDK 를 쓸 필요는 없다.
하지만 글꼴 라이브러리나 Java Web Start 와 같이 Oracle이 재산권을 보유하고 있는 플러그인 기능을 써야하는 경우 OpenJDK 에는 해당 플러그인이 제공되지 않기 때문에 쓸 수 없다.
💬 마무리
이 논란이 발생한건 꽤 오래전 일이지만 아직도 자세히 알지 못하는 사람들이 있는것 같아 자세히 정리된 블로그를 참고하여 정리해보았다.
이 논란이 한창 진행될때는 JDK 를 유료화하는 오라클을 단순히 미워(?)했지만 지금 생각해보면 OracleJDK 를 통해 수익구조를 만들었지만 동시에 OpenJDK 에 대한 운영도 주체가 되어 공존시킴으로써 Java 의 발전을 크게 위협하지 않는 선에서 나름 똑똑하게 수익구조를 만든것같다는 생각이 든다.
이런 똑똑한 전략이 있었기에 오늘날에도 Java 가 인기있는 언어로 손꼽히는게 아닐까 싶다.