상담 게시판

상담 내용
open source 검토시 java class 간의 관계에 대한 정의에 대해서 문의 드립니다.
  1. 작성일 :
  2. 2014.03.13
  3. 작성자 :
  4. rabbit
  5. 조회수 :
  6. 2723

수고하십니다.

open source 사용을 검토 중입니다.
C 및 C++ 을 사용하여 개발 할 때 open source license 검토시
open source 와 다른 모듈간의 결합 관계가
static libray / shared library 로 되어 있는가에 따라서 
책임 관계가 달라지는 것으로 알고 있습니다. 
 
그러면,
java virtual machine 에서 동작하는 java class 들은
open source license 에서 static library 와 같은 결합으로 간주 되는지,
아니면 shared library 와 같이 결합된 것으로 여기는지 알고 싶습니다.
 
추가로
OSGI 환경에서 동작하는 bundle 들은
static library 와 같은 결합을 갖는 것으로 간주되는지
shared library 와 같이 결합된 것으로 여겨지는지 알고 싶습니다.
 
감사합니다.
 
  1. 첨부파일
답변
답변 답변일 : 2014.03.14

안녕하세요. 위원회 SW보호팀 이석창 주임입니다.


모듈간의 결합 관계는 각 라이선스에서도 정의하는 바가 다르기 때문에 어떤 라이선스를 결합할 것인지 우선 확인하는 것이 좋습니다.
 

엄격한 조항을 가지는 GPL 2.0에서도 예외조항으로 "자바의 가상머신 및 컴파일러에서 사용되는 핵심 라이브러리를 사용한 독립된 SW는 GPL2.0으로 배포할 필요가 없다"고 인정하였습니다.
 

따라서 GPL 2.0조건의 자바 플랫폼(Java SE, Java EE)을 이용한 응용프로그램은 결합관계를 따지지않고 소스코드를 공개하지 않고 배포할 수 있습니다.(소스코드 공개를 하지 않고 GPL2.0으로 배포)
 

추가로, SGI 번들이 GPL 2.0으로 파악되는데 Java SE, EE가 아니기 때문에 독립된 프로그램인지, 파생된 프로그램인지는 구현방법 따라(아래 참고) 결합유무를 파악하셔야 할 것으로 보입니다.
 

* 참고
 독립된 프로그램과 파생된 프로그램인지는
  - 두개의 모듈이 동일한 실행파일에 포함되어 있거나 공유주소영역에서 링크되어 실행되도록 설계된 경우는 : 파생된 프로그램
  - 2개의 프로그램이(오픈소스와 내가 만든프로그램)이 파이프, 소켓, 명령행 인자 형태로 통신하는 경우는 : 독립된 프로그램
  - 플러그인의 경우 동적으로 링크되어 함수호출을 하고 데이터구조를 공유하는 경우 : 파생된 프로그램
  - 플러그인의 경우 fork와 exec를 이용하면 : 독립된 프로그램
  - 인터프리터나 컴파일러의 경우 원칙적으로 컴파일된 결과물과는 분리된 것으로 보지만, 컴파일 과정에서 라이브러리나 클래스가 결과물에 추가된 경우에는 라이브러리 또는 클래스와 결과물은 하나의 프로그램

감사합니다.
 

목록

관리자페이지
제목