'Java' 카테고리의 다른 글
Java로 Snail Queue 구현하기: 큐의 변형된 활용법 (0) | 2024.11.07 |
---|---|
Spring Test Suite 3 (STS 3) 다운로드 (0) | 2020.12.24 |
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
ToBinaryString (0) | 2019.02.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
Java로 Snail Queue 구현하기: 큐의 변형된 활용법 (0) | 2024.11.07 |
---|---|
Spring Test Suite 3 (STS 3) 다운로드 (0) | 2020.12.24 |
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
ToBinaryString (0) | 2019.02.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
Spring Test Suite 3 (STS 3) 다운로드 (0) | 2020.12.24 |
---|---|
자바(Java) 멀티쓰레드(multi-thread) (0) | 2019.07.11 |
ToBinaryString (0) | 2019.02.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
J2SE 8 documentation CHM Html Help file (0) | 2018.01.11 |
자바(Java) 멀티쓰레드(multi-thread) (0) | 2019.07.11 |
---|---|
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
J2SE 8 documentation CHM Html Help file (0) | 2018.01.11 |
[github] OpenJDK 1.8 Windows (0) | 2018.01.09 |
출처: https://okky.kr/article/490213
#490213 Tips & 강좌
안녕하세요.
최근 Oracle JDK의 유료화 논란으로 제 블로그에 정리했던 글을 가져왔습니다. 출처만 남겨주시면 자유롭게 퍼가셔도 됩니다.
http://jsonobject.tistory.com/395 (지단로보트의 블로그)
Java 애플리케이션을 실행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 일반적으로 JDK를 설치하면 JVM(Hotspot이라고도 표현, Java 기술의 핵심)도 함께 설치된다.
JDK는 2개 버전으로 나뉜다. 하나는 폐쇄적인 상업 코드 기반의 Oracle JDK
이고 하나는 오픈 소스 기반의 OpenJDK
이다.
둘 간의 큰 차이라면 Oracle JDK는 OpenJDK에는 없는 재산권이 걸린 플러그인을 제공한다. 해당 플러그인은 Oracle이 재산권을 보유하고 있다. (보다 정확히 설명하면 Oracle이 인수하여 없어진 Sun Microsystems 시절의 유산이다.) [관련 링크]
Oracle JDK에 존재하고 OpenJDK에는 없는 대표적 기능으로 글꼴 라이브러리와 Java Web Start가 있다. 사용자의 웹 브라우저에서 자바 애플릿을 실행하려면 필요한 기능이다. 서버 애플리케이션 개발에는 쓰이지 않는 기능들이다.
제공되는 기능적 차이 외에 Java 6 시대에는 분명히 OpenJDK가 Oracle JDK보다 성능이나 안정성이 크게 떨어졌다. 하지만 오늘날에는 Oracle JDK만이 제공하는 일부 라이브러리를 제외하고는 차이가 없다. [관련 링크]
Java의 무료 논쟁은 2011년 오라클이 소유권을 가지면서 시작되었다. 일단 명확히 해야할 점은 Java라는 프로그래밍 언어 자체는 GPL 라이센스로 무료이다. [관련 링크] 그렇지 않다면 오늘날 Java가 시장지배적인 언어가 되지 못했을 것이다. 중요한 부분은 Java로 작성한 프로그램을 컴파일(JDK)하고 실행(JVM)시키는 데 있다.
JDK와 JVM을 제공하는 OpenJDK
은 GPL v2 with the Classpath Exception 라이센스로 무료이다.
문제는 Oracle JDK
이다. 결론부터 이야기하면 Oracle JDK는 사용 목적에 따라 무료일수도 유료일수도 있다. 먼저 Oracle JDK(Java SE)의 구성 요소를 살펴보면 아래와 같다.
1. JDK
2. JRE(JVM)
3. JavaFX SDK
4. JavaFX Runtime
5. JRockit JDK
Oracle JDK는 BCL(Oracle Binary Code License) 라이센스로 위 기능을 일반적인 목적의 컴퓨팅(General Purpose Computing)에만 사용시 무료라고 밝히고 있다. [관련 링크] 일반적인 목적의 컴퓨팅이란 무엇일까? 오라클은 데스크탑, 노트북, 스마트폰, 태플릿 등에서의 사용이 이에 해당한다고 설명하고 있다. 즉, 개발환경에서는 사용에 있어 아무 문제가 없다.
일반적이지 않은 목적의 컴퓨팅(Non-General Purpose Computing)은 별도의 라이센스비를 지불해야 하는 유료 과금 대상이 된다. 오라클은 특정 기능 만을 위해 작동하는 시스템 및 솔루션에서의 사용이 이에 해당한다고 설명하고 있다. 이 부분의 애매한 표현 때문에 대부분의 상업 프로젝트를 진행하는 회사들은 OpenJDK를 사용한다.
Java SE Subscription
라는 이름의 년 단위 유료 구독형 라이센스로 새롭게 개편되었다.OCTLA
에 가입해야 한다. 현재 전세계에 19개 업체가 가입되어 있다. [관련 링크] 이 업체들이 OpenJDK 기반의 자체 빌드를 배포하려면 오라클의 엄격한 TCK
인증을 통과해야 한다. 수만가지의 테스트를 단 하나라도 통과하지 못하면 인증되지 않는다.Azul Systems
가 있다. 개발 환경과 운영 환경 모두 Oracle JDK의 대안으로 좋은 평가를 받고 있다. [관련 링크] OpenJDK의 명세는 JCP(오라클, IBM, SAP 등으로 구성)에 의해서 결정된다. OpenJDK는 결정된 스펙(Java SE 7: JSR 336, Java SE 8: JSR 337)을 구현한 레퍼런스 소스 코드이다. 많은 상업 JVM 벤더들이 이 OpenJDK 레퍼런스 소스 코드를 기반으로 각자의 JVM을 제작한다. 엄격한 테스트의 TCK
인증을 통과하면 OpenJDK를 완벽히 준수하는 구현체로 인정된다. Oracle JDK 또한 Java SE 7부터 이 OpenJDK를 기반으로 앞서 설명한 추가 요소를 담아 배포한다. [관련 링크]
Azul Systems
(미국 소재의 Java Runtime 제작 전문 회사)는 Zulu
라는 OpenJDK 기반 빌드에 부가 기능을 추가한 Windows, Linux, Mac OS X 바이너리를 무료로 제공한다. 이 회사는 서버 부하에 최적화된 Zing
이라는 JVM을 판매한다. 엔터프라이즈 시장에서 Oracle JDK의 대안으로는 현재 독보적 위치에 있다. 테스트에서 Oracle JDK보다 성능이 좋았다는 사례도 있다. [관련 링크] 실제로 고성능을 요구하는 Cassandra 노드들은 Zing 기반으로 운영된다. [관련 링크]
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
---|---|
ToBinaryString (0) | 2019.02.10 |
J2SE 8 documentation CHM Html Help file (0) | 2018.01.11 |
[github] OpenJDK 1.8 Windows (0) | 2018.01.09 |
[팁] 윈도우즈에서 Tomcat 6 와 JRE/JDK 1.6 설치 시의 문제점 (2) | 2007.09.06 |
* 자료 출처: https://javadoc.allimant.org/
[Java Docs]
Oracle에서 제공해주는 html 형식의 java docs 파일이 아닌 chm 으로 된 파일 입니다. 문서는 14년 버전입니다. 좀 오래 된거죠.
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
---|---|
ToBinaryString (0) | 2019.02.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
[github] OpenJDK 1.8 Windows (0) | 2018.01.09 |
[팁] 윈도우즈에서 Tomcat 6 와 JRE/JDK 1.6 설치 시의 문제점 (2) | 2007.09.06 |
https://github.com/ojdkbuild/ojdkbuild
(1) 윈도우즈(Windows)용 OpenJDK 빌드를 제공해주는 싸이트를 소개합니다. (위의 링크)
(2) 1.8 이상의 상위 버전도 모두 제공되며, 32비트(x86)/64비트(x64) 윈도용이 모두 지원됩니다.
: 참고로 eclipse 및 IntelliJ는 해당 JDK에서 구동시 정상 작동합니다. (2018년 1월 기준)
(3) Oracle JDK 와 달리 인증 테스트를 거치지는 않았습니다! https://github.com/ojdkbuild/ojdkbuild#faq
(azul zulu, amazon jdk 등은 인증 테스트를 통과한 빌드입니다.)
(4) 하단의 첨부 파일은 64비트용 OpenJDK 1.8 입니다.
(7zip 으로 압축. 해제는 반디집, 알집 등으로 가능)
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.001
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.002
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.003
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.004
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.005
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.006
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.007
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.008
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.009
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.010
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.011
openjdk-1.8-x64-from-github.com-ojdkbuild.7z.012
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
---|---|
ToBinaryString (0) | 2019.02.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
J2SE 8 documentation CHM Html Help file (0) | 2018.01.11 |
[팁] 윈도우즈에서 Tomcat 6 와 JRE/JDK 1.6 설치 시의 문제점 (2) | 2007.09.06 |
간만(?)에 새 서버에 tomcat 을 설치하려고, 자바를 http://java.com/ 에서 받아서
설치 한 후에, http://tomcat.apache.org/ 에서 톰캣 6를 받아서 설치 후, (여기까지는 문제없다.)
NT 서비스로 야웅이를 돌리려고 했는데, 갑자기 에러!!!
... [174 javajni.c] [error] ...
... [947 prunsrv.c] [error] ...
어쩌구, 하는 오류였다.(된장찌개...)
간만이라 그런가 하고 몇 번 해보았지만 계속 실패!! (jdk 로도 해보고, jre 로도 해보고...)
뭐...좋아...인생이란 그런거니까(?)...
그러다가 살펴 보니, 톰캣 설정 창에 다음같은 부분이 있었다.
Java Virtual Machine: 란을 보면 c:\java\jre...\jvm.dll 로 되어 있다.
그래서, 왠지 이상한 직감(?)과 구글링에 입각하여서,
dependency walker 로 jvm.dll 과 tomcat.exe 를 살펴 보았다.
그랬더니, jvm 은...
... msvcr71.dll 을 사용하는 것이 아닌가!!(결국 썬도 gcc 가 아닌 vc로 빌딩한다는 이야기인데...)
요걸 system32 폴더에 넣어 주고, 다시 톰캣 서비스를 돌리자 성공!!!!
쩝...문제는 jvm 배포본 문제였다. jvm 1.5 등으로 설정을 하면 그냥 넘어가는 문제이다....
...이런 걸 해결하려면, 윈도에서는 윈도 프로그래밍 지식이, 그리고 리눅스에서 각 플랫폼별 지식이
선행되어야 해결할 수 있는 이슈이다. (물론 가상머신 소스 받아서 직접 빌딩한다면야 할말 없지만...)
썬, 왜그랬썬!!!
데코레이터 패턴과 자바 입출력 (0) | 2019.07.10 |
---|---|
ToBinaryString (0) | 2019.02.10 |
[펌] Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.08.07 |
J2SE 8 documentation CHM Html Help file (0) | 2018.01.11 |
[github] OpenJDK 1.8 Windows (0) | 2018.01.09 |