'OSGI'에 해당되는 글 2건

  1. 2011.05.17 OSGi - 초간략
  2. 2011.03.18 OSGi - 1. "Hello World" in OSGi (1)
2011.05.17 16:16
 연구실 선배인 semix2님께서 주신 OSGi문서 하나를 빠르게 스킵해봤습니다. 
 틀리거나 오해하는 부분이 있을 수도 있으니 (많을 겁니다 -..-) 지적 부탁드립니다.



 OSGi framework에서 핵심적인 부분은 bundle이다. 기존의 jar파일의 부족한 점을 보완하고자 메타데이터를 넣은 bundle로(메타데이터만 넣으면 bundle이라는 이야기는 아니다!) 많은 것을 가능하게 하였다.

 기존의 개별 프로그램별 클래스로더의 개념에서 모든 컴포넌트들이 사용할 수 있는 클래스로더로 바꾸어서 진정한 의미의 모듈화를 가능하게 하였고, 이들을 효과적으로 이용하기 위해서 번들간 Dependency를 정의 해주고, bundle들을 관리해주는 dynamic services의 제공, 이들 서비스들간의 연계를 위한 declarative services 등을 framework차원에서 지원해준다. 

 J2EE와 같은 heavyweight framework와 달리 lightweight framework인 OSGi는 많은 것을 해주지는 않는다. 하지만 OSGi가 해주는 일들은 정말 강력한 부분이고, 이 특징들만이 필요한 경우가 많으므로 오히려 가벼운것이 강점이라고 생각된다.
 또한 간과하면 안되는 강력한 특징은 기존의 jar파일에 메타데이터의 추가만으로 프레임워크에 융합시킬수 있다는 것이다.(물론 컴포넌트의 복잡도 등에 따라 쉬운일이 아닐수도 있다.)




 이클립스 RCP를 해봐서 무엇인지 손에는 잡힐듯한데 말로 설명한다거나 강좌를 하는것은 조금 무리라는 생각이 드네요. 공부가 더 된다면 고려해보겠습니다 ^^;

 OSGi에 대해서 감이 안오신다면 한글로 번역된 간단한 블로그하나를 소개합니다.
http://xguru.net/443
신고

'OSGI' 카테고리의 다른 글

OSGi - 초간략  (0) 2011.05.17
OSGi - 1. "Hello World" in OSGi  (1) 2011.03.18
Posted by JAVA_HOME

댓글을 달아 주세요

2011.03.18 10:52

Dynamic Module System for Java로 알려진 OSGi에 대해서 공부해보려고 합니다.

 Eclipse RCP를 하다 그 기반이 되는 Framework에 대해서 공부해보라는 조언을 받아 시작하였는데 이제 막 시작한 단계이니 많은 실수를 할 것 같습니다. 많은 지적 부탁드립니다 (_ ._)

 연구실에서 세미나에서 OSGi 개념과 장점 등을 말로 해버렸더니 무슨말인지도 잘 모르겠고 와닿지도 않는다고해서 실제로 Bundle 하나를 만들어서 사용해보는 것으로 첫번째 포스팅을 하겠습니다. 

 OSGi의 implementation은 Knopflerfish, Equinox, Apache Felix 등이 있지만 주로 Equinox를 사용할 예정이며 Gui적 요소가 있는 Knopflerfish도 가능하다면 다루어볼 예정입니다.

우선 Eclipse IDE 혹은 Plug-in development를 설치한 뒤 New Plug-in Project를 합니다.
 


범용으로 쓰일 번들이므로 OSGi framework를 standard로 변경한뒤 나머지 값은 default로 둡니다.


 모든 프로그램의 시작은 Hello World!  따라서 Templates를 이용하겠습니다.




기존에 Plug-in 을 개발해보신 분이라면 뭔가 썰렁하다는 느낌을 받으실 수도 있겠습니다.

Activator.java 와 MANIFEST.MF입니다.


우선 실행을 해봅시다. Ecliipse 상에서 실행을 해봐도 되겠지만 다른 implementation에서도 이용가능한지를 보기위해 export해서 Console에서 해봅시다. 
MANIFEST.MF에서 Exporting / 4번의 Export Wizard를 사용하면 jar파일이 나옵니다. (편의상 HelloWorld.jar로 이름을 바꾸었습니다.)

Equinox에서의 실행


Knopflerfish에서의 실행(install은 file에서 open-bundle을 사용하였습니다.)



OSGi는 표준이므로 이를 구현한 Equinox와 Knopflerfish 모두 잘 동작하는 것을 볼 수 있습니다. 
이제 번들 내부를 jar로 바꾸어 보겠습니다.



위의 java 코드를 일반 jar로 export한뒤 이를 bundle의 classpath에 추가해줍니다.
그리고 아래와 같이 Activator.java를 수정해줍니다.


그리고 Version control도 함께 시험해보기 위해서 버젼을 수정한 뒤 export.

Equinox에서의 결과입니다.


위와 같이 새로 만든 2.0.0 버전(id 15)이 잘 동작하는 것을 볼 수 있고, 기존의 1.0.0(id 11)과의 공존을 통해서 Version Control도 확인 할 수 있었습니다. 

 다음 포스팅은 번들에 대해서 심도있게 다뤄보겠습니다.

Reference :
http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html
http://www.ibm.com/developerworks/kr/library/os-ecl-osgiconsole/ 

 
신고

'OSGI' 카테고리의 다른 글

OSGi - 초간략  (0) 2011.05.17
OSGi - 1. "Hello World" in OSGi  (1) 2011.03.18
Posted by JAVA_HOME

댓글을 달아 주세요

  1. JAVA_HOME 2011.03.18 14:51 신고  댓글주소  수정/삭제  댓글쓰기

    로드된 bundle을 보는 명령어는
    Equinox = ss / Felix = lb / Knopflerfish = bundles 입니다.


티스토리 툴바