KR101482151B1 - 웹 어플리케이션 실행 장치 및 방법 - Google Patents
웹 어플리케이션 실행 장치 및 방법 Download PDFInfo
- Publication number
- KR101482151B1 KR101482151B1 KR20100043745A KR20100043745A KR101482151B1 KR 101482151 B1 KR101482151 B1 KR 101482151B1 KR 20100043745 A KR20100043745 A KR 20100043745A KR 20100043745 A KR20100043745 A KR 20100043745A KR 101482151 B1 KR101482151 B1 KR 101482151B1
- Authority
- KR
- South Korea
- Prior art keywords
- web application
- layer
- execution
- browser engine
- module
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- 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/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 단말에 탑재된 운영체제에 의존적이지 않으면서, 단말 자원에 접근할 수 있는 웹 어플리케이션의 실행 환경을 제공하면서, 다수의 페이지로 이루어지는 웹 어플리케이션의 실행 속도를 향상시킬 수 있는 웹 어플리케이션의 실행 장치 및 방법, 그리고 이를 적용한 단말기에 관한 것이다. 본 발명에 따르면, 이식 계층부를 통해 다수의 운영체제 및 단말의 기능에 대한 이식 계층 API를 제공하고, 웹 어플리케이션 런타임 계층부를 브라우저 엔진 계층부에서 페이지를 실행하는데 필요한 네트워크 및 UI를 제공하고, 브라우저 엔진 계층부를 통해 웹 어플리케이션의 각 페이지를 해석하여 화면으로 출력하는데 있어서, 브라우저 엔진 계층부에서 웹 어플리케이션에 속하는 하나 이상의 다른 페이지를 미리 분석 및 구조화한 후, 상기 다른 페이지에 대한 이벤트 발생시 상기 구조화된 페이지를 바로 랜더링하여 화면으로 출력함으로써, 페이지 전환 시간을 단축시킨다.
Description
본 발명은 웹 어플리케이션 실행 방법 및 장치, 그리고 이를 적용한 단말기에 관한 것으로서, 더욱 상세하게는 웹 표준을 지원하여 단말기에 탑재된 운영체제에 의존적이지 않으면서, 단말 자원에 접근할 수 있는 실행 환경을 제공하면서, 웹 어플리케이션의 실행 속도를 향상시킬 수 있는 웹 어플리케이션 실행 장치 및 방법에 관한 것이다.
최근 스마트폰의 성장에 따라 오픈 환경이 도래하면서, 서비스의 차별화를 위하여 개방형 어플리케이션 및 플랫폼 환경이 요구되고 있다.
더 구체적으로, 사용자가 자신이 원하는 모바일 어플리케이션을 자유롭게 선택하여 설치할 수 있는 스마트폰이 급성장하면서, 이러한 모바일 어플리케이션을 자유롭게 거래할 수 있는 OMP(Open Market Place)까지 활성화되고 있다.
그런데 현재 스마트폰에는 다양한 종류의 운영체제가 사용되고 있기 때문에, 어플리케이션 개발자는 여러 종류의 운영체제 환경을 감안하여 모바일 어플리케이션을 개발하여야 한다.
한편, 정적이고 단순한 컨텐츠를 표현하기 위해 시작된 웹은 브라우저라는 클라이언트 어플리케이션을 사용할 수 있는 환경만 갖춰지면 어디서나 동등한 수준의 사용자 인터페이스를 제공할 수 있다는 장점 때문에, 사용자 저변과 서비스 영역을 빠르게 확장해왔다. 이와 함께, 웹 컨텐츠는 특정 내용을 서술하는 단순한 컨텐츠에서, 사용자의 입력에 반응하여 사용자가 원하는 서비스를 제공할 수 있는 웹 어플리케이션으로 진화하고 있다.
따라서, 이동 통신 단말에 대하여, 표준 웹 기술을 지원하는 웹 어플리케이션 플랫폼을 구현할 경우, 기존의 풍부한 웹 개발자 저변과 웹 개발 도구를 이용하여, 더욱 쉽게 모바일 어플리케이션을 개발할 수 있으며, 더하여, 풍부한 사용자 인터페이스를 쉽고 빠르게 개발하여 제공할 수 있게 된다.
본 발명은, 웹 표준을 지원하여 단말에 탑재된 운영체제에 의존적이지 않으면서, 단말 자원에 접근할 수 있는 웹 어플리케이션의 실행 환경을 제공하면서, 다수의 페이지로 이루어지는 웹 어플리케이션의 실행 속도를 향상시킬 수 있는 웹 어플리케이션의 실행 장치 및 방법을 제공하고자 한다.
본 발명은 과제를 해결하기 위한 수단으로서, 브라우저 엔진 계층부와, 이식 계층부와, 웹 어플리케이션 런타임 계층부를 포함하는 웹 어플리케이션 실행 장치를 제공한다. 브라우저 엔진 계층부는 웹 어플리케이션의 각 페이지를 해석하여 화면으로 출력하되, 웹 어플리케이션에 속하는 하나 이상의 다른 페이지를 분석 및 구조화한 후, 저장하여 두고, 다른 페이지에 대한 이벤트 발생시 상기 저장한 다른 페이지의 구조화 데이터를 랜더링하여 화면으로 출력한다. 이식 계층부는, 다수의 운영체제 및 단말의 기능에 대한 이식 계층 API(Application Programming Interface)를 지원하고, 브라우저 엔진 계층부가 특정 이식 계층 API를 호출하면, 대응하는 운영체제 및 단말의 API를 호출하고 그 응답을 수신하여 브라우저 엔진 계층부로 전달한다. 웹 어플리케이션 런타임 계층부는 웹 어플리케이션의 실행 명령을 브라우저 엔진 계층부로 전달하며, 브라우저 엔진 계층부에서 페이지를 실행하는데 있어서 필요한 네트워크 및 UI를 제공한다.
본 발명에 의한 웹 어플리케이션 실행 장치는, 브라우저 엔진 계층부와 이식 계층부 및 웹 어플리케이션 런타임 계층부를 로딩하고, 사용자의 요청에 따른 웹 어플리케이션의 실행 명령을 웹 어플리케이션 런타임 계층로 전달하는 실행 계층부를 더 포함할 수 있다.
본 발명에 의한 웹 어플리케이션 실행 장치는, 웹 어플리케이션 및 브라우저 엔진 계층부에서 웹 표준 이외의 단말의 자원 및 운영체제의 기능을 호출하는 플러그인의 인증서를 검증하고, 접근 제어 규칙에 따라서 웹 어플리케이션의 실행 중 이식 계층부에 대한 접근을 제어하는 보안 계층부를 더 포함할 수 있다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 브라우저 엔진 계층부는, 웹 어플리케이션의 각 페이지를 해석하여 실행시키는 브라우저 엔진 모듈; 하나 이상의 플러그인에 대한 다운로드, 설치, 설치된 플러그인의 목록 관리, 업데이트, 및 플러그인의 호출 요청에 대한 처리를 수행하는 플러그인 관리 모듈; 및 상기 플러그인 관리 모듈에 의해 설치되고, 동작하여, 각각 웹 표준 이외의 단말의 자원 및 운영체제의 기능을 이식계층부를 통해 호출하여 그에 대한 응답을 반환하는 하나 이상의 플러그인을 포함하여 이루어진다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 이식 계층부는 HTML과 관련된 기능 및 API를 제공하는 HTTP 모듈, XML 파싱 기능을 위한 API를 제공하는 XML 모듈, 쓰레드 기능을 API형태로 제공하고 운영체제에 의해 제공되는 기능을 바이-패스하는 쓰레드(Thread) 모듈, UI(User Interface) 구현을 위해 필요한 윈도우 시스템의 기능을 API 형태로 제공하는 UI 백엔드(Backend) 모듈, 보안 스토리지 기능을 API 형태로 제공하는 보안 스토리지 모듈, 단말 자원에 대한 접근 인터페이스를 API 형태로 제공하는 리소스 모듈, 단말 자원 이외에 단말에서 제공하는 OS API를 API 형태로 제공하는 OS API 모듈, 웹 어플리케이션에 포함되지 않은 페이지에 대한 연동 기능을 API 형태로 제공하는 협업(Collaboration) 모듈, 외부 장치에 존재하는 동기화 어플리케이션과의 연동 인터페이스를 API 형태로 제공하는 동기화(Sync) 모듈, 운영체제에 존재하는 로컬 스토리지 기능을 API 형태로 제공하는 로컬 스토리지(Local Storage) 모듈 중에서 하나 이상을 포함한다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 웹 어플리케이션 런타임 계층부는, 웹 어플리케이션 인스턴스의 상태 관리 및 이벤트 핸들링, 실행 계층부로부터의 커맨드 처리를 수행하는 웹 어플리케이션 런타임 모듈; 웹 어플리케이션 및 플러그인의 설치 정보 및 웹 어플리케이션 실행 장치의 구조 정보를 관리하는 레지스트리 모듈; 브라우저 엔진 계층부에서 랜더링하는 영역 이외의 화면 영역에 대한 UI 및 사용자 입력을 처리하는 UI 엔진; 웹 어플리케이션 실행 장치에서 사용할 네트워크를 설정하고 관리하는 네트워크 셀렉터; 및 웹 어플리케이션을 실행 중에, 네트워크 연결이 끊긴 동안의 데이터를 로컬 스토리지에 저장하고, 네트워크가 연결되면 로컬 스토리지에 저장한 데이터와 외부 데이터에 대한 동기화를 수행하는 다이내믹 동기화 모듈을 포함하여 이루어진다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 실행 계층부는, 단축아이콘 또는 단말의 메뉴를 통한 웹 어플리케이션의 실행 요청에 따라서 동작하여, 웹 어플리케이션 런타임 실행 계층부와 브라우저 엔진 계층부 및 이식 계층부의 실행 여부를 확인하고, 실행 중이면, 웹 어플리케이션 실행 명령을 웹 어플리케이션 런타임 실행 계층부로 전달하는 컨테이너 에이전트; 컨테이너 에이전트에 의해 동작하여, 웹 어플리케이션 런타임 실행 계층부와 브라우저 엔진 계층부 및 이식 계층부를 로딩한 후, 웹 어플리케이션 실행 명령을 웹 어플리케이션 런타임 실행 계층부로 전달하는 더미 실행 모듈; 및 단말의 대기화면 관리자에 의해 로딩되어, 대기화면에서의 웹 어플리케이션 실행 명령을 웹 어플리케이션 런타임 계층부로 전달하는 대기모드 에이전트를 포함하여 이루어진다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 보안 계층부는 웹 어플리케이션 및 상기 플러그인의 설치 또는 실행 시, 상기 웹 어플리케이션 및 플러그인의 인증서를 검증하는 인증 모듈; 및 웹 어플리케이션의 실행 중에, 접근 제어 규칙에 따라서, 상기 이식 계층부에 대한 접근을 제어하는 정책 모듈을 포함하여 이루어진다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 하나 이상의 플러그인은, 단말 자원과 관련된 기능 호출을 이식계층으로 전달하는 리소스 플러그인과, 웹 어플리케이션의 단말 OS API 호출 기능을 이식 계층부에 전달하고, 웹 어플리케이션 런타임 계층부의 기능에 대한 접근 인터페이스를 제공하는 시스템 API 플러그인과, 웹 어플리케이션에 포함되지 않은 페이지의 연동을 위한 기능 호출을 이식 계층부로 전달하는 협업 플러그인과, 웹 어플리케이션의 동기화 에이전트와 관련된 기능 호출을 이식 계층부에 전달하는 동기화(Sync) 플러그인 중에서 하나 이상을 포함할 수 있다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 웹 어플리케이션 런타임 모듈은, 실행 계층부로부터 웹 어플리케이션의 실행과 관련된 명령을 전달받아 해석하여, 명령된 동작을 지시하는 커맨드 핸들러; 커맨드 핸들러 또는 브라우저 엔진 계층부의 지시에 따라서 웹 어플리케이션 별로 윈도우 및 랜더러의 생성 및 소멸을 제어하는 컨텍스트 매니저; 컨텍스트 매니저에서 생성한 윈도우의 이벤트 및 웹 어플리케이션 실행 장치의 시스템 관련 이벤트를 처리하며, 윈도우에 대해 미리 정의된 상황과 관련된 이벤트가 발생하면 UI 엔진에 전달하는 이벤트 핸들러; 및, 다수의 페이지를 포함하는 웹 어플리케이션 및 그의 각 페이지에 대한 라이프사이클을 관리하는 라이프사이클 매니저를 포함하여 이루어질 수 있다.
더하여, 본 발명은 과제를 해결하기 위한 다른 수단으로서, 상술한 웹 어플리케이션 실행 장치를 구비한 단말기를 제공한다.
더하여, 본 발명은 과제를 해결하기 위한 다른 수단으로서, 브라우저 엔진 컨테이너 코어의 브라우저 엔진 계층부가 웹 어플리케이션 실행 요청이 있으면, 웹 어플리케이션을 위한 윈도우 및 랜더러 인스턴스를 생성하는 단계; 웹 어플리케이션에 포함된 페이지 중에서, 지정된 페이지를 분석 및 구조화한 후, 및 랜더링하여 윈도우로 출력하는 단계; 출력된 페이지 이외에 웹 어플리케이션에 포함된 하나 이상의 다른 페이지를 추출하는 단계; 하나 이상의 다른 페이지를 분석 및 구조화하는 단계; 다른 페이지의 구조화 데이터를 저장하는 단계; 다른 페이지에 대한 이벤트 발생을 확인하는 단계; 이벤트가 발생하면, 저장된 구조화 데이터를 랜더링하여 윈도우로 출력하는 단계를 포함하는 웹 어플리케이션 실행 방법을 제공한다.
본 발명에 의한 웹 어플리케이션 실행 방법은, 윈도우 및 랜더러 인스턴스를 생성하는 단계 이전에, 웹 어플리케이션의 단축 아이콘을 이용한 실행 요청을 입력되면, 실행 계층부에서 브라우저 엔진 컨테이너 코어의 실행 여부를 확인하는 단계; 확인 결과, 브라우저 엔진 컨테이너 코어가 실행 중이 아니면 브라우저 엔진 컨테이너 코어를 로딩하는 단계; 확인 결과, 브라우저 엔진 컨테이너 코어가 실행 중이면, 브라우저 엔진 컨테이너 코어의 웹 어플리케이션 런타임 계층부로 웹 어플리케이션 실행 명령을 전달하는 단계를 더 포함할 수 있다.
본 발명에 의한 웹 어플리케이션 실행 방법은, 윈도우 및 랜더러 인스턴스를 생성하는 단계 이전에, 설치된 웹 어플리케이션을 관리하는 웹 어플리케이션 매니저에서, 사용자의 웹 어플리케이션의 실행 요청에 따라서 실행 API를 호출하는 단계; 브라우저 엔진 컨테이너 코어가 코어 기능에 대한 접근 인터페이스를 제공하는 시스템 API 플러그인을 로딩하여, 실행 API를 호출하는 단계; 로딩된 시스템 API 플러그인이 웹 어플리케이션 런타임 계층부의 컨텍스트 매니저로 웹 어플리케이션의 실행 명령을 전달하는 단계를 더 포함할 수 있다.
본 발명에 의한 웹 어플리케이션 실행 방법은, 윈도우 및 랜더러 인스턴스를 생성하는 단계 이전에, 네이티브 대기화면 관리자가 사용자의 웹 어플리케이션 실행 요청을 입력 받아, 실행 계층부의 대기모드 에이전트를 로딩하는 단계; 대기모드 에이전트가 상기 브라우저 엔진 컨테이너 코어를 로딩하고, 대기화면 모드 실행 API를 호출하여 웹 어플리케이션의 실행 요청을 웹 어플리케이션 런타임 계층부의 컨텍스트 매니저로 전달하는 단계를 더 포함할 수 있다.
더하여, 본 발명은 과제를 해결하기 위한 또 다른 수단으로서, 상술한 웹 어플리케이션 실행 방법을 실행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체를 제공한다.
본 발명에 따르면, 단말기를 포함하는 단말에서 운영체제의 종류에 무관하게 웹 표준에 따르며 단말기의 자원을 이용하는 웹 어플리케이션을 실행 가능하도록 지원하면서, 웹 어플리케이션의 초기 실행 시에 웹 어플리케이션에 관련된 다른 페이지를 미리 분석 및 구조화한 후, 저장하여 두고, 페이지 전환이 요청되면상기 저장된 데이터를 가져와 바로 랜더링함으로써, 페이지간 전환 시간을 단축시켜 웹 어플리케이션의 실행 속도를 향상시킬 수 있는 우수한 효과가 있다.
도 1은 본 발명에 따른 웹 어플리케이션 실행 장치의 전체 구조를 나타낸 블럭도이다.
도 2는 본 발명에 따른 웹 어플리케이션 실행 방법을 나타낸 흐름도이다.
도 3 내지 도 5는 본 발명에 따른 웹 어플리케이션 실행 방법에 있어서, 웹 어플리케이션의 실행 요청을 처리하는 다양한 실시 예를 보인 흐름도이다.
도 6은 본 발명에 따른 웹 어플리케이션 실행 방법에 있어서, 페이지의 처리 과정을 모식화하여 나타낸 도면이다.
도 7은 본 발명에 따른 웹 어플리케이션의 패키지 구조를 나타낸 블록도이다.
도 2는 본 발명에 따른 웹 어플리케이션 실행 방법을 나타낸 흐름도이다.
도 3 내지 도 5는 본 발명에 따른 웹 어플리케이션 실행 방법에 있어서, 웹 어플리케이션의 실행 요청을 처리하는 다양한 실시 예를 보인 흐름도이다.
도 6은 본 발명에 따른 웹 어플리케이션 실행 방법에 있어서, 페이지의 처리 과정을 모식화하여 나타낸 도면이다.
도 7은 본 발명에 따른 웹 어플리케이션의 패키지 구조를 나타낸 블록도이다.
이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
도 1은 본 발명에 따른 웹 어플리케이션 실행 장치의 전체 구조를 나타낸 도면이다.
도 1을 참조하면, 웹 어플리케이션의 실행 장치는, 이식 계층부(Porting layer)(200)와, 보안 계층부(Security layer)(300)와, 웹 어플리케이션 런타임 계층부(Web Application Runtime layer)(400)와, 브라우저 엔진 계층부(Browser Engine layer)(500)와, 실행 계층부(Executable layer)(600)와, 시스템 웹 어플리케이션(700)을 포함한다.
여기서, 보안 계층부(300)와, 웹 어플리케이션 런타임 계층부(400)와, 브라우저 엔진 계층부(500)가 브라우저 엔진 컨테이너 커먼(Browser Engine Container Common)으로 구현된다. 여기서 웹 어플리케이션 런타임 계층부(400)가 주도적으로 웹 어플리케이션의 관리 기능을 수행하며, 브라우저 엔진 계층부(500)는 각 웹 어플리케이션의 각 페이지를 해석하여 실행한다. 이러한 브라우저 엔진 컨테이너 커먼은 이식 계층부(200)를 통해 운영체제(100)에 접근함으로써, 운영체제(100)에는 독립적이면서, 이식 계층부(200)에만 의존성을 갖게 된다.
그리고, 브라우저 엔진 컨테이너 커먼과, 이식 계층부(200)를 포함하여, 브라우저 엔진 컨테이너 코어(Browser Engine Container Core)로 구현한다.
브라우저 엔진 컨테이너 코어는, 다수 웹 어플리케이션의 동시 실행과, 단일 웹 어플리케이션에 대한 멀티 인스턴스를 함께 지원하는 멀티-태스킹 컨테이너로, 한 시스템 내에서 복수 개의 컨테이너를 실행할 수 있으며, 컨테이너 자체는 단일 인스턴스로 동작한다.
즉, 브라우저 엔진 컨테이너 코어는, 웹 어플리케이션의 실행 시마다 윈도우를 생성하고, 랜더러 인스턴스를 생성하여, 웹 어플리케이션의 각 페이지를 실행한다.
이때, 실행 계층부(600)는, 브라우저 엔진 컨테이너 코어의 엔트리 포인트로 사용된다. 즉, 브라우저 엔진 컨테이너 코어는 실행 계층부(600)에 의하여 실행되어, 시스템 웹 어플리케이션(700) 및 다른 웹 어플리케이션을 실행시킨다.
한편, 본 발명에 의해 실행되는 웹 어플리케이션은, 다수의 페이지가 패키지로 구성되는 것으로서, 도 7을 참조하면, 웹 어플리케이션(800)은, 웹 어플리케이션의 각 페이지를 구성하는 html, xhtml, css, java script 파일 등과 같은 소스 파일과, 각 페이지에 삽입되는 이미지 등과 같은 리소스 파일로 이루어지는 웹 컨텐츠(810)와, 웹 어플리케이션 패키지에 포함되는 자료의 목록과, 자료 별 공개 여부, 해쉬 코드와 같은 자료 별 무결성 정보, 웹 어플리케이션의 실행 환경 정보(화면 크기, 타겟 CPU, 타겟 운영체제, 웹 어플리케이션 실행 장치의 버전 등)를 포함하는 구성 정보(Configuration 파일)(820)와, 해당 웹 어플리케이션이 접근할 수 있는 단말 자원의 범위를 지정하는 정책 정보(830)를 포함한다.
여기서, 정책 정보(830)는 웹 어플리케이션 패키지 전체에 부여되는 기본 접근 권한 정보와, 웹 어플리케이션의 각 페이지 별로 부여되는 세부 접근 권한 정보를 포함할 수 있으며, 이는 보안 계층부(300)에서 단말의 자원, 예를 들어, 사진, 주소록, 단말 기능, 통화 기록 들에 대한 접근 제어 시 참조된다. 이러한 웹 어플리케이션은, 압축 파일 형태로 제공되며, 더하여, 웹 어플리케이션이 인증된 기관 또는 사업자를 통해 배포되는 것임을 증명하는 인증서를 더 포함할 수 있다.
이하 각 구성 요소의 기능 및 상세 구성에 대하여 설명한다.
먼저, 이식 계층부(200)는, 단말기에 탑재된 운영체제(100)의 위에 구현되는 것으로서, 상기 웹 어플리케이션 런타임 계층부(400) 및 브라우저 엔진 계층부(500)의 각 모듈이 상기 운영체제(100)에 독립적으로 구현되고 동작할 수 있도록, 운영체제(100)의 다양한 OS 기능 및 단말의 자원들에 대한 통합된 API(이하, 이식 계층 API라 함)을 제공한다. 즉, 이식 계층부(200)에서는 상위의 웹 어플리케이션 런타임 계층부(400) 및 브라우저 엔진 계층부(500)에 대하여, 단말기의 자원 및 운영체제의 기능들에 대한 이식 계층 API를 제공하며, 상기 이식 계층 API의 호출 시 실제 해당하는 단말 자원 및 운영체제의 API를 호출한다. 이러한 이식 계층부(200)에서 제공 가능한 이식 계층 API는, HTTP 및 HTTPS와 관련된 기능 및 API를 제공하는 HTTP 모듈, XML 파싱 기능을 위한 API를 제공하는 XML 모듈, 쓰레드 기능을 API형태로 제공하고 운영체제(100)에 의해 제공되는 기능을 바이-패스하는 쓰레드(Thread) 모듈, UI 구현을 위해 필요한 윈도우 시스템의 기능을 API 형태로 제공하는 UI 백엔드(Backend) 모듈, 보안 저장 기능을 API 형태로 제공하는 보안 스토리지(Secure Storage) 모듈, 단말 자원(예를 들어, 전화부, 사진, 통화 기록, SMS 목록 등)에 대한 접근 인터페이스를 API 형태로 제공하는 리소스 모듈, 단말 자원 이외에 단말에서 제공하는 OS API(예를 들어, 통화 연결, SMS 전송, 단말 시스템의 Property 설정 등)을 API 형태로 제공하는 OS API 모듈, 웹 어플리케이션에 포함되지 않은 페이지와의 연동 기능을 API 형태로 제공하는 협업(Collaboration) 모듈, 외부 장치에 존재하는 동기화 어플리케이션과의 연동 인터페이스를 API 형태로 제공하는 동기화 모듈, 운영체제에 존재하는 로컬 스토리지 기능을 API 형태로 제공하는 로컬 스토리지(Local Storage) 모듈 중에서 하나 이상을 포함할 수 있으며, 이외에 필요에 따라서 다른 이식 계층 API를 더 추가할 수 있다. 이식 계층부(200)의 각 모듈은 모두 향후 업데이트가 용이하도록 DLL 형태로 구현된다.
이러한 이식 계층부(200)은 운영체제에 의존적이므로, 단말기에 탑재된 여러 종류의 운영체제(100)에 모두 적용할 수 있도록 구현되는 것이 바람직하다.
다음으로 보안 계층부(300)에 대해서 설명한다.
보안 계층부(300)는, 웹 어플리케이션 실행 장치 내부의 다른 모듈에 대한 이식 계층부(200)로의 접근을 제어하여, 보안 레벨을 높이기 위한 것으로서, 인증(Certification) 모듈(310)과, 정책(Policy) 모듈(320)을 포함하여 이루어진다.
인증 모듈(310)은 웹 어플리케이션 및 브라우저 엔진 계층부(500)에 구비되어 이식 계층부(200)에 대한 접근을 중계하는 플러그인(530)에 대한 설치 및 실행 시에, 웹 어플리케이션 및 플러그인을 인증한다. 즉, 본 발명에 의한 웹 어플리케이션 실행 장치는, 인증 모듈(310)의 인증 여부에 따라서 웹 어플리케이션 및 플러그인을 설치하거나 실행시킨다.
정책 모듈(320)은 접근 제어 규칙에 따라서 각 웹 어플리케이션의 이식 계층부(200)로의 접근을 제어한다. 더 구체적으로는, 각 웹 어플리케이션 별로 설정된 접근 제어 규칙을 다운 받아 저장하고, 이식 계층부(200)의 접근 요청시, 해당 웹 어플리케이션의 접근 제어 규칙을 참고하여, 접근을 허용하거나 거부한다.
다음으로, 웹 어플리케이션 런타임 계층부(400)에 대해서 설명한다.
웹 어플리케이션 런타임 계층부(400)는, 웹 어플리케이션의 실행 환경을 관리하는 것으로서, 하기에서 설명할 브라우저 엔진 계층부(500)에서 웹 어플리케이션의 각 페이지를 실행하는데 필요한 네트워크 및 UI를 제공한다. 더 구체적으로 설명하면, 웹 어플리케이션 런타임 계층부(400)는, 웹 어플리케이션의 인스턴스들을 관리하고, 웹 어플리케이션의 설치 및 정보 설정을 위한 레지스트리 관리 및 유저 인터페이스 관리를 수행한다. 이를 위하여, 웹 어플리케이션 런타임 계층부(400)은, 웹 어플리케이션 런타임 모듈(410)와, 레지스트리(Registry) 모듈(420)과, UI(User Interface) 엔진(430)과, 네트워크 셀렉터(Network Selector)(440)와, 다이내믹 동기화 모듈(Dynamic Sync module)(450)를 포함한다.
웹 어플리케이션 런타임 모듈(410)은, 웹 어플리케이션 인스턴스의 컨텍스트 관리 및 이벤트 핸들링, 실행 계층부(600)으로부터의 커맨드 처리를 수행한다. 이러한 웹 어플리케이션 런타임 모듈(410)은, 커맨드 핸들러(Command Handler)(411)와, 컨텍스트 매니저(Context manager)(412)와, 이벤트 핸들러(Event Handler)(413)와, 라이프사이클 매니저(Lifecycle manager)(414)를 포함하여 이루어진다.
커맨드 핸들러(411)는 실행 계층부(600)으로부터 웹 어플리케이션의 실행과 관련된 명령을 IPC(Interprocess Communication)로 전달받아 해석한 뒤, 해당하는 모듈에 동작을 지시하는 것으로서, 일종의 IPC 명령 처리기이다. 커맨드 핸들러(411)에서 처리 가능한 명령어로는, 웹 어플리케이션의 실행/종료, 웹 어플리케이션 실행 장치와 관련된 설정 정보의 업데이트, 웹 어플리케이션 실행 장치의 실행 및 종료, 플러그인에 대한 인스톨/언인스톨/업데이트가 포함될 수 있다.
컨텍스트 매니저(412)는 웹 어플리케이션 인스턴스들의 컨텍스트를 관리하는 것으로서, 웹 어플리케이션 별로 윈도우 및 랜더러의 생성 및 소멸을 제어한다. 즉, 커맨드 핸들러(411)와 브라우저 엔진 모듈(510)로부터 전달되는 웹 어플리케이션의 실행 명령과, 브라우저 엔진 모듈(510)으로부터 전달되는 윈도우 생성 명령에 따라, 윈도우를 생성하고, 랜더러(Render)의 인스턴스를 생성하고, 실행 요청된 페이지를 랜더링한 결과를 브라우저 엔진 모듈(510)로부터 전달받아 해당 윈도우에 출력한다. 또한, 커맨드 핸들러(411)로부터 전달되는 웹 어플리케이션 종료 명령과 이벤트 핸들러(413) 및 브라우저 엔진 모듈(510)으로부터 전달되는 윈도우 소멸 명령에 따라서, 랜더러와 윈도우의 자원을 정리하고, 윈도우를 소멸시키며, 웹 어플리케이션이 소유하고 있는 모든 윈도우가 소멸되면, 해당 웹 어플리케이션을 종료시킨다.
이벤트 핸들러(413)는 컨텍스트 매니저(412)에서 생성한 윈도우와 관련한 이벤트와 웹 어플리케이션 실행 장치에서 확장한 시스템 관련 이벤트를 받아 처리한다. 더하여, 윈도우 내 페이지 전환이나, 윈도우 사이의 전환시에 UI 이펙트를 줄 수 있도록, 미리 정의된 상황과 관련된 이벤트가 발생하면, 이를 UI 엔진(430)으로 전달한다.
라이프사이클 매니저(414)는, 웹 어플리케이션의 라이프 사이클을 관리한다. 하나의 웹 어플리케이션은 다수의 페이지로 구성되는데, 웹 어플리케이션의 각각의 페이지들은 방문에 의해 시작되고, 다른 페이지로 전환될 때마다 종료된다. 웹 어플리케이션은 상기 실행 계층부(600)나 다른 웹 어플리케이션 또는 네이티브 어플리케이션의 실행 요청에 의해 웹 어플리케이션 마다 하나의 윈도우를 생성하여 시작되고, 사용자가 해당 웹 어플리케이션과 관련된 모든 윈도우를 닫거나 자바 스크립트를 통한 창 닫기 요청이 발생하여 모든 윈도우가 닫히면 종료된다. 또한, 웹 어플리케이션의 인스턴스가 생성한 윈도우가 1개뿐인 상태에서 다른 웹 어플리케이션이나 외부 페이지를 로딩한 경우에도 종료하게 된다. 상기 라이프사이클 매니저(414)는 이러한 웹 어플리케이션의 시작과 종료를 관리한다.
웹 어플리케이션 런타임 계층부(400)에서 레지스트리 모듈(420)는 웹 어플리케이션의 설치 정보 및 웹 어플리케이션 실행 장치의 구조(Configuration) 정보를 관리한다. 여기서, 실제 설치 정보 및 구조 정보는 이식 계층부(200)를 통해 단말기의 보안 스토리지에 저장한다. 더하여, 웹 어플리케이션의 설치 정보는, 웹 어플리케이션의 설치 시에 등록되거나, 단말 바이너리 패키징 시에 등록될 수 있다. 더 구체적으로, 레지스트리 모듈(420)은, 웹 어플리케이션의 설치, 삭제 및 갱신 등과 같은 웹 어플리케이션 컨텐츠 관리, 웹 어플리케이션의 속성 설정, 웹 어플리케이션의 인증 정보 추출 및 제공, 웹 어플리케이션 실행 장치 전체 또는 모듈별 갱신, 모듈간 종속성 관리 등을 포함하는 모듈 관리, 웹 어플리케이션 실행 장치의 속성 설정 기능, 및 플러그인의 설치 정보에 대한 관리기능을 수행한다. 이러한 레지스트리 모듈(420)은 웹 어플리케이션의 설치, 삭제 및 웹 어플리케이션 실행 장치 업데이트를 위한 API 등을 제공한다.
다음으로, UI 엔진(430)은 브라우저 엔진 모듈(510)에 의해 랜더링되는 영역 이외의 영역에 대한 UI 및 사용자 입력을 처리한다. 구체적으로는, 단말기의 전체 화면 중에서, 웹 어플리케이션의 페이지가 출력되는 영역 이외의 나머지 영역에 대한 처리를 담당하는데, 여기에는 실행 상태를 표시하는 상태 바와, 사용자 입력을 위한 버튼이 포함될 수 있다. 이때, 안테나의 신호 수신 강도, 통화 가능 여부, 배터리 잔량 등을 표시하는 annuniciator 영역은 운영체제(100)의 종류에 따라서 커스터마이징을 허용하지 않는 경우가 있으므로, UI 엔진(430)의 처리 영역에서 제외할 수 있다. 더하여, UI 엔진(430)은 여러 개의 웹 어플리케이션을 동시에 실행되어, 각 웹 어플리케이션 마다 별개의 윈도우를 생성하여 할당할 때, 각 윈도우 사이의 전환을 단말의 윈도우 매니저를 통해 수행한다. 즉, UI 엔진(430)은 컨텍스트 매니저(412)와 이식 계층부(200)에서 제공하는 UI 백엔드 모듈와의 유기적인 동작을 통해 UX(User eXperience) 관련 기능을 처리한다. 더하여, UI 엔진(430)은 웹 어플리케이션의 실행 중에 화면과 화면 사이를 전환할 때 다이내믹한 이펙트를 제공한다. 이러한 화면 전환 효과는 웹 표준 기술(예를 들어, HTML, CSS, JavaScript)를 이용해서 구현할 수 있다. 더하여, 복잡하고 화려한 화면 전환 효과를 사용자에게 생동감 있게 제공하기 위해, UI 엔진(430)은 네이티브 코드 수준에서 실행되는 화면 전환 효과를 플러그인 형태로 제공할 수 있다.
다음으로, 네트워크 셀렉터(440)는, 웹 어플리케이션 실행 장치에서 사용할 네트워크를 설정하고 관리한다. 이를 위하여, 네트워크 셀렉터(440)는 해당 단말기에서 사용 가능한 네트워크(예를 들어, 모뎀, Wi-Fi, 블루투스 등)에 대한 선택 방법과 우선 순위를 사용자로부터 입력 받아 설정한다. 여기서, 선택 방법은, 자동, 수동, 반자동의 3가지 옵션을 제공할 수 있으며, 자동은 설정된 우선순위에 따라서 가능한 네트워크에 접속을 시도하는 것이며, 수동은 사용자가 선택한 네트워크에 대해서만 접속을 시도하는 것이고, 반 자동은 네트워크 전환이 요구될 때마다 팝업을 띄워 사용자가 선택하도록 하는 것이다.
다이내믹 동기화 모듈(450)는, 해당 단말기가 온라인 상태인지, 오프라인 상태 인지에 상관없이 끊김 없는 웹 어플리케이션의 실행을 보장한다. 더 구체적으로, 외부 데이터에 접근하는 웹 어플리케이션을 실행 중에, 네트워크 연결이 끊기는 경우, 캐싱 메카니즘(cache mechanism)을 통해 로컬 스토리지에 데이터를 저장하고, 네트워크에 연결되었을 때, 로컬 스토리지에 저장되었던 데이터와 외부 데이터에 대한 동기화를 사용자가 인식하지 못하는 사이에 백그라운드로 자동 수행한다.
다음으로, 브라우저 엔진 계층부(500)에 대해서 설명한다.
브라우저 엔진 계층부(500)은, 웹 어플리케이션의 각 페이지를 해석하여 실행하는 계층으로서, 브라우저 엔진 모듈(510)과, 플러그인 관리 모듈(520)와, 하나 이상의 플러그인(530)을 포함한다. 이 중에서, 브라우저 엔진 모듈(510)은, HTML, CSS, JavaScript와 같은 웹 표준 언어로 작성된 웹 어플리케이션의 각 페이지를 해석하여 실행시킨다. 이러한 브라우저 엔진 모듈(510)은, 오픈 소스 기반의 브라우저 엔진인 Webkit로 구현될 수 있다. 이 경우, PC 환경과 달리 프로세서의 처리능력과 네트워크 대역폭에 제한이 있는 단말기의 환경에 맞도록 Webkit의 코드를 최적화하는 것이 바람직하다. 브라우저 엔진 모듈(510)은, 웹 표준 언어를 분석 및 랜더링하는 웹코어(WebCore)(511)와, 자바스크립트의 인터프리팅을 수행하는 스크립트코어(ScriptCore)(512)로 이루어진다. 브라우저 엔진 모듈(510)을 구현하는데 있어서, 웹코어(511)와, 스크립트코어(512)를 각각 모듈로 구성함으로써, 이를 통해 모듈별 업데이트 및 교체가 가능해 진다. 특히 브라우저 엔진 모듈(510)은, 해킹 등을 방지하기 위하여, 웹 어플리케이션 간에 상호 참조를 금지하도록 구현되는 것이 바람직하다. 이러한 브라우저 엔진 모듈(510)은, 웹 어플리케이션을 실행시키기 위하여 이식 계층부(200)을 통해 운영체제(100)의 기능을 이용한다. 더 구체적으로, 브라우저 엔진 모듈(510)은, HTTP, HTTPS와 같은 프로토콜 처리 기능과, XML 파서, XML 변환 등의 XML 처리 기능과, 윈도우 처리 기능, 폰트 처리 기능, 이미지 디코더 처리 기능, 다국어 처리를 위한 문자열 변환 기능, 타이머 등의 시스템 기능을 제공하며, 이러한 기능을 제공하기 위하여, 필요한 기본적인 기능은 이식 계층부(200)를 통해 가져온다. 즉, 이식 계층부(200)의 HTTP(s) 모듈, XLM 모듈, UI 백엔드 모듈, OS API 모듈 등을 통해 운영체제(100) 및 단말 자원에 접근하여 필요한 기능을 사용하여 각 페이지를 실행시킨다.
더하여, 상기 브라우저 엔진 모듈(510)은, 웹 어플리케이션의 각 페이지를 실행하는 중에, 현재 윈도우로 출력되는 페이지를 제외한 다른 페이지를 추출하고, 분석 및 구조화한 후에, 구조화된 데이터를 저장하여 둔다. 그리고, 상기 다른 페이지에 대한 이벤트가 발생하면, 상기 구조화된 데이터를 가져와 바로 랜더링하여 해당 윈도우로 출력한다. 이에 의하면, 본 발명에 의한 웹 어플리케이션 실행 장치는, 웹 어플리케이션의 실행 시에, 초기 실행 시간 및 페이지간 전환 시간을 단축함으로써, 실행 속도를 현저히 개선할 수 있다.
또한, 웹 어플리케이션은 웹 표준 기능 이외에 주소록이나 단말 어플리케이션과 같은 단말 자원을 이용할 수 있다. 이를 위하여, 상기 브라우저 엔진 계층부(500)는, 플러그인 관리 모듈(520) 및 하나 이상의 플러그인(530)을 더 포함하며, 이를 통해 단말 의존적인 기능을 호출한다. 이에 따르면, 단말 의존적 기능의 처리는 상기 플러그인 관리 모듈(520) 및 하나 이상의 플러그인(530)을 통해 이루어지므로, 브라우저 엔진 모듈(510)의 구현 시, 최신의 브라우저 엔진 기술을 큰 수정 없이 빠르게 웹 어플리케이션 실행 장치에 적용할 수 있다. 또한, 향후 제공 가능한 새로운 기능을 플러그인 형태로 추가할 수 있으므로, 기능 확장이 더 쉬워진다.
플러그인 관리 모듈(520)는 복수의 플러그인의 다운로드 및 설치, 설치된 플러그인의 목록 관리, 업데이트, 웹 어플리케이션의 플러그인 호출 요청에 대한 응답을 수행한다. 여기서, 신규 플러그인의 다운로드 요청, 업데이트 요청은 실행 계층부(600)에 포함된 업데이터(612)에 의해 발생하고, 해당 요청이 웹 어플리케이션 런타임 계층부(400)을 통해 플러그인 관리 모듈(520)로 전달된다. 다운로드 요청을 전달받은 플러그인 관리 모듈(520)는 OMA 다운로드 표준에 따라서, 플러그인 패키지를 다운받고, 플러그인의 설치 정보는 레지스트리 모듈(420)를 통해 단말기의 보안 저장 영역에 저장한다. 이러한 플러그인 관리 모듈(520)는 브라우저가 플러그인에 제공해야 하는 브라우저측 API와, 플러그인이 브라우저에 제공해야 하는 플러그측 API로 이루어지며, 플러그인은 브라우저측 API를 호출하여 작업을 수행하고, 브라우저는 플러그인측 API를 호출하여 플러그인의 생성/동작/소멸에 관한 플러그을 관리할 수 있다..
상기 하나 이상의 플러그인(530)은, 웹 어플리케이션에서 요구하는 웹 표준 이외의 단말기의 운영체제 및 자원과 관련된 기능을 호출하여 그에 대한 응답을 브라우저 엔진 모듈(510)로 전달하는 것으로서, 웹 어플리케이션의 단말 자원과 관련된 기능 호출을 이식 계층부(200)의 리소스 모듈에 전달하는 리소스(Resource) 플러그인과, 웹 어플리케이션의 단말 OS API 호출 기능을 이식 계층부(200)의 OS API 모듈에 전달하고, 웹 어플리케이션 런타임 계층부(400)의 코어 기능에 대한 접근 인터페이스를 제공하는 시스템 API 플러그인과, 웹 어플리케이션에 포함되지 않은 페이지와의 연동을 위한 기능 호출을 이식 계층부(200)의 협업(Collaboration) 모듈로 전달하는 협업 플러그인과, 웹 어플리케이션의 동기화 에이전트와 관련된 기능 호출을 이식 계층부(200)의 동기화 모듈(Sync module)에 전달하는 동기화(Sync) 플러그인 중에서 하나 이상을 포함할 수 있으며, 이외에도 필요에 따라서 다른 여러 가지 기능에 대한 플러그인을 추가할 수 있다.
본 발명에 의한 웹 어플리케이션 실행 장치에 있어서, 상기 플러그인 관리 모듈(520) 및 하나 이상의 플러그인(530)을 통해서 접근할 수 있는 단말 자원은, 예를 들어, 사진, 주소록, 전화, SMS 기능, 통화 로그 조회 등에 관한 메소드와 프로퍼티를 포함한다.
다음으로, 실행 계층부(600)에 대하여 설명한다.
실행 계층부(600)은, 브라우저 엔진 컨테이너 코어의 엔트리 포인트 역할을 하며, 단일 인스턴스 형태로 동작한다. 이러한 실행 계층부(600)은, 네이티브 OS의 실행 파일 형태로 구현되거나, DLL로 구현될 수 있다. 이때, 실행 계층부(600)는 이식성을 높이기 위하여, 최대한 이식 계층부(200)을 이용하여 운영체제(100)에 접근하도록 한다. 이에 따르면, 어떠한 운영체제에서도 소스 레벨의 이식성을 가질 수 있게 된다.
실행 계층부(600)은, 상기 이식 계층부(200)와 보안 계층부(300)와 웹 어플리케이션 런타임 계층부(400) 및 브라우저 엔진 계층부(500)를 포함하는 브라우저 엔진 컨테이너 코어를 로딩하여 실행시키고, 사용자의 요청에 따른 웹 어플리케이션 실행 명령을 상기 웹 어플리케이션 런타임 계층부(400) 또는 브라우저 엔진 계층부(500)로 전달한다. 또한, SMS 푸시 또는 셀프 체크에 의해 웹 어플리케이션 실행 장치의 모듈별 업데이트를 확인하여 관련 다운로드 요청을 해당 모듈로 전달한다. 특히, 상기 브라우저 엔진 계층부(500)에 구비되는 플러그인(530)에 대한 업데이트를 체크하여, 다운로드 요청을 상기 플러그인 관리 모듈(520)로 전달한다. 이러한 실행 계층부(600)는, 컨테이너 에이전트(610)과, 더미 실행(Dummy execution) 모듈(620)과, 대기모드 에이전트(Idle Agent)(630)을 포함한다.
컨테이너 에이전트(610)은, 단말의 네이티브 어플리케이션 형태로 구현되며, 더미 실행 모듈(620)을 로디아여, 단축아이콘 또는 단말의 네이티브 메뉴를 통한 웹 어플리케이션의 실행 명령을 전달한다. 더 구체적으로는, 웹 어플리케이션 실행 장치가 실행중인 상태에서, 웹 어플리케이션의 실행이 요청되면, 해당 웹 어플리케이션의 실행 명령을 더미 실행 모듈(620)을 통해 바로 웹 어플리케이션 런타임 모듈(410)의 커맨드 핸들러(411)로 전달하고, 웹 어플리케이션 실행 장치가 실행 중이 아닌 경우에는, 더미 실행 모듈(620)을 통해 브라우저 엔진 컨테이너 코어를 로딩하여 실행시킨 후, 상기 웹 어플리케이션의 실행 명령을 커맨드 핸들러(411)로 전달한다. 이를 위하여, 웹 어플리케이션 런처(Launcher)(611)를 포함한다. 또한, 컨테이너 에이전트(610)는, SMS 푸시 또는 셀프 체크(self check)를 통한 웹 어플리케이션 실행 장치의 모듈별 업데이트를 수행한다. 이를 위해 컨테이너 에이전트(610)는, 업데이터(612)를 포함한다. 업데이터(612)는, 웹 어플리케이션 실행 장치 상에 설치되어 있는 플러그인(530)의 업데이트와 새로 확장된 플러그인의 다운로드 및 설치/삭제를 관리하고, 보안 계층부(300)을 위한 접근 제어 규칙에 대한 업데이트 여부를 관련 서버(예를 들어, 정책 서버)에 확인하고, 필요 시 정책 모듈(320)로 다운로드를 요청한다. 이러한 컨테이너 에이전트(610)은, 데몬(Daemon) 형태가 아니라 해당 기능을 수행하고 즉시 종료하는 형태로 구현되는 것이 바람직한 것으로서, 긴 시간 구동되지 않고, 웹 어플리케이션의 구동 요청 시에 잠깐 실행되어, 더미 실행 모듈(620)을 구동시키고, 바로 종료한다.
더미 실행 모듈(620)은 컨테이너 에이전트(610)에 의해 구동되어, 네이티브 OS에서 이식 계층부(200), 보안 계층부(300), 웹 어플리케이션 런타임 계층부(400), 및 브라우저 엔진 계층부(500)을 포함하는 브라우저 엔진 컨테이너 코어를 로딩하여 실행하는 수단으로서, 더 구체적으로는, 상기 브라우저 엔진 컨테이너 코어를 로딩하여 웹 어플리케이션의 실행 명령을 전달하는 기능만을 수행한다.
대기모드 에이전트(630)은, 웹 어플리케이션이 단말의 대기 화면에서 동작할 수 있도록 지원한다. 대기모드 에이전트(630)은, 네이티브 OS의 특성에 맞춰 해당 규약에 따라 구현되며, 단말의 대기화면(native idle screen) 관리자에 의해 로딩되어, 대기화면에서 특정 웹 어플리케이션의 실행 요청이 있으면, 해당 요청을 웹 어플리케이션 런타임 계층부(400)로 전달한다.
다음으로, 하나 이상의 시스템 웹 어플리케이션(700)은, 웹 어플리케이션 실행 장치의 설치 시에 함께 제공되는 웹 어플리케이션으로서, 사용자가 설치하는 다른 웹 어플리케이션을 관리하는 웹 어플리케이션 매니저(710)와, 사용자가 선택한 웹 어플리케이션의 다운로드를 관리하는 웹 어플리케이션 다운로더(720) 중 하나 이상을 포함할 수 있다.
웹 어플리케이션 매니저(710)는, 웹 어플리케이션 런타임 계층부(400) 위에서 동작하여, 웹 어플리케이션 런타임 계층부(400)의 레지스트리 모듈(420)에 접근하여 단말기에 설치된 웹 어플리케이션들에 대한 정보를 가져와 UI를 통해 사용자에게 제공하며, 사용자의 선택에 의해 특정 웹 어플리케이션의 구동이 요청되면, 이를 웹 어플리케이션 런타임 계층부(400)로 전달한다.
웹 어플리케이션 다운로더(720)는, 외부의 서버에 접속하여, 웹 어플리케이션을 다운로드하기 위한 웹 어플리케이션이다.
이상과 같이 구현된 웹 어플리케이션 실행 장치는, 다양한 종류의 운영체제를 탑재한 단말기에 설치되며, 상기 운영체제(100) 위에서 동작하여, 운영체제의 종류에 관계없이, 웹 어플리케이션에 대한 동일한 실행 환경을 제공한다.
본 발명에 의한 웹 어플리케이션 실행 장치는, 다수 웹 어플리케이션의 동시 실행과 단일 웹 어플리케이션에 대한 멀티 인스턴스를 함께 지원한다. 즉, 한 시스템 내에서 복수 개의 컨테이너를 실행할 수 있으며, 컨테이너 자체는 단일 인스턴스로 동작한다.
본 발명에 의한 웹 어플리케이션 실행 장치는 기본적으로 다수의 웹 어플리케이션의 동시 실행을 지원하는 멀티-태스킹 컨테이너로서, 웹 어플리케이션의 성격이나 종류 등에 따라 또는 특정 원칙에 따라서 웹 어플리케이션을 그룹핑하고, 그룹별로 웹 어플리케이션 실행 장치를 구동시킬 수 있다. 예를 들어, 일반 웹 어플리케이션과, 대기 화면에서 위젯 서비스를 수행하는 웹 어플리케이션을 각각 그룹핑하여, 실행되도록 할 수 있다. 이때, 각 컨테이너 자체는 단일 인스턴스로 구동되며, 이 안에서 다수의 웹 어플리케이션들이 동시 구동된다. 이때, 웹 어플리케이션 실행 장치의 모든 모듈은 웹 어플리케이션들을 멀티-태스킹으로 구동하기 위하여, 쓰레드 세이프(Thread Safe)하도록 구현된다.
이와 같이, 컨테이너별 단일-인스턴스로 구현함에 의하여, 멀티 인스턴스를 지원하지 않는 운영체제에서도 본 발명의 웹 어플리케이션 실행 장치는 네이티브 시스템의 특성에 구애 받지 않고 이식할 수 있다.
본 발명의 웹 어플리케이션 실행 장치는 웹 표준을 준수하여, 웹 어플리케이션이 실행될 때마다 네이티브 시스템의 윈도우를 생성하고, 랜더러 쓰레드를 생성하여 웹 어플리케이션의 디폴트 또는 요청 페이지를 실행할 수 있도록 한다. 또한, 하나의 웹 어플리케이션이 여러 윈도우를 생성하는 것이 가능하며, 이때 윈도우마다 랜더러 쓰레드가 생성되어 할당된다. 또한, 여러 웹 어플리케이션의 동시 실행이 가능하며, 하나의 웹 어플리케이션에 대해서도 멀티 인스턴스가 가능하다. 웹 어플리케이션의 모든 인스턴스들은 상기 컨텍스트 매니저(412)가 관리하며, 유저 인터액션 또는 시스템에 의해 발생하는 모든 이벤트는 이벤트 핸들러(413)에 의해 적정 웹 어플리케이션의 인스턴스로 전달된다.
본 발명에 의한 웹 어플리케이션 실행 장치에서, 안전하게 웹 어플리케이션을 설치하여 실행하기 위해서는, 웹 어플리케이션과 단말 자원 사이의 보안과, 웹 어플리케이션 사이의 보안이 해결되어야 한다.
여기서, 웹 어플리케이션 사이의 보안은, 웹 어플리케이션의 상호 참조를 금지시키도록 함에 의해 구현할 수 있다. 즉, 더미 실행 모듈(620)에 의해 로딩된 단일 프로세서상에서 다수의 웹 어플리케이션이 구동될 때, 각 웹 어플리케이션은 별도 쓰레드 상에 로딩된 브라우저 엔진 계층부(500) 상에서 구동된다. 이때, 각 웹 어플리케이션은 하나의 윈도우를 소유하게 되며, 웹 표준에 의하면, 해당 윈도우의 이름을 알 경우, 제한 없이 다른 웹 어플리케이션이 또 다른 웹 어플리케이션의 내용을 참조할 수 있게 되는데, 본 발명에서는, 서로 다른 웹 어플리케이션이 서로의 웹 문서 객체에 접근하는 것을 제한한다. 이는 상기 브라우전 엔진 모듈(510)의 스크립트 코어(512)를 수정함에 의해 구현될 수 있다.
그리고, 웹 어플리케이션과 단말 자원 사이의 보안은 상기 보안 계층(300)을 통해 구현된다.
이하 본 발명에 의한 웹 어플리케이션 실행 방법에 대하여 설명한다.
도 2는 본 발명에 의한 웹 어플리케이션 실행 방법의 기본 절차를 나타낸 흐름도이다.
도 2를 참조하면, 본 발명에 의한 웹 어플리케이션 실행 장치는, 특정 웹 어플리케이션의 실행 요청이 발생하면, 먼저, 상기 웹 어플리케이션을 위한 윈도우 및 랜더러 인스턴스를 생성한다(S201, S202). 즉, 웹 어플리케이션의 실행 명령이 상기 웹 어플리케이션 런타임 모듈(410)의 컨텍스트 매니저(412)로 전달되면, 상기 컨텍스트 매니저(412)의 제어에 의하여, 해당 웹 어플리케이션을 위한 윈도우 및 랜더러 인스턴스를 생성한다. 여기서, 웹 어플리케이션의 실행 명령은, 단축아이콘, 네이티브 메뉴, 웹 어플리케이션 매니저(710), 대기화면 등 다양한 경로를 통해서 전달될 수 있는데 이에 대해서는 추후 더 구체적으로 설명하기로 한다.
상기와 같이, 웹 어플리케이션을 위한 윈도우 및 랜더러 인스턴스가 생성되면, 해당 브라우저 엔진 모듈(510)이 웹 어플리케이션에 포함된 페이지분석 및 구조화하고 랜더링하여 상기 생성한 윈도우로 출력한다(S203). 여기서, 초기에 실행되는 페이지는 웹 어플리케이션의 설치 정보에 디폴트로 설정된 초기 페이지일 수 있으며, 사용자가 임의로 지정한 페이지일 수도 있다. 이 경우, 사용자는 웹 어플리케이션의 실행 요청 시, 초기 실행할 페이지의 주소를 함께 지정할 수 있다.
더하여, 상기 브라우저 엔진 모듈(510)은, 상기 실행된 지정 페이지 이외에 상기 웹 어플리케이션에 포함된 하나 이상의 다른 페이지를 추출한다(S204). 상기 하나 이상의 다른 페이지는 현재 출력된 페이지에서 연결되는 페이지일 수도 있으며, 상기 웹 어플리케이션을 구성하는 모든 페이지일 수도 있다. 즉, 매 페이지의 실행 시마다 각각 관련된 다른 페이지를 추출할 수도 있으며, 초기 페이지 실행 시에, 나머지 모든 페이지를 추출할 수도 있다.
그리고 상기 브라우저 엔진 모듈(510)은 상기 추출한 하나 이상의 다른 페이지를 분석하여, DOM 트리 및 스타일 트리를 생성하고, 상기 DOM 트리 및 스타일 트리의 관련 노드를 연결하여, 해당 페이지를 구조화한다(S205). 도 6을 참조하여 더 구체적으로 설명하면, 웹 어플리케이션의 각 페이지는, 도 6에 도시된 바와 같이, HTML, xHTML과 같은 웹 표준 언어로 작성된 웹 컨텐츠(61)와, css와 같은 포맷 정보(62)를 포함한다. 이러한 웹 페이지의 실행은, 해당 페이지의 웹 컨텐츠(61)와 포맷 정보(62)를 분석하여, DOM(Document Object Model) 트리(63)와 랜더러스타일 트리(64)를 구성한 후, 상기 DOM 트리(63)와 랜더러스타일 트리(64)의 관련 노드를 연결하여, 랜더러 오브젝트(65)를 생성한다. 그리고, 상기 생성한 랜더러 오브젝트를 통해 페이지를 구조화하여 레이아웃(66)을 지정한다. 이렇게 구조화된 데이터는 랜더링을 통해 화면으로 출력될 수 있다.
상기 단계(S205)에서는, 각 페이지에 대하여 분석 및 구조화까지만을 수행한다.
이어서, 상기 브라우저 엔진 모듈(510)은 상기 구조화된 상기 다른 페이지의 데이터를 바로 랜더링하여 출력하지 않고 시리얼라이즈화(Serialization)한 후 바이너리 파일로 저장한다(S206). 상기 다른 페이지의 바이너리 파일은 해당 웹 어플리케이션이 실행되는 동안, 임시로 저장되는 것이며, 해당 웹 어플리케이션의 종료 시에 삭제될 수 있다.
이후, 상기 브라우저 엔진 모듈(510)은, 상기 다른 페이지에 대한 이벤트, 더 구체적으로는 상기 다른 페이지로의 전환 요청이 발생하는 지를 확인한다(S207).
그리고, 상기 다른 페이지에 대한 이벤트가 발생하면, 앞서 단계(S206)에서 저장한 다른 페이지의 바이너리 파일을 가져와 랜더링하여 해당하는 윈도우를 통해 출력한다(S208).
상기 단계(S204~S208)는 해당하는 웹 어플리케이션이 종료될 때까지 반복 수행된다(S209).
이에 의하면, 다수의 페이지로 구성되는 웹 어플리케이션의 실행 시, 단말기에 저장되어 있는 웹 어플리케이션의 각 페이지 별 데이터를 가져와, 미리 파싱 및 레이아웃 지정까지 처리함으로써, 해당 페이지의 실행 시 미리 레이아웃 지정까지 처리된 데이터를 가져와 랜더링하면 된다. 따라서, 본 발명에 의한 웹 어플리케이션 실행 방법은, 웹 어플리케이션의 초기 실행 시간이나 페이지간 전환 시간을 단축시킴으로써, 웹 어플리케이션의 실행 속도를 향상시킬 수 있다.
본 발명에 의한 웹 어플리케이션 실행 방법에 있어서, 웹 어플리케이션 실행 요청 처리는 도 3 내지 도 5와 같이 이루어질 수 있다.
도 3은 본 발명에 의한 웹 어플리케이션 실행 방법에 있어서, 웹 어플리케이션의 실행 명령을 전달하는 방법의 제1 실시 예를 나타낸 흐름도이다. 도 3를 참조하면, 사용자의 웹 어플리케이션 실행 요청은, 단축 아이콘을 이용하여 이루어질 수 있다. 단축아이콘을 이용한 웹 어플리케이션의 실행 요청이 입력되면(S301), 실행 계층부(600)의 컨테이너 에이전트(610)가 동작하여 웹 어플리케이션 런타임 계층부(400)와 브라우저 엔진 계층부(500)를 포함하는 브라우저 엔진 컨테이너 코어가 실행 중인지를 확인한다(S302).
확인 결과, 브라우저 엔진 컨테이너 코어가 실행 중이 아니면(S303), 더미 실행 모듈(620)을 통해 상기 브라우저 엔진 컨테이너 코어, 즉, 이식 계층부(200)와, 보안 계층부(300)와, 웹 어플리케이션 런타임 계층부(400)와, 브라우저 엔진 계층부(500)를 로딩한다(S304).
상기 단계(S304)에 의해 또는 이전에 브라우저 엔진 컨테이너 코어가 실행되어 있는 상태이면, 웹 어플리케이션 런타임 모듈(410)의 커맨드 핸들러(411)로 웹 어플리케이션 실행 명령을 전달한다(S305).
상기 커맨드 핸들러(511)는 실행 계층부(600)로부터 전달된 명령을 해석하여, 웹 어플리케이션 실행 명령이면 컨텍스트 매니저(412)에게 상기 웹 어플리케이션의 실행 요청을 전달한다(S306).
이에 컨텍스트 매니저(412)가 상기 웹 어플리케이션을 위한 윈도우와 랜더러 인스턴스를 생성한다(S307, S308).
이후의 동작은, 도 2에 보인 단계(S202~S209)와 동일하다.
도 4는 본 발명에 의한 웹 어플리케이션 실행 방법에 있어서, 웹 어플리케이션의 실행 명령을 전달하는 방법의 제2 실시 예를 나타낸 흐름도이다. 도 4를 참조하면, 사용자의 웹 어플리케이션 실행 요청은, 웹 어플리케이션 매니저(710)에 의해 이루어질 수 있다.
이 경우, 웹 어플리케이션 매니저(710)는, 레지스트리 모듈(420)에 저장된 웹 어플리케이션의 설치 정보를 참조하여, 현재 설치된 웹 어플리케이션의 목록을 사용자에게 안내한다. 여기서, 사용자가 특정 웹 어플리케이션의 실행을 요청하면, 웹 어플리케이션 매니저(710)는, 본 발명에 의한 웹 어플리케이션 실행 장치에서 제공하는 실행 API를 호출한다(S402).
이에 브라우저 엔진 모듈(510)이 하나 이상의 플러그인(530) 중에서 시스템 API 플러그 인을 로딩하여, 실행 API를 호출한다(S403).
상기 시스템 API 플러그인은 웹 어플리케이션 실행 장치의 코어 기능, 특히, 웹 어플리케이션 런타임 계층부(400)의 기능에 대한 접근 인터페이스를 제공하는 것으로서, 로딩된 시스템 API 플러그인은 웹 어플리케이션 런타임 계층부(400)의 컨텍스트 매니저(412)로 웹 어플리케이션의 실행 요청을 전달한다(S404).
이후 상기 컨텍스트 매니저(412)에 의해 상기 웹 어플리케이션을 위한 윈도우와 랜더러 인스턴스가 생성된다(S405, S406).
이후의 과정은 도 2에 보인 단계(S202~S209)와 동일하다.
마지막으로, 도 5은 본 발명에 의한 웹 어플리케이션 실행 방법에 있어서, 웹 어플리케이션의 실행 명령을 전달하는 방법에 대한 제3 실시 예를 나타낸 흐름도이다.
도 5를 참조하면, 사용자는 단말기의 대기화면에서 특정 웹 어플리케이션의 실행을 요청할 수 있다(S501). 이 경우, 단말기는 대기화면이 활성화된 상태로서, 이때, 웹 어플리케이션 실행 장치는 비활성화 상태이다.
따라서, 단말기에 설치된 네이티브 대기화면 관리자가 사용자의 웹 어플리케이션 실행 요청을 입력 받으면, 실행 계층부(600)의 대기모드 에이전트(630)을 로딩하여, 웹 어플리케이션 실행 명령을 전달한다(S502).
상기 대기모드 에이전트(630)은, 이식 계층부(200)과, 보안 계층부(300)와, 웹 어플리케이션 런타임 계층부(400)와, 브라우저 엔진 계층부(500)로 이루어지는 브라우저 엔진 컨테이너 코어를 로딩하여, 대기화면 모드 실행 API를 호출한다(S503).
상기 대기화면 모드 실행 API 호출을 통해 컨텍스트 매니저(412)가 웹 어플리케이션의 실행 명령을 전달받고, 웹 어플리케이션을 위한 윈도우와 랜더러 인스턴스를 생성한다(S504, S505).
이후의 과정은, 도 2의 단계(S202~S209)와 동일하다.
본 발명에 따른 웹 어플리케이션 실행 장치 및 방법은 다양한 컴퓨터 수단을 통하여 판독 가능한 소프트웨어 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 여기서, 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으나, 여기에 개시된 실시 예외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다. 또한, 본 명세서와 도면에서 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다.
본 발명은, 운영체제를 탑재한 단말에 적용되어, 웹 표준에 따르면서 단말 자원을 이용할 수 있는 웹 어플리케이션의 실행 환경을 제공하면서, 웹 어플리케이션 및 플러그인의 실행 및 설치와, 단말 자원에 대한 접근을 제어하여, 정당한 웹 어플리케이션 및 플러그인이 설치되거나 실행되고, 실행된 웹 어플리케이션이 부여된 권한 내에서 단말 자원에 접근하도록 할 수 있으며, 그 결과, 본 발명은 해킹 등의 불순한 목적으로 인해 변조된 웹 어플리케이션이 설치되거나 실행되지 못하도록 하고, 불순한 의도를 갖는 웹 어플리케이션에 의해서 단말 자원이 해킹되는 것을 방지하고, 웹 어플리케이션의 설치 및 이용에 대한 안전성을 사용자에게 제공할 수 있다.
100: 운영체제(OS, Operating Systsem)
200: 이식 계층부 (Porting layer)
300: 보안 계층부 (Security layer)
400: 웹 어플리케이션 런타임 계층부 (Web Application Runtime layer)
500: 브라우저 엔진 계층부 (Browser Engine layer)
600: 실행 계층부 (Executable layer)
700: 시스템 웹 어플리케이션 (System Web Application)
200: 이식 계층부 (Porting layer)
300: 보안 계층부 (Security layer)
400: 웹 어플리케이션 런타임 계층부 (Web Application Runtime layer)
500: 브라우저 엔진 계층부 (Browser Engine layer)
600: 실행 계층부 (Executable layer)
700: 시스템 웹 어플리케이션 (System Web Application)
Claims (17)
- 웹 어플리케이션의 각 페이지를 해석하여 화면으로 출력하되, 상기 웹 어플리케이션에 속하는 하나 이상의 다른 페이지를 분석 및 구조화한 후, 구조화된 데이터를 저장하여 두고, 상기 다른 페이지에 대한 이벤트 발생시 상기 구조화된 데이터를 랜더링하여 화면으로 출력하는 브라우저 엔진 계층부;
다수의 운영체제의 기능 및 단말 자원에 대하여 통합된 이식 계층 API(Application Programming Interface)를 제공하고, 상기 브라우저 엔진 계층부가 특정 이식 계층 API를 호출하면, 대응하는 운영체제의 API를 호출하고 그 응답을 수신하여 상기 브라우저 엔진 계층부로 전달하는 이식 계층부; 및
웹 어플리케이션의 실행 명령을 상기 브라우저 엔진 계층부로 전달하며, 상기 브라우저 엔진 계층부에서 페이지를 실행하는데 있어서 필요한 네트워크 및 UI를 제공하는 웹 어플리케이션 런타임 계층부를 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제1항에 있어서,
상기 브라우저 엔진 계층부와 이식 계층부 및 웹 어플리케이션 런타임 계층부를 로딩하고, 사용자의 요청에 따른 웹 어플리케이션의 실행 명령을 상기 웹 어플리케이션 런타임 계층부로 전달하는 실행 계층부를 더 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제1항에 있어서,
상기 웹 어플리케이션 및 상기 브라우저 엔진 계층부에서 웹 표준 이외의 단말의 자원 및 운영체제 기능을 호출하는 플러그인의 인증서를 검증하고, 접근 제어 규칙에 따라서 웹 어플리케이션의 실행 중 상기 이식 계층에 대한 접근을 제어하는 보안 계층부를 더 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제1항에 있어서, 상기 브라우저 엔진 계층부는
웹 표준 언어로 작성된 웹 어플리케이션의 각 페이지를 해석하여 실행시키는 브라우저 엔진 모듈;
하나 이상의 플러그인에 대한 다운로드, 설치, 설치된 플러그인의 목록 관리, 업데이트, 및 플러그인의 호출 요청에 대한 처리를 수행하는 플러그인 관리 모듈; 및
상기 플러그인 관리 모듈에 의해 설치되고, 상기 플러그인 관리 모듈을 통해 동작하여, 각각 웹 표준 이외의 단말의 자원 및 운영체제의 기능을 호출하여 그에 대한 응답을 상기 브라우저 엔진 모듈로 반환하는 하나 이상의 플러그인을 포함하여 이루어지는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제1항에 있어서, 이식 계층부는
HTML과 관련된 기능 및 API를 제공하는 HTTP 모듈,
XML 파싱 기능을 위한 API를 제공하는 XML 모듈,
쓰레드 기능을 API형태로 제공하고 운영체제에 의해 제공되는 기능을 바이-패스하는 쓰레드(Thread) 모듈,
UI(User Interface) 구현을 위해 필요한 윈도우 시스템의 기능을 API 형태로 제공하는 UI 백엔드(Backend) 모듈,
보안 저장 기능을 API 형태로 제공하는 보안 스토리지 모듈,
단말 자원에 대한 접근 인터페이스를 API 형태로 제공하는 리소스 모듈,
단말 자원 이외에 단말에서 제공하는 OS API를 API 형태로 제공하는 OS API 모듈,
단말에 설치된 네이티브 어플리케이션과의 연동 기능을 API 형태로 제공하는 협업(Collaboration) 모듈,
외부 장치에 존재하는 동기화 어플리케이션과의 연동 인터페이스를 API 형태로 제공하는 동기화(Sync) 모듈,
운영체제의 로컬 스토리지 기능을 API 형태로 제공하는 로컬 스토리지(Local Storage) 모듈 중에서 하나 이상을 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제2항에 있어서, 상기 웹 어플리케이션 런타임 계층부는
웹 어플리케이션 인스턴스의 컨텍스트 관리 및 이벤트 핸들링, 실행 계층부로부터의 커맨드 처리를 수행하는 웹 어플리케이션 런타임 모듈;
웹 어플리케이션 및 플러그인의 설치 정보 및 웹 어플리케이션 실행 장치의 구조 정보를 관리하는 레지스트리 모듈;
상기 브라우저 엔진 계층부에서 랜더링하는 영역 이외의 화면 영역에 대한 UI(User Interface) 및 사용자 입력을 처리하는 UI 엔진;
웹 어플리케이션 실행 장치에서 사용할 네트워크를 설정하고 관리하는 네트워크 셀렉터; 및
웹 어플리케이션을 실행 중에, 네트워크 연결이 끊긴 동안의 데이터를 로컬 스토리지에 저장하고, 네트워크가 연결되면 로컬 스토리지에 저장한 데이터와 외부 데이터에 대한 동기화를 수행하는 다이내믹 동기화 모듈을 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제2항에 있어서, 상기 실행 계층부는
웹 어플리케이션 런타임 실행 계층부와 브라우저 엔진 계층부 및 이식 계층부를 로딩한 후, 웹 어플리케이션 실행 명령을 상기 웹 어플리케이션 런타임 실행 계층부로 전달하는 더미 실행 모듈;
단축 아이콘 또는 단말의 메뉴를 통한 웹 어플리케이션의 실행 요청에 따라서 동작하여, 더미 실행 모듈을 실행시켜 웹 어플리케이션 실행 명령을 상기 웹 어플리케이션 런타임 실행 계층부로 전달하는 컨테이너 에이전트; 및
단말의 대기화면 관리자에 의해 로딩되어, 대기화면에서의 웹 어플리케이션 실행 명령을 상기 웹 어플리케이션 런타임 계층부로 전달하는 대기모드 에이전트를 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제3항에 있어서, 상기 보안 계층부는
웹 어플리케이션 및 상기 플러그인의 설치 또는 실행 전에, 상기 웹 어플리케이션 및 플러그인의 인증서를 검증하는 인증 모듈; 및
웹 어플리케이션의 실행 중에, 접근 제어 규칙에 따라서, 상기 이식 계층부에 대한 접근을 제어하는 정책 모듈을 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제4항에 있어서, 상기 하나 이상의 플러그인은
단말 자원과 관련된 기능 호출을 상기 이식계층부로 전달하는 리소스 플러그인과,
웹 어플리케이션의 단말 및 OS API에 대한 기능 호출을 상기 이식 계층부에 전달하고, 웹 어플리케이션 런타임 계층부의 기능에 대한 접근 인터페이스를 제공하는 시스템 API 플러그인과,
웹 어플리케이션에 포함되지 않은 페이지와의 연동을 위한 기능 호출을 이식 계층부로 전달하는 협업(Collaboration) 플러그인과,
웹 어플리케이션의 동기화 에이전트와 관련된 기능 호출을 이식 계층부에 전달하는 동기화(Sync) 플러그인 중에서 하나 이상을 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제6항에 있어서, 상기 웹 어플리케이션 런타임 모듈은
상기 실행 계층부로부터 웹 어플리케이션의 실행과 관련된 명령을 전달받아 해석하여, 명령된 동작을 지시하는 커맨드 핸들러;
상기 커맨드 핸들러 또는 상기 브라우저 엔진 계층부의 지시에 따라서 웹 어플리케이션 별로 윈도우 및 랜더러의 생성 및 소멸을 제어하는 컨텍스트 매니저;
상기 컨텍스트 매니저에서 생성한 윈도우와 관련된 이벤트 및 웹 어플리케이션 실행 장치의 시스템 관련 이벤트를 처리하며, 윈도우에 대해 미리 정의된 상황과 관련된 이벤트가 발생하면 상기 UI 엔진에 전달하는 이벤트 핸들러; 및
다수의 페이지를 포함하는 웹 어플리케이션 및 그의 각 페이지에 대한 라이프사이클을 관리하는 라이프사이클 매니저를 포함하여 이루어지는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제10항에 있어서, 상기 커맨드 핸들러에서 처리되는 명령어는,
웹 어플리케이션의 실행 및 종료, 웹 어플리케이션 실행 장치와 관련된 설정 정보의 업데이트, 웹 어플리케이션 실행 장치의 실행 및 종료, 상기 브라우저 엔진 계층부에 설치되는 플러그 인에 대한 인스톨, 언인스톨, 및 업데이트 중에서 하나 이상을 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 장치. - 제1항 내지 제11항 중 어느 한 항에 기재된 웹 어플리케이션 실행 장치를 구비한 단말기.
- 다수의 운영체제의 기능 및 단말의 자원에 대한 이식 계층 API를 지원하는 이식 계층부와, 브라우저 엔진 계층부에서 페이지를 실행하는데 필요한 네트워크 및 UI를 제공하는 웹 어플리케이션 런타임 계층부와, 웹 어플리케이션의 각 페이지를 해석하여 실행하는 브라우저 엔진 계층부를 포함하는 브라우저 엔진 컨테이너 코어와, 상기 브라우저 엔진 컨테이너 코어의 엔트리 포인트인 실행 계층부를 포함하는 웹 어플리케이션 실행 장치에 의한, 웹 어플리케이션 실행 방법에 있어서,
상기 웹 어플리케이션 런타임 계층부가 웹 어플리케이션 실행 요청이 있으면, 상기 웹 어플리케이션을 위한 윈도우 및 랜더러 인스턴스를 생성하는 단계;
상기 브라우저 엔진 계층부가 상기 웹 어플리케이션에 포함된 페이지 중에서, 지정된 페이지를 분석, 구조화 및 랜더링하여 상기 생성한 윈도우로 출력하는 단계;
상기 출력된 페이지 이외에 상기 웹 어플리케이션에 포함된 하나 이상의 다른 페이지를 추출하는 단계;
상기 하나 이상의 다른 페이지를 분석 및 구조화하는 단계;
상기 구조화된 다른 페이지의 데이터를 저장하는 단계;
상기 다른 페이지에 대한 이벤트 발생을 확인하는 단계;
이벤트가 발생하면, 상기 구조화된 다른 페이지의 데이터를 랜더링하여 상기 윈도우로 출력하는 단계를 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 방법. - 제13항에 있어서, 상기 윈도우 및 랜더러 인스턴스를 생성하는 단계이전에,
사용자의 웹 어플리케이션의 단축 아이콘을 이용한 실행 요청을 입력되면, 상기 실행 계층부에서 상기 브라우저 엔진 컨테이너 코어의 실행 여부를 확인하는 단계;
확인 결과, 브라우저 엔진 컨테이너 코어가 실행 중이 아니면 상기 브라우저 엔진 컨테이너 코어를 로딩하는 단계; 및
상기 브라우저 엔진 컨테이너 코어가 실행되면, 상기 브라우저 엔진 컨테이너 코어의 웹 어플리케이션 런타임 계층부로 웹 어플리케이션 실행 명령을 전달하는 단계;
를 더 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 방법. - 제13항에 있어서, 상기 윈도우 및 랜더러 인스턴스를 생성하는 단계이전에,
설치된 웹 어플리케이션을 관리하는 웹 어플리케이션 매니저에서, 사용자의 웹 어플리케이션의 실행 요청에 따라서 실행 API를 호출하는 단계;
상기 브라우저 엔진 컨테이너 코어가 코어 기능에 대한 접근 인터페이스를 제공하는 시스템 API 플러그인을 로딩하는 단계; 및
상기 로딩된 시스템 API 플러그인이 웹 어플리케이션 런타임 계층부의 컨텍스트 매니저로 웹 어플리케이션의 실행 명령을 전달하는 단계;
를 더 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 방법. - 제13항에 있어서, 상기 윈도우 및 랜더러 인스턴스를 생성하는 단계이전에,
단말의 대기화면 관리자가 사용자의 웹 어플리케이션 실행 요청을 입력 받아, 상기 실행 계층부의 대기모드 에이전트를 로딩하는 단계; 및
상기 대기모드 에이전트가 상기 브라우저 엔진 컨테이너 코어를 로딩하고, 대기화면 모드 실행 API를 호출하여 웹 어플리케이션의 실행 요청을 상기 웹 어플리케이션 런타임 계층부의 컨텍스트 매니저로 전달하는 단계를 더 포함하는 것을 특징으로 하는 웹 어플리케이션 실행 방법. - 제13항 내지 제16항 중 어느 한 항에 기재된 웹 어플리케이션 실행 방법을 실행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20100043745A KR101482151B1 (ko) | 2010-05-11 | 2010-05-11 | 웹 어플리케이션 실행 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20100043745A KR101482151B1 (ko) | 2010-05-11 | 2010-05-11 | 웹 어플리케이션 실행 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110124406A KR20110124406A (ko) | 2011-11-17 |
KR101482151B1 true KR101482151B1 (ko) | 2015-01-14 |
Family
ID=45394155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20100043745A KR101482151B1 (ko) | 2010-05-11 | 2010-05-11 | 웹 어플리케이션 실행 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101482151B1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8966508B2 (en) | 2012-02-20 | 2015-02-24 | Electronics And Telecommunications Research Institute | Method for executing hybrid web application and apparatus therefor |
KR101383056B1 (ko) * | 2012-03-05 | 2014-04-08 | 주식회사 인프라웨어 | 스크립트를 이용하여 메뉴를 연동시킨 웹 어플리케이션 제공 방법 및 그를 이용한 스마트 단말 |
KR101919949B1 (ko) * | 2012-10-08 | 2018-11-19 | 에스케이플래닛 주식회사 | 웹 애플리케이션을 위한 메시지 제공 시스템 및 방법 |
CN103246533B (zh) * | 2013-04-11 | 2017-03-29 | 小米科技有限责任公司 | 一种在通讯录中添加插件的方法、装置和设备 |
KR101649403B1 (ko) * | 2014-04-25 | 2016-08-18 | 한양대학교 산학협력단 | 어플리케이션 로딩 장치 및 방법 |
KR102249197B1 (ko) | 2014-05-31 | 2021-05-10 | 삼성전자주식회사 | 사용자 단말 장치, 통신 시스템 및 그 제어 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040013097A (ko) * | 2001-07-04 | 2004-02-11 | 코기줌 인터메디아 아게 | 카테고리 기반의 확장가능한 대화식 문서 검색 시스템 |
US20100023953A1 (en) | 2008-07-25 | 2010-01-28 | Samsung Electronic Co., Ltd. | Method and apparatus for executing application |
KR20110122996A (ko) * | 2010-05-06 | 2011-11-14 | 에스케이플래닛 주식회사 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
-
2010
- 2010-05-11 KR KR20100043745A patent/KR101482151B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040013097A (ko) * | 2001-07-04 | 2004-02-11 | 코기줌 인터메디아 아게 | 카테고리 기반의 확장가능한 대화식 문서 검색 시스템 |
US20100023953A1 (en) | 2008-07-25 | 2010-01-28 | Samsung Electronic Co., Ltd. | Method and apparatus for executing application |
KR20110122996A (ko) * | 2010-05-06 | 2011-11-14 | 에스케이플래닛 주식회사 | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 |
Also Published As
Publication number | Publication date |
---|---|
KR20110124406A (ko) | 2011-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101453742B1 (ko) | 웹 어플리케이션 실행을 위한 보안 제공 장치 및 방법 | |
KR101482150B1 (ko) | 웹 어플리케이션 실행 장치 및 그의 웹 어플리케이션 관리 방법 | |
US8856805B2 (en) | Virtual channel for embedded process communication | |
JP6192534B2 (ja) | 仮想アプリケーション拡張ポイント | |
JP5658283B2 (ja) | アプリケーションの稼働方法、装置及びシステム | |
CN110874236B (zh) | 一种跨平台应用装置、终端及存储介质 | |
EP3734449B1 (en) | Systems and methods for integration of an application runtime environment into a user computing environment | |
US8843820B1 (en) | Content script blacklisting for use with browser extensions | |
US8887152B1 (en) | Android application virtual environment | |
US9798555B2 (en) | Application implementation method and apparatus | |
KR101482151B1 (ko) | 웹 어플리케이션 실행 장치 및 방법 | |
US20120227032A1 (en) | Method, apparatus, and system for invoking widget | |
US20060233126A1 (en) | Managing midlet suites in OSGI environment | |
CN109525584B (zh) | 一种构建移动端跨平台多类型应用容器的方法 | |
CN105302563A (zh) | 移动应用服务的插件化方法及系统 | |
CN111596916A (zh) | 一种应用程序管理方法、装置、设备及计算机存储介质 | |
CN104636122A (zh) | 一种能力组件的共享方法和设备 | |
KR101482152B1 (ko) | 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법 | |
KR101482149B1 (ko) | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 | |
US20200356721A1 (en) | Rendering Based on a Document Object Model | |
CN101751258A (zh) | 智能卡与智能卡应用的开发方法、开发系统及部署方法 | |
KR101460515B1 (ko) | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 | |
CN115168007A (zh) | 用于跨平台的应用程序迁移的方法、设备和程序载体 | |
CN116032864A (zh) | 一种基于安卓的即时通讯系统及其通信方法 | |
CN117369946A (zh) | 基于dpu的容器部署方法、装置、电子设备及介质 |
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 |