KR101412614B1 - 웹 애플리케이션에 포함되는 자바스크립트를 aot 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 - Google Patents

웹 애플리케이션에 포함되는 자바스크립트를 aot 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101412614B1
KR101412614B1 KR1020120017154A KR20120017154A KR101412614B1 KR 101412614 B1 KR101412614 B1 KR 101412614B1 KR 1020120017154 A KR1020120017154 A KR 1020120017154A KR 20120017154 A KR20120017154 A KR 20120017154A KR 101412614 B1 KR101412614 B1 KR 101412614B1
Authority
KR
South Korea
Prior art keywords
user terminal
javascript
web application
terminal device
compiling
Prior art date
Application number
KR1020120017154A
Other languages
English (en)
Other versions
KR20130083764A (ko
Inventor
장세권
김좌진
임재용
Original Assignee
주식회사 오비고
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 오비고 filed Critical 주식회사 오비고
Priority to US13/425,582 priority Critical patent/US20130185626A1/en
Publication of KR20130083764A publication Critical patent/KR20130083764A/ko
Application granted granted Critical
Publication of KR101412614B1 publication Critical patent/KR101412614B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 일 태양에 따르면, 웹 애플리케이션에 포함되는 자바스크립트(JavaScript)를 AOT (Ahead Of Time) 방식으로 컴파일하기 위한 방법으로서, (a) 웹 애플리케이션의 다운로드하여 패키징을 해제하는 단계, 및 (b) 상기 웹 애플리케이션이 사용자 단말 장치에서 실행되기 전에, 상기 사용자 단말 장치의 플랫폼을 참조로 하여 상기 웹 애플리케이션에 포함되어 있는 자바스크립트를 컴파일함으로써 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드(machine code)를 생성하는 단계를 포함하는 방법이 제공된다. 본 발명에 의하면, 자바스크립트의 컴파일에 소요되는 시간으로 인하여 웹 애플리케이션이 실행 시간이 길어지는 것을 방지할 수 있고 나아가 웹 애플리케이션의 전체 실행 속도를 향상시킬 수 있게 되는 효과가 달성된다.

Description

웹 애플리케이션에 포함되는 자바스크립트를 AOT 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체{METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIA FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING AOT (Ahead Of Time)}
본 발명은 웹 애플리케이션에 포함되는 자바스크립트(JavaScript)를 AOT (Ahead Of Time) 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체에 관한 것으로, 보다 상세하게는, 웹 애플리케이션이 사용자 단말 장치에서 실행되기 전에 해당 사용자 단말 장치의 플랫폼을 참조로 하여 웹 애플리케이션에 포함되어 있는 자바스크립트를 AOT 방식으로 미리 컴파일하여 해당 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드를 생성함으로써, 사용자 단말 장치에서 웹 애플리케이션이 실행되는 속도를 높일 수 있도록 하는 방법, 단말 장치, 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다.
근래에 들어 스마트 폰이나 태블릿과 같은 사용자 단말 장치가 널리 보급됨에 따라 사용자 단말 장치에서 실행되어 다양한 기능을 구현할 수 있는 다양한 애플리케이션이 소개되고 있다. 최근에는, 특정 플랫폼(즉, 애플의 iOS, 구글의 Android 등의 운영체제)이 설치된 단말 장치에서만 실행될 수 있는 네이티브(native) 애플리케이션보다는 웹 표준 언어로 구현되어 있어 플랫폼의 종류와 관계 없이 어떠한 단말 장치에서도 실행될 수 있는 웹 애플리케이션에 대한 관심이 높아지고 있는 추세이다.
한편, 웹 표준 언어에 기초하여 프로그래밍된 웹 애플리케이션을 실행하기 위해서는 웹 표준 언어, 특히, 자바스크립트(JavaScript)를 컴파일하는 기술이 필수적으로 요구된다고 할 수 있다.
자바스크립트를 컴파일하는 기술로서 종래에 JIT (Just In Time) 컴파일 기술이 소개된 바 있는데, JIT 컴파일은 자바스크립트 엔진(engine)의 성능을 향상시키기 위해서 웹 애플리케이션이 실행되는 시점에 자바스크립트를 컴파일하여 머신 코드로 번역하는 컴파일 기법을 가리킨다. 위와 같은 종래의 JIT 컴파일 기술에 의하면, 사용자 단말 장치에 설치되어 있는 플랫폼과의 중립성을 유지할 수 있다는 장점이 있기는 하지만, 자바스크립트의 컴파일이 웹 애플리케이션의 실행과 동시에 이루어지기 때문에 자바스크립트의 컴파일이 수행되는 시간으로 인하여 웹 애플리케이션의 전체 실행 시간이 길어지게 되고 결과적으로는 웹 애플리케이션의 성능이 저하되는 문제점이 발생하게 된다.
이에, 본 발명자는 종래기술이 가지고 있는 문제점을 해결할 수 있는 새로운 자바스크립트 컴파일 기술에 관한 발명을 고안하기에 이르렀다.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 웹 애플리케이션이 실행될 사용자 단말 장치의 플랫폼을 참조로 하여 웹 애플리케이션에 포함되어 있는 자바스크립트를 해당 플랫폼에서 실행될 수 있는 형식의 머신 코드로 컴파일하는 것을 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 웹 애플리케이션에 포함되는 자바스크립트(JavaScript)를 AOT (Ahead Of Time) 방식으로 컴파일하기 위한 방법으로서, (a) 웹 애플리케이션의 다운로드하여 패키징을 해제하는 단계, 및 (b) 상기 웹 애플리케이션이 사용자 단말 장치에서 실행되기 전에, 상기 사용자 단말 장치의 플랫폼을 참조로 하여 상기 웹 애플리케이션에 포함되어 있는 자바스크립트를 컴파일함으로써 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드(machine code)를 생성하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 태양에 따르면, 웹 애플리케이션에 포함되는 자바스크립트(JavaScript)를 AOT (Ahead Of Time) 방식으로 컴파일하기 위한 시스템으로서, 웹 애플리케이션의 다운로드하여 패키징을 해제하는 웹 애플리케이션 관리부, 및 상기 웹 애플리케이션이 사용자 단말 장치에서 실행되기 전에, 상기 사용자 단말 장치의 플랫폼을 참조로 하여 상기 웹 애플리케이션에 포함되어 있는 자바스크립트를 컴파일함으로써 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드(machine code)를 생성하는 컴파일 수행부를 포함하는 시스템이 제공된다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 사용자 단말 장치 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
본 발명에 의하면, 웹 애플리케이션이 실행될 사용자 단말 장치의 플랫폼을 참조로 하여 웹 애플리케이션에 포함되어 있는 자바스크립트를 해당 플랫폼에서 실행될 수 있는 형식의 머신 코드로 컴파일할 수 있으므로, 굳이 사용자 단말 장치의 외부에 존재하는 배포 서버나 개발자 단말 장치가 수많은 종류의 플랫폼에 맞추어 자바스크립트를 컴파일을 하여 각 플랫폼마다 적합한 머신 코드를 생성해 두거나 사용자가 자신의 단말 장치의 플랫폼에 맞는 웹 애플리케이션을 직접 선택하여 다운로드 받아야 하는 불편을 겪지 않더라도 웹 애플리케이션이 실행될 사용자 단말 장치의 플랫폼에 적합한 머신 코드를 간편하게 생성할 수 있게 되는 효과가 달성된다.
도 1은 본 발명의 일 실시예에 따라 자바스크립트(JavaScript)를 컴파일하기 위한 전체 시스템의 구성을 개략적으로 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 사용자 단말 장치(200)의 내부 구성을 예시적으로 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 컴파일 수행부(220)의 내부 구성을 예시적으로 나타내는 도면이다.
도 4 본 발명의 일 실시예에 따라 웹 애플리케이션에 포함되어 있는 자바스크립트가 AOT (Ahead Of Time) 방식으로 컴파일되어 실행되는 과정을 예시적으로 나타내는 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
전체 시스템의 구성
도 1은 본 발명의 일 실시예에 따라 자바스크립트(JavaScript)를 컴파일하기 위한 전체 시스템의 구성을 개략적으로 나타내는 도면이다.
도 1에 도시되어 있는 바와 같이, 본 발명의 일 실시예에 따른 전체 시스템은, 통신망(100), 사용자 단말 장치(200), 배포 서버(300) 및 개발자 단말 장치(400)로 구성될 수 있다.
먼저, 본 발명의 일 실시예에 따르면, 통신망(100)은 무선 통신의 양태로 구성될 수 있으며 이동 통신망, 인공 위성 통신망 등 다양한 통신망으로 구성될 수 있다. 보다 구체적으로, 본 발명에서 말하는 통신망(100)은 공지의 WLAN(Wireless LAN), CDMA(Code Division Multiple Access), WCDMA(Wideband Code Division Multiple Access) 또는 GSM(Global System for Mobile communications) 통신망 등을 모두 포함하는 개념인 것으로 이해되어야 한다.
다음으로, 본 발명의 일 실시예에 따르면, 사용자 단말 장치(200)는 웹 애플리케이션이 사용자 단말 장치에서 실행되기 전에 해당 사용자 단말 장치의 플랫폼을 참조로 하여 웹 애플리케이션에 포함되어 있는 자바스크립트를 AOT 방식으로 미리 컴파일하여 해당 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드(machine code)를 생성하는 기능, 즉, 소위 AOT (Ahead Of Time) 방식의 컴파일을 수행할 수 있다.
본 발명의 일 실시예에 따른 사용자 단말 장치(200)는 통신망(100)에 접속한 후 배포 서버(300) 또는 개발자 단말 장치(400)와 통신할 수 있도록 하는 기능을 포함하는 디지털 기기로서, 개인용 컴퓨터, 스마트 폰, 태블릿, 스마트 TV, 자동차 텔레매틱스 단말 장치 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 디지털 기기라면 얼마든지 본 발명에 따른 사용자 단말 장치(200)로서 채택될 수 있다. 한편, 본 발명의 일 실시예에 따른 사용자 단말 장치(200)에는 배포 서버(300) 또는 개발자 단말 장치(400)로부터 다운로드된 웹 애플리케이션을 실행시킬 수 있는 웹 런 타임(Web Run Time)이 포함되어 있을 수 있다. 사용자 단말 장치(200)의 내부 구성에 대해서는 후술할 "사용자 단말 장치의 구성" 부분에서 보다 자세하게 살펴보기로 한다.
다음으로, 본 발명의 일 실시예에 따르면, 배포 서버(300)는 통신망(100)을 통하여 사용자 단말 장치(200) 또는 개발자 단말 장치(400)와 통신할 수 있는데, 보다 구체적으로, 개발자 단말 장치(400)로부터 다양한 웹 애플리케이션을 수신하여 관리하는 기능과 사용자 단말 장치(200)의 요청에 따라 사용자 단말 장치(200)에 웹 애플리케이션을 배포하는 기능을 수행할 수 있다.
다음으로, 본 발명의 일 실시예에 따르면, 개발자 단말 장치(400)는 통신망(100)을 통하여 사용자 단말 장치(200) 또는 배포 서버(300)와 통신할 수 있는데, 보다 구체적으로, 개발자에 의하여 개발된 다양한 웹 애플리케이션을 패키징하여 사용자 단말 장치(200) 또는 배포 서버(300)에 전송하는 기능을 수행할 수 있다.
사용자 단말 장치의 구성
이하에서는, 본 발명의 구현을 위하여 중요한 기능을 수행하는 사용자 단말 장치(200)의 내부 구성 및 각 구성요소의 기능에 대하여 살펴보기로 한다.
도 2는 본 발명의 일 실시예에 따른 사용자 단말 장치(200)의 내부 구성을 예시적으로 나타내는 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 사용자 단말 장치(200)는, 웹 애플리케이션 관리부(210), 컴파일 수행부(220), 자바스크립트 엔진부(230), 통신부(240) 및 제어부(250)를 포함할 수 있다. 본 발명의 일 실시예에 따르면, 웹 애플리케이션 관리부(210), 컴파일 수행부(220), 자바스크립트 엔진부(230), 통신부(240) 및 제어부(250)는 그 중 적어도 일부가 사용자 단말 장치(200)와 통신하는 프로그램 모듈들일 수 있다. 이러한 프로그램 모듈들은 운영 시스템, 응용 프로그램 모듈 및 기타 프로그램 모듈의 형태로 사용자 단말 장치(200)에 포함될 수 있으며, 물리적으로는 여러 가지 공지의 기억 장치 상에 저장될 수 있다. 또한, 이러한 프로그램 모듈들은 사용자 단말 장치(200)와 통신 가능한 원격 기억 장치에 저장될 수도 있다. 한편, 이러한 프로그램 모듈들은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포괄하지만, 이에 제한되지는 않는다.
먼저, 본 발명의 일 실시예에 따르면, 웹 애플리케이션 관리부(210)는 배포 서버(300) 또는 개발자 단말 장치(400)로부터 다운로드된 웹 애플리케이션의 패키징을 해제하는 기능을 수행할 수 있다. 일반적으로 패키징되어 있는 웹 애플리케이션 내에는 자바스크립트가 HTML (Hyper Text Markup Language), CSS (Cascading Style Sheets), 이미지, 동영상, 오디오 등의 다양한 내용물과 함께 압축된 상태로 포함되어 있기 때문에, 본 발명의 일 실시예에 따라 웹 애플리케이션의 패키징을 해제함으로써 웹 애플리케이션에 포함되어 있는 자바스크립트가 컴파일될 수 있는 상태가 되도록 할 수 있다.
한편, 본 발명의 일 실시예에 따른 웹 애플리케이션 관리부(210)는 패키징이 해제된 웹 애플리케이션을 사용자 단말 장치(200)에 설치하는 기능을 수행할 수도 있다.
다음으로, 본 발명의 일 실시예에 따르면, 컴파일 수행부(220)는 웹 애플리케이션이 사용자 단말 장치에서 실행되기 전에 웹 애플리케이션에 포함되어 있는 자바스크립트를 미리 컴파일하여 머신 코드 혹은 바이트 코드(byte code)를 생성하는 기능을 수행할 수 있다. 예를 들면, 본 발명의 일 실시예에 따른 컴파일 수행부(220)는 웹 애플리케이션이 사용자 단말 장치(200)에 설치되는 동안에 컴파일을 수행하거나, 웹 애플리케이션이 설치된 이후 웹 애플리케이션이 실행되기 전 사용자 단말 장치(200)가 유휴 상태에 있는 동안에 백그라운드에서 컴파일을 수행할 수 있을 것이다. 다만, 본 발명에 있어서 자바스크립트를 컴파일하는 시점이 반드시 상기 예시한 것에 한정되는 것은 아니며, 웹 애플리케이션이 실행되기 전에 컴파일한다는 본 발명의 목적을 달성할 수 있는 범위 내에서 얼마든지 변경될 수 있음을 밝혀 둔다.
또한, 본 발명의 일 실시예에 따른 컴파일 수행부(220)는 웹 애플리케이션이 실행될 사용자 단말 장치(200)의 플랫폼(즉, 운영체제)이 무엇인지를 참조로 하여 자바스크립트를 해당 플랫폼에서 실행될 수 있는 형식의 머신 코드로 컴파일할 수 있다. 이렇게 함으로써, 굳이 사용자 단말 장치(200)의 외부에 존재하는 배포 서버(300)나 개발자 단말 장치(400)에서 수많은 종류의 플랫폼에 맞추어 자바스크립트를 컴파일을 하여 각 플랫폼마다 적합한 머신 코드를 생성해 두거나 사용자가 자신의 단말 장치의 플랫폼에 맞는 웹 애플리케이션을 직접 선택하여 다운로드 받아야 하는 불편을 겪지 않더라도 사용자 단말 장치(200)의 플랫폼에 적합한 머신 코드를 간편하게 생성할 수 있게 되는 효과가 달성된다.
도 3은 본 발명의 일 실시예에 따른 컴파일 수행부(220)의 내부 구성을 예시적으로 나타내는 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 사용자 단말 장치(220)는, 로딩(loading)부(221), 파싱(parsing)부(222), 변환(transformation)부(223) 및 최적화(optimization)부(224)를 포함할 수 있다. 본 발명의 일 실시예에 따르면, 로딩부(221), 파싱부(222), 변환부(223) 및 최적화부(224)는 그 중 적어도 일부가 사용자 단말 장치(200)와 통신하는 프로그램 모듈들일 수 있다. 이러한 프로그램 모듈들은 운영 시스템, 응용 프로그램 모듈 및 기타 프로그램 모듈의 형태로 사용자 단말 장치(200)에 포함될 수 있으며, 물리적으로는 여러 가지 공지의 기억 장치 상에 저장될 수 있다. 또한, 이러한 프로그램 모듈들은 사용자 단말 장치(200)와 통신 가능한 원격 기억 장치에 저장될 수도 있다. 한편, 이러한 프로그램 모듈들은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포괄하지만, 이에 제한되지는 않는다.
본 발명의 일 실시예에 따르면, 로딩부(221)는 자바스크립트 소스 코드를 로딩하는 기능을 수행할 수 있고, 파싱부(222)는 로딩된 자바스크립트 소스 코드를 파싱하여 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하는 기능을 수행할 수 있고, 변환부(223)는 생성된 추상 구문 트리를 이용하여 자바스크립트 소스 코드를 사용자 단말 장치(200)의 플랫폼에서 실행될 수 있는 형식의 머신 코드로 변환하는 기능을 수행할 수 있으며, 최적화부(224)는 코드 최적화(code optimization), 정적 분석(static analysis), 레지스터 할당(register allocation) 등의 최적화 작업을 수행하는 기능을 수행할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 컴파일 수행부(220)는 사용자 단말 장치(200)에 설치되어 있는 자바스크립트 엔진의 정보를 확인함으로써, 사용자 단말 장치(200)가 자신의 자바스크립트 엔진에 맞는 AOT 컴파일러를 가지고 있으면 해당 AOT 컴파일러를 이용하여 컴파일을 수행하고, 사용자 단말 장치(200)가 자신의 자바스크립트 엔진에 맞는 AOT 컴파일러를 가지고 있지 않으면 외부 시스템으로부터 필요한 AOT 컴파일러를 다운로드하여 설치한 후에 컴파일을 수행할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 컴파일 수행부(220)는 사용자가 임의로 혹은 사용자 단말 장치(200)가 자동적으로 AOT 방식의 컴파일 기능의 활성 여부를 설정할 수 있도록 하는 기능을 수행할 수 있다. 즉, 본 발명의 일 실시예에 따르면, 사용자가 임의로 비활성 상태로 설정하거나 또는 사용자 단말 장치(200)가 동작 환경에 따라 자동적으로 비활성 상태로 설정한 경우에는, AOT 방식의 컴파일 과정, 즉, 웹 애플리케이션이 실행되기 전에 자바스크립트를 컴파일하는 과정이 수행되지 않을 수 있다.
다음으로, 본 발명의 일 실시예에 따르면, 자바스크립트 엔진부(230)는 웹 애플리케이션의 실행 요청이 입력되면 컴파일 수행부(230)에 의하여 생성된 머신 코드를 실행하는 기능을 수행할 수 있다. 본 발명의 일 실시예에 따르면, 머신 코드는 소정의 머신 코드 로딩부를 포함하는 자바스크립트 엔진에 의하여 실행될 수 있다.
한편, 본 발명의 일 실시예에 따르면, 머신 코드가 실행되는 것과 함께 웹 애플리케이션에 포함되어 있던 HTML, CSS, 이미지 등의 다른 내용물도 소정의 웹 코어(Web Core)에 의하여 실행될 수 있을 것이다.
다음으로, 본 발명의 일 실시예에 따르면, 통신부(240)는 사용자 단말 장치(200)가 배포 서버(300), 개발자 단말 장치(400) 등과 같은 외부 시스템과 통신할 수 있도록 하는 기능을 수행한다.
마지막으로, 본 발명의 일 실시예에 따르면, 제어부(250)는 웹 애플리케이션 관리부(210), 컴파일 수행부(220), 자바스크립트 엔진부(230) 및 통신부(240) 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 제어부(250)는 외부로의/외부로부터의 또는 사용자 단말 장치(200)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 웹 애플리케이션 관리부(210), 컴파일 수행부(220), 자바스크립트 엔진부(230) 및 통신부(240)에서 각각 고유 기능을 수행하도록 제어한다.
한편, 도 4는 본 발명의 일 실시예에 따라 웹 애플리케이션에 포함되어 있는 자바스크립트가 AOT 방식으로 컴파일되고 실행되는 과정을 예시적으로 나타내는 도면이다.
도 4를 참조하면, 자바스크립트, HTML, CSS, 이미지 등의 내용물을 포함한 채로 패키징되어 있는 웹 애플리케이션(410)은 웹 애플리케이션 관리부(420)에 의하여 패키징이 해제될 수 있는데, 이에 따라 웹 애플리케이션은 자바스크립트(421)는 HTML, CSS, 이미지 등의 나머지 내용물(422)과 분리되어 컴파일될 수 있는 상태가 될 수 있다.
다음으로, 도 4를 참조하면, 자바스크립트(421)는 컴파일 수행부(430)에 의하여 컴파일되어 머신 코드로 변환될 수 있는데, 보다 구체적으로, 이러한 컴파일 과정은 로딩부(431), 파싱부(432), 변환부(433) 및 최적화부(434)에 의하여 수행될 수 있다.
다음으로, 도 4를 참조하면, 웹 애플리케이션(200)에 대한 실행 요청이 입력되는 경우 자바스크립트(421)로부터 컴파일되어 생성된 머신 코드(435)가 웹 런 타임(Web Run Time)(440)에 구비된 자바스크립트 엔진부(441)에 의하여 실행될 수 있고, 여기서 머신 코드는 자바스크립트 엔진부(441)에 구비된 머신 코드 로딩부(442)에 의하여 로딩될 수 있다. 한편, 웹 애플리케이션(410)에 포함되어 있던 HTML, CSS, 이미지 등의 나머지 내용물(422)은 웹 런 타임(440)에 구비된 웹 코어(443)에 의하여 실행될 수 있다.
이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 통신망
200: 사용자 단말 장치
210: 웹 애플리케이션 관리부
220: 컴파일 수행부
221: 로딩부
222: 파싱부
223: 변환부
224: 최적화부
240: 자바스크립트 엔진부
250: 통신부
250: 제어부
300: 배포 서버
400: 개발자 단말 장치
410: 웹 애플리케이션
420: 웹 애플리케이션 관리부
421: 자바스크립트
422: HTML, CSS, 이미지
430: 컴파일 수행부
431: 로딩부
432: 파싱부
433: 변환부
434: 최적화부
435: 머신 코드
440: 웹 런 타임
441: 자바스크립트 엔진부
442: 머신 코드 로딩부
443: 웹 코어

Claims (17)

  1. 웹 애플리케이션에 포함되는 자바스크립트(JavaScript)를 AOT (Ahead Of Time) 방식으로 컴파일하기 위한 방법으로서,
    (a) 사용자 단말 장치가 웹 애플리케이션을 다운로드하여 패키징을 해제하는 단계, 및
    (b) 상기 웹 애플리케이션이 상기 사용자 단말 장치에서 실행되기 전에, 상기 사용자 단말 장치의 플랫폼을 참조로 하여 상기 웹 애플리케이션에 포함되어 있는 자바스크립트를 컴파일함으로써 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드(machine code)를 생성하는 단계
    를 포함하고,
    상기 (b) 단계는,
    (b1) 상기 자바스크립트의 소스 코드를 로딩하는 단계,
    (b2) 상기 자바스크립트의 소스 코드를 파싱하여 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하는 단계, 및
    (b3) 상기 추상 구문 트리를 이용하여 상기 자바스크립트의 소스 코드를 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드로 변환하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 (b) 단계는,
    (b4) 상기 머신 코드를 최적화하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 (b) 단계에서,
    상기 웹 애플리케이션이 상기 사용자 단말 장치에 설치되는 동안에 상기 자바스크립트를 컴파일하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 (b) 단계에서,
    상기 사용자 단말 장치가 유휴 상태에 있는 동안에 상기 자바스크립트를 컴파일하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 (b) 단계에서,
    상기 사용자 단말 장치 내에 상기 자바스크립트를 컴파일할 수 있는 컴파일러가 구비되어 있지 않은 것으로 판단되면, 외부 시스템으로부터 상기 컴파일러를 다운로드하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 사용자 단말 장치의 설정 상태에 따라 상기 (b) 단계의 수행 여부가 결정되도록 하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    (c) 상기 웹 애플리케이션에 대한 실행 요청이 입력되면, 상기 머신 코드를 실행하는 단계
    를 더 포함하는 방법.
  9. 웹 애플리케이션에 포함되는 자바스크립트(JavaScript)를 AOT (Ahead Of Time) 방식으로 컴파일하기 위한 단말 장치로서,
    웹 애플리케이션을 사용자 단말 장치에 다운로드되도록 하여 패키징을 해제하는 웹 애플리케이션 관리부, 및
    상기 웹 애플리케이션이 상기 사용자 단말 장치에서 실행되기 전에, 상기 사용자 단말 장치의 플랫폼을 참조로 하여 상기 웹 애플리케이션에 포함되어 있는 자바스크립트를 컴파일함으로써 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드(machine code)를 생성하는 컴파일 수행부
    를 포함하고,
    상기 컴파일 수행부는,
    상기 자바스크립트의 소스 코드를 로딩하는 로딩부,
    상기 자바스크립트의 소스 코드를 파싱하여 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하는 파싱부, 및
    상기 추상 구문 트리를 이용하여 상기 자바스크립트의 소스 코드를 상기 사용자 단말 장치의 플랫폼에서 실행될 수 있는 형식의 머신 코드로 변환하는 변환부
    를 포함하는 것을 특징으로 하는 단말 장치.
  10. 삭제
  11. 제9항에 있어서,
    상기 컴파일 수행부는,
    상기 머신 코드를 최적화하는 최적화부
    를 더 포함하는 것을 특징으로 하는 단말 장치.
  12. 제9항에 있어서,
    상기 컴파일 수행부는,
    상기 웹 애플리케이션이 상기 사용자 단말 장치에 설치되는 동안에 상기 자바스크립트를 컴파일하는 것을 특징으로 하는 단말 장치.
  13. 제9항에 있어서,
    상기 컴파일 수행부는,
    상기 사용자 단말 장치가 유휴 상태에 있는 동안에 상기 자바스크립트를 컴파일하는 것을 특징으로 하는 단말 장치.
  14. 제9항에 있어서,
    상기 컴파일 수행부는,
    상기 사용자 단말 장치 내에 상기 자바스크립트를 컴파일할 수 있는 컴파일러가 구비되어 있지 않은 것으로 판단되면, 외부 시스템으로부터 상기 컴파일러를 다운로드하는 것을 특징으로 하는 단말 장치.
  15. 제9항에 있어서,
    상기 컴파일 수행부는,
    상기 사용자 단말 장치의 설정 상태에 따라 상기 컴파일 수행부의 동작 여부가 결정되도록 하는 것을 특징으로 하는 단말 장치.
  16. 제9항에 있어서,
    상기 웹 애플리케이션에 대한 실행 요청이 입력되면, 상기 머신 코드를 실행하는 자바스크립트 엔진부
    를 더 포함하는 단말 장치.
  17. 제1항 및 제3항 내지 제8항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020120017154A 2012-01-13 2012-02-20 웹 애플리케이션에 포함되는 자바스크립트를 aot 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 KR101412614B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/425,582 US20130185626A1 (en) 2012-01-13 2012-03-21 METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20120004329 2012-01-13
KR1020120004329 2012-01-13

Publications (2)

Publication Number Publication Date
KR20130083764A KR20130083764A (ko) 2013-07-23
KR101412614B1 true KR101412614B1 (ko) 2014-06-27

Family

ID=48994696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120017154A KR101412614B1 (ko) 2012-01-13 2012-02-20 웹 애플리케이션에 포함되는 자바스크립트를 aot 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR101412614B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200046499A (ko) 2018-10-24 2020-05-07 삼성에스디에스 주식회사 부분 소스 코드의 컴파일 장치 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101671760B1 (ko) * 2015-03-16 2016-11-02 주식회사 스마트올웨이즈온 멀티모달 정보를 기반으로 상황 인지 기능을 수행하여 사용자 인터페이스와 사용자 경험을 스스로 학습하고 개선하는 셋톱박스, 촬영 장치, 그리고 이를 이용한 방법 및 컴퓨터 판독 가능한 기록 매체
KR102414250B1 (ko) * 2015-07-30 2022-06-29 삼성전자주식회사 전자 장치, 컴파일링 방법 및 컴퓨터 판독가능 기록매체

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030000926A (ko) * 2001-06-27 2003-01-06 주식회사 인터와이즈 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
KR20060028567A (ko) * 2004-09-25 2006-03-30 삼성전자주식회사 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
KR20110065804A (ko) * 2009-12-10 2011-06-16 주식회사 엘지유플러스 이동 단말기 및 상기 이동 단말기에서 웹 애플리케이션 실행 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030000926A (ko) * 2001-06-27 2003-01-06 주식회사 인터와이즈 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
KR20060028567A (ko) * 2004-09-25 2006-03-30 삼성전자주식회사 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
KR20110065804A (ko) * 2009-12-10 2011-06-16 주식회사 엘지유플러스 이동 단말기 및 상기 이동 단말기에서 웹 애플리케이션 실행 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200046499A (ko) 2018-10-24 2020-05-07 삼성에스디에스 주식회사 부분 소스 코드의 컴파일 장치 및 방법

Also Published As

Publication number Publication date
KR20130083764A (ko) 2013-07-23

Similar Documents

Publication Publication Date Title
US7739696B2 (en) Message translation systems and methods
US8997070B2 (en) Extension mechanism for scripting language compiler
CN107967139B (zh) 游戏的热更新方法及装置
US9182953B2 (en) Hybrid dynamic code compiling device, method, and service system thereof
CN101937356B (zh) 一种编译WebKit浏览器的方法及装置
US9280332B2 (en) Code converting method, program, and system
US20100153929A1 (en) Converting javascript into a device-independent representation
CN104111855A (zh) 一种基于Lua的iOS客户端功能动态更新的方法
US20130185626A1 (en) METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT)
KR101427561B1 (ko) 안드로이드 어플리케이션의 타이젠 설치가능 패키지 자동변환을 이용한 적응 실행 방법 및 이를 위한 컴퓨터로 판독가능한 기록매체
CN114168111B (zh) 组件化路由实现方法、设备、产品及存储介质
WO2020077487A1 (zh) 优化和运行安卓应用程序的方法以及相关装置
CN103412754A (zh) 动态语言代码执行方法和装置
KR101412614B1 (ko) 웹 애플리케이션에 포함되는 자바스크립트를 aot 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체
KR101242479B1 (ko) 어플리케이션 배포 시스템 및 방법
CN113312046A (zh) 子应用页面处理方法、装置和计算机设备
CN101739280A (zh) 用于java卡的字节码优化系统和方法
WO2015057816A1 (en) Method and system for adaptive loading of application
KR101116939B1 (ko) 이동 단말기 및 상기 이동 단말기에서 웹 애플리케이션 실행 방법
CN103150161A (zh) 基于MapReduce 计算模型的任务封装方法及装置
CN105786465A (zh) 一种脚本语言执行方法及装置
KR20110114754A (ko) 에스케이브이엠 및 위피자바 응용프로그램을 안드로이드 응용프로그램으로 변환하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN104063306A (zh) 智能终端软件测试中的自动登录方法、装置和系统
CN102799462B (zh) 基于Eclipse平台的脚本引擎装置及Eclipse平台的配置方法
WO2019157891A1 (zh) 应用安装方法、应用安装包的生成方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180620

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190619

Year of fee payment: 6