자바( JAVA)의 유료화
자바(JAVA) 언어를 기반으로 개발을 진행하고 있는 회사, 개발자 그리고 고객사들에게 많이 알려져 있는 자바(JAVA) 유료화에 대해서 알아보도록 하겠습니다.
오라클(Oracle)의 인수
사실상의 유료화의 서막을 알린 시기는 2009년에 이루어졌다고 할 수 있습니다.
2009년 4월 20일 자바 언어를 가지고 있던 썬 마이크로시스템즈에서는 한 가지 중요한 사실을 발표하게 됩니다. 바로 썬 마이크로시스템즈는 더 이상 썬 마이크로시스템즈로 남아있지 않고, 오라클에 인수된다는 발표를 하게 됩니다. (오라클은 오라클이라는 데이터베이스 시스템을 가지고 있는 거대한 회사입니다. 오라클에 대해서는 나중에 시간이 될 때 DB 편에서 다루도록 하겠습니다.)
썬 마이크로시스템즈의 발표가 있고 이듬해 2010년 1월 27일에 오라클은 썬 마이크로시스템즈의 합병을 발표하게 됩니다.
이로써 썬 마이크로시스템즈는 역사의 뒤안길로 사라지게 되고, 오라클은 자바라는 막대한 언어와 넓은 생태계를 가질 수 있는 초석을 마련하게 됩니다.
오라클과 구글의 10년의 소송
이렇게 자바(JAVA)를 품 안에 넣게 된 오라클은 2010년 곧바로 구글 측에 저작권 침해 소송을 진행하게 됩니다.
조금 더 구체적으로 이야기를 해보면 오라클이 구글 측에 문제를 삼은 부분은 구글이 안드로이드 운영체제 개발과정에서 자바(JAVA) API 37개를 무단으로 사용했다고 주장하면서 저작권 소송이 시작되었습니다.
이번 소송의 승패를 가르는 주요 쟁점은 크게 2가지 정도를 꼽을 수 있습니다.
첫 번째로는 자바(JAVA)의 API를 저작권으로 인정할 수 있는가?
두 번째는 만약 자바(JAVA)의 API가 저작권으로 인정될 경우, 구글의 자바(JAVA) API 이용 행위는 공정이용에 해당되는가?
이 정도로 정리해 볼 수 있습니다.
구글 측에 유리하게 판단이 내려지게 되는 경우는 자바(JAVA)의 API는 저작권으로 인정이 안 되는 게 좋을 것이고 오라클에 유리하게 판단이 내려지게 되는 경우는 자바(JAVA)의 API가 저작권으로 인정이 되고, 구글의 자바(JAVA) API 이용 역시 공정이용으로 받아들일 수 없다는 판단이 좋을 것입니다.
10년이라는 긴 시간을 지나면서 양측은 서로에게 유리한 판단이 내려지기도 했지만 2021년 4월 미국 대법원에서 구글의 승리로 최종 판결이 내려지게 됩니다. 판결의 주요 내용을 정리해 보면 다음과 같습니다.
자바(JAVA) API는 저작권으로 인정되나, 구글의 안드로이드 개발 과정에서 자바(JAVA) API 사용은 공정이용에 해당한다. 따라서 구글의 저작권 침해 주장은 받아들일 수 없다.
자바(JAVA)는 무료, 툴(TOOL)은 유료
이와같은 소송의 내용을 보면 마치 자바(JAVA)라는 언어가 이제는 무료언어가 아닌, 유료언어인 것처럼 이해할 수 있는데요. 결론부터 말하면 자바(JAVA)라는 언어는 무료입니다.
자바(JAVA)라는 언어는 GPL(General Public License, 일반 공중 라이선스) 라이선스로서 언어 자체는 무료입니다. 다만, 소제목에서도 밝혔듯이 툴(TOOL)은 유료가 아닐 수 있는데요.
오라클이 JAVA라는 언어를 '소유'했다고 이해하기 보단, 기존에 썬 마이크로시스템즈가 개발 및 배포했던 JAVA SE, JAVA JDK들이 유료화되었다고 이해하면 좋을 듯합니다.
여기서 이번 포스팅의 주제로 본격적인 이야기를 해볼 수 있는데요.
오라클의 유료화 정책
먼저 오라클은 자바 기본 버전인 JAVA SE를 처음부터 지금까지 무료로 운영한 적인 한 번도 없습니다. 다만 2018년 6월까지 운영해 오던 라이선스 정책 때문에 우리가 '무료'라고 착각하면서 자바를 이용했을 뿐입니다.
오라클은 2018년 6월까지 BCL(Binary Code License)라는 라이센스 정책을 운영해오고 있었습니다. 이 라이선스 정책은
특수목적의 컴퓨터 환경에서 개발된 경우에만 유료이고, 일반적인 컴퓨터 환경(PC, 모바일, 태블릿 등)에서는 무료인 라이선스 정책이었습니다. 특히 거의 대부분의 자바(JAVA) 서비스는 여기서 말하는 일반적인 컴퓨터 환경 내에서 개발이 이루어지고 있었기 때문에 개발사들은 라이선스 정책에 대해 크게 신경 쓰지 않고 운영을 해왔었습니다.
그리고 오라클은 2018년 7월부터 기존의 라이센스 정책을 폐지하고, Java SE Subscription라는 이름의 연 단위의 구독형 라이선스 정책으로 라이선스 정책을 변경했습니다. 이번 라이선스 정책은 한마디로 자바(JAVA)를 이용하고 싶은 경우 매년 정해진 금액을 매월 납부하면서 자바(JAVA) 서비스를 이용하도록 정책의 방향이 변경되었습니다. 이러한 정책 변경은 크게 4가지 정도의 변화가 발생되었다고 생각됩니다.
첫 번째로는 구독형 라이선스 정책에 가입되어 있지 않을 경우 오라클의 지원을 받을 수 없는 점
두 번째로는 평균 6개월 정도의 버전 업그레이드를 통해 보다 향상된 자바(JAVA) 버전을 제공한다는 점
세 번째로는 특정 버전의 최종 업데이트 지원이 종료될 수 있는 점
네 번째로는 유료, 무료 이용의 기준의 모호성이 발생됨
이와 같은 변화는 다음의 추가적인 이슈가 발생될 수 있습니다.
첫 번째로는 라이선스 정책에 가입하지 않고 자바를 이용하는 경우 법적 처벌이 발생할 수 있게 되고
두 번째로는 버전 업그레이드에 따라 고객사가 개발사에게 버전 업그레이드를 빈번하게 요청하게 되고, 이에 따라 개발사는 버전 업그레이드에 따른 호환성 검증 작업이 많아질 수 있고
세 번째로는 특정 버전의 최종 업데이트 지원이 중단될 경우 시스템 안정성을 이유로 버전을 쉽게 올리지 못하는 거의 대부분의 시스템 운영사들이 서비스 지원을 받기 어렵고 또는 업데이트를 강제하게 되는 상황이 발생될 수 있습니다.
특히 문제가 되는 점은 바로 네 번째인데요.
예전 BCL 라이선스 정책에서의 무료 이용 대상은 일반적인 컴퓨터 환경에서의 자바 이용은 무료였기 때문에 개발사들은 JAVA SE, JAVA JDK(정확히 말하면 Oracle JDK) 이용에 있어 '유료가 되는 경우'를 크게 고려하지 않고 이용을 해왔지만 변경된 Java SE Subscription
정책에서의 유료 이용과 무료 이용의 기준은 아래와 같습니다.
무료 : '일반적인 목적'의 컴퓨팅 환경(데스크톱, 노트북, 스마프톤, 태블릿 등의 사용)
유료 : '일반적이지 않은 목적'의 컴퓨팅 환경에서의 사용(특정 기능만을 위해 작동하는 시스템 및 설루션에서의 사용)
변경된 무료, 유료의 기준이 언뜻 보면 기존의 BCL 라이선스 정책과 크게 다르지 않아 보이지만, 회사 입장에서는 '일반적인 목적'과 '일반적이지 않은 목적'의 기준이 모호하고, 그렇다고 오라클 측에 매번 시스템을 개발할 때마다 '이 기능을 도입하려고 하는데 이는 일반적인 목적인지, 일반적이지 않은 목적인지 답변을 부탁드립니다.'라는 식의 질의를 하고 답변을 기다리는 것도 사실상 어렵기 때문에 사실상 '유료'로 받아들일 수밖에 없습니다.
이와 같은 변화로 인해 기존의 개발사와 운영사는 보통 3가지 선택지를 고려하게 됩니다.
첫 번째로 비용을 지불하고 서비스를 제공받는 경우
두 번째로 현재의 시스템을 유지하거나, 라이선스 정책이 변경되기 이전 JDK 버전을 사용하는 경우( 이 경우 이용할 수 있는 JAVA 최고 버전은 JDK 1.8.202(JAVA SE 기준 8)입니다.)
마지막 세 번째로는 다른 회사에서 만든 JDK를 이용하는 것입니다.
두 번째의 현행 시스템 유지가 가장 쉬운 방법이지만, 날이 갈수록 변하는 시스템 환경과 보안이슈로 인해 두 번째 방법은 한시적인 방법일 뿐 결국 첫 번째 또는 세 번째 방법을 고려할 수밖에 없는데요. 개인적인 생각으로는 오라클의 이러한 정책의 변화로 많은 회사들과 스타트업들이 Open JDK 사용을 충분히 고려할 수 있다고 생각됩니다.
Open JDK
위에서도 언급했듯이 자바(JAVA)라는 언어는 무료입니다. 그러나 Oracle에서 만든 툴(Tool)은 유료입니다. 그렇다면 다른 회사에서 만든 툴(Tool)을 이용한다면 어떻게 될까요?
우리가 자바(JAVA)라는 언어를 이용하기 위해서는 꼭 Oracle의 JDK를 이용할 필요는 없습니다. 자바(JAVA)는 어디까지나 무료 언어니까요! 만약 이 글을 읽고 있는 분들이 개발자이거나 또는 개발사일 경우 Open JDK를 이용하는 것도 고려해보면 어떨까 싶습니다. (저의 경우 TEMURIN JDK를 이용해서 개발을 진행하고 있습니다.)
Oracle JDK의 경우 자바(JAVA)라는 언어를 관리하는 기업에서 직접 JDK를 만들어서 배포하고 서비스하고 있기 때문에 안정성에 있어서는 신뢰도가 높은 편입니다. 그렇다고 해서 다른 기업과 단체에서 만든 JDK가 문제가 있냐고 하면 꼭 그렇지만은 않다고 생각합니다
실제로 많은 기업들은 자사가 만든 JDK의 신뢰도를 높이고, 공인된 JDK를 배포하기 위해 오라클의 유료 라이선스인 OCTLA에 가입하고 TCK라는 테스트를 통과해야 합니다. (TCK는 테스트의 일종으로 해당 회사가 만든 JDK에 문제가 있는지를 검증하는 과정을 말합니다. 이때 여러 가지 테스트를 진행하게 되며 1건이라도 문제가 생길 경우 승인되지 않습니다.)
이러한 엄격한 테스트를 거쳐서 만들어지는 JDK이기 때문에 개인적인 생각으로는 비용은 부담스럽고, JDK 업그레이드는 꼭 필요한 경우에는 좋은 대안이 되지 않을까 생각해 봅니다. (보편적으로 알려져 있는 JDK회사로는 Azul, RedHat, TEMURIN 등이 있습니다.)
마치며
자바(JAVA)라는 언어는 30여 년을 바라보는 언어입니다. 그만큼 많은 사람들이 이용하고 있고, 정책의 변화에 따라 개발사들의 기업운영에도 많은 영향을 미치게 됩니다. 특히 우리나라의 경우 자바(JAVA)를 이용함에 있어 '무료'라는 인식이 워낙 강하다 보니 일련의 '유료화' 움직임에 더 민감하게 반응하고 있지 않나 생각해 봅니다. 일부의 경우 반대로 최대한 버티자 라는 생각도 하고 있습니다. 실제로 한국 오라클의 경우 자바(JAVA) 라이선스 이용에 대해 적극적인 감사 활동은 펼치고 있진 않으니까요.
개인적으로 서비스를 만듦에 있어서 가장 중요한 건 이 서비스를 만들 때 어떤 언어를 선택해서 만들어야 완성도가 높을지를 고민하면서 개발하는 것이 좋은 방향이라고 생각하지만, 그럼에도 불구하고 이러한 '유료화' 이슈는 개발자가 개발언어를 선택할 때 자바(JAVA)라는 언어의 선택을 주저하게 만드는 요인 중의 하나로 작용하고 있다는 점도 부인할 수 없는 사실이지 않나 싶습니다. 그렇다고 개발언어를 선택하거나 또는 이미 자바(JAVA)로 개발이 완료되어 운영하고 있는 서비스의 경우 이러한 '유료화'라는 이슈에 너무 겁먹을 필요는 없다고 생각합니다. 자바(JAVA)라는 언어가 시간이 지남에도 여전히 중요한 개발 언어로 자리 잡고 있고 대체가 가능한 Open JDK도 분명히 존재하기 때문에 큰 걱정은 하지 않으셔도 된다고 생각합니다.
'IT > JAVA' 카테고리의 다른 글
[JAVA] 06. 자바(JAVA) JDK 설치 - Open JDK 설치 (Temurin JDK) (1) | 2023.02.24 |
---|---|
[JAVA] 05. Oracle JDK 설치 (3) | 2023.02.22 |
[JAVA] 04. 자바(JAVA) 용어 정리 - JVM, JRE, JDK (0) | 2023.02.20 |
[JAVA] 03. 자바의 5가지 특징 (0) | 2023.02.16 |
[JAVA] 01. 자바란 (1) | 2023.01.27 |