OSGi (open service gateway initiative)


OSGi는 가전제품이나 보안시스템 등의 장치들을 인터넷에 접속하는 표준방식에 관한 산업계의 계획이다. 이러한 표준을 통해, 일반 가정의 사용자들 조차 보안시스템을 설치할 때 새로운 배선이나 장치를 설치하지 않고서도 기존의 모니터링 서비스로부터 또 다른 시스템으로 변경할 수 있을 것이다. 서비스 게이트웨이는 가정이나 기업용 주변기기 네트웍과 인터넷 간의 게이트웨이였던 컴퓨터 내에 있는 하나의 애플리케이션 서버가 될 수 있다. OSGi는 서비스 제공업체와 가정 및 소규모 기업망 내에 있는 장치들 사이에서 통신 및 제어를 할 수 있게 하기 위한 프로그래머용 API를 지정하였다. OSGi의 API는 자바로 만들어졌기 때문에, 일반적으로 어떠한 운영체계를 가진 플랫폼에서도 동작이 가능하다. OSGi는 개방형 표준 프로그래밍 인터페이스이므로, 각종 변경사항들은 자바 커뮤니티 프로세스를 통하여 진화될 것이다. OSGi는 TV 셋톱박스, 케이블 모뎀, 알람 시스템, 에너지 관리 시스템은 물론 블루투스 무선 주변기기 그룹들을 새로운 지니 가전제품에 연결시키는 것을 목적으로 하고 있다. 서비스 게이트웨이는 상호접속과 관련해 관리가 전혀 필요 없도록 하기 위한 의도를 가지고 있다.


일부 잘 알려져 있는 인터넷 접속기기의 응용사례들로는, 가정에서의 에너지 사용량 검침, 원격지에서도 집안을 모니터하고 제어할 수 있는 가정용 보안 시스템, 집에서 가료중인 중환자의 지속적인 관찰, 가정용 가전기기의 고장 예측 등이 예상된다.


출처 - http://terms.co.kr/OSGi.htm


===================================================================================


OSGi Service Platform
개발원OSGi Alliance
최신 버전(Core) 4.1 / 2007 년 5 월 
(Mobile) 4.0.1 / 2006 년 9 월
대응 OSJava
종별표준화 단체
라이센스OSGi Specification License
공식 사이트www.osgi.org


OSGi Alliance (기존 명칭은 Open Services Gateway initiative)은 1999 년 3 월에 설립 된 표준화 단체 . 원격으로 관리 할 수있는 Java 기반의 서비스 플랫폼을 정의하고있다. 이 사양의 핵심은 애플리케이션 라이프 사이클의 프레임 워크 와 서비스 레지스트리 이다. 그 프레임 워크를 기반으로 많은 OSGi 서비스가 정의 된 ( 로그 ,구성 관리 , HTTP 서비스 ( Java Servlet ), XML 구문 분석, 기기 접속, 패키지 소프트웨어 관리 기본 권한 관리, 사용자 관리, I / O 연결 결선 관리, Jini , UPnP 내 응용 프로그램 모니터링, 선언적 서비스, 전력 관리, 장비 관리, 보안 정책, 진단 / 모니터링 프레임 워크 계층 등).

목차

  [ 숨기기 ] 

OSGi 프레임 워크의 범위 편집 ]

이 프레임 워크는 독립형 Java / VM 환경이 결여 완전 동적 구성 요소 모델을 구현하고있다. 응용 프로그램 소프트웨어 와 ( "번들; bundle"형식으로 배포되는) 구성 요소는 원격 설치 기동 · 정지 · ( 재부팅 없이) 제거 할 수있다. Java 패키지 및 클래스 관리는 상세하게 규정되어있다. 라이프 사이클 관리, 원격 관리 정책을 다운로드 하여 API 를 통해 이루어진다. 서비스 레지스트리는 번들이 새로운 서비스와 소멸 한 서비스를 자동 감지하고 적절하게 대응한다.

원래 목적은 서비스 게이트웨이의 사양 이었지만, 가동 퍼져 나갔다. OSGi 사양은 휴대 전화 에서 오픈 소스 Eclipse IDE 까지 폭넓게 응용되고있다. 그 밖에도, 자동차 , 공장 자동화 , 빌딩 관리 시스템 , 정보 단말기 , 그리드 컴퓨팅 , 엔터테인먼트 (예 iPronto ), 애플리케이션 서버 등에 응용되고있다.

사양 책정 과정 편집 ]

OSGi 사양은 구성원에 의해 개방 된 형태로 개발되고 OSGi Specification License 에 의해 배포 후 변경도 자유롭게되고있다. OSGi Alliance는 회원사를위한 인증 프로그램을 실시하고있다. 2010 년 11 월 현재 인증 된 OSGi 구현 은 R4.0에서 6 명, R4 V4.2에서 3 예이다 ( list of certified ).

조직 편집 ]

OSGi Alliance는 1999 년 3 월, 썬 마이크로 시스템즈 , IBM , 에릭슨 등에 의해 설립 된 (이전에 모체가 된 Connected Alliance는 제휴 관계가 존재했다).

2006 년 현재 35 개 업체가 다양한 업종에서 참여하고있다 ( 노키아 , 모토로라 , 필립스 , ProSyst , BenQ , 텔레포니카 , BMW , 삼성 전자 , 독일 텔레콤 , BEA 시스템즈 , 미쓰비시 전기 , 일본 전기 , NTT , 오라클 , 레드햇 , 히타치 , 인텔 등).

각 분야위원회를 설치하고, 각 분야의 임원이 선출되어있다. 상업화에 관해서는 별도로위원회를 설치하고, 그것과는 별도로 사양 책정은 전문 그룹이 실시하고있다.

전문 그룹은 모바일, 자동차 핵심 플랫폼의 3 가지가있다. 새로운 엔터프라이즈 분야의 전문 그룹의 설치가 계획되어있다.

커뮤니티 편집 ]

2003 년 10 월, 노키아 , 모토로라 , ProSyst 등의 OSGi 회원사가 새로운 모바일 전문 그룹 (Mobile Expert Group)을 결성, MIDP 기반 차세대 휴대 전화 용 서비스 플랫폼을 개발하고있다. 여기에서는 CLDC 이 감당할 수없는 부분에 대한 대응을하고있다. 이 사양은 OSGi Release 4 일부로 공표되어있다.

2003 년, Eclipse 는 IDE 플랫폼 및 Eclipse Rich Client Platform 의 플러그인 아키텍처의 실행 환경으로 OSGi 사양을 채택했다. Eclipse는 OSGi 번들 개발 도구가 포함되어 있으며, 따라서 플러그인도 각종 준비되어있다 (특히 ProSyst 과 Knopflerfish 가 OSGi 개발자 Eclipse 플러그인을 제공하고있다).

OSGi 사양 관련 자유 소프트웨어의 개발도되어있다. 예를 들어, Equinox OSGi , Apache Felix , mBS Equinox Edition 등.

사양 버전 기록 편집 ]

  • 핵심 사양
    • OSGi Release 1 (R1) : 2000 년 5 월
    • OSGi Release 2 (R2) : 2001 년 10 월
    • OSGi Release 3 (R3) : 2003 년 3 월
    • OSGi Release 4, Version 4.0 : 2005 년 10 월
    • OSGi Release 4, Version 4.0.1 : 2006 년 9 월
    • OSGi Release 4, Version 4.1 : 2007 년 5 월
    • OSGi Release 4, Version 4.2 : 2009 년 9 월
  • 모바일 사양
    • OSGi Release 4, Version 4.0.1 : 2006 년 9 월

관련 정보 입수 편집 ]

관련 RFC 및 Java 표준 편집 ]

  • RFC 2608 ( Service Location Protocol )
  • Sun Jini ™ (Java Intelligent Network Infrastructure)
  • Sun JCP JSR-8 (Open Services Gateway Specification)
  • Sun JCP JSR-232 (Mobile Operational Management)
  • Sun JCP JSR-246 (Device Management API)
  • Sun JCP JSR-249 (Mobile Service Architecture for CDC)
  • Sun JCP JSR-277 (JavaTM Module System)
  • Sun JCP JSR-291 (Dynamic Component Support for JavaTM SE)

관련 표준 편집 ]

도서 편집 ]

관련 항목 편집 ]

외부 링크 편집 ]


===================================================================================


OSGi(Open Service Gateway initiative) Alliance는 1999년에 썬 마이크로시스템즈IBM에릭손 등이 구성한 개방형 표준 단체이다. (OSGi Alliance는 처음에 Connected Alliance라고 불렸음) 그 뒤 여러 해 동안 OSGi Alliance는 원격 관리 될 수 있는 자바 기반의 서비스 플랫폼을 제정해왔다. 이 표준 사양의 핵심은 응용 프로그램의 생명주기(Life cycle) 모델과 서비스 레지스트리(Service Registry)를 정의하는 프레임워크(Framework)이다. OSGi 표준 사양에는 이 프레임워크에 기반하여 매우 다양한 OSGi 서비스가 정의되어 있다.

OSGi 프레임워크는 독립적인 자바/가상 머신 환경에서 제공하고 있지 못한 세련되고, 완전하며 동적인 컴포넌트 모델을 구현한다. 응용 프로그램 또는 구성 요소(번들, Bundle)는 다시 시동 과정 없이 원격지를 통해 설치(installed), 시작(started), 정지(stopped), 업데이트(updated) 그리고 제거(uninstalled)할 수 있다.

OSGi는 Embeddable(응용 프로그램 내부로 포함될 수 있는) SOA를 구현하고 있다. 이를 통해 응용 프로그램 개발에서 가장 복잡하고 관리하기가 어려운, 모듈간의 동적(Dynamic) 관계와 의존을 매우 효과적으로 관리할 수 있게 한다. (Web service based SOA가 네트워크를 중심으로 하는 SOA라면 OSGi는 Java Object based SOA이다.)

목차

  [숨기기

[편집]OSGi 적용 분야

OSGi의 본래 적용 분야는 RG(Residential Gateway), 홈게이트웨이였으나 OSGi의 응용 가능성으로 인해 훨씬 폭넓고 다양한 분야에 적용 되고 있다. 현재 OSGi 표준 사양은 차세대 스마트폰 뿐만 아니라 이클립스 IDE와 같은 데스크톱 응용 프로그램에까지도 적용되고 있다. OSGi 서비스 플랫폼은 홈게이트웨이, 텔레매틱스 단말(예:BMW, SimensVDO), 모바일 단말, 산업 자동화, 빌딩 자동화, PDA, 그리드 컴퓨팅, 백색가전(예: BSH, 보쉬-지멘스 가전 합작회사의Serve@Home), 엔터테인먼트 (예: 필립스의 iPronto), 기업 차량 관리(예: Acunia의 Fleet Management Solution), 로봇 미들웨어와 데스크톱 등에 응용할 수 있다.

[편집]OSGi 표준 사양

  • OSGi Release 1 (R1): 2000년 5월
  • OSGi Release 2 (R2): 2001년 10월
  • OSGi Release 3 (R3): 2003년 3월
  • OSGi Release 4 (R4): 2005년 10월 / 2006년 9월
    • Core Specification (R4 Core): 2005년 10월
    • Mobile Specification (R4 Mobile / JSR-232): 2006년 9월
  • OSGi Release 4.1 (R4.1): 2007년 3월 (별칭: JSR-291)
  • OSGi Release 4.2 (R4.2): 2009년 9월

[편집]OSGi 관련 표준

  • RFC-2608 (서비스 위치 프로토콜)
  • Sun JINI™ (Java Intelligent Network Infrastructure)
  • Sun JCP JSR-8 (Open Services Gateway Specification)
  • Sun JCP JSR-232 (Mobile Operational Management)
  • Sun JCP JSR-246 (Device Management API)
  • Sun JCP JSR-249 (Mobile Service Architecture for CDC)
  • Sun JCP JSR-277 (Java™ Module System)
  • Sun JCP JSR-291 (Dynamic Component Support for Java™ SE - 별칭: OSGi 4.1)
  • Sun JCP JSR-294 (Improved Modularity Support in the Java™ Programming Language)

[편집]대한민국의 OSGi 커뮤니티

[편집]주요 OSGi 적용 프로젝트

  • EasyBeans - 오픈소스 EJB2 컨테이너
  • 이클립스 - 오픈소스 IDE 및 RCP(Rich Client Platform)
  • Nuxeo - 오픈소스 ECM 서비스 플랫폼
  • JOnAS 5 - 오픈소스 Java EE 5 애플리케이션 서버
  • JPOX - 오픈소스 객체 관계 매퍼
  • Newton - 오픈소스 분산 OSGi/SCA 런타임

[편집]관련 서적

[편집]같이 보기











'OpenSource > Common' 카테고리의 다른 글

Git 명령어  (0) 2012.10.31
DVCS(DRCS)  (0) 2012.10.31
OSGi - “Getting started with OSGi”의 번역  (0) 2012.10.08
루씬(Lucene) 개요 및 원리  (2) 2012.09.24
MINA 소개  (0) 2012.09.20
Posted by linuxism
,


EclipseZone 에 연재되었던 Neil Bartlett 의 연재 글 “Getting started with OSGi”의 번역이 완료되었습니다. 제 블로그가 워낙에 이쪽으로는 관련없던지라.. 오시는 분들 및 구독하시는 분들의 호응은 별로 없어서 슬펐지만.. ㅠ.ㅠ 

혹시 OSGi 를 시작하는 분들이 검색중에 보시고 도움이 되었으면 합니다. 

전체 링크와 각 파트별 PDF 파일을 공개합니다. 전 이런 강좌들 뽑아서 보는게 좋더군요. ^_^


이제 Neil 의 책 “OSGi in Practice” 번역작업에만 몰두할 예정입니다. 이건 아마 Neil 이 원본을 배포하는 방식에 따라, 챕터당 번역이 되는대로 PDF 파일로만 공개할듯 합니다. 

* 위 PDF 파일은 전에 말씀드렸던 Office 2007 용 PDF 변환 애드온 – SaveAsPDF로 작성되었습니다. 


출처 - http://xguru.net/451





'OpenSource > Common' 카테고리의 다른 글

DVCS(DRCS)  (0) 2012.10.31
OSGi - 서비스 개념  (0) 2012.10.08
루씬(Lucene) 개요 및 원리  (2) 2012.09.24
MINA 소개  (0) 2012.09.20
redis - redis 소개  (0) 2012.09.14
Posted by linuxism
,


android:versionCode - 개발자가 그냥 편하게 몇번째 배포버전인지 표시할때 사용. Int 형식

  ex) 1,2,3,...

android:versionName - 사용자가 보는 어플 버전. String 형식.

  ex) 문자니까 걍 맘대로..

 

manifest 파일에 <manifest>엘레멘트에 적음.

  ex)

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      
package="com.example.package.name"
      
android:versionCode="2"
      
android:versionName="1.1">
    
<application android:icon="@drawable/icon" android:label="@string/app_name">
        ...
    
</application>
</manifest>

 

 

어플 설치가능 안드로이드 버전 설정

 

<uses-sdk>

 

<문법>

<uses-sdk android:minSdkVersion="integer" 
          
android:targetSdkVersion="integer"
          
android:maxSdkVersion="integer" />

 

<manifest> 안에 저장.

 

min = 최소 버전

 

target = 특정 버전, 테스트된 버전.. 등등

 

max = 최대 버전


출처 - http://blog.naver.com/PostView.nhn?blogId=rakuseven&logNo=30088490685&redirect=Dlog&widgetTypeCall=true


===================================================================================


안드로이드 어플의 VersionName (버전 번호)을 AndroidManifest.xml에서 가져오기

 public static String getVersionName(Context context)
{
    try {
        PackageInfo pi= context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
        return pi.versionName;
    } catch (NameNotFoundException e) {
        return null;
    }
}


출처 - http://blog.pointbre.com/357/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%96%B4%ED%94%8C%EC%9D%98-versionname-%EB%B2%84%EC%A0%84-%EB%B2%88%ED%98%B8%EC%9D%84-androidmanifest-xml%EC%97%90%EC%84%9C-%EA%B0%80%EC%A0%B8%EC%98%A4.html


===================================================================================


2012/02/08 14:48

안녕하세요 돼지왕왕돼지입니다.
오늘은 어플리케이션에 버전 부여하는 법에 대해 알아보겠습니다.



어플리케이션 버전 설정


@ manifest 

android:versionCode=(integer)

 
  다운그레이드, 업그레이드 ( Downgrade, Upgrade ) 등을 위해 사용하며, 사용자에게 보여지지는 않는다.
 

 @ manifest  
 android:versionName=(string)

 
  사용자에게 보여져야 하는 문자열 값으로, [Setting] - [Apps] 을 통해 볼 수 있다.  보통 <major>.<minor>.<point> 로 표현 ( ex) 1.0.0 )
 
 
다음의 코드를 통해, 코드상에서도 앱의 버전을 알아낼 수 있다.

PackageInfo packageInfo = PackageManager.getPackageInfo( String packageName, int flag );
String versionName = packageInfo.versionName;
int versionCode = packageInfo.versionCode; 

 
 


어플리케이션 SDK ( 시스템 API ) 버전 설정

 

@ manifest 

<uses-sdk  android:minSdkVersion=(integer)>
<uses-sdk  android:targetSdkVersion =(integer)> 
<uses-sdk  android:maxSdkVersion =(integer)>

 
 
 
 이 값들이 없으면 모든 시스템과 호환가능하다고 가정된다.


출처 - http://aroundck.tistory.com/135


===================================================================================


android의 manifest 파일에서는 versionCode와 versionName을 선언합니다.


반드시 선언해야하는 항목입니다.



이 두개의 속성은 무슨 차이가 있을까요?



versionCode


다른 버전과 상대적인 값을 나타내는 정수형 값입니다.


이 값은 정수형으로 선언되기 때문에 프로그램상에서 현재의 버전이 더 높은 버전인지 또는 낮은 버전인지 확인이 가능합니다.


새로운 버전의 어플리케이션을 업데이트 할때 이 숫자를 증가시켜주면 됩니다.


일반적으로 첫번째버전의 코드는 1로 정하시면 되고, 메이저 업데이트인지 마이너 업데이트인지 상관없이 2,3,4,5 식으로 업데이트 될때마다 증가시켜주면 됩니다.


이 값은 사용자에게 보여지는 값은 아니며 시스템적으로 버전의 업데이트 여부를 확인하는 용으로 사용됩니다.



versionName


이 값은 사용자에게 보여지는 버전의 정보입니다. 버전을 표시하는 형태는 그 어떠한 형태로 무관합니다.


이 값은 시스템상에서 어떠한 내부의 목적으로 사용하지 않고 사용자에게 보여주기 위해 사용되는 값입니다.


보통 <major>.<minor>.<point> 와 같은 형식의 문자열을 사용하기도 합니다.


출처 - http://trend21c.tistory.com/1406








'Android > Common' 카테고리의 다른 글

Javascript에서 Android 함수 호출하기  (1) 2013.01.02
android - WebView 사용 하기  (1) 2012.11.03
service - Service API 변경  (0) 2012.09.28
android - SharedPreferences  (0) 2012.09.24
android - 이클립스 환경 설정  (0) 2012.09.21
Posted by linuxism
,