KR20110122996A - 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 - Google Patents
어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 Download PDFInfo
- Publication number
- KR20110122996A KR20110122996A KR1020100042400A KR20100042400A KR20110122996A KR 20110122996 A KR20110122996 A KR 20110122996A KR 1020100042400 A KR1020100042400 A KR 1020100042400A KR 20100042400 A KR20100042400 A KR 20100042400A KR 20110122996 A KR20110122996 A KR 20110122996A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- execution
- manager
- function
- operating system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F17/00—Coin-freed apparatus for hiring articles; Coin-freed facilities or services
- G07F17/32—Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
- G07F17/3225—Data transfer within a gaming system, e.g. data sent between gaming machines and users
- G07F17/3232—Data transfer within a gaming system, e.g. data sent between gaming machines and users wherein the operator is informed
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체에 관한 것으로, 운영 체제의 종류에 무관하게 운영 체제가 객체의 다중 실행 또는 다중 인스턴스를 지원하지 않더라도, 운영 체제로부터 요청을 수신하는 객체와 해당 요청을 실행하는 객체를 따로 구비하여, 요청을 수신하는 객체는 요청 수신 시에만 실행 한 후, 요청을 실행하는 객체에 전달하고 종료함으로써, 단일 실행만을 지원하는 운영 체제에서도 다수의 어플리케이션을 실행시킬 수 있다.
Description
본 발명은 단말의 어플리케이션 실행 기술에 관한 것으로, 더욱 상세하게는, 단말에 이식된 운영 체제의 종류에 무관하게 여러 개의 어플리케이션을 동시에 실행시킬 수 있는 실행 환경을 제공하는 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체에 관한 것이다.
운영 체제(Operating System)는 그 자신이 이식(porting)된 단말의 자원(resource) 및 기능 등을 관리하며, 그 단말에 이식된 어플리케이션(Application)이 요청하는 경우, 단말의 자원 및 기능의 일부 또는 전부의 접근을 어플리케이션에 허여할 수 있다. 이는 운영 체제가 어플리케이션 프로그래밍 인터페이스(API, Application Programming Interface)를 제공함으로써 이루어진다. 바꿔 말하면, 어플리케이션은 운영 체제가 제공하는 API를 참조하여 장치의 자원 및 기능에 접근한다. 따라서 개발자들은 특정 운영 체제가 이식된 장치의 어플리케이션을 개발하기 위해서는 운영 체제가 제공하는 API의 형식에 따라 개발하여야 한다.
근래에는 다양한 기능들이 단말에 추가로 구현되고 있으며, 이에 따라, 추가로 구현되는 기능들을 제공하는 다양한 형태의 주변 장치들이 단말에 추가되고 있다. 이러한 주변 장치들의 기능은 운영 체제가 관리한다. 따라서 개발자들이 이러한 주변 장치들을 이용할 수 있는 어플리케이션을 개발하기 위해서 운영 체제가 관리하는 주변 장치들에 기능에 접근하기 위한 API들이 추가로 요구되고 있다. 더욱이, 근래의 단말은 다양한 종류의 운영 체제가 이식되고 있다. 운영 체제가 다른 단말에서는 어플리케이션이 실행되지 않으므로, 단말의 어플리케이션 개발자들은 동일한 어플리케이션을 각 운영 체제의 API에 따라 따로 제작해야 하는 문제가 있다.
특히, 운영 체제 중, 그 운영 체제 자체의 성능 또는 그 운영 체제가 이식된 장치의 성능 등의 문제로 인해, 하나의 객체(Object)에 대해서는 하나의 실행(인스턴스)만을 허용하는 것이 있다. 이러한 경우, 동일한 객체에 대해서 복수의 실행을 할 수 없으므로, 어플리케이션을 개발하는 개발자 입장에서는 그 개발에 불편함이 있으며, 이를 사용하는 사용자 입장에서도 어느 하나의 어플리케이션을 실행하다가 다른 어플리케이션을 사용하기 위해서는 하나의 어플리케이션을 종료해야 하는 번거로움이 있다.
따라서 본 발명의 목적은 운영 체제에 무관하게, 즉, 운영 체제가 하나의 객체에 대해 하나의 실행만을 지원하는 경우라도, 복수의 어플리케이션을 실행시킬 수 있는 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체를 제공함에 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명에 따른 어플리케이션 실행 장치는, 어플리케이션을 실행시키기 위한 실행 명령 수신을 위한 커맨드 핸들러를 가지며, 상기 실행 명령을 수신하여 어플리케이션을 실행시키는 런타임 매니저; 및 운영 체제로부터 어플리케이션 실행 요청을 수신하면, 상기 런타임 매니저가 실행 중인지 확인하여, 상기 런타임 매니저가 실행 중이 아닌 경우, 상기 런타임 매니저를 실행 시킨 후, 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 상기 실행 명령을 전송하고, 자기 자신의 실행을 종료하는 더미 컨테이너 실행부;를 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 더미 컨테이너 실행부는 어플리케이션 실행 요청을 수신하면, 상기 런타임 매니저가 실행 중인지 확인하여, 상기 런타임 매니저가 이미 실행 중인 경우, 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 상기 실행 명령을 전송하고, 자기 자신의 실행을 종료하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 런타임 매니저는 어플리케이션을 실행시키는 컨텍스트 매니저를 더 포함하며, 상기 커맨드 핸들러는 상기 컨텍스트 매니저에 상기 실행 인자를 포함하는 상기 실행 명령을 전달하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 어플리케이션 실행 장치는 상기 어플리케이션을 랜더링하는 브라우저 엔진을 더 포함하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 컨텍스트 매니저는 상기 실행 명령에 따라 상기 어플리케이션을 실행시키고, 실행된 어플리케이션을 랜더링 하도록 상기 브라우저 엔진을 호출하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 컨텍스트 매니저는 상기 어플리케이션의 윈도우를 생성하며, 상기 브라우저 엔진은 상기 어플리케이션의 랜더링된 결과를 상기 윈도우에 표시하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 브라우저 엔진은 상기 어플리케이션의 마크 업 랭귀지와 스타일 시트를 랜더링하기 위한 엔진 코어 및 상기 어플리케이션의 스크립트 언어를 처리하기 위한 인터프리터인 스크립트 엔진을 포함하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 어플리케이션 실행 후, 실행된 어플리케이션으로부터 운영 체제의 종류에 무관하게 상기 운영 체제가 관장하는 기능 실행의 요청을 수신하여, 수신된 기능 실행의 요청을 전달하는 브라우저 엔진 계층부; 및 상기 기능 실행 요청을 상기 운영 체제의 종류에 맞게 변경하여 상기 기능 실행 요청에 해당하는 기능을 실행하도록 지시하는 이식 계층부;를 더 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 이식 계층부는 적어도 하나의 인터페이스 모듈을 포함하며, 상기 인터페이스 모듈 각각은 상기 기능 실행의 종류에 따른 인터페이스를 가지는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 인터페이스는 상기 해당하는 기능을 실행하도록 지시하기 위해 상기 운영 체제의 종류에 맞춰 구현됨과 동시에 상기 컨테이너 커먼 모듈로부터 요청을 수신하기 위해 상기 컨테이너 커먼 모듈과 상호간에 맞춰 구현되는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 인터페이스 모듈은, HTTP 및 HTTPS 관련 기능을 제공하는 HTTP 모듈; XML 파서 기능 및 XSLT 변환 기능을 제공하는 XML 모듈; 스레드 기능을 제공하는 스레드 모듈; 사용자 인터페이스를 이식하기 위해 필요한 상기 운영 체제 자체의 윈도우 시스템 기능을 제공하는 UI 백엔드 모듈; 보안 스토리지에 접근할 수 있는 기능을 제공하는 보안 스토리지 모듈; 스토리지에 접근할 수 있는 기능을 제공하는 로컬 스토리지 모듈; 단말의 자원에 관련된 기능을 제공하는 리소스 매니저; OS API와 관련된 기능을 제공하는 OS API 매니저; 타 어플리케이션과의 연동을 위한 기능을 제공하는 공통 작업 매니저; 및 타 장치와의 연동 및 타 장치와의 데이터 동기화 관련 기능을 제공하는 싱크 매니저 중 적어도 하나를 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 브라우저 엔진 계층부는 상기 기능 실행의 종류에 대응하여 상기 요청을 상기 이식 계층부에 전달하는 적어도 하나의 플러그 인; 상기 기능 실행의 종류에 따라 대응하는 상기 플러그 인을 호출하는 플러그 인 매니저; 및 상기 플러그 인이 호출되면 상기 기능 실행의 요청을 전달하도록 상기 플러그 인에 지시하는 브라우저 엔진;을 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 플러그 인은 단말 자원에 관련된 기능의 실행 요청을 상기 이식 계층에 전달하는 리소스 플러그 인; OS API 관련 기능의 실행 요청을 상기 이식 계층에 전달하는 시스템 API 플러그 인; 타 어플리케이션과 연동을 위한 기능의 실행 요청을 상기 이식 계층에 전달하는 공통 작업 플러그 인; 및 타 장치와의 연동 및 타 장치와의 데이터 동기화 관련 기능의 실행 요청을 상기 이식 계층에 전달하는 싱크 플러그 인; 중 적어도 하나를 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 어플리케이션 실행 장치는, 보안 계층부를 더 포함하며, 상기 보안 계층부는 상기 어플리케이션 및 상기 플러그 인에 대해 설치 및 실행 시 인증을 수행하는 인증 매니저; 및 상기 브라우저 엔진 계층부의 상기 이식 계층부에 대한 접근 범위 및 접근 권한을 관리하는 정책 매니저;를 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 운영 체제의 기능 실행에 의해 관리되는 적어도 하나의 주변 장치;를 더 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 기능 실행은 상기 운영 체제 자체 기능 실행, 상기 운영 체제 자체 기능 실행에 따른 자원의 사용, 상기 주변 장치의 개별 기능의 실행, 및 상기 주변 장치의 개별 기능의 실행에 따른 자원의 사용 중 적어도 하나를 포함한다.
본 발명의 어플리케이션 실행 장치에 있어서, 상기 주변 장치는, 무선 통신을 수행하기 위한 무선 통신부; GPS(Global Positioning System) 위성으로부터 GPS 신호를 수신하기 위한 GPS부; 사용자의 입력을 받기 위한 입력부; 단말의 사용에 따라 발생하는 화면 데이터를 표시하기 위한 표시부; 음성 신호를 입력 받고 출력 받기 위한 마이크 및 스피커 등을 구비하는 오디오 처리부; 및 카메라 기능을 수행하기 위한 카메라부; 중 적어도 하나를 포함한다.
상술한 바와 같은 목적을 달성하기 위한 본 발명에 따른 어플리케이션 실행 방법은, 더미 컨테이너 실행부가 운영 체제로부터 어플리케이션 실행 요청에 따라 자기 자신의 실행을 시작하는 단계; 상기 더미 컨테이너 실행부가 어플리케이션을 실행시키기 위한 실행 명령을 수신하는 커맨드 핸들러를 포함하는 런타임 매니저의 실행 여부를 확인하는 단계; 상기 확인 결과, 상기 런타임 매니저가 실행 중이 아니면, 상기 런타임 매니저를 실행시키는 단계; 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 실행 명령을 전송하는 단계; 및 상기 더미 컨테이너 실행부가 자기 자신의 실행을 종료하는 종료 단계;를 포함한다.
본 발명의 어플리케이션 실행 방법에 있어서, 상기 확인하는 단계 후, 상기 확인 결과, 상기 런타임 매니저가 이미 실행 중이면, 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 실행 명령을 전송하는 단계; 및 상기 더미 컨테이너 실행부가 자기 자신의 실행을 종료하는 단계;를 더 포함한다.
본 발명의 어플리케이션 실행 방법에 있어서, 상기 전송하는 단계 후, 상기 커맨드 핸들러가 상기 컨텍스트 매니저에 상기 실행 인자를 가지는 상기 실행 명령을 전달하는 단계; 및 상기 컨텍스트 매니저가 상기 실행 명령에 따라 어플리케이션을 실행 시키는 단계;를 더 포함한다.
본 발명의 어플리케이션 실행 방법에 있어서, 상기 실행 인자는 상기 어플리케이션을 다른 어플리케이션과 구분할 수 있는 식별자 및 상기 어플리케이션을 이루는 복수의 페이지의 주소 중 어느 일 페이지의 주소 중 적어도 하나를 포함하는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 방법에 있어서, 상기 어플리케이션을 실행시키는 단계는 상기 컨텍스트 매니저가 상기 실행 인자로 상기 일 페이지의 주소를 수신하면, 상기 일 페이지의 주소를 상기 어플리케이션의 시작 페이지로 설정하여 실행시키는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 방법에 있어서, 상기 어플리케이션을 실행시키는 단계는 상기 컨텍스트 매니저가 상기 실행 인자로 식별자를 수신하면, 해당하는 식별자를 가지는 어플리케이션의 디폴트 페이지를 시작 주소로 하여 실행시키는 것을 특징으로 한다.
본 발명의 어플리케이션 실행 방법에 있어서, 상기 어플리케이션을 실행시키는 단계 후, 상기 컨텍스트 매니저가 브라우저 엔진을 호출하여 상기 어플리케이션을 랜더링하는 단계;를 더 포함하는 것을 특징으로 한다.
그리고 본 발명의 어플리케이션 실행 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공한다.
상술한 바와 같은 본 발명에 따르면, 더미 컨테이너 실행부가 어플리케이션 실행 요청을 수신하면, 어플리케이션을 실행시키는 런타임 매니저에 어플리케이션 실행 명령을 전달하고, 자기 자신의 실행을 종료하여, 다른 어플리케이션 실행 요청에 대비함으로써, 운영 체제가 다중 실행 또는 다중 인스턴스를 지원하지 않는 경우에도 어플리케이션의 다중 실행을 제공할 수 있다. 이에 따라, 사용자들의 단말 사용의 편의를 제공할 수 있다.
도 1은 본 발명의 실시예에 따른 어플리케이션 실행 장치의 구성을 설명하기 위한 도면.
도 2는 본 발명의 실시예에 따른 어플리케이션 실행 장치에서 플랫폼의 구조를 설명하기 위한 도면.
도 3은 본 발명의 실시예에 따른 플랫폼에서 브라우저 엔진 컨테이너 실행부의 세부 구성을 설명하기 위한 도면.
도 4는 본 발명의 실시예에 따른 플랫폼에서 어플리케이션 런타임 계층부를 설명하기 위한 도면.
도 5는 본 발명의 실시예에 따른 플랫폼에서 브라우저 엔진 계층부를 설명하기 위한 도면.
도 6은 본 발명의 실시예에 따른 플랫폼에서 보안 계층부의 세부 구성을 설명하기 위한 도면.
도 7은 본 발명의 실시예에 따른 플랫폼에서 이식 계층부를 설명하기 위한 도면.
도 8은 본 발명의 실시예에 따른 플랫폼에서 시스템 어플리케이션을 설명하기 위한 도면.
도 9는 본 발명의 실시예에 따른 더미 컨테이너 실행부의 어플리케이션 실행 방법을 설명하기 위한 도면.
도 10은 본 발명의 실시예에 따른 어떤 어플리케이션도 실행되고 있지 않은 상태에서 어플리케이션을 실행시키는 방법을 설명하기 위한 도면.
도 11은 본 발명의 실시예에 따른 어플리케이션이 실행되어 있는 상태에서 다른 어플리케이션을 실행시키는 방법을 설명하기 위한 도면.
도 2는 본 발명의 실시예에 따른 어플리케이션 실행 장치에서 플랫폼의 구조를 설명하기 위한 도면.
도 3은 본 발명의 실시예에 따른 플랫폼에서 브라우저 엔진 컨테이너 실행부의 세부 구성을 설명하기 위한 도면.
도 4는 본 발명의 실시예에 따른 플랫폼에서 어플리케이션 런타임 계층부를 설명하기 위한 도면.
도 5는 본 발명의 실시예에 따른 플랫폼에서 브라우저 엔진 계층부를 설명하기 위한 도면.
도 6은 본 발명의 실시예에 따른 플랫폼에서 보안 계층부의 세부 구성을 설명하기 위한 도면.
도 7은 본 발명의 실시예에 따른 플랫폼에서 이식 계층부를 설명하기 위한 도면.
도 8은 본 발명의 실시예에 따른 플랫폼에서 시스템 어플리케이션을 설명하기 위한 도면.
도 9는 본 발명의 실시예에 따른 더미 컨테이너 실행부의 어플리케이션 실행 방법을 설명하기 위한 도면.
도 10은 본 발명의 실시예에 따른 어떤 어플리케이션도 실행되고 있지 않은 상태에서 어플리케이션을 실행시키는 방법을 설명하기 위한 도면.
도 11은 본 발명의 실시예에 따른 어플리케이션이 실행되어 있는 상태에서 다른 어플리케이션을 실행시키는 방법을 설명하기 위한 도면.
이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
먼저, 본 발명의 실시예에 따른 어플리케이션 실행 장치의 구성에 대해서 설명하기로 한다. 도 1은 본 발명의 실시예에 따른 어플리케이션 실행 장치의 구성을 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 실시예에 따른 어플리케이션 실행 장치는 제어부(11), 저장부(12) 및 주변 장치(13)를 포함한다.
저장부(12)는 데이터를 저장하기 위한 장치로, 주 기억 장치 및 보조 기억 장치를 포함한다. 저장부(12)는 운영 체제(10), 플랫폼(20) 및 어플리케이션(30)을 저장하며, 단말의 기능 실행에 따라 발생하는 각종 데이터 들을 저장한다.
제어부(11)는 운영 체제(10), 플랫폼(20) 및 어플리케이션(30)을 실제로 구동시키는 프로세스 장치이다. 예컨대, 제어부(11)는 중앙처리장치(CPU, Central Processing Unit)가 될 수 있다. 제어부(11)는 단말의 전원이 켜지면, 운영 체제(10)를 보조 기억 장치로부터 주 기억 장치로 이동시킨 후, 운영 체제(10)를 구동하는 부팅(booting)을 수행한다. 또한, 제어부(11)는 사용자의 조작에 따른 어플리케이션(30)의 실행 요청이 있는 경우, 계층 구조상 운영 체제(10) 상위에서 플랫폼(20)을 실행시키고, 플랫폼(20)은 그 상위에서 어플리케이션(30)을 실행시킨다. 이와 같이, 제어부(11)는 플랫폼(20)을 저장부(12)로부터 불러 와서 실행시키지만, 플랫폼(20)은 제어부(11) 내에 하나의 모듈로 구성될 수 있다. 이하로는, 본 발명의 실시예에 따른 플랫폼(20)을 제어부(11)의 구성으로 설명할 것이다.
제어부(11)는 운영 체제(10)의 요청에 따라 주변 장치(13)를 제어한다. 즉, 운영 체제(10)는 제어부(11)를 통해 단말의 기능 실행을 관장한다. 여기서, 단말의 기능을 실행하는 것은 주변 장치(13)의 개별 기능 및 이 개별 기능 실행에 따른 자원(resource)의 사용을 포함하며, 운영 체제(10)의 자체 기능 실행과, 운영 체제(10)의 자체 기능 실행에 따른 자원의 사용을 더 포함한다.
기본적으로, 운영 체제(10)는 어플리케이션(30)의 실행 중 상술한 단말 기능의 실행을 요청하면, 운영 체제(10)는 어플리케이션(30)에 인터페이스를 제공하며, 어플리케이션(30)은 제공된 인터페이스를 통해 단말 기능의 실행을 운영 체제(10)에 요청한다. 이러한 인터페이스는 어플리케이션 프로그래밍 인터페이스(API, Application Programming Interface)가 될 수 있다. 이 인터페이스는 라이브러리 형태로 구현되며, 운영 체제(10) 별로 라이브러리는 고유한 형식으로 구현된다. 따라서 운영 체제(10)는 그 운영 체제(10)의 종류에 따라 동일한 기능을 제공하는 인터페이스의 형식이 다르다. 이와 같이, 어플리케이션(30)이 운영 체제(10)를 직접 참조하여 실행되는 경우, 어플리케이션(30)은 운영 체제(10)의 종류에 따라 다르게 구현되어야 한다.
한편, 플랫폼(20)은 운영 체제(10)가 제공하는 단말 기능 실행을 위한 인터페이스를 어플리케이션(30)이 이용할 수 있도록 제공하되, 어플리케이션(30) 입장에서는 운영 체제(10)의 종류에 무관하게 제공한다. 즉, 운영 체제(10)는 단말 의 기능 실행을 위한 인터페이스를 그 운영 체제(10)의 종류에 따라 다른 형식을 가지는 인터페이스로 제공하지만, 플랫폼(20)은 서로 다른 형식을 가지는 인터페이스를 하나의 형식으로 변환시켜 어플리케이션(30)에 제공한다. 바꿔 말하면, 어플리케이션(30)이 하나의 형식을 가지는 인터페이스를 통해 단말 기능 실행을 요청하면, 플랫폼(20)은 그 요청을 각 운영 체제(10)가 제공하는 인터페이스의 형식에 맞게 변환하여 운영 체제(10)에 전달하고, 운영 체제(10)는 이를 수행한다. 이에 따라, 어플리케이션(30)은 플랫폼(20)이 제공하는 인터페이스를 통해 운영 체제(10)의 종류에 무관하게 동일한 방법으로 단말의 자원 또는 기능에 접근하여 이를 제어할 수 있다. 이러한 본 발명의 실시예에 따르면, 개발자들은 동일한 어플리케이션(30)을 운영 체제(10)별로 따로 제작해야 하는 노력을 덜 수 있다. 또한, 사용자들은 어떠한 운영 체제(10)에서도 동일한 사용자 경험을 가지는 어플리케이션(30)을 사용할 수 있다.
한편, 본 발명의 실시예에서 어플리케이션(30)은 웹 어플리케이션을 예로 들어 설명하며, 이는 브라우저(browser)에서 동작하는 어플리케이션이다. 이러한 웹 어플리케이션은 웹 표준 언어로 작성된다. 웹 표준 언어는 HTML(Hyper Text Markup Language), CSS(Cascading Style sheet), JavaScript 등을 예시할 수 있다. 하지만, 본 발명의 실시예를 웹 어플리케이션에 한정하는 것은 아니며, 단말에서 구동 가능한 어떠한 어플리케이션이라도 본 발명의 균등 범위에서 실시 가능함은 당연하다.
본 발명의 실시예에 따르면, 플랫폼(20)이 운영 체제(10)의 종류에 무관하게 어플리케이션을 실행시키기 위해서, 계층 구조 상 어플리케이션의 하위에서 어플리케이션을 실행시켜야 한다. 하지만, 운영 체제(10) 중 동일한 객체(Object)의 다중 실행(인스턴스, instance)를 지원하지 않는 것이 있다. 이러한 환경에서 플랫폼(20)이 하나의 어플리케이션(30)을 실행시킨 후, 다른 어플리케이션(30)을 실행시키기 위해서는 그 실행을 중복으로 해야 하지만, 운영 체제(10)가 지원하지 않으므로, 복수의 어플리케이션(30)을 실행 시킬 수 없다. 따라서 본 발명의 실시예에 따르면, 플랫폼(20)은 어플리케이션(30) 실행 요청을 수신하는 객체와 실제 어플리케이션(30)을 실행 시키는 객체를 따로 구비한다. 어플리케이션(30) 실행 요청을 수신하는 객체는 운영 체제(10)로부터 어플리케이션(30) 실행 요청이 있는 경우, 그 실행 요청을 수신하고, 이를 플랫폼(20)의 어플리케이션(30)을 실행 시키는 객체에 전달한 후, 자기 자신의 실행을 종료한다. 이와 같이, 실행 요청을 수신하는 객체가 그 실행을 종료함으로 인해, 운영 체제(10)로부터 어플리케이션 실행 요청이 있을 때마다, 새로 실행하여 그 요청을 수신할 수 있다. 또한, 어플리케이션(30)을 실행시키는 객체는 실행 요청을 수신하는 객체로부터 어플리케이션 실행 요청을 수신함으로써, 운영 체제(10)의 지원 여부에 무관하게, 복수의 어플리케이션(30)을 실행시킬 수 있다.
주변 장치(13)는 각각 고유의 기능을 가지며, 운영 체제(10)가 제어부(11)를 통해 그 실행을 제어할 수 있다. 이러한 주변 장치(13)는 각종 키들을 구비하여 사용자의 입력을 수신하는 입력부(14), 단말의 기능 실행에 따라 발생하는 화면 데이터를 표시하기 위한 표시부(15), 무선 통신 기능을 수행하기 위한 무선 통신부(16), GPS(Global Positioning System) 위성으로부터 GPS 신호를 수신하기 위한 GPS부(17), 음성 신호를 입력 받고 출력하기 위한 마이크 및 스피커 등을 구비하는 오디오 처리부(18), 및 카메라 기능을 수행하기 위한 카메라부(19)를 포함한다. 또한 도시되진 않았으나, 본 발명의 실시예에 따른 단말의 주변 장치(13)로, 메모리 카드와 같은 외부 저장 매체를 삽입하여 데이터 저장을 가능토록 하는 저장매체 삽입부, 외부 타 장치와의 데이터 교환을 위한 연결 단자, 충전용 단자를 구비할 수 있다. 디지털 기기의 컨버전스(convergence) 추세에 따라 휴대 기기의 변형이 매우 다양하여 모두 열거할 수는 없으나, 상기 언급된 주변 장치(13)와 동등한 수준의 장치들이 본 발명의 실시예에 따른 단말에 추가로 더 포함되어 구성될 수 있다는 것은 본 기술 분야의 통상의 지식을 가진 자라면 쉽게 이해할 수 있을 것이다.
운영 체제(10)는 상술한 주변 장치(13)의 기능 실행을 제어부(11)를 통해 관리한다. 이는 운영 체제(10)의 실행 명령을 제어부(11)가 해석하여, 제어부(11)가 주변 장치(13)를 동작시킴으로써 이루어진다. 또한, 어플리케이션(30)은 이러한 단말의 기능 실행을 플랫폼(20)이 제공하는 인터페이스를 통해 요청하면, 플랫폼(20)의 기능 실행 요청을 운영 체제(10)에 전달하고, 이러한 기능 실행을 전달 받은 운영 체제(10)는 제어부(11)를 통해 주변 장치(13)의 기능을 실행하도록 한다.
다음으로, 본 발명의 실시예에 따른 어플리케이션 실행 장치에서 플랫폼(20)에 대해서 보다 상세히 설명하기로 한다. 도 2는 본 발명의 실시예에 따른 어플리케이션 실행 장치에서 플랫폼의 구조를 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 실시예에 따른 플랫폼(20)은 브라우저 엔진 컨테이너 코어(Browser Engine Container Core, 21: 이하, "컨테이너 코어"로 축약함)와 브라우저 엔진 컨테이너 실행(Browser Engine Container Executor)부(200: 이하, "컨테이너 실행부"로 축약함)를 포함한다. 또한, 플랫폼(20)은 시스템 어플리케이션(40)을 더 포함한다.
컨테이너 실행부(200) 및 이의 세부 구성들은 앞서 설명한 바와 같은 어플리케이션 실행 요청을 수신하는 객체가 될 수 있다. 또한, 컨테이너 코어(21) 및 이의 각 세부 구성들은 앞서 설명한 바와 같은 어플리케이션을 실제 실행시키는 객체가 될 수 있다. 따라서, 컨테이너 실행부(200) 및 이의 세부 구성들은 실행 된 후, 자신의 기능을 수행하고, 바로 자기 자신의 실행을 종료하는 동작 특성을 갖는다. 이에 따라, 컨테이너 코어(21)가 다수의 어플리케이션을 실행시킬 수 있도록 한다.
컨테이너 코어(21)는 어플리케이션 런타임(Application Runtime) 계층부(300), 브라우저 엔진(Browser Engine) 계층부(400), 보안(Security) 계층부(500) 및 이식(Porting) 계층부(600)를 포함한다. 그리고 이식 계층부(600), 보안 계층부(500), 브라우저 엔진 계층부(400) 및 어플리케이션 런타임 계층부(300)는 순차로 연결된다. 상기한 컨테이너 코어(21)에서 이식 계층부(600)를 제외한 어플리케이션 런타임 계층부(300), 브라우저 엔진 계층부(400) 및 보안 계층부(500)는 브라우저 엔진 컨테이너 커먼 모듈(Browser Engine Container Common, 22: 이하, "컨테이너 커먼 모듈"로 축약함)에 포함된다.
상술한 바와 같은 플랫폼(20)의 구조를 살펴보면, 이식 계층부(600)는 운영 체제(10)에 직접 연결된다. 이러한 이식 계층부(600)에 컨테이너 실행부(200) 및 컨테이너 커먼 모듈(22)이 연결되므로, 컨테이너 실행부(200) 및 컨테이너 커먼 모듈(22)은 이식 계층부(600)를 통해 운영 체제(10)에 접근할 수 있다.
특히, 어플리케이션(30) 및 시스템 어플리케이션(40)은 실행된 후, 컨테이너 커먼 모듈(22)에 직접 연결되므로, 컨테이너 커먼 모듈(22) 및 이식 계층(600)을 통해 운영 체제(10)에 접근할 수 있다. 어플리케이션(30)이 단말의 기능을 실행시키고자 하는 경우, 어플리케이션(30)은 컨테이너 커먼 모듈(22)에 이를 요청한다. 그러면, 컨테이너 커먼 모듈(22)은 이 요청을 이식 계층부(600)에 전달하고, 이식 계층부(600)는 운영 체제(10)에 이 요청을 재 전달한다. 이때, 이식 계층부(600)는 운영 체제(10)의 인터페이스에 따라 이 요청을 변환하여 운영 체제(10)에 전달한다. 이에 따라, 운영 체제(10)는 어플리케이션(30)이 요청한 기능을 제어부(11)를 통해 실행한다.
이식 계층부(600)의 인터페이스는 운영 체제(10)와 연결되는 동시에 컨테이너 커먼 모듈(22)에 연결된다. 따라서, 이식 계층부(600)의 인터페이스는 운영 체제(10)와의 연결에서 각 운영 체제(10)와 서로 연결할 수 있도록 각 운영 체제(10)에 맞게 구현된다. 이와 같이, 각 운영 체제(10)별로 구현된 인터페이스는 모두 컨테이너 커먼 모듈(22) 및 이식 계층부(600) 상호간에 서로 연결되도록 컨테이너 커먼 모듈(22) 및 이식 계층부(600) 중 어느 하나에 맞게 구현된다. 이에 따라, 어플리케이션(30)이 운영 체제(10)에 무관하게 컨테이너 커먼 모듈(22)에 맞게 운영 체제(10)가 관장하는 기능 실행을 요청하면, 컨테이너 커먼 모듈(22)은 운영 체제(10)에 무관하게 이식 계층부(600)에 어플리케이션(30)의 요청을 전달할 수 있다. 이 요청을 전달 받은 이식 계층부(600)은 각 운영 체제(10)에 맞게 이 요청에 따른 기능 실행을 운영 체제(10)에 지시할 수 있다. 그러므로, 어플리케이션(30)은 플랫폼(20)을 통해 운영 체제(10)의 종류에 무관하게 단말 자원 또는 기능에 접근 할 수 있다.
한편, 플랫폼(20)에서 컨테이너 커먼 모듈(22)은 어플리케이션(30)으로부터 요청을 수신하며, 이식 계층부(600)는 어플리케이션의 요청을 운영 체제(10)에 맞춰 그 요청에 따른 기능 실행을 지시한다. 이를 위하여, 컨테이너 커먼 모듈(22)과 어플리케이션(30)은 상호간에 맞게 구현되며, 이식 계층부(600)는 각 운영 체제(10)의 종류에 맞게 구현된다. 또한, 컨테이너 커먼 모듈(22)은 어플리케이션(30)의 요청을 이식 계층부(600)에 전달할 수 있어야 한다. 이에 따라, 컨테이너 커먼 모듈(22)과 이식 계층부(600)는 상호간에 맞게 구현된다. 이와 같이, 플랫폼(20)이 어플리케이션(20)과 운영 체제(10) 사이에서, 컨테이너 커먼 모듈(22)과 이식 계층부(600)의 2개의 계층 구조로 형성됨에 따라, 어플리케이션(30) 및 운영 체제(10) 중 어느 하나가 변경되더라도 플랫폼(20) 전체를 변경하지 않아도 되며, 컨테이너 커먼 모듈(22)과 이식 계층부(600) 중 대응하는 구성만을 변경할 수 있다.
다음으로, 본 발명의 실시예에 따른 플랫폼(20)의 세부 구조에 대해서 보다 상세하게 설명한다. 도 3은 본 발명의 실시예에 따른 플랫폼에서 브라우저 엔진 컨테이너 실행부의 세부 구성을 설명하기 위한 도면이며, 도 4는 본 발명의 실시예에 따른 플랫폼에서 어플리케이션 런타임 계층부를 설명하기 위한 도면이고, 도 5는 본 발명의 실시예에 따른 플랫폼에서 브라우저 엔진 계층부를 설명하기 위한 도면이다. 또한, 도 6은 본 발명의 실시예에 따른 플랫폼에서 보안 계층부의 세부 구성을 설명하기 위한 도면이며, 도 7은 본 발명의 실시예에 따른 플랫폼에서 이식 계층부를 설명하기 위한 도면이고, 도 8은 본 발명의 실시예에 따른 플랫폼에서 시스템 어플리케이션을 설명하기 위한 도면이다.
먼저, 본 발명의 실시예에 따른 컨테이너 실행부(200)에 대해서 설명하기로 한다.
도 3 내지 도 6을 참조하면, 컨테이너 실행부(200)는 어플리케이션(30)의 일반적인 실행 및 대기 모드에서의 실행, 컨테이너 코어(21)의 전부 또는 일부의 업데이트 등을 관장하는 역할을 수행한다. 컨테이너 실행부(200)는 어플리케이션(30)의 시작점(Entry Point) 역할을 하며, 컨테이너 코어(21)를 생성시킬 수 있다. 컨테이너 실행부(200)는 실행된 후 백그라운드에서 프로세스를 계속 실행하는 데몬(Daemon) 형태로 구동되지 않으며, 실행된 후 해당 기능을 수행하고 즉시 종료되는 형태로 구동된다. 이는 운영 체제(10)가 다중 실행 또는 멀티 인스턴스(Multi-instance)를 지원하지 않는 경우에도 복수의 어플리케이션(30)을 구동시키기 위함이다. 즉, 컨테이너 실행부(200) 및 이의 세부 구성 각각은 앞서 설명한 바와 같이, 어플리케이션의 실행 요청을 수신하는 객체이다.
컨테이너 실행부(200)는 컨테이너 에이전트(210), 더미 컨테이너 실행부(220) 및 대기 모드 에이전트(230)를 포함한다.
컨테이너 에이전트(210)는 어플리케이션 런처(211)와 컨테이너 업데이트 모듈(213)을 포함한다. 컨테이너 에이전트(210)는 어플리케이션(30)을 실행하도록 요청 받으면 어플리케이션(30)을 실행시키는 트리거 동작을 수행한다.
어플리케이션(30) 실행을 트리거하는 것은 어플리케이션 런처(211)가 더미 컨테이너 실행부(220)를 통해 실행 인자를 어플리케이션 런타임 계층부(300)에 전달함으로써 이루어진다. 어플리케이션 런처(211)는 어플리케이션(30)의 식별자(ID) 및 주소(URL) 중 적어도 하나를 실행 인자로 전달하여 어플리케이션(30)이 실행되도록 할 수 있다. 이때, 어플리케이션(30)의 주소(URL)가 인자로 전달되는 경우, 어플리케이션(30)은 해당 주소를 시작 페이지로 하여 실행될 수 있다. 어플리케이션(30)의 명칭 또는 식별자(ID)만 인자로 전달된 경우, 해당 어플리케이션(30)의 모든 소스 파일이 저장된 패키지에 대한 메타 데이터(Meta data)로부터 추출한 디폴트 페이지(default page)를 시작 페이지로 실행한다. 여기서, 디폴트 페이지는 어플리케이션(30) 설치 시, 어플리케이션(30)의 메타 데이터로부터 추출되어 레지스트리 매니저(320)를 통해 등록된 것이다.
컨테이너 에이전트(210)는 컨테이너 코어(21)의 일부 또는 전부를 업데이트하는 역할을 수행한다. 업데이트는 다음의 2 가지 방법에 따라 이루어질 수 있다. 첫째, 업데이트를 위한 서버가 컨테이너 에이전트(210)를 업데이트를 수행하도록 트리거(trigger)하는 방법이 있으며, 이 방법은 서버가 "SMS push"를 통해 컨테이너 에이전트(210)를 트리거하는 것을 예시할 수 있다. 둘째, 컨테이너 에이전트(210)가 주기적으로 업데이트를 위해 확인하는 방법이 있다. 이는 컨테이너 에이전트(210)가 주기적으로 업데이트를 수행해야 할지 여부를 자가 진단(Self Check)하는 방법이다. 상술한 업데이트는 컨테이너 업데이트 모듈(213)에 의해 이루어질 수 있다. 컨테이너 업데이트 모듈(213)은 컨테이너 코어(21)의 전부를 업데이트하거나, 컨테이너 코어(21)의 각 구성을 업데이트 할 수 있다. 즉, 컨테이너 코어(21)는 복수의 세부 구성으로 모듈화되어 있으므로, 컨테이너 업데이트 모듈(213)은 각 구성을 개별적으로 업데이트 할 수 있다. 특히, 브라우저 엔진 계층부(400)의 플러그 인(430)의 경우, 새로운 기능을 구현하기 위한 플러그 인(430)을 추가로 설치할 수 있다. 또한, 컨테이너 업데이트 모듈(213)은 컨테이너 코어(21)의 각 구성이 사용하는 데이터를 업데이트 할 수 있다. 예컨대, 보안 계층부(500)의 보안 정책들을 새로 업데이트할 수 있다.
더미 컨테이너 실행부(220)는 운영 체제(10) 또는 컨테이너 에이전트(210)로부터 어플리케이션을 실행할 것을 요청 받아, 실제로 어플리케이션의 실행을 담당하는 어플리케이션 런타임 계층부(300)의 런타임 매니저(310)를 실행시킨다. 그런 다음, 더미 컨테이너 실행부(220)는 런타임 매니저(310)의 커맨드 핸들러(311)에 실행 명령을 전달한 후, 자기 자신의 실행을 종료한다. 이때, 런타임 매니저(310)가 이미 실행 중이면, 단순히 커맨드 핸들러(311)에 실행 명령을 전달한 후, 자기 자신의 실행을 종료한다. 여기서, 더미 컨테이너 실행부(220)가 실행 명령을 전달하는 것은, 컨테이너 코어(21)의 런타임 매니저(310)에 제어권을 넘겨주는 것을 의미한다.
특히, 더미 컨테이너 실행부(220)가 제어권을 넘겨준 후, 자기 자신의 실행을 종료하는 것은 운영 체제(10)가 다중 실행 또는 동일한 객체의 멀티 인스턴스를 지원하지 않는 경우, 복수의 어플리케이션을 실행시키기 위한 것이다. 즉, 런타임 매니저(310)은 언제나 종료 상태이므로, 운영 체제(10)로부터 어플리케이션의 실행 요청은 단일 실행(단일 인스턴스)이며, 어플리케이션의 다중 실행은 런타임 매니저(310)에서 수행하므로, 운영 체제(10)에 상관 없이 언제나 어플리케이션을 다중으로 실행시킬 수 있다.
한편, 더미 컨테이너 실행부(220)가 컨테이너 에이전트(210)가 어플리케이션 런처(211)를 통해 더미 컨테이너 실행부(220)에 어플리케이션 실행 요청을 전달하는 경우에도, 컨테이너 에이전트(210)는 더미 컨테이너 실행부(220)와 마찬가지로 실행 요청 후에 자기 자신의 실행을 종료한다. 이는 더미 컨테이너 실행부(220)가 실행 명령 전송 후, 자기 자신의 실행을 종료하는 것과 같은 이유이다.
더미 컨테이너 실행부(220)는 실행 요청을 전달할 때, 어플리케이션(30)을 실행하기 위한 정보인 실행 인자를 같이 전송한다. 여기서, 실행 인자는 식별자 및 주소를 포함하며, 주소는 생략 될 수 있다. 여기서, 식별자는 어플리케이션(30)을 다른 어플리케이션(30)과 구분하기 위한 것이다. 따라서 어플리케이션(30) 실행 시, 실행 인자의 식별자를 통해 해당 어플리케이션(30)을 다른 어플리케이션(30)과 구분하여 실행시킬 수 있다. 한편, 하나의 어플리케이션(30)은 복수의 페이지로 이루어지며, 각각의 페이지는 주소가 할당된다. 또한, 어플리케이션(30)은 복수의 페이지 중 어느 하나의 페이지를 시작 페이지로 하여 실행된다. 따라서, 실행 인자에 주소가 포함된 경우, 해당 주소를 시작 페이지로 하여 어플리케이션(30)을 실행시킬 수 있다. 실행 인자에 주소가 포함되지 않는 경우, 어플리케이션(30) 설치 시 미리 설정된 디폴트 페이지를 시작 주소로 하여 어플리케이션(30)을 실행시킬 수 있다.
어플리케이션(30)을 단말의 대기 모드 화면에서 동작시키기 위한 모듈로써, 운영 체제(10) 별로 각각의 대기 모드 컴포넌트 프로토콜(IDLE Component Protocol)에 맞춰 구현된다.
다음으로, 본 발명의 실시예에 따른 어플리케이션 런타임 계층부(300)에 대해서 설명하기로 한다.
도 3 내지 도 6을 참조하면, 어플리케이션 런타임 계층부(300)는 어플리케이션 실행 환경을 제공하며, 전체 플랫폼(20)의 커널(Kernel) 역할을 수행한다. 어플리케이션 런타임 계층부(300) 어플리케이션(30)이 생성되면, 그 생성된 어플리케이션(30)을 관리하고, 어플리케이션 설치 및 구성 정보 설정을 위한 레지스트리(Registry) 정보 및 사용자 인터페이스(UI, User Interface)를 관리한다.
런타임 매니저(310)는 어플리케이션(30)이 실행된 경우, 이 어플리케이션(30)의 컨텍스트(context)를 관리하고, 이벤트 핸들링(Event Handling)을 수행하며, 컨테이너 실행부(200)로부터의 명령이 있으면, 이 명령을 처리한다. 이를 위하여, 런타임 매니저(310)는 커맨드 핸들러(Command Handler, 311), 컨텍스트 매니저(Context Manager, 313), 이벤트 핸들러(Event Handler, 315), 라이프 사이클 매니저(Life cycle Manager, 317)를 포함한다.
커맨드 핸들러(311)는 컨테이너 실행부(200)로부터 프로세스간 통신(IPC, Inter-Process Communication) 방법으로 명령을 전달 받아 해석한 뒤, 각 명령에 해당하는 동작을 수행하는 IPC 명령 처리기이다. 커맨드 핸들러(311)는 명령에 따라 다음과 같은 동작을 수행한다. 커맨드 핸들러(311)는 컨텍스트 매니저(313)에 어플리케이션(30)의 실행 또는 종료를 요청할 수 있다. 또한, 커맨드 핸들러(311)는 플랫폼(20)의 구성 정보를 레지스트리 매니저(320)를 통해 업데이트 할 수 있다. 그리고 커맨드 핸들러(311)는 자원을 정리하고 자기 자신 프로세스인 플랫폼(20)을 종료할 수 있다. 이는 타 프로세스 종료 기능을 제공하지 않는 운영 체제(10)를 대비하여 플랫폼(20) 업데이트 시에 실행 중인 플랫폼(20) 프로세스를 종료시키기 위한 것이다. 또한, 커맨드 핸들러(311)는 플러그 인 매니저(420)에 플러그 인(430)의 설치, 삭제 및 업데이트를 요청할 수 있다.
컨텍스트 매니저(313)는 어플리케이션(30)의 컨텍스트를 관리하는 모듈로써, 브라우저 엔진(410) 렌더러(Renderer)와 윈도우의 생성 및 소멸을 관장한다. 커맨드 핸들러(311)로부터 어플리케이션(30) 실행이 요청되면, 컨텍스트 매니저(313)는 브라우저 엔진(410)으로부터의 윈도우 생성 명령에 따라 윈도우를 생성한다. 이어서, 컨텍스트 매니저(313)는 브라우저 엔진(410)의 렌더러(Renderer)를 생성한다. 그런 다음, 컨텍스트 매니저(313)는 생성된 렌더러를 통해 요청된 페이지를 렌더링하여, 랜더링된 결과를 생성된 윈도우에 표시한다. 컨텍스트 매니저(313)는 커맨드 핸들러(311)로부터 브라우저를 종료할 것을 지시하는 명령이나, 이벤트 핸들러(315)와 브라우저 엔진(410)으로부터 윈도우 소멸시킬 것을 지시하는 명령을 수신할 수 있다. 이러한 경우, 컨텍스트 매니저(313)는 브라우저 엔진(410)의 렌더러 및 윈도우 자원을 회수한 후, 어플리케이션(30)을 종료하거나 윈도우를 소멸시킨다. 또한, 컨텍스트 매니저(313)는 어플리케이션(30)이 소유하고 있는 모든 윈도우가 소멸되었을 경우 해당 어플리케이션(30)을 종료시킨다.
이벤트 핸들러(315)는 컨텍스트 매니저(313)에서 생성한 윈도우 관련 이벤트와 플랫폼(20) 자체에서 확장된 시스템 관련 이벤트 등을 받아서 처리하는 모듈이다. 한편, 브라우저 엔진(410)에 관련된 이벤트는 브라우저 엔진(410)에서 직접 처리하므로, 이벤트 핸들러(315)는 브라우저 엔진(410)과 관련된 이벤트는 처리하지 않는다.
라이프 사이클 매니저(317)는 어플리케이션 및 그 어플리케이션의 윈도우 및 페이지의 라이프 사이클을 관리한다. 어플리케이션(30)은 복수의 페이지로 구성될 수 있다. 또한, 어플리케이션(30) 마다 적어도 하나의 윈도우를 생성하여 시작되며, 적어도 하나의 페이지가 윈도우를 통해 표시된다. 다른 페이지로 이동하는 경우, 이전 페이지는 그 표시가 사라질 수 있다. 또한, 어플리케이션(30)과 관련된 모든 윈도우가 닫히면 그 어플리케이션(30)은 종료된다. 이처럼, 어플리케이션(30), 그 어플리케이션(30)의 윈도우 및 페이지의 라이프 사이클이 존재하며, 라이프 사이클 매니저(317)는 이를 관리한다.
레지스트리 매니저(320)는 어플리케이션(30) 설치 정보 및 플랫폼(20)의 구성(Configuration) 정보를 관리하는 모듈이며, 실제 정보는 보안 매니저(Security Manager)(625)를 통해 보안된 영역에 보관할 수 있다. 레지스트리 매니저(320)는 어플리케이션(30), 플랫폼(20) 및 플러그 인(430) 관련 기능을 제공한다. 이러한 레지스트리 매니저(320)가 제공하는 기능은 그 대상에 따라 다음과 같다.
UI 엔진(330)은 브라우저 엔진(410)이 렌더링하는 영역 이외의 모든 UI 및 사용자 입력 처리를 담당한다. 구체적으로, 어플리케이션(30) 컨텐츠 영역 이외의 모든 영역의 표시를 담당하며, 상태 바 영역과 소프트 버튼 영역이 여기에 해당한다. 여기서, 상태 바 영역은 단말의 상태를 나타내는 아이콘들을 표시하는 영역으로, 주로 표시부(15)의 상단에 배치되며, 이 영역에는 수신 신호 세기를 나타내는 아이콘, 배터리 잔량을 나타내는 아이콘, 진동 모드인지 또는 벨 모드인지 여부를 나타내는 아이콘 등이 표시될 수 있다. 또한, 소프트 버튼 영역은 단말이 표시부(15)로 풀 터치 터치스크린을 채용한 경우, "메뉴"키, "확인"키, "취소"키 등의 기본 키를 표시하는 영역으로, 주로 표시부(15)의 하단에 배치된다.
네트워크 셀렉터(340)는 컨테이너 코어(21)가 사용할 네트워크를 설정하고 관리하는 기능을 제공하는 모듈로서 사용자가 단말에서 사용 가능한 네트워크들(예컨대, Modem, Wi-Fi, Bluetooth 등)의 선택 방법 및 우선순위를 설정할 수 있도록 한다. 네트워크 선택 방법은 자동, 수동, 반자동의 3가지 옵션을 제공한다. 자동일 경우 설정된 우선순위에 따라 접속 가능한 네트워크를 통해 접속하며, 수동일 경우 선택된 네트워크에 대해서만 접속을 시도하고, 반자동일 경우 네트워크 연결 또는 전환이 요구될 때 마다 팝업을 띄워 사용자가 원하는 네트워크를 선택할 수 있도록 한다.
어플리케이션 동기 매니저(350)는 단말이 온 라인 또는 오프라인에 있는지 여부와 상관없이, 어플리케이션(30)의 실행을 끊김 없이(Seamless) 보장해주는 모듈로서, 외부 데이터에 접근하는 어플리케이션(30)에 대해서 네트워크 연결이 끊겼을 경우에도 캐싱 매커니즘(Caching Mechanism)을 통해 동작 가능하도록 하며, 다시 네트워크에 연결되었을 때, 로컬 스토리지에 저장되었던 데이터를 사용자가 인식하지 못하는 사이에 백그라운드로 자동 싱크(Auto Sync)를 수행할 수 있도록 한다.
다음으로, 본 발명의 실시예에 따른 브라우저 엔진 계층부(400)에 대해서 설명하기로 한다.
도 5 및 도 7을 참조하면, 브라우저 엔진 계층부(400)는 브라우저 엔진(410), 플러그 인 매니저(Plug-In Manager, 420) 및 플러그 인 매니저(420)가 관리하는 다수의 플러그 인(430)을 포함한다.
브라우저 엔진(410)은 어플리케이션(30)을 해석하여 화면에 표시하고 실행시키는 역할을 수행한다. 이를 위하여, 브라우저 엔진(410)은 마크 업 랭귀지(Markup Language)와 스타일시트 등을 처리하기 위한 엔진 코어(411)와, 스크립트 언어를 처리하기 위한 인터프리터인 스크립트 엔진(413)을 포함한다. 또한, 브라우저 엔진(410)은 프로토콜 처리기, XML 처리기, 윈도우(Window) 처리기, 폰트(Font) 처리기, 이미지 디코더(Image Decoder) 처리기, 국제화(Internationalization) 처리기 및 시스템(System) 처리기를 포함한다. 프로토콜 처리기는 HTTP, HTTPS 프로토콜 기능을 제공하며, HTTP 기능 동작을 위해 필요한 업로드(upload), 프록시들(proxies), 쿠키(cookie) 등에 대한 관리 기능을 제공한다. XML 처리기는 XML 파서 기능 및 XSLT 변환 기능을 제공한다. 윈도우 처리기는 브라우저 엔진(410)이 사용할 윈도우 시스템을 제공하며, 엔진 코어(411)가 사용할 버튼, 리스트 박스, 콤보 박스, 텍스트 에디터 등의 UI 위젯(Widget)을 제공한다. 폰트 처리기는 엔진 코어(411)가 사용할 폰트 시스템을 제공한다. 이미지 디코더 처리기는 엔진 코어(411)가 사용할 이미지 디코더 기능을 제공한다. 국제화 처리기는 다국어 처리를 위해 필요한 문자열 변환 기능을 제공한다. 시스템 처리기는 타이머 등의 시스템 기능을 제공한다. 브라우저 엔진(410)은 프로토콜 처리기, XML 처리기, 윈도우 처리기, 폰트 처리기, 이미지 디코더 처리기, 국제화 처리기 및 시스템 처리기 등이 그 기능을 수행하기 위하여 필요한 기본적인 기능은 이식 계층부(600)를 통해 운영 체제(10)에서 얻어온다.
한편, 브라우저 엔진 계층부(400)는 어플리케이션(30)이 웹 표준 기능 이외의 기능을 요청하는 경우, 이러한 기능을 플러그 인(430)을 통해 제공할 수 있다. 여기서, 웹 표준 기능 이외의 기능은 운영 체제(10)가 관리하는 단말의 기능을 실행함을 의미한다. 예컨대, 이는 주소록이나 다른 어플리케이션과의 연동과 같은 장치에 의존적인 기능 등이 그 예가 될 수 있다.
어플리케이션(30)이 운영 체제(10)가 관장하는 기능 실행을 요청하면, 브라우저 엔진(410)은 플러그 인 매니저(420)를 통해 해당 기능을 가지는 플러그 인(430)을 호출하며, 호출된 플러그 인(430)은 이식 계층(600)에서 해당하는 기능을 제공하는 인터페이스 모듈(610)에 어플리케이션(30)의 요청을 전달한다. 이 전달 방법은 인터페이스 모듈(610)이 운영 체제(10)에 무관하게 단일한 형식의 인터페이스를 제공함으로써, 플러그 인(430)은 운영 체제(10)에 무관하게 언제나 동일한 형식으로 해당 기능의 요청을 전달한다. 플러그 인(430)의 요청 전달에 따라, 해당하는 인터페이스 모듈(610)은 어플리케이션(30)이 요청한 단말의 기능을 운영 체제(10)를 통해 실행한다. 이러한 기능 실행을 위하여, 인터페이스 모듈(610)은 상술한 요청에 따라 각 운영 체제(10)에 맞는 형식으로 변경하여 운영 체제(10)에 지시한다.
상술한 바와 같이, 브라우저 엔진 계층부(400)를 브라우저 엔진(410)에 플러그 인(430)을 동적으로 결합하는 구조로 설계함으로써, 다음과 같은 이점을 가질 수 있다. 브라우저 엔진(410)이 업데이트될 경우 최신의 브라우저 엔진(410)을 별다른 수정 없이 플랫폼(20)에 빠르게 적용할 수 있다. 또한, 현재 파악되지 않은 기능의 확장도 일관되게 플러그 인(430) 형태로 제공할 수 있는 이점이 있다. 예를 들어, 특정 형식의 미디어를 재생할 수 있는 플러그 인이 필요한 경우, 이를 플러그 인(430)으로 개발하여 추가하는 것이 가능하다.
상술한 플러그 인 매니저(420) 및 플러그 인(430)에 대해서 좀 더 상세히 살펴보면 다음과 같다.
플러그인 매니저(420)는 플러그 인(430)을 관리한다. 즉, 플러그인 매니저(420)는 설치된 플러그 인(430)의 목록을 관리하고, 새로운 플러그 인(430)을 다운로드 및 설치하며, 기 존재하는 플러그 인(430)을 업데이트하고, 어플리케이션(30)의 기능 실행 요청이 있으면, 이 기능 실행의 종류에 따라 해당하는 플러그 인(430)을 호출한다.
본 발명의 실시예에서 플러그 인(430)은 리소스 플러그 인(Resource Plug-In, 431), 시스템 API 플러그 인(System API Plug-In, 433), 공통 작업 플러그 인(Collaboration Plug-In, 435) 및 싱크 플러그 인(Sync Plug-In, 437)을 포함한다.
리소스 플러그 인(431)은 어플리케이션(30)이 단말 자원에 관련된 기능 실행을 요청하면, 이식 계층부(600)의 리소스 매니저(621)에 전달한다. 이에 따라, 리소스 매니저(621)는 해당 기능을 실행한다. 즉, 리소스 매니저(621)는 운영 체제(10)의 기능 실행을 통해 단말 자원을 제공할 수 있다.
시스템 API 플러그 인(433)은 어플리케이션(30)이 OS API 관련 기능을 호출하면 이식 계층부(600)의 OS API 매니저(623)에 전달한다. 이에 따라, 이식 계층부(600)의 OS API 매니저(623)는 해당 기능을 실행한다.
공통 작업 플러그 인(435)은 어플리케이션(30)이 다른 어플리케이션과의 연동을 요청하면, 이식 계층부(600)의 공통 작업 매니저(625)에 전달한다. 그러면, 공통 작업 매니저(625)는 해당 기능을 실행한다.
싱크 플러그 인(437)은 어플리케이션(30)이 타 장치와의 연동 및 타 장치와의 데이터 동기화 관련 기능을 호출하면, 이식 계층(600)의 싱크 매니저(627)에 전달한다. 그러면, 싱크 매니저(627)는 해당 기능을 실행한다.
다음으로, 본 발명의 실시예에 따른 보안 계층부(500)에 대해서 설명하기로 한다.
도 3 내지 7을 참조하면, 보안 계층부(500)는 어플리케이션 런타임 계층부(300) 및 브라우저 엔진 계층부(400)의 각 구성들이 이식 계층부(600)의 접근에 대해 인증을 수행하고, 보안 정책에 따라 그 접근의 일부 또는 전부를 허여한다. 이러한 보안 계층부(500)는 인증 매니저(510) 및 정책 매니저(520)를 포함한다.
인증 매니저(510)는 어플리케이션(30) 및 플러그 인(430)에 대해 설치 및 실행 시 인증을 수행한다. 여기서, 설치 시, 인증은 어플리케이션(30) 및 플러그 인(430)이 정당한 절차에 의해서 설치되는지 여부를 확인하는 절차이고, 실행 시, 인증은 어플리케이션(30) 및 플러그 인(430)이 정당한 절차에 의해서 설치되었는지 여부를 확인하는 절차이다. 이러한 인증을 위하여, 인증 매니저(510)는 해싱 알고리즘(hashing algorithm) 및 각종 보안 라이브러리를 구비하며, 이에 따라 인증 기능을 수행한다.
정책 매니저(520)는 컨테이너 업데이트 모듈(213)로부터 접근 제어에 대한 정책을 기술한 파일 등을 전달 받고, 이를 설치 및 저장한다. 그리고 정책 매니저(520)는 각종 플러그 인(430)의 접근 요청에 대해 미리 저장된 정책을 검색하여, 해당 정책에 따라 접근의 일부 또는 전부를 수락하거나 거부한다. 정책 매니저(520)는 그 접근 제어에 대한 정책을 실시간으로 업데이트할 수 있다.
다음으로, 본 발명의 실시예에 따른 이식 계층부(600)에 대해서 설명하기로 한다.
도 3 내지 도 7을 참조하면, 이식 계층부(600)는 컨테이너 커먼 모듈(22)에 의해 어플리케이션(30)이 운영 체제(10)의 종류에 무관하게 구현되고 동작할 수 있도록, 운영 체제(10)가 제공하는 인터페이스를 단일 형식의 인터페이스로 변경하여 제공한다. 이를 위하여, 이식 계층부(600)의 인터페이스는 운영 체제(10)에 따라 구현되는 동시에, 이식 계층부(600) 및 컨테이너 커먼 모듈(22) 상호간에 맞도록 구현될 수 있다. 또한, 어플리케이션(30)은 컨테이너 커먼 모듈(22)에 맞춰 기능 실행을 요청한다.
이에 따라, 어플리케이션(30)이 컨테이너 커먼 모듈(22)에 기능 실행을 요청하면, 컨테이너 커먼 모듈(22)은 이식 계층부(600)에 이를 전달할 수 있다. 그리고, 이식 계층부(600)은 컨테이너 커먼 모듈(22)로부터 전달 받은 기능 실행 요청을 통해 운영 체제(10)에 해당 기능을 실행하도록 지시할 수 있다.
이식 계층부(600)는 다수개의 인터페이스 모듈(610)을 포함하며, 각 인터페이스 모듈(610)은 기능별로 서로 관련된 복수개의 인터페이스로 이루어진다. 각 인터페이스는 운영 체제(10)의 종류에 따라 단말의 기능을 실행시킬 수 있도록하며, 컨테이너 커먼 모듈(22)에 맞게 기능 실행 요청을 수신할 수 있다.따라서 어플리케이션(30)은 단말의 자원에 대해 접근할 수 있는 인터페이스를 운영 체제(10)에 무관하게 제공 받을 수 있다.
인터페이스 모듈(610) 내부의 인터페이스는 각각 라이브러리 형태로 구현되고 관리될 수 있다. 이후에 추가된 기능을 실행하는 인터페이스를 추가로 제공하고 싶다면, 별도의 인터페이스를 정의하고 라이브러리 형태로 구현한 후, 해당하는 인터페이스 모듈(610)에 링크시킬 수 있다. 이러한 인터페이스는 운영 체제(10)의 종류에 따라, 운영 체제(10)를 통해 해당 기능을 실행하도록 구현할 수도 있고, 컨테이너 실행부(200), 컨테이너 커먼 모듈(22) 및 어플리케이션(30) 등의 요청을 각 운영 체제(10)에 맞게 형식만 변환하여 운영 체제(10)에 바이패스(bypass)하는 스터브(stub)일 수도 있다.
인터페이스 모듈(610)은 HTTP(hypertext transfer protocol) 모듈(611), XML(eXtensible Markup Language) 모듈(613), 스레드(Thread) 모듈(615), UI 백엔드(UI Backend) 모듈(617), 보안 스토리지(secure storage) 모듈(619), 리소스 매니저(Resource Manager, 621), OS API 매니저(OS API Manager, 623), 공통 작업 매니저(Collaboration Manager, 625), 싱크 매니저(Sync Manager, 627) 및 로컬 스토리지 매니저(Local Storage Manager, 629)를 포함한다.
HTTP 모듈(611)은 기본적으로 HTTP 및 HTTPS 관련 기능을 가지는 인터페이스를 포함한다. 브라우저 엔진(410)이 동작하기 위해서는 어플리케이션 컨텐츠를 브라우저 엔진(410)에 전달해줄 수 있는 HTTP 프로토콜 처리기가 필요하며, HTTP 모듈(611)은 이러한 HTTP 프로토콜 처리기 기능을 제공하는 인터페이스를 포함한다. 예컨대, HTTP 모듈(611)은 소켓 생성, TCP/IP(/l) 연결, 데이터 전송, 데이터 수신, HTTP 통신 연결, 데이터 요청, SSL(yer) 보안 통신 채널 연결 및 인증서 요청 등의 기능을 가지는 인터페이스를 제공할 수 있다. HTTP 모듈(611)은 내부에 별도의 라이브러리를 가지고 있으며, 각 라이브러리는 별도로 구현되고 관리된다. 각 라이브러리는 운영 체제(10)의 HTTP와 관련된 기능 지원 수준에 따라, 요구사항을 실제 구현한 코드일 수도 있고, 단순히 브라우저 엔진(410)의 요구를 OS에 바이패스(bypass) 전달하는 스터브일 수 도 있다.
XML 모듈(613)은 XML 파서 기능을 제공하는 인터페이스 및 XSLT(Extensible Style sheet Language Transformations) 변환 기능을 제공하는 인터페이스를 포함한다. XML 파서 기능은 HTML 컨텐츠를 파싱(parsing)해서 DOM(Document Object Model) 트리 형태로 변환하는 기능이며, XSLT 변환 기능은 XSLT를 통해 XML 문서를 변환하는 기능이다. 브라우저 엔진(410)은 어플리케이션(30)을 랜더링하기 위해 이러한 XML 파서 기능 및 XSLT 변환 기능이 필요하다. 이에 따라, XML 모듈(613)은 운영 체제(10)에서 XML 파서 기능 및 XSLT 변환 기능을 사용할 수 있는지 여부에 따라 사용할 수 있는 경우 단순 링크하여 제공하며, 그렇지 않은 경우 인터페이스를 통해 실제 구현 코드를 제공한다.
스레드 모듈(615)은 스레드(thread) 기능을 가지는 인터페이스를 포함한다. 여기서, 스레드 기능은 어플리케이션(30)이 복수의 명령을 처리하는 경우 그 우선 순위 등을 처리하는 것을 말한다. 스레드 모듈(615)의 인터페이스는 런타임 매니저(310)와 브라우저 엔진(410)에서 사용된다.
UI 백엔드 모듈(617)은 브라우저 엔진(410)의 사용자 인터페이스(UI)를 이식(porting)하기 위해 필요한 운영 체제(10) 자체의 윈도우 시스템 기능을 제공하는 인터페이스를 포함한다. 브라우저 엔진(410)이 어플리케이션(30)이 제공하는 컨텐츠를 표시부(15)에 표시하기 위해서는 버튼(Button), 리스트 박스(List Box), 콤보 박스(Combo Box), 에디트 박스(Edit Box) 등의 다양한 UI를 제공하는 위젯(Widget)이 필요하다. 따라서 UI 백엔드 모듈(617)은 운영 체제(10)로부터 어플리케이션(30)이 필요로 하는 UI의 위젯을 얻어 이를 브라우저 엔진(410)에 전달한다. 그리고 UI 백엔드 모듈(617)은 운영 체제(10)의 폰트 시스템을 브라우저 엔진(410)에 전달하는 역할도 수행한다. 또한, UI 백엔드 모듈(617)의 인터페이스는 화면 전화 효과를 표시 및 선택할 수 있도록 한다.
보안 스토리지 모듈(619)은 보안 스토리지(Secure Storage)에 접근할 수 있는 인터페이스를 포함한다. 여기서, 보안 스토리지는 보안이 적용되어야 할 데이터를 저장한다. 이러한 인터페이스는 보안 계층(500)의 인증 매니저(510) 및 정책 매니저(520)는 보안되어야 할 데이터를 다루며, 이 데이터는 보안 스토리지 모듈(619)의 인터페이스를 통해 보안 스토리지에 저장된다. 한편, 보안 스토리지가 없는 단말 또는 장치의 경우, 보안 스토리지 모듈(619)은 소프트웨어 적으로 암호화 알고리즘을 적용하여 실시간으로 데이터를 암호화 및 복호화하는 기능을 제공하는 인터페이스를 더 포함할 수 있다.
리소스 매니저(621)는 단말 자원에 접근할 수 있는 인터페이스를 제공한다. 이러한 단말 자원은 단말의 주변 장치(13)의 실행에 따라 생성되는 데이터가 될 수 있다. 예컨대, 단말 자원은 폰북(phone book), 사진(Photo), 통화 기록(Call History), SMS(Short Messaging Service) 목록 등을 포함한다. 이러한 인터페이스는 운영 체제(10)의 종류에 따라 단말 자원에 접근할 수 있도록하며, 컨테이너 커먼 모듈(22)로부터 단말 자원에 대한 접근 요청을 수신한다. 따라서 어플리케이션(30)은 단말의 자원에 대해 접근할 수 있는 인터페이스를 운영 체제(10)에 무관하게 제공 받을 수 있다. 리소스 매니저(621)는 내부에 각 자원 별로 별도의 라이브러리를 가지고 있으며, 각 라이브러리는 별도로 구현되고 관리된다. 각 자원 별로 별도의 인터페이스가 제공되며, 이후에 추가된 자원에 접근하는 인터페이스를 추가로 제공하고 싶다면, 별도의 인터페이스를 정의하고 라이브러리 형태로 구현한 후, 리소스 매니저(621)에 링크시킬 수 있다.
리소스 매니저(621)는 인터페이스를 통해 다음과 같은 기능을 제공할 수 있다. 리소스 매니저(621)는 수신 및 발송한 SMS 메시지에 대한 목록 및 각 SMS 메시지의 세부 내용, 수신 및 발신한 음성 통화 또는 화상 통화에 대한 세부 정보로 수신시각, 통화시간, 발신인 등을 제공할 수 있다. 또한, 리소스 매니저(621)는 폰북(Phonebook) 상의 각 개인의 목록 및 각 개인 목록에 대한 세부 정보를 제공하며, 폰북 상의 그룹 목록 및 각 그룹에 속한 각 개인의 목록을 제공할 수 있다. 그리고 리소스 매니저(621)는 스케줄, 알람, 메모 등의 목록 및 상세 정보를 제공할 수 있다. 또한, 리소스 매니저(621)는 사진, 비디오, 음악 등이 세부 정보 및 각각의 원본 데이터에 접근 가능한 경로를 제공할 수 있다.
OS API 매니저(623)는 운영 체제(10) 자체의 단말 제어 기능을 제공하며, 이러한 기능을 제공하는 인터페이스를 포함한다. OS API 매니저(623)는 인터페이스를 통해 다음과 같은 단말 기능을 제공한다. OS API 매니저(623)는 음성 통화, 화상 통화, 문자 메시지 기능, 랜드 마크(Landmark) 정보 제공, 위치 정보 제공 등의 단말 기능을 제공한다. 또한, OS API 매니저(623)는 각 운영 체제(10)의 대기 화면에 어플리케이션 등록 및 해제를 수행하는 기능을 제공할 수 있다. 그리고 OS API 매니저(623)는 오디오 또는 비디오 데이터를 생성 또는 삭제하는 단말 기능을 제공하며, 생성된 오디오 또는 비디오 데이터의 실행, 일시 정지 및 중지 등의 기능, 오디오 또는 비디오 데이터에 대해 볼륨 및 비디오 출력 위치를 지정하는 단말 기능을 제공할 수 있다. 게다가, OS API 매니저(623)는 카메라 미리 보기 설정, 캡처 등의 기능 및 시리얼 통신, 근거리 통신 등의 입출력을 제어하는 단말 기능을 제공할 수 있다.
공통 작업 매니저(625)는 각 운영 체제(10)에서 동작하는 다른 어플리케이션과의 연동 기능을 제공하는 인터페이스를 포함한다. 이러한 다른 어플리케이션은 폰북, 카메라, 음악 재생기, 다이얼러(Dialer), SMS 등과 관련된 것이 될 수 있다. 공통 작업 매니저(625)가 제공하는 인터페이스를 이용하면, 어플리케이션(30)은 상술한 다른 어플리케이션과 연동될 수 있다.
싱크 매니저(627)는 타 장치와 연동하여 데이터를 실시간으로 교환하는 기능을 제공하는 인터페이스를 포함한다. 단말이 다른 기기와 연동하여 그 기기와 데이터를 실시간으로 교환하려고 하는 경우, 운영 체제(10)는 그 단말이 타 장치와 연동하도록 하고, 타 장치의 데이터와 동기를 획득하도록 한다. 따라서 싱크 매니저(627)의 인터페이스는 상술한 연동 및 동기를 제공하는 운영 체제(10)의 기능을 제공한다.
로컬 스토리지 모듈(629)은 각 운영 체제(10)에 존재하는 고유의 스토리지 기능을 추출(Abstraction)하여, 그 종류에 상관없이 상위 계층에 일관되게 제공하는 인터페이스를 포함한다.
다음으로, 본 발명의 실시예에 따른 시스템 어플리케이션(40)에 대해서 설명하기로 한다.
도 4, 도 5 및 도 8을 참조하면, 시스템 어플리케이션(40)은 어플리케이션(30)의 다운로드 및 설치 등의 기능을 제공한다. 또한, 시스템 어플리케이션(40)은 설치된 어플리케이션(30)의 실행 및 설치된 어플리케이션(30)의 목록을 제공할 수 있다. 시스템 어플리케이션(40)은 그 자체가 어플리케이션(30) 형태로 작성되므로, 어플리케이션(30)과 마찬가지로 컨테이너 커먼 모듈(22)에 연결되어 동작한다. 이러한 시스템 어플리케이션(40)은 어플리케이션 매니저(41) 및 어플리케이션 다운로더(43)를 포함한다.
어플리케이션 매니저(41)는 시스템 API 플러그 인(433)을 통해 어플리케이션 런타임 계층부(300)의 레지스트리 매니저(320)에 접근하여 설치된 어플리케이션(30)의 정보를 얻어 올 수 있으며, 이를 UI를 통해 표시하는 역할을 수행한다.
어플리케이션 다운로더(43)는 어플리케이션(30)을 서버로부터 다운로드 하여 설치하는 역할을 수행한다.
다음으로, 본 발명의 실시예에 따른 어플리케이션 실행 방법에 대해서 설명하기로 한다. 이를 더미 컨테이너 실행부(220)의 동작을 통해 살펴보기로 한다. 도 9는 본 발명의 실시예에 따른 더미 컨테이너 실행부의 어플리케이션 실행 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 더미 컨테이너 실행부(220)는 자기 자신의 실행이 종료된 상태에 있다고 가정한다. 이러한 상태 중, 더미 컨테이너 실행부(220)는 S901 단계에서 어플리케이션(30) 실행 요청을 수신함으로써 자기 자신의 실행을 시작한다. 여기서, 실행의 시작이라 함은 객체를 인스턴스화 한다는 의미이다. 즉, 더미 컨테이너 실행부(220)는 하나의 객체(object)이며, 더미 컨테이너 실행부(220)가 실행을 시작한다는 것은 더미 컨테이너 실행부(220)가 인스턴스화 된다는 것을 의미한다.
이와 같이, 그 실행을 시작한 더미 컨테이너 실행부(220)는 S903 단계에서 런타임 매니저(310)가 실행 중인지 여부를 확인한다. 런타임 매니저(310)가 실행 중인 경우는 이미 적어도 하나의 다른 어플리케이션(30)이 실행되고 있음을 의미한다. 또한, 런타임 매니저(310)가 실행 중이 아닌 경우는 어떤 어플리케이션(30)도 실행되고 있는 상태가 아님을 의미한다. 또한, 런타임 매니저(310)가 실행 중인 경우에는, 런타임 매니저(310)의 내부 구성들인 커맨드 핸들러(311), 컨텍스트 매니저(313), 이벤트 핸들러(315) 및 라이프 사이클 매니저(317)가 실행 중임을 의미한다.
S903 단계의 확인 결과, 런타임 매니저(310)가 이미 실행 중이면, 더미 컨테이너 실행부(220)는 S907 단계에서 런타임 매니저(310)의 커맨드 핸들러(311)에 어플리케이션(30)을 실행하도록 실행 인자와 함께 실행 명령을 전송한다. 여기서, 실행 인자는 어플리케이션의 식별자 및 어플리케이션을 구성하는 페이지들의 어느 한 페이지의 주소 중 적어도 하나를 포함한다. 그런 다음, 더미 컨테이너 실행부(220)는 S909 단계에서 자기 자신의 실행을 종료한다.
반면, S903 단계의 확인 결과, 런타임 매니저(310)가 실행 중이 아니면, 더미 컨테이너 실행부(220)는 S905 단계에서 런타임 매니저(310)를 실행 시킨다. 런타임 매니저(310)를 실행시키는 것은 런타임 매니저(310)의 내부 구성들인 커맨드 핸들러(311), 컨텍스트 매니저(313), 이벤트 핸들러(315) 및 라이프 사이클 매니저(317)를 실행시키는 것과 같다. 따라서, 더미 컨테이너 실행부(220)는 S907 단계에서 런타임 매니저(310)의 커맨드 핸들러(311)에 어플리케이션(30)을 실행하도록 실행 인자와 함께 실행 명령을 전송한다. 여기서, 실행 인자는 어플리케이션의 식별자 및 어플리케이션을 구성하는 페이지들의 어느 한 페이지의 주소 중 적어도 하나를 포함한다. 그런 다음, 더미 컨테이너 실행부(220)는 S909 단계에서 자기 자신의 실행을 종료한다.
이와 같이, 본 발명은 어플리케이션(30)의 실행을 트리거하는 더미 컨테이너 실행부(220)와 실제로 어플리케이션(30)을 실행시키는 런타임 매니저(310)가 서로 다른 객체(Object)로 이루어져 있으므로, 운영 체제(10)가 복수의 인스턴스를 허용하지 않는 경우에도, 어플리케이션(30)의 멀티 실행을 수행할 수 있다.
런타임 매니저(310)는 자기 자신의 실행 후, 실제로 어플리케이션(30)을 실행시키며, 복수의 어플리케이션(30)을 실행 시킬 수 있다. 하지만, 멀티 인스턴스를 지원하지 않는 운영 체제(10)의 경우, 복수의 어플리케이션(30)을 실행시키기 위해서, 런타임 매니저(310)는 적어도 2 번 실행되어야 하므로 복수의 어플리케이션(30)을 실행시킬 수 없다.
따라서 본 발명은 더미 컨테이너 실행부(220)가 어플리케이션(30)의 실행 요청이 있을 때마다 새로 실행되어, 실행 인자와 함께 런타임 매니저(310)에 어플리케이션(30)을 실행시키도록 실행 명령을 한 후, 자기 자신의 실행을 종료함으로써, 멀티 인스턴스를 지원하지 않는 운영 체제(10)에서도 복수의 어플리케이션(30)을 실행시킬 수 있다.
이어서, 본 발명의 실시예에 따른 어플리케이션(30) 실행 방법에 대해서 보다 상세하게 설명하기로 한다. 이때, 어떤 어플리케이션(30)도 실행되고 있지 않은 상태에서 어플리케이션(30)을 실행시키는 방법과, 적어도 하나의 어플리케이션(30)이 실행되어 있는 상태에서 다른 어플리케이션(30)을 실행시키는 방법으로 구분하여 설명하기로 한다.
도 10은 본 발명의 실시예에 따른 어떤 어플리케이션도 실행되고 있지 않은 상태에서 어플리케이션을 실행시키는 방법을 설명하기 위한 도면이다. 도 10에서 어떤 어플리케이션(30)도 실행되고 있지 않은 상태라고 가정한다. 또한, 본 발명의 실시예에 따라 더미 컨테이너 실행부(220)도 실행 종료 중인 상태이다.
도 10을 참조하면, 사용자가 입력부(14)를 통해 특정의 어플리케이션(30)을 실행하도록 요청하면, 제어부(11)는 이를 감지하며, 이러한 입력에 대한 감지는 운영 체제(10)를 통해 이루어진다. 이에 따라, 운영 체제(10)는 S1001 단계에서 더미 컨테이너 실행부(220)를 실행시키고, 사용자의 특정 어플리케이션(30)에 대한 실행 요청을 실행할 어플리케이션(30)의 실행 인자와 함께 전달한다.
어떤 어플리케이션(30)도 실행되고 있지 않은 상태이므로, 런타임 매니저(310)는 실행 중이 아니다. 따라서, 어플리케이션(30) 실행 요청을 수신한 더미 컨테이너 실행부(220)는 S1003 단계에서 어플리케이션(30)을 실제로 실행시키는 역할을 하는 런타임 매니저(310)를 실행시킨다. 런타임 매니저(310)가 실행됨에 따라 런타임 매니저(310)의 구성 요소인 커맨드 핸들러(311) 및 컨텍스트 매니저(313)도 실행된다. 따라서, 더미 컨테이너 실행부(220)는 S1005 단계에서 커맨드 핸들러(311)에 어플리케이션(30)을 실행하도록 실행 명령과 함께 실행 인자를 전송한다. 그런 다음, 더미 컨테이너 실행부(220)는 S1007 단계에서 자신의 실행을 종료한다. 여기서, S1007 단계는 S1007 단계 이후의 S1009 내지 S1013 단계의 실행 순서와 상관 없이, S1005 단계 후, 바로 수행된다. 이와 같이, 더미 컨테이너 실행부(220)는 어플리케이션(30) 실행 명령을 전송하고 바로 종료함으로써, 멀티 실행을 지원하지 않는 운영 체제(10)에서도 다른 어플리케이션(30) 실행 요청을 수신할 준비를 갖추게 된다.
한편, 실행 인자를 포함하는 실행 명령을 수신한 커맨드 핸들러(311)는 S1011 단계에서 런타임 매니저(310)의 내부 구성인 컨텍스트 매니저(313)에 실행 인자에 대응하는 어플리케이션(30)이 실행되도록 해당 실행 명령을 제공한다. 그러면, 컨텍스트 매니저(313)는 S1011 단계에서 해당 어플리케이션(30)을 실행 시킨다. 이때, 컨텍스트 매니저(313)는 브라우저 엔진 계층부(400)의 브라우저 엔진(410)을 호출함으로써 어플리케이션을 실행시킨다. 이때, 브라우저 엔진(410)은 S1013 단계에서 어플리케이션의 랜더링을 수행한다.
도 11은 본 발명의 실시예에 따른 어플리케이션이 실행되어 있는 상태에서 다른 어플리케이션을 실행시키는 방법을 설명하기 위한 도면이다. 도 11에서는 적어도 하나의 어플리케이션(30)이 실행 중인 상태이며, 더미 컨테이너 실행부(220)은 실행 종료 중인 상태라고 가정한다.
도 11을 참조하면, 사용자가 입력부(14)를 통해 특정의 어플리케이션(30)을 실행하도록 요청하면, 제어부(11)는 이를 감지하며, 이러한 입력에 대한 감지는 운영 체제(10)를 통해 이루어진다. 이에 따라, 운영 체제(10)는 S1101 단계에서 더미 컨테이너 실행부(220)를 실행시키고, 사용자의 특정 어플리케이션(30)에 대한 실행 요청을 실행할 어플리케이션(30)의 실행 인자와 함께 전달한다.
어느 하나의 어플리케이션(30)이 실행되어 있는 상태이므로, 런타임 매니저(310)가 실행 중인 상태이며, 이에 따라, 런타임 매니저(310)의 구성 요소인 커맨드 핸들러(311) 및 컨텍스트 매니저(313)도 실행 중이다. 따라서 더미 컨테이너 실행부(220)는 S1103 단계에서 커맨드 핸들러(311)에 어플리케이션(30)을 실행하도록 실행 명령과 함께 실행 인자를 제공한다. 그런 다음, 더미 컨테이너 실행부(220)는 S1105 단계에서 자신의 실행을 종료한다. 여기서, S1005 단계는 S1005 단계 이후의 S1107 내지 S1111 단계의 실행 순서와 상관 없이, S1003 단계 후, 바로 수행된다. 이와 같이, 더미 컨테이너 실행부(220)는 어플리케이션(30) 실행 명령을 전송하고 바로 종료함으로써, 멀티 실행을 지원하지 않는 운영 체제(10)에서도 다른 어플리케이션(30) 실행 요청을 수신할 준비를 갖추게 된다.
한편, 실행 명령을 수신한 커맨드 핸들러(311)는 S1107 단계에서 런타임 매니저(310)의 내부 구성인 컨텍스트 매니저(313)에 실행 인자에 대응하는 어플리케이션(30)이 실행되도록 해당 실행 명령을 제공한다. 그러면, 컨텍스트 매니저(313)는 S1109 단계에서 해당 어플리케이션(30)을 실행 시킨다. 이때, 컨텍스트 매니저(313)는 브라우저 엔진 계층부(400)의 브라우저 엔진(410)을 호출하여 어플리케이션(30)을 실행시키며, 브라우저 엔진(410)은 S1111 단계에서 어플리케이션의 랜더링을 수행한다.
이상에서 설명한 바와 같이, 어플리케이션(30) 실행 요청에 따라, 더미 컨테이너 실행부(220)가 어플리케이션(30) 실행을 트리거하는 프로세스를 처리한 후, 바로 자신의 실행을 종료함으로써, 운영 체제(10)가 하나의 객체에 대해 다중 실행 또는 멀티 인스턴스를 지원하지 않는 경우에도, 복수의 서로 다른 어플리케이션(30)을 실행시킬 수 있다.
본 발명의 실시예에 따른 어플리케이션(30) 실행 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다. 기록 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록 매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.
본 발명은 이동통신 단말기, PMP, PDA, 노트북, MP3 플레이어와 같은 다양한 종류의 사용자 장치에 적용되는 어플리케이션 실행 장치, 그 방법, 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체에 관한 것으로, 어플리케이션 실행 요청을 수신하는 객체와 어플리케이션을 실행시키는 객체 두 개의 객체를 구비하고, 어플리케이션 실행 요청을 수신하는 객체가 실행 요청을 수신할 경우에만 실행하여 수신된 실행 요청을 전달한 후, 자기 자신을 종료한 후, 다른 실행 요청에 대비함으로써, 운영 체제가 다중 실행(인스턴스)를 지원하지 않는 경우에도 어플리케이션의 다중 실행을 수행할 수 있어, 본 발명의 실시예에 따른 플랫폼을 이용하는 경우, 운영 체제의 종류에 무관하게 어플리케이션의 다중 실행을 수행할 수 있으며, 이러한 이유로 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있다.
10: 운영 체제 11: 제어부
12: 저장부 13: 주변 장치
14: 입력부 15: 표시부
16: 무선 통신부 17: GPS부
18: 오디오 처리부 19: 카메라부
20: 플랫폼 21: 브라우저 엔진 컨테이너 코어
22: 브라우저 엔진 컨테이너 커먼 모듈
30: 어플리케이션 40: 시스템 어플리케이션
41: 어플리케이션 매니저 43: 어플리케이션 다운로더
200: 브라우저 엔진 컨테이너 실행부 210: 컨테이너 에이전트
211: 어플리케이션 런처 213: 컨테이너 업데이트 모듈
220: 더미 컨테이너 실행부 230: 대기 모드 에이전트
300: 어플리케이션 런타임 계층부 310: 런타임 매니저
311: 커맨드 핸들러 313: 컨텍스트 매니저
315: 이벤트 핸들러 317: 라이프 사이클 매니저
320: 레지스트리 매니저 330: UI 엔진
340: 네트워크 셀렉터 350: 어플리케이션 동기 매니저
400: 브라우저 엔진 계층부 410: 브라우저 엔진
411: 엔진 코어 413: 스크립트 엔진
420: 플러그 인 매니저 430: 플러그 인
431: 리소스 플러그 인 433: 시스템 API 플러그 인
435: 공통 작업 플러그 인 437: 싱크 플러그 인
500: 보안 계층부 510: 인증 매니저
520: 정책 매니저
600: 이식 계층부 610: 인터페이스 모듈
611: HTTP 모듈 613: XML 모듈
615: 스레드 모듈 617: UI 백엔드 모듈
619: 보안 스토리지 모듈 621: 리소스 매니저
623: OS API 매니저 625: 공통 작업 매니저
627: 싱크 매니저 629: 로컬 스토리지 모듈
12: 저장부 13: 주변 장치
14: 입력부 15: 표시부
16: 무선 통신부 17: GPS부
18: 오디오 처리부 19: 카메라부
20: 플랫폼 21: 브라우저 엔진 컨테이너 코어
22: 브라우저 엔진 컨테이너 커먼 모듈
30: 어플리케이션 40: 시스템 어플리케이션
41: 어플리케이션 매니저 43: 어플리케이션 다운로더
200: 브라우저 엔진 컨테이너 실행부 210: 컨테이너 에이전트
211: 어플리케이션 런처 213: 컨테이너 업데이트 모듈
220: 더미 컨테이너 실행부 230: 대기 모드 에이전트
300: 어플리케이션 런타임 계층부 310: 런타임 매니저
311: 커맨드 핸들러 313: 컨텍스트 매니저
315: 이벤트 핸들러 317: 라이프 사이클 매니저
320: 레지스트리 매니저 330: UI 엔진
340: 네트워크 셀렉터 350: 어플리케이션 동기 매니저
400: 브라우저 엔진 계층부 410: 브라우저 엔진
411: 엔진 코어 413: 스크립트 엔진
420: 플러그 인 매니저 430: 플러그 인
431: 리소스 플러그 인 433: 시스템 API 플러그 인
435: 공통 작업 플러그 인 437: 싱크 플러그 인
500: 보안 계층부 510: 인증 매니저
520: 정책 매니저
600: 이식 계층부 610: 인터페이스 모듈
611: HTTP 모듈 613: XML 모듈
615: 스레드 모듈 617: UI 백엔드 모듈
619: 보안 스토리지 모듈 621: 리소스 매니저
623: OS API 매니저 625: 공통 작업 매니저
627: 싱크 매니저 629: 로컬 스토리지 모듈
Claims (25)
- 어플리케이션 실행 장치에 있어서,
어플리케이션을 실행시키기 위한 실행 명령 수신을 위한 커맨드 핸들러를 가지며, 상기 실행 명령을 수신하여 어플리케이션을 실행시키는 런타임 매니저; 및
운영 체제로부터 어플리케이션 실행 요청을 수신하면, 상기 런타임 매니저가 실행 중인지 확인하여, 상기 런타임 매니저가 실행 중이 아닌 경우, 상기 런타임 매니저를 실행 시킨 후, 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 상기 실행 명령을 전송하고, 자기 자신의 실행을 종료하는 더미 컨테이너 실행부;를 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제1항에 있어서, 상기 더미 컨테이너 실행부는
어플리케이션 실행 요청을 수신하면, 상기 런타임 매니저가 실행 중인지 확인하여, 상기 런타임 매니저가 이미 실행 중인 경우, 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 상기 실행 명령을 전송하고, 자기 자신의 실행을 종료하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제1항에 있어서, 상기 런타임 매니저는
어플리케이션을 실행시키는 컨텍스트 매니저를 더 포함하며,
상기 커맨드 핸들러는 상기 컨텍스트 매니저에 상기 실행 인자를 포함하는 상기 실행 명령을 전달하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제3항에 있어서, 상기 어플리케이션 실행 장치는
상기 어플리케이션을 랜더링하는 브라우저 엔진을 더 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제4항에 있어서, 상기 컨텍스트 매니저는 상기 실행 명령에 따라 상기 어플리케이션을 실행시키고, 실행된 어플리케이션을 랜더링하도록 상기 브라우저 엔진을 호출하는 것을 특징으로 하는 어플리케이션 실행 장치.
- 제5항에 있어서, 상기 컨텍스트 매니저는
상기 어플리케이션의 윈도우를 생성하며, 상기 브라우저 엔진은 상기 어플리케이션의 랜더링된 결과를 상기 윈도우에 표시하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제4항에 있어서, 상기 브라우저 엔진은
상기 어플리케이션의 마크 업 랭귀지와 스타일 시트를 랜더링하기 위한 엔진 코어; 및
상기 어플리케이션의 스크립트 언어를 처리하기 위한 인터프리터인 스크립트 엔진;을 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제1항에 있어서,
상기 어플리케이션 실행 후, 실행된 어플리케이션으로부터 운영 체제의 종류에 무관하게 상기 운영 체제가 관장하는 기능 실행의 요청을 수신하여, 수신된 기능 실행의 요청을 전달하는 브라우저 엔진 계층부; 및
상기 기능 실행 요청을 상기 운영 체제의 종류에 맞게 변경하여 상기 기능 실행 요청에 해당하는 기능을 실행하도록 지시하는 이식 계층부;를 더 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제8항에 있어서, 상기 이식 계층부는
적어도 하나의 인터페이스 모듈을 포함하며, 상기 인터페이스 모듈 각각은 상기 기능 실행의 종류에 따른 인터페이스를 가지는 것을 특징으로 하는 어플리케이션 실행 장치. - 제9항에 있어서, 상기 인터페이스는
상기 해당하는 기능을 실행하도록 지시하기 위해 상기 운영 체제의 종류에 맞춰 구현됨과 동시에 상기 컨테이너 커먼 모듈로부터 요청을 수신하기 위해 상기 컨테이너 커먼 모듈과 상호간에 맞춰 구현되는 것을 특징으로 하는 어플리케이션 실행 장치. - 제9항에 있어서, 상기 인터페이스 모듈은,
HTTP 및 HTTPS 관련 기능을 제공하는 HTTP 모듈;
XML 파서 기능 및 XSLT 변환 기능을 제공하는 XML 모듈;
스레드 기능을 제공하는 스레드 모듈;
사용자 인터페이스를 이식하기 위해 필요한 상기 운영 체제 자체의 윈도우 시스템 기능을 제공하는 UI 백엔드 모듈;
보안 스토리지에 접근할 수 있는 기능을 제공하는 보안 스토리지 모듈;
스토리지에 접근할 수 있는 기능을 제공하는 로컬 스토리지 모듈; 단말의 자원에 관련된 기능을 제공하는 리소스 매니저;
OS API와 관련된 기능을 제공하는 OS API 매니저;
타 어플리케이션과의 연동을 위한 기능을 제공하는 공통 작업 매니저; 및
타 장치와의 연동 및 타 장치와의 데이터 동기화 관련 기능을 제공하는 싱크 매니저 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제8항에 있어서, 상기 브라우저 엔진 계층부는
상기 기능 실행의 종류에 대응하여 상기 요청을 상기 이식 계층부에 전달하는 적어도 하나의 플러그 인;
상기 기능 실행의 종류에 따라 대응하는 상기 플러그 인을 호출하는 플러그 인 매니저; 및
상기 플러그 인이 호출되면 상기 기능 실행의 요청을 전달하도록 상기 플러그 인에 지시하는 브라우저 엔진;을 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제12항에 있어서, 상기 플러그 인은
단말 자원에 관련된 기능의 실행 요청을 상기 이식 계층에 전달하는 리소스 플러그 인;
OS API 관련 기능의 실행 요청을 상기 이식 계층에 전달하는 시스템 API 플러그 인;
타 어플리케이션과 연동을 위한 기능의 실행 요청을 상기 이식 계층에 전달하는 공통 작업 플러그 인; 및
타 장치와의 연동 및 타 장치와의 데이터 동기화 관련 기능의 실행 요청을 상기 이식 계층에 전달하는 싱크 플러그 인; 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제12항에 있어서, 상기 어플리케이션 실행 장치는, 보안 계층부를 더 포함하며, 상기 보안 계층부는
상기 어플리케이션 및 상기 플러그 인에 대해 설치 및 실행 시 인증을 수행하는 인증 매니저; 및
상기 브라우저 엔진 계층부의 상기 이식 계층부에 대한 접근 범위 및 접근 권한을 관리하는 정책 매니저;를 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제8항에 있어서,
상기 운영 체제의 기능 실행에 의해 관리되는 적어도 하나의 주변 장치;를 더 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제15항에 있어서, 상기 기능 실행은
상기 운영 체제 자체 기능 실행, 상기 운영 체제 자체 기능 실행에 따른 자원의 사용, 상기 주변 장치의 개별 기능의 실행, 및 상기 주변 장치의 개별 기능의 실행에 따른 자원의 사용 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 제15항에 있어서, 상기 주변 장치는,
무선 통신을 수행하기 위한 무선 통신부;
GPS(Global Positioning System) 위성으로부터 GPS 신호를 수신하기 위한 GPS부;
사용자의 입력을 받기 위한 입력부;
단말의 사용에 따라 발생하는 화면 데이터를 표시하기 위한 표시부;
음성 신호를 입력 받고 출력 받기 위한 마이크 및 스피커 등을 구비하는 오디오 처리부; 및
카메라 기능을 수행하기 위한 카메라부; 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 실행 장치. - 어플리케이션 실행 방법에 있어서,
더미 컨테이너 실행부가 운영 체제로부터 어플리케이션 실행 요청에 따라 자기 자신의 실행을 시작하는 단계;
상기 더미 컨테이너 실행부가 어플리케이션을 실행시키기 위한 실행 명령을 수신하는 커맨드 핸들러를 포함하는 런타임 매니저의 실행 여부를 확인하는 단계;
상기 확인 결과, 상기 런타임 매니저가 실행 중이 아니면, 상기 런타임 매니저를 실행시키는 단계;
상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 실행 명령을 전송하는 단계; 및
상기 더미 컨테이너 실행부가 자기 자신의 실행을 종료하는 종료 단계;를 포함하는 것을 특징으로 하는 어플리케이션 실행 방법. - 제18항에 있어서, 상기 확인하는 단계 후,
상기 확인 결과, 상기 런타임 매니저가 이미 실행 중이면, 상기 커맨드 핸들러에 어플리케이션 실행을 위한 정보인 실행 인자를 포함하는 실행 명령을 전송하는 단계; 및
상기 더미 컨테이너 실행부가 자기 자신의 실행을 종료하는 단계;
를 더 포함하는 것을 특징으로 하는 어플리케이션 실행 방법. - 제18항에 있어서, 상기 전송하는 단계 후,
상기 커맨드 핸들러가 상기 컨텍스트 매니저에 상기 실행 인자를 포함하는 상기 실행 명령을 전달하는 단계; 및
상기 컨텍스트 매니저가 상기 실행 명령에 따라 어플리케이션을 실행 시키는 단계;를 더 포함하는 것을 특징으로 하는 어플리케이션 실행 방법. - 제20항에 있어서, 상기 실행 인자는
상기 어플리케이션을 다른 어플리케이션과 구분할 수 있는 식별자 및 상기 어플리케이션을 이루는 복수의 페이지의 주소 중 어느 일 페이지의 주소 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 실행 방법. - 제21항에 있어서, 상기 어플리케이션을 실행시키는 단계는
상기 컨텍스트 매니저가 상기 실행 인자로 상기 일 페이지의 주소를 수신하면, 상기 일 페이지의 주소를 상기 어플리케이션의 시작 페이지로 설정하여 실행시키는 것을 특징으로 하는 어플리케이션 실행 방법. - 제21항에 있어서, 상기 어플리케이션을 실행시키는 단계는
상기 컨텍스트 매니저가 상기 실행 인자로 식별자를 수신하면, 해당하는 식별자를 가지는 어플리케이션의 디폴트 페이지를 시작 주소로 하여 실행시키는 것을 특징으로 하는 어플리케이션 실행 방법. - 제20항에 있어서, 상기 어플리케이션을 실행시키는 단계 후,
상기 컨텍스트 매니저가 브라우저 엔진을 호출하여 상기 어플리케이션을 랜더링하는 단계;를 더 포함하는 것을 특징으로 하는 어플리케이션 실행 방법. - 제18항 내지 제24항 중 어느 한 항에 따른 방법이 기록된 컴퓨터로 판독 가능한 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20100042400A KR101482149B1 (ko) | 2010-05-06 | 2010-05-06 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20100042400A KR101482149B1 (ko) | 2010-05-06 | 2010-05-06 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110122996A true KR20110122996A (ko) | 2011-11-14 |
KR101482149B1 KR101482149B1 (ko) | 2015-01-14 |
Family
ID=45393293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20100042400A KR101482149B1 (ko) | 2010-05-06 | 2010-05-06 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101482149B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101460515B1 (ko) * | 2010-05-06 | 2014-11-12 | 에스케이플래닛 주식회사 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
KR101482152B1 (ko) * | 2010-05-07 | 2015-01-14 | 에스케이플래닛 주식회사 | 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법 |
KR101482151B1 (ko) * | 2010-05-11 | 2015-01-14 | 에스케이플래닛 주식회사 | 웹 어플리케이션 실행 장치 및 방법 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102209993B1 (ko) | 2019-06-28 | 2021-02-01 | 한국전자통신연구원 | 보안도구와 클라우드 플랫폼 연동을 위한 방법 및 장치 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424601B2 (en) | 2004-07-07 | 2008-09-09 | Yongyong Xu | Methods and systems for running multiple operating systems in a single mobile device |
KR100837298B1 (ko) * | 2006-10-31 | 2008-06-11 | 에스케이 텔레콤주식회사 | 멀티태스킹 단말기 및 애플리케이션 전환 방법 |
KR100918658B1 (ko) | 2009-01-30 | 2009-09-22 | (주)티비스톰 | 다중 어플리케이션을 실행하기 위한 미들웨어 장치 |
-
2010
- 2010-05-06 KR KR20100042400A patent/KR101482149B1/ko active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101460515B1 (ko) * | 2010-05-06 | 2014-11-12 | 에스케이플래닛 주식회사 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
KR101482152B1 (ko) * | 2010-05-07 | 2015-01-14 | 에스케이플래닛 주식회사 | 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법 |
KR101482151B1 (ko) * | 2010-05-11 | 2015-01-14 | 에스케이플래닛 주식회사 | 웹 어플리케이션 실행 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR101482149B1 (ko) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102481065B1 (ko) | 애플리케이션 기능 구현 방법 및 전자 디바이스 | |
WO2023093429A1 (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
WO2011060735A1 (zh) | 微件Widget调用的方法、装置和系统 | |
WO2012122884A1 (zh) | 在浏览器上实现的开放式插件管理平台及插件管理方法 | |
CN102550003A (zh) | 用于管理持续丰富因特网应用的方法和设备 | |
US20240086231A1 (en) | Task migration system and method | |
WO2014101393A1 (zh) | 应用实现方法及装置 | |
WO2011088759A1 (zh) | 嵌入式浏览器的实现方法、装置和数字电视接收终端 | |
KR101482150B1 (ko) | 웹 어플리케이션 실행 장치 및 그의 웹 어플리케이션 관리 방법 | |
KR102121358B1 (ko) | 데이터 전송 방법 및 디바이스 | |
KR101482151B1 (ko) | 웹 어플리케이션 실행 장치 및 방법 | |
KR101482149B1 (ko) | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 | |
CN112507329B (zh) | 安全防护方法及装置 | |
CN104717249B (zh) | 远程操作应用发布的方法、代理服务器和系统 | |
JP3986721B2 (ja) | ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体 | |
KR20130034832A (ko) | 기능 확장 지원 방법 및 이를 지원하는 단말기 | |
KR100864579B1 (ko) | 모바일 위젯 편집 서버 및 모바일 위젯 편집 서비스 제공방법 | |
KR20130090923A (ko) | 자동 매칭으로 실제 객체들의 세트상에 서비스들의 배치 | |
KR101154717B1 (ko) | 데이터 언어로 다수 언어들을 관리하기 위한 방법 및 장치 | |
KR101460515B1 (ko) | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 | |
WO2011088683A1 (zh) | Java软件集成到移动终端的方法、装置及移动终端 | |
KR101482152B1 (ko) | 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법 | |
CN114595203A (zh) | 基于双系统的文件同步方法、终端设备及存储介质 | |
WO2012055176A1 (zh) | 移动终端处理方法及移动终端 | |
KR101599713B1 (ko) | 끊김 없는 웹 어플리케이션 실행을 위한 단말의 상태 정보 송수신 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180105 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191220 Year of fee payment: 6 |