KR20190136258A - 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법 - Google Patents

멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법 Download PDF

Info

Publication number
KR20190136258A
KR20190136258A KR1020180061708A KR20180061708A KR20190136258A KR 20190136258 A KR20190136258 A KR 20190136258A KR 1020180061708 A KR1020180061708 A KR 1020180061708A KR 20180061708 A KR20180061708 A KR 20180061708A KR 20190136258 A KR20190136258 A KR 20190136258A
Authority
KR
South Korea
Prior art keywords
thread
javascript
cross
platform system
worker
Prior art date
Application number
KR1020180061708A
Other languages
English (en)
Other versions
KR102138421B1 (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 KR1020180061708A priority Critical patent/KR102138421B1/ko
Publication of KR20190136258A publication Critical patent/KR20190136258A/ko
Application granted granted Critical
Publication of KR102138421B1 publication Critical patent/KR102138421B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

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

Abstract

본 발명은 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법이다. 개시된 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법은, 어플리케이션에서 사용자 메시지 루프를 가지고 있으면서 유아이(UI)를 변경할 수 있는 유아이 스레드, 상기 유아이 스레드와 연동하며 어플리케이션에서 웹 문서의 내용, 구조, 스타일에 관한 정보에 접근하거나 갱신을 지원하는 인터페이스인 문서 객체 모형; 및 상기 유아이 스레드와 별도의 영역에서 자바스크립트를 실행하여 업무로직을 웹으로 수행하는 자바스크립트 코어 워커를 포함하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템을 제공한다. 본 발명에 의하면, 자바스크립트의 단일 스레드제한을 해결하게 되어 다양한 업무에서 화면과 무관한 업무로직을 별도의 백그라운드 스레드에서 운용함으로써 앱의 성능 및 활용성을 획기적으로 향상시킬 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법을 제공할 수 있다는 이점이 있다.

Description

멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법{CROSS PLATFORM SYSTEM AND OPERATION METHOD FOR SUPPORTING MULTI THREAD}
본 발명은 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법에 관한 것으로, 더욱 상세하게는 웹기반의 하이브리드 애플리케이션에서 단일스레드로 동작하는 웹기술의 한계를 극복할 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시 예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
모바일 플랫폼(Mobile Platform) 시장이 비약적으로 발전함에 따라 다양한 모바일 플랫폼이 출시되고 있다. 이러한 다양한 모바일 플랫폼에서 개발된 소프트웨어간의 호환성이 낮아 모바일 소프트웨어 시장 발전을 저해하고 있다. 또한 소프트웨어 개발사 입장에서 개발 비용의 증가로 인해 고충을 겪고 있다. 이를 해결하고 위해서 다양한 접근이 이루어지고 있는데, 해결 방안으로 크로스 플랫폼(Cross Platform)에 대한 연구와 솔루션들이 빠르게 시장에 나오고 있다.
크로스 플랫폼은 소프트웨어나 하드웨어 등이 다른 환경의 운영 체계(OS)에 공통으로 사용되는 것으로 예를 들어 유닉스 시스템에서 사용되는 소프트웨어가 운영 체계가 다른 윈도우(Microsoft Windows) 혹은 맥(Mac) OS에서 사용되는 것을 의미한다. 현재 크로스 플랫폼은 모바일 시장에만 한정된 것은 아니고 PC 시장에서도 빠르게 성장하고 있다. 현재 많은 솔루션들이 있으며 국내 대기업의 경우 자체적으로 개발하여 운영하기도 한다. 현재 크로스 플랫폼 중에 웹(Web) 기반 Ajax, HTML5, Javascript Engine을 이용한 "Web as Platform"이라는 분야가 활발히 연구 및 개발 중에 있다. Mobile 시장에서 이러한 접근이 가장 빠르게 진행 중이다. “Web as Platform" 중에는 ”Hybrid Application", "Web Application", "Web based Platform"과 기술들이 있다. 이러한 웹(Web) 기반 기술을 이용하여 모바일 단말 안에서 동작하는 소프트웨어를 개발하여 실행 가능한 어플리케이션(application) 혹은 위젯(widget) 형태로 사용자에게 제공하는 플랫폼 기술이다. 웹 기반 플랫폼을 바탕으로 개발된 어플리케이션 혹은 위젯은 네이티브 어플리케이션(Native Application)과 동일하고 로컬 리소스(Local Resource)에 접근할 수 있고 인터넷이 되지 않는 Offline 상태에서도 모바일 내부에 탑재되어 있는 네이티브 어플리케이션과 같이 동작된다.
기존 웹 기술은 대부분의 업무로직(Business Logic)을 처리하는데 문제가 없었으나 보안적인 이유로 인해 로컬 리소스(Local Resource)의 접근이 제한되었다. 현재 많은 “Web as Platform” 기술들은 이러한 로컬 리소스의 접근을 해결하기 위해서 하이브리드 방식을 지원하고 있다. 관련하여 세계적으로 OMTP(Open Mobile Terminal Platform), JIL(Joint Innovation Lab)등으로 대변되는 이동 통신사에서는 Javascript Extension이나 Middleware 형태로 접근을 시도 중이며 표준화 활동에도 매우 적극적이다. Nokia와 Palm같은 제조사 입장에서는 운영체계(OS) 내에 해당 기능을 포함시키거나 전용 OS를 개발하고 있다. Palm Pre에 사용되었던 WebOS는 OS의 핵심 메커니즘이 웹 기반으로 이루어져 가장 완벽한 웹 플랫폼(Web Platform)이라고 할 수 있다. 또한 솔루션 프로바이더(Solution Provider) 들은 Cordova(PhoneGap), Titanium, Rhodes와 같은 Cross Platform Solution을 각각의 OS 별로 최적화된 엔진을 개발하고 있으며 다수의 국내 기업들도 이와 동일한 방식으로 국내 환경에 맞게 커스터마이징하여 기반 플랫폼을 제공하고 있다.
이러한 플랫폼들은 모두 HTML5를 기반으로 운용되는 것이 특징이며 자바스크립트의 단일 스레드(single thread)에 대한 해결책을 제시하지는 못하고 있다. HTML5 표준의 웹워커(WebWorker)가 그 대안으로 제시되기는 하였으나 해당 worker를 포함하는 페이지가 변경되거나 새로 로딩되는 경우 worker도 중단되는 문제가 있다.
이에, 본 발명에서는, 전술한 기술적 제약을 해소시킬 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법을 제안하고자 한다.
한국등록특허 제10-0899527호, 2004년 1월 7일 공개(명칭: 웹 서비스의 멀티쓰레드 운용 시스템 및 방법) 한국등록특허 제10-0439186호, 2003년 7월 4일 공개(명칭: 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치 및 방법) 한국등록특허 제10-0750834호, 2007년 4월 11일 공개(명칭: 자바 바이트 코드의 데이터 모니터링 시 모니터링된 데이터의 호출관계 규명 방법 및 이 방법을 이용한 알고리즘을 통해 자바 어플리케이션의 각종 성능 데이터를 추출하기 위한 컴퓨터 판독 가능한 기록 매체)
본 발명은 전술한 종래 기술의 문제점을 해결하기 위하여 제안된 것으로, 하이브리드 플랫폼(Hybrid platform)의 난제이면서 운용상의 한계인 자바스크립트의 단일 스레드제한을 해결하게 되어 다양한 업무에서 화면과 무관한 업무로직을 별도의 백그라운드 스레드에서 운용함으로써 앱의 성능 및 활용성을 획기적으로 향상 시킬 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법을 제공하는데 주된 목적이 있다.
또한, 본 발명의 다른 목적은 부득이하게 네이티브(Native)로 작성할 수 밖에 없었던 업무로직을 자바스크립트 영역으로 개발 가능하도록 지원함으로써 네이티브로 작성할 경우 플랫폼마다 모두 개발해야 하는 단점에서 자바스크립트만 개발해도 되는 환경을 제공하여 기업에게 월등한 비용절감의 효과를 기대할 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법을 제공하는데 있다.
본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
전술한 목적을 달성하기 위한 본 발명의 일 양상은, 어플리케이션에서 사용자 메시지 루프를 가지고 있으면서 유아이(UI)를 변경할 수 있는 유아이 스레드; 상기 유아이 스레드와 연동하며 어플리케이션에서 웹 문서의 내용, 구조, 스타일에 관한 정보에 접근하거나 갱신을 지원하는 인터페이스인 문서 객체 모형; 및 상기 유아이 스레드와 별도의 영역에서 자바스크립트를 실행하여 업무로직을 웹으로 수행하는 자바스크립트 코어 워커를 포함하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템을 제공한다.
본 발명의 다른 일 양상은, 유아이 스레드가 자바스크립트 코어 워커에 자바스크립트 코어 인스턴스를 생성하고 파라메터에 기술된 자바스크립트 파일들을 로드하는 단계; 상기 자바스크립트 코어 워커가 상기 로드된 자바스크립트 파일들을 실행하는 단계; 상기 유아이 스레드가 문서 객체 모형을 통하여 UI를 변경하는 단계; 상기 자바스크립트 코어 워커가 작업의 결과를 상기 유아이 스레드에 이벤트로 브로드캐스트하는 단계를 포함하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템의 운용방법을 제공한다.
본 발명의 다른 일 양상은, 멀티스레드 지원을 위한 크로스플랫폼 시스템의 운용방법을 실행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체를 제공한다.
본 발명의 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법에 의하면, 하이브리드 플랫폼(Hybrid platform)의 난제이면서 운용상의 한계인 자바스크립트의 단일 스레드제한을 해결하게 되어 다양한 업무에서 화면과 무관한 업무로직을 별도의 백그라운드 스레드에서 운용함으로써 앱의 성능 및 활용성을 획기적으로 향상 시킬 수 있다는 효과가 있다.
또한, 부득이하게 네이티브(Native)로 작성할 수 밖에 없었던 업무로직을 자바스크립트 영역으로 개발 가능하도록 지원함으로써 네이티브로 작성할 경우 플랫폼마다 모두 개발해야 하는 단점에서 자바스크립트만 개발해도 되는 환경을 제공하여 기업에게 월등한 비용절감의 효과를 기대할 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법을 제공할 수 있다는 효과가 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 특징을 설명한다.
도 1은 종래 기술에 따른 자바스크립트의 싱글스레드 방식의 문제점을 예시한 도면이다.
도 2는 종래 기술에 따른 자바스크립트의 싱글스레드 방식의 문제점을 웹워커를 통하여 해결하는 것을 예시한 도면이다.
도 3은 종래 기술에 따른 웹워커 방식의 문제점을 예시한 도면이다.
도 4는 네이티브 스레드에 업무로직을 위임하는 방식을 예시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 자바스크립트 코어 워커를 포함하는 시스템 구성을 예시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 자바스크립트 코어 워커를 포함하는 시스템의 운용방법을 예시한 도면이다.
이하, 본 발명에 따른 바람직한 실시 형태를 첨부된 도면을 참조하여 상세하게 설명한다. 첨부된 도면과 함께 이하에 개시될 상세한 설명은 본 발명의 예시적인 실시형태를 설명하고자 하는 것이며, 본 발명이 실시될 수 있는 유일한 실시형태를 나타내고자 하는 것이 아니다. 이하의 상세한 설명은 본 발명의 완전한 이해를 제공하기 위해서 구체적 세부사항을 포함한다. 그러나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 이러한 구체적 세부사항 없이도 실시될 수 있음을 안다.
몇몇 경우, 본 발명의 개념이 모호해지는 것을 피하기 위하여 공지의 구조 및 장치는 생략되거나, 각 구조 및 장치의 핵심기능을 중심으로 한 블록도 형식으로 도시될 수 있다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함(comprising 또는 including)"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, "일(a 또는 an)", "하나(one)", "그(the)" 및 유사 관련어는 본 발명을 기술하는 문맥에 있어서(특히, 이하의 청구항의 문맥에서) 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예에 대해 살펴보기로 한다.
도 1은 종래 기술에 따른 자바스크립트의 싱글스레드 방식의 문제점을 예시한 도면이다.
대부분의 솔루션 프로바이더(Solution Provider)가 제공하는 하이브리드 플랫폼(Hybrid Platform)들은 HTML5기반의 웹방식으로 개발이 되고 유지보수되어 진다. 크로스 플랫폼을 지원하기 때문에 웹으로 개발을 한번만 하면 되어서 기업입장에서는 비용에서 비교할 수 없는 장점을 제공한다. 크로스 플랫폼 혹은 멀티 플랫폼(multi-platform)은 컴퓨터 프로그램, 운영 체제, 컴퓨터 언어, 프로그래밍 언어, 컴퓨터 소프트웨어 등이 여러 종류의 컴퓨터 플랫폼에서 동작할 수 있다는 것을 뜻한다. 크로스 플랫폼 응용 프로그램은 둘 이상의 플랫폼에서 실행할 수 있으며, 이러한 종류의 소프트웨어는 멀티플랫폼 소프트웨어라고도 한다.
한편, 웹 개발 방식은 자바스크립트가 단일 스레드(single thread) 방식인 이유로 기업의 다양한 업무로직(Business Logic)의 요구를 충족하는데 부족함이 있다.
예를 들어 특정 정보를 백그라운드에서 서버와 동기화를 해야 하는 요구사항이 있을 경우 자바스크립트로는 폴링(Polling) 방식으로 구현할 수 밖에 없으며 해당 작업의 수행 중에는 유아이 인터렉션(UI Interaction)이 응답을 하지 않게(freeze) 된다. 문제는 여기에서 발생한다.
유아이 스레드(UIThread, 100) 한 개로 운용되는 환경에서 오래 걸리는 작업이 진행중에는 DOM의 UI변경이 안된다.
어플리케이션에는 항상 MainThread 하나가 돌고 있고 이 MainThread만이 UI를 건들일 수 있다. 그래서 UI Thread라고도 한다.
하나의 작업이 수행 중일 때도 UI를 사용할 수 있어야 한다. 따라서 작업을 나누어서 수행하도록 스레드를 사용해야 한다.
스레드는 UI(User Interface) Thread와 Worker(작업자) Thread로 나뉜다.
유아이스레드(UI Thread, 100)는 사용자 메시지 루프를 가지고 있는(즉, 어떤 메시지가 날라오면 일하는 스레드) 스레드이고, Worker Thread는 보통 오래 걸리는 작업이나 무한루프를 가지는 작업을 하는 사용자 정의 함수를 위한 것이다.
스레드(Thread)는 컴퓨터 프로그램 수행 시 프로세스 내부에 존재하는 수행 경로를 말한다. 즉 일련의 실행 코드이다. 프로세스는 단순한 껍데기일 뿐, 실제 작업은 스레드가 담당한다. 프로세스 생성 시 하나의 주 스레드가 생성되어 대부분의 작업을 처리하고 주 스레드가 종료되면 프로세스도 종료된다. 하나의 운영 체계에서 여러 개의 프로세스가 동시에 실행되는 환경이 멀티태스킹이고, 하나의 프로세스 내에서 다수의 스레드가 동시에 수행되는 것이 멀티스레딩이다.
어떤 작업의 처리에서 그 처리가 완결하지 않는 한 다른 처리를 개시하지 않는 형태를 싱글-스레드(single-thread)라고 하며, 처리 도중 몇 개의 처리를 병렬적으로 처리하는 형태를 멀티-스레드(multi-thread)라고 한다.
HTML5는 웹 문서를 만들기 위한 기본 프로그래밍 언어 ‘HTML(Hyper Text Markup Language)’의 최신규격이다. HTML5는 엑티브X(Active X)를 설치하지 않아도 동일한 기능을 구현할 수 있고, 특히 플래시(flash)나 실버라이트(Silverlight), 자바FX(JAVA FX) 없이도 웹 브라우저(web browser)에서 화려한 그래픽 효과를 낼 수 있다.
문서 객체 모형(DOM, Document Object Model, 200)은 프로그램이나 스크립트가 웹 문서의 내용, 구조, 스타일에 관한 정보에 접근하거나 갱신하기 위해 사용하는 인터페이스이다. HTML, XML과 같은 마크업 언어의 문서구조와 이들 문서의 일부분을 변경할 수 있는 수단의 표준이다.
브라우저는 HTML 페이지를 로드하는 과정에서 각 HTML 태그를 각 하나의 태그로 만든다. 즉, HTML 문서 자체를 객체화하며, 이 객체를 DOM(Document Object Model) 객체라고 한다. DOM(200)의 목적은 HTML을 객체화 시켜서 동적으로 제어(클릭 시 색을 바꾼다, 크기를 바꾼다 등)하기 위해서이다.
우리가 매일 접속하는 웹사이트는 크게 3가지 요소로 구성된다. ‘HTML(Hyper Text Markup Language)’, ‘CSS(Cascading Style Sheets)’, ‘자바스크립트(Javascript)’다. HTML은 웹페이지의 큰 뼈대를 제공하고, CSS는 색깔이나 글씨체와 같은 디자인 요소를 관리한다. 자바스크립트는 크로스 플랫폼(cross platform), 객체지향 스크립트 언어로 웹페이지의 동작을 담당한다. 예를 들어 자바스크립트를 이용하면 ‘버튼을 클릭하면 밑에 날짜를 보여줘’라는 식의 명령을 내릴 수 있다.
자바스크립트는 HTML 문서의 정적이고 단조로운 한계를 극복하기 위해 넷스케이프(Netscape)사가 만든 livescript가 그 이름을 달리 한 것으로서 브라우저 자체에 내장된 해석기능을 이용한 클라이언트(client) 기반의 일종의 스크립트 언어이다. 작고도 빠르기 때문에 웹문서를 동적으로 꾸밀 때 가장 널리 쓰인다.
도 2는 종래 기술에 따른 자바스크립트의 싱글스레드 방식의 문제점을 웹워커를 통하여 해결하는 것을 예시한 도면이다.
도 1에서와 같은 화면 정지 문제를 해결하기 위해서 HTML5에서는 대안으로 웹워커(WebWorker,300)를 지원하고 있다.
웹워커(300)는 페이지의 백그라운드에서 실행되는 일종의 스레드 프로그래밍이다. 백그라운드에서 실행되기 때문에 페이지의 성능에 영향을 끼치지 않는다.
웹워커를 이용하게 되면 별도의 워커 스레드(worker thread)가 생성되어 스크립트가 실행되며 별도의 스레드로 동작하기 때문에 이 작업을 호출한 UIThread(100)는 이 작업이 오래 걸리더라도 UIThread(100)의 변경사항이 DOM(200)에 적절히 반영이 된다.
하지만, 이러한 작업방식도 완전하지는 않은데 페이지 이동이 발생하면 페이지내의 모든 스크립트의 실행이 중단되어 워커 스레드도 중단되는 문제가 발생한다. 많은 업무시스템들이 업무별로 페이지를 작성하는 것을 고려할 때 워커 스레드가 의도한 대로 작업을 모두 완료하기 전에 무효가 될 수 있는 것이다. 따라서 도 2의 방식도 완전한 해결책이 되지 못한다.
도 3은 종래 기술에 따른 웹워커 방식의 문제점을 예시한 도면이다.
도 3의 경우처럼 1.html에서 웹워커(300)에서 수행중이던 작업이 모두 완료되기 전에 location.href=”2.html”이 실행되어 2.html페이지가 새로 로딩되게 되면 1.html에서 웹워커(300)의 작업결과는 소실될 가능성이 있다. 이는 의도하지 않은 결과일 것이다.
이런 경우 대부분의 개발사는 도 4와 같이 worker thread의 로직을 네이티브로 구현하는 것을 고려하게 된다.
도 4는 네이티브 스레드에 업무로직을 위임하는 방식을 예시한 도면이다.
네이티브 스레드(400)에서 로직을 수행하고 완료되면 그 결과를 하이브리드 플랫폼에서 제공하는 확장스크립트를 통해서 동기화된 데이터를 UIThread(100)에 전달하며 이렇게 전달받은 데이터를 가져다가 화면을 구성하는 방식으로 개발되게 된다.
네이티브 스레드(400)에 작업을 위임하는 경우에 발생하는 문제는 동기화로직이 변경이 되거나 수정이 필요하게 되는 경우이다. 스크립트로 작성하던 로직을 네이티브로 작성해야 하기 때문에 여러가지 네이티브 플랫폼을 지원해야 하는 경우에 하나의 소스(One source)로 여러가지 플랫폼을 지원하는 크로스 플랫폼 지원기능을 사용하는 장점을 포기하게 된다는 것이다. 다시 말해 스크립트로 로직을 구현하는 경우 안드로이드와 iOS에서 모두 구동이 가능하지만 네이티브 코드는 안드로이드와 iOS 각각 모두 구현해야 한다.
만일 로직의 변경이나 수정이 필요한 경우 그 업무로직이 네이티브로 작성되기 때문에 지원하는 모든 플랫폼의 네이티브 코드가 수정되어야 하고 배포되어야 한다. 이는 플랫폼을 운영하는 기업의 입장에서는 두 배 이상의 개발공수와 개발자 리소스가 필요하게 되는 고비용이 발생하는 좋지 않은 선택이 될 것이다.
도 5는 본 발명의 일 실시예에 따른 자바스크립트 코어 워커를 포함하는 시스템 구성을 예시한 도면이다.
상기와 같은 문제점들을 해결하기 위하여 본 발명의 일 실시예에서는 자바스크립트 코어 워커(JavaScriptCore Worker,500)를 도입하여 하이브리드 플랫폼을 지원하는 모든 플랫폼에서 별도의 자바스크립트 런타임(Javascript Runtime)환경을 제공하여 하이브리드 업무로직(hybrid business logic)이 운용되는 사용자에게 보여지는 웹뷰와 별개의 환경에서 업무로직(business logic)을 운용할 수 있도록 지원한다.
업무로직(business logic)은 업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부를 말하며, 데이터 입력, 수정, 조회 및 보고서 처리 등을 수행하는 루틴, 즉, 보이는 것의 그 뒤에서 일어나는 각종 처리를 의미한다.
도 5에서 보듯 이 자바스크립트 코어 워커(500)를 사용하면 웹워커와 유사하게 작업중에 UIThread(100)는 DOM(200) 업데이트가 가능하게 된다.
본 발명의 일실시예에 따른 자바스크립트 코어 워커(500)는 자바스크립트들을 기존 UIThread(100) 환경이 아니라 별도의 영역에 로드하여 스크립트를 실행할 수 있다. 이는 업무로직을 웹으로 수행하는 것을 의미한다. 즉 기존의 웹워커와 동일하게 스레드 환경을 제공하면서 로직은 스크립트로 작성이 가능하게 된다.
하이브리드 어플리케이션(Hybrid application)을 지원하는 대부분의 플랫폼들(안드로이드, iOS, Mac 등)은 웹킷(WebKit) Core Base의 웹뷰(WebView)를 지원하며 자바스크립트 코어엔진(JavaScript Core Engine) 기반으로 인터페이스를 지원한다. 이를 기반으로 플러그인 호출 방식으로 자바스크립트 코어 워커(500)를 생성할 수 있다.
플러그 인(plug in)은 메인 프로그램이 할 수 없는 업무를 실행하는 어프리케이션의 중요한 프로그램과 연관한 하부 프로그램 혹은, 기능 확장용 소프트웨어로서 자체적인 실행능력은 없지만 특정한 프로그램 속에서 함께 실행되어 기능을 발휘하는 것을 말한다.
한편, 종래의 HTML5에서 제안된 웹워커와는 달리 런타임 환경에서 페이지 이동 간에 아주 강력한 장점을 제공한다. 이는 도 6에서 보다 상세히 설명하도록 한다.
도 6은 본 발명의 일 실시예에 따른 자바스크립트 코어 워커를 포함하는 시스템의 운용방법을 예시한 도면이다.
자바스크립트 코어 워커(500)를 이용하면 1.html에서 시작한 작업이 2.html로 페이지가 이동되어도 그대로 유지되게 된다.
다음은 멀티스레드 지원을 위한 크로스플랫폼 시스템에서 자바스크립트 코어 워커(500)를 포함하는 시스템의 운용방법에 대한 설명이다.
유아이 스레드(100)는 새로운 자바스크립트 코어 워커(500)에 자바스크립트 코어(JavaScriptCore) 인스턴스를 생성하고 파라메터에 기술된 자바스크립트 파일들을 로드한다(S1).
자바스크립트 코어 워커(500)는 S1에서 로드된 javascript DOM에 존재하는 작업을 시작하는 함수를 수행한다(S3).
이러한 과정중에 유아이 스레드(100)는 이를 문서 객체 모형(200)을 통하여 UI를 변경할 수 있다(S2, S4).
자바스크립트 코어 워커(500)는 자바스크립트 코어 워커(500) 작업의 결과를 이벤트로 브로드캐스트(broadcast) 한다(S5).
즉, 업무로직을 포함하는 스크립트를 작성하고 자바스크립트 코어 워커(500)를 통해서 해당 스크립트를 별도의 영역에서 로드하고 실행하고 그 결과를 호출한 유아이 스레드(100)에서 전달받아서 처리할 수 있게 된다.
별도의 영역에서 로드하고 실행하기 때문에 도 6과 같이 페이지가 1.html에서 2.html로 이동하여도 1.html에서 실행하였던 자바스크립트 코어 워커(500)의 작업결과를 유아이 스레드(100)에 전달한다(S6).
유아이 스레드(100)는 문서 객체 모형(200)을 통하여 UI에 반영한다(S7).
기존의 웹워커는 현재 페이지내에서만 유효하다. 즉, 생명주기가 현재 페이지내에서만 유지되기 때문에 다른 패이지로 이동하게 되면 스리드도 중단된다.
반면에, 자바스크립트 코어 워커(500)는 경우 페이지와 무관하며 완전히 독립된 자신만의 생명주기를 갖으며, 백그라운드 작업을 하기에 가장 적합하다.
도 6에서는 단계 S1 내지 단계 S7을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 6에 기재된 순서를 변경하여 실행하거나 단계 S1 내지 단계 S7 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 6은 시계열적인 순서로 한정되는 것은 아니다.
한편, 본 명세서는 자바스크립트를 기준으로 설명하였지만, 웹문서를 동적으로 꾸밀 수 있는 어떠한 스크립트 언어에도 적용될 수 있음은 물론이다.
본 명세서에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명의 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법에 의하면, 자바스크립트의 단일 스레드제한을 해결하게 되어 다양한 업무에서 화면과 무관한 업무로직을 별도의 백그라운드 스레드에서 운용함으로써 앱의 성능 및 활용성을 획기적으로 향상시킬 수 있는 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법을 제공하는 솔루션으로 활용 가능하다는 점에서, 기존 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.
100: 유아이 스레드 200: 문서 객체 모형 300: 웹워커
400: 네이티브 스레드 500: 자바스크립트 코어 워커

Claims (8)

  1. 어플리케이션에서 사용자 메시지 루프를 가지고 있으면서 유아이(UI)를 변경할 수 있는 유아이 스레드;
    상기 유아이 스레드와 연동하며 어플리케이션에서 웹 문서의 내용, 구조, 스타일에 관한 정보에 접근하거나 갱신을 지원하는 인터페이스인 문서 객체 모형; 및
    상기 유아이 스레드와 별도의 영역에서 자바스크립트를 실행하여 업무로직을 웹으로 수행하는 자바스크립트 코어 워커를 포함하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템.
  2. 제1항에 있어서,
    상기 자바스크립트 코어 워커는,
    상기 유아이 스레드와 별도의 자바스크립트 런타임 환경을 제공하여 사용자에게 보여지는 웹뷰와 별개의 환경에서 업무로직을 운용할 수 있도록 지원하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템.
  3. 제1항에 있어서,
    상기 자바스크립트 코어 워커는,
    스레드 환경을 제공하면서 업무로직은 스크립트로 작성하는 것을
  4. 제1항에 있어서,
    상기 자바스크립트 코어 워커는,
    자바스크립트 코어엔진을 기반으로하여 플러그인 호출 방식으로 생성되는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템.
  5. 유아이 스레드가 자바스크립트 코어 워커에 자바스크립트 코어 인스턴스를 생성하고 파라메터에 기술된 자바스크립트 파일들을 로드하는 단계;
    상기 자바스크립트 코어 워커가 상기 로드된 자바스크립트 파일들을 실행하는 단계;
    상기 유아이 스레드가 문서 객체 모형을 통하여 UI를 변경하는 단계;
    상기 자바스크립트 코어 워커가 작업의 결과를 상기 유아이 스레드에 이벤트로 브로드캐스트하는 단계를 포함하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템의 운용방법.
  6. 제5항에 있어서,
    상기 자바스크립트 코어 워커는,
    상기 유아이 스레드와 별도의 영역에서 업무로직을 포함하는 스크립트를 작성, 로드 및 실행하고 그 결과를 호출한 상기 유아이 스레드에 전달하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템의 운용방법.
  7. 제6항에 있어서,
    상기 자바스크립트 코어 워커 업무로직을 수행 중에 페이지가 이동된 경우, 이와 무관하게 상기 자바스크립트 코어 워커의 작업결과를 상기 유아이 스레드에 전달하는 것을 특징으로 하는 멀티스레드 지원을 위한 크로스플랫폼 시스템의 운용방법.
  8. 제5항 내지 제7항 중 어느 한 항에 기재된 멀티스레드 지원을 위한 크로스플랫폼 시스템의 운용방법을 실행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020180061708A 2018-05-30 2018-05-30 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법 KR102138421B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180061708A KR102138421B1 (ko) 2018-05-30 2018-05-30 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180061708A KR102138421B1 (ko) 2018-05-30 2018-05-30 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법

Publications (2)

Publication Number Publication Date
KR20190136258A true KR20190136258A (ko) 2019-12-10
KR102138421B1 KR102138421B1 (ko) 2020-07-28

Family

ID=69002630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180061708A KR102138421B1 (ko) 2018-05-30 2018-05-30 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법

Country Status (1)

Country Link
KR (1) KR102138421B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125597A (zh) * 2019-12-18 2020-05-08 百度在线网络技术(北京)有限公司 网页加载方法、浏览器、电子设备及存储介质
CN113486281A (zh) * 2021-07-20 2021-10-08 北京达佳互联信息技术有限公司 一种页面展示方法、装置、电子设备及存储介质
CN113687879A (zh) * 2021-07-22 2021-11-23 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100439186B1 (ko) 2001-12-28 2004-07-05 한국전자통신연구원 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법
KR100750834B1 (ko) 2005-10-06 2007-08-22 (주)아이피엠에스 자바 바이트 코드의 데이터 모니터링 시 모니터링된 데이터의 호출관계 규명 방법 및 이 방법을 이용한 알고리즘을 통해 자바 어플리케이션의 각종 성능 데이터를 추출하기 위한 컴퓨터 판독 가능한 기록 매체
KR100899527B1 (ko) 2002-06-25 2009-05-27 주식회사 케이티 웹 서비스의 멀티쓰레드 운용 시스템 및 방법
KR20140021091A (ko) * 2012-08-07 2014-02-20 인크로스 주식회사 하이브리드 웹 어플리케이션의 네이티브 기능을 수행하는 자바스크립트 코드의 동적 로딩 장치와 방법
KR20140138803A (ko) * 2012-03-29 2014-12-04 마이크로소프트 코포레이션 지속적이고 회복력 있는 워커 프로세스

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100439186B1 (ko) 2001-12-28 2004-07-05 한국전자통신연구원 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법
KR100899527B1 (ko) 2002-06-25 2009-05-27 주식회사 케이티 웹 서비스의 멀티쓰레드 운용 시스템 및 방법
KR100750834B1 (ko) 2005-10-06 2007-08-22 (주)아이피엠에스 자바 바이트 코드의 데이터 모니터링 시 모니터링된 데이터의 호출관계 규명 방법 및 이 방법을 이용한 알고리즘을 통해 자바 어플리케이션의 각종 성능 데이터를 추출하기 위한 컴퓨터 판독 가능한 기록 매체
KR20140138803A (ko) * 2012-03-29 2014-12-04 마이크로소프트 코포레이션 지속적이고 회복력 있는 워커 프로세스
KR20140021091A (ko) * 2012-08-07 2014-02-20 인크로스 주식회사 하이브리드 웹 어플리케이션의 네이티브 기능을 수행하는 자바스크립트 코드의 동적 로딩 장치와 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125597A (zh) * 2019-12-18 2020-05-08 百度在线网络技术(北京)有限公司 网页加载方法、浏览器、电子设备及存储介质
CN111125597B (zh) * 2019-12-18 2023-10-27 百度在线网络技术(北京)有限公司 网页加载方法、浏览器、电子设备及存储介质
CN113486281A (zh) * 2021-07-20 2021-10-08 北京达佳互联信息技术有限公司 一种页面展示方法、装置、电子设备及存储介质
CN113687879A (zh) * 2021-07-22 2021-11-23 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置
CN113687879B (zh) * 2021-07-22 2023-05-05 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置

Also Published As

Publication number Publication date
KR102138421B1 (ko) 2020-07-28

Similar Documents

Publication Publication Date Title
US9092332B2 (en) Activity based sampling of diagnostics data
KR101416089B1 (ko) 웹 어플리케이션 저작을 위한 통합 플랫폼 및 그 저작 방법
US20040046789A1 (en) Extensible user interface (XUI) framework and development environment
CN107092473B (zh) 桌面应用开发方法及设备
KR102138421B1 (ko) 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법
KR101416104B1 (ko) 하이브리드 웹 어플리케이션의 네이티브 기능을 수행하는 자바스크립트 코드의 동적 로딩 장치와 방법
Sharan Learn JavaFX 8: building user experience and interfaces with Java 8
Himschoot Microsoft Blazor
Bilgin Mastering Cross-Platform Development with Xamarin
Cikryt Evaluating the use of a web browser to unify GUI development for IDE plug-ins
Haja et al. Location, proximity, affinity–the key factors in FaaS
Flatscher JavaFX for ooRexx–Creating powerful portable GUIs for ooRexx
Vermeir Desktop development
Gupta Accelerated GWT: Building Enterprise Google Web Toolkit Applications
Vasconcelos Asynchronous Android Programming
Roy React Js for web developer
Komatineni et al. Introducing the android computing platform
Anton Distributed User Interfaces for the Web
Läufer et al. Managing concurrency in mobile user interfaces with examples in android
Meijers et al. Unity Advanced
Fernandes et al. Architectural pattern for native android applications
Steyer Behind the Scenes: How and Why Does Vue. js Work?
Sage et al. Adding a Graphical User Interface
Gutierrez et al. Spring Boot Internals and Features
Pham REACT CONCURRENT MODE: MECHANISMS, PATTERNS AND APPLICATION

Legal Events

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