티스토리 뷰

반응형

아주 자극적인 제목같지만, 사실 커뮤니티 등에 아주 많이 올라오는 표현을 그대로 빌어온 겁니다.
Oracle 은 Java SE 에 대해서 유료화 모델을 발표했고, 상업적 목적으로 이용시 어떻게 해서든 과금을 할 수 있는 정책이었습니다.

회사에서 일을 하는 직원이든, 프리랜서로 개발을 하든, 심지어 개인 사이트를 만들어서 유료모델을 가지고 수익을 창출하고 있든, 모두 돈을 내야 OracleJDK 을 이용할 수 있다는 것입니다.

사실상 돈을 내야만 개발할 수 있는 언어는 거의 없습니다. MS 에서 제공하는 개발언어들(Visual C++, C#.NET 등)도 표면적으로는 무료로 개발하고 서비스 할 수 있고, 수많은 무료 개발언어들이 많습니다. Java 가 아무리 세계적으로 가장 높은 점유율을 가지고 있다고 해도 개발할 때에도 돈을 내고 JVM 을 구입해야 한다면 누가 이용하려고 할까요? (심지어 월/연 결제)

여기서 짚고 넘어가야 할 것이 있습니다. 과연, JVM == OracleJDK 인가 말입니다.

결론적으로 말하자면, 정답은 틀렸다 입니다. 이게 사실과 다르다(아니, 틀렸다)는 걸 전제로 한다면 위에서 언급한

개발할 때에도 돈을 내고 JVM 을 구입해야 한다면

개발할 때에도 돈을 내고 OracleJDK 을 구입해야 한다면

가 아님을 주목해야 합니다. 즉, 개발할 때에 OracleJDK 을 이용하려면 돈을 내야 하지만, 다른 JVM 을 이용한다면 돈을 내지 않아도 될 수 있다는 것입니다. JVM 이 뭔지 정확히 알지 못해도 대충 이렇게 이해가 될 것입니다.

그럼 왜 JVM != OracleJDK 인데 사람들은 반대로 알고 있었을까요?

저의 추측은 이렇습니다.

먼저 Java 라는 언어를 Sun 에서 만들었고, SunJDK 을 만들어서 배포했습니다. 그리고 Sun 에서는 여러 OS(Windows, Linux, Solaris 등)을 위한 배포버전을 무료로 제공해왔습니다. 이후 Oracle 로 Sun 이 인수되었지만 이러한 부분은 변경되지 않았습니다. 굳이 사람들이 SunJDK 나 OracleJDK 가 아닌 다른 JDK 를 쓸 이유도 없었습니다.
하지만, AIX 와 같은 UNIX 에서는 오래전부터 별도의 JDK 을 이용해왔습니다. 또한 BEA 와 같은 회사에서도 별도의 JDK 을 만들어서 사용중입니다. 하지만, 이러한 환경에서 OracleJDK 을 이용하지 않고 개발하는 인력의 수는 극히 미미하기 때문에 JVM == OracleJDK 이라는 잘못된 선입견이 생겼다고 추측합니다.

현재의 JVM 은 어떻게 만들어지는지 짚고 넘어가야 합니다.
Java 는 JCP(Java Community Process)라는 기구를 만들어서 JSR 이라는 표준규약을 먼저 제정합니다. JCP 의 회원들은 각기 지분을 가지고 있으며, 지분율에 따라 의사결정에 대한 투표를 할 수 있습니다(마치 회사의 주주총회와 같은 형태입니다). 이렇게 JSR 이라는 규격이 제정되면 OpenJDK 이라는 구현체가 만들어집니다. 이 구현체를 가지고 각 회사나 커뮤니티들은 JRE/JDK 등을 개발하게 됩니다. Oracle 역시 OpenJDK 을 가지고 표준을 벗어나지 않는 범위 내에서 수정을 하거나, 추가적인 기능을 덧붙입니다. 이렇게 수정된 OracleJDK 을 포함한 다른 JRE/JDK 들은 TCK(Java Technology Certification Kit) Tool 을 이용해서 표준 구현이 되었는지 확인하고 인증을 받게 됩니다. 그리고, 현재 TCK 인증기관은 Oracle 입니다.

여기까지 읽은 뒤에도 JVM == OracleJDK 이라고 할 수 있을까요?

그럼 OpenJDK 은 어디서 얻을 수 있을까요? 바로 http://jdk.java.net 입니다. 이 사이트에서 각 OS 에 맞게 빌드된 OpenJDK 을 다운로드 받을 수 있습니다. 하지만, 다양한 OS 을 지원하진 않습니다. 대부분의 사용자는 개발을 위해 Windows 에서 동작하는 JDK 가 필요하기 때문입니다. 각 서버에서는 OS 제공자가 TCK 을 거쳐 호환성이 입증된 빌드 버전을 별도로 제공해주고 있습니다. 그러므로 OS 의 배포 시스템을 이용해서 내려받을 수 있을 것입니다.
또다른 방법으로 https://adoptopenjdk.net 와 같이 OpenJDK 소스를 빌드해서 제공해주는 곳에서 다운로드 받는 방법입니다. 이러한 형태는 RedHat Enterprise Linux(줄여서 RHEL)의 오픈된 소스를 이용해서 만들어지는 CentOS 같은 곳에서 발견할 수 있습니다. 대부분의 사용자들은 CentOS 만 알고 있겠지만, 초창기에는 White Box Linux 와 같이 RHEL 을 이용해서 만들어지는 다른 배포판도 존재했었고, 이는 OpenJDK 을 이용해서 여러 JVM 이 만들어지는 것과 유사하게 생각하시면 됩니다. 만약 CentOS 가 유료화된다면 White Box Linux 와 같이 또다른 배포판이 나오겠죠?

추가로 알아볼 것은 사용과 기술지원의 범위입니다. 기업은 사용 및 기술지원 모두 유료라고 생각하면 속편합니다. 하지만 개발자는 설치해서 사용하는 데에는 비용이 들지 않습니다. 단지 패치와 기술지원을 원할 경우 유료로 제공되는 Subscription 을 구입해야 합니다. 그러므로 일차적으로는 Java 을 이용해 개발하는 곳이 문제가 아니라 사용하는 곳이 더 큰 문제이니 제품을 개발해서 타 회사나 기관에 납품을 한다면 납품처에게 OracleJDK 에 대한 유료 구독 혹은 OpenJDK 로의 전환을 권고해야 합니다.

마지막으로 참고 자료 하나를 링크해두고 갑니다.

https://en.wikipedia.org/wiki/List_of_Java_virtual_machines

위 링크에는 JVM 목록을 제공하고 있습니다. 의외로 많은 수의 JVM 이 있었다는 것에 놀랄 것이고, 의외로 Windows 에서 사용할만한 JVM 이 없다는 것에 또 놀랄 것입니다. 그래서 Azul Systems 의 Zulu 같은 JVM 이 많이 선호되고 있습니다.


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함