KR101698484B1 - 자바 어플리케이션 실행 방법 및 장치 - Google Patents

자바 어플리케이션 실행 방법 및 장치 Download PDF

Info

Publication number
KR101698484B1
KR101698484B1 KR1020090044495A KR20090044495A KR101698484B1 KR 101698484 B1 KR101698484 B1 KR 101698484B1 KR 1020090044495 A KR1020090044495 A KR 1020090044495A KR 20090044495 A KR20090044495 A KR 20090044495A KR 101698484 B1 KR101698484 B1 KR 101698484B1
Authority
KR
South Korea
Prior art keywords
api
synchronization
processing
synchronization api
called
Prior art date
Application number
KR1020090044495A
Other languages
English (en)
Other versions
KR20100125672A (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 KR1020090044495A priority Critical patent/KR101698484B1/ko
Priority to US12/751,389 priority patent/US20100299682A1/en
Publication of KR20100125672A publication Critical patent/KR20100125672A/ko
Application granted granted Critical
Publication of KR101698484B1 publication Critical patent/KR101698484B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/114Pagination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

자바 어플리케이션을 실행하는데 필요한 API를 호출하고, 호출한 API가 이전에 호출된 둘 이상의 API들의 처리 결과를 이용하는 제 1 동기화 API인지를 판단하여, 제 1 동기화 API이면, 제 1 동기화 API를 호출한 제 1 쓰레드와 구별되는 제 2 쓰레드를 통하여 제 1 동기화 API를 처리하는 자바 어플리케이션 실행 방법 및 장치가 개시된다.
자바, 어플리케이션, API, 동기화

Description

자바 어플리케이션 실행 방법 및 장치{Method and apparatus for performing JAVA application}
본 발명은 어플리케이션을 실행하는 방법 및 장치에 관한 것이며, 특히 자바 어플리케이션을 실행하는 방법 및 장치에 관한 것이다.
자바어는 프로그램 언어의 일종으로 디지털 방송, 블루레이 디스크등과 같은 차세대 성장 동력에서 표준 플렛폼으로 선정되었다. 또한, 자바어로 작성된 프로그램의 처리 속도가 현저히 향상됨에 따라 그 활용도가 더욱 높아지게 되었다.
한편, 인터페이스 분야에서는 그래픽 사용자 인터페이스(Graphic User Interface)의 활용도가 높아지고 있다. 이에 따라 대부분의 어플리케이션들이 GUI 기반에서 동작하도록 제작되고 있으며, 자바어로 작성된 자바 어플리케이션 역시 GUI 기반에서 동작하는 것이 선호되고 있다.
본 발명의 일 실시예가 추구하는 목적은 자바 어플리케이션을 효율적으로 실행하는 방법 및 장치를 제공하는 것이다.
상기의 목적을 달성하기 위한 본 발명의 일 실시예가 갖는 하나의 특징은, 자바 어플리케이션을 실행하는 방법에 있어서, 상기 자바 어플리케이션을 실행하는데 필요한 API를 호출하는 단계; 상기 호출한 API가 이전에 호출된 둘 이상의 API들의 처리 결과를 이용하는 제 1 동기화 API인지를 판단하는 단계; 및 상기 API가 상기 제 1 동기화 API이면, 상기 제 1 동기화 API를 호출한 제 1 쓰레드와 구별되는 제 2 쓰레드를 통하여 상기 제 1 동기화 API를 처리하는 단계를 포함하는 것이다.
상기 제 1 동기화 API를 처리하는 단계는, 상기 제 1 동기화 API를 호출하기 이전에 호출된 제 2 동기화 API의 처리가 완료되었는지를 판단하는 단계; 및 상기 제 2 동기화 API의 처리가 완료되지 않은 경우, 상기 제 1 동기화 API의 처리가 유보되도록 제어하는 단계를 포함할 수 있다.
상기 제 1 쓰레드를 통하여, 상기 제 1 동기화 API 이후에 호출된 API들을 처리하는 단계를 더 포함할 수 있다.
상기 제 2 동기화 API의 처리가 완료되었는지를 판단하는 단계는, 상기 제 2 동기화 API가 완료되면, 상기 제 2 동기화 API가 완료되었음을 나타내는 확인 신호를 상기 제 2 쓰레드로부터 수신하는 단계를 포함할 수 있다.
상기 제 2 동기화 API의 처리가 완료되었는지를 판단하는 단계는, 상기 제 2 동기화 API가 완료되면, 상기 제 2 동기화 API가 완료되었음을 나타내는 확인 신호를 하드웨이 기반의 모듈로부터 수신하는 단계를 포함할 수 있다.
상기 제 1 동기화 API 및 상기 제 2 동기화 API 중 적어도 하나는 영상을 출력 장치로 출력하기 위한 출력 API일 수 있다.
상기 출력 API는, JAVA 표준 라이브러리에서 정의하는 sync() API일 수 있다. 구체적으로, AWT 하부 계층의 ‘Personal Basos Profile’에서 정의되는 ‘java.awt.Toolkit’ 동기화 API일 수 있다.
본 발명의 다른 실시예가 갖는 하나의 특징은, 자바 어플리케이션을 실행하는 장치에 있어서, 상기 자바 어플리케이션을 실행하는데 필요한 API를 호출하는 호출부; 상기 호출한 API가 이전에 호출된 둘 이상의 API들의 처리 결과를 이용하는 제 1 동기화 API인지를 판단하는 판단부; 및 상기 API가 상기 제 1 동기화 API이면, 상기 제 1 동기화 API를 호출한 제 1 쓰레드와 구별되는 제 2 쓰레드를 통하여 상기 제 1 동기화 API를 처리하는 처리부를 포함하는 것이다.
이하에서는 첨부된 도면을 참고하여 본 발명의 바람직한 실시예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 JAVA 플렛폼의 계층을 나타낸다.
도 1a는 자바 기반의 rendering API의 실행 과정을 나타내는 그림이다.
도 1a에서는 자바 플렛폼이 제 1 계층(112), 제 2 계층(114) 및 제 3 계층(116)으로 구성된다고 가정하였다.
제 1 계층(112)에서는 자바 어플리케이션을 실행시키는데 필요한 API를 호출한다. 이 때, JAVA 표준에서 표준 API 라이브러리로부터 API가 호출될 수 있다.
제 2 계층에서는 네이티브 언어로 작성된 API 라이브러리로부터 API를 호출한다. 제 2 계층에서 호출되는 API는 제 1 계층에서 호출되는 API에 대응하는 것으로 동일한 기능 또는 대응하는 기능을 수행한다.
자바 플랫폼을 채용한 단말은 동일한 제 1 계층을 채용하지만, 제 2 계층(114)은 단말마다 상이할 수 있다. 특히, 제 2 계층(114)는 C, C++과 같이 자바어가 아닌 프로그램어로 작성될 수 있으며, 이 경우 JNI(Java Native Interface)와 같은 인터페이스가 필요할 수 있다.
제 3 계층(116)에서는 하드웨어 기반의 API 처리 모듈을 이용하여 자주 사용되는 API들을 처리한다. 제 3 계층(116)은 실시 예에 따라서는 생략될 수도 있다.
도 1a를 참고하면, 제 1 계층에서(112) 렌더링을 수행하는 API가 표준 API 라이브러리로부터 호출된다.
다음으로, 제 2 계층(114)에서 표준 API 라이브러리로부터 호출된 API에 대응하는 API(예를 들면 동일하거나 상응하는 기능을 수행하는 API)를 네이티브 API 라이브러리로부터 호출한다.
마지막으로, 제 3 계층(116)에서는 네이티브 API 라이브러리로부터 호출된 API가 하드웨어 모듈을 사용하여 렌더링을 수행하는 API를 다시 호출함으로써 렌더링이 수행된다. 이 때, 도출된 결과는 버퍼에 저장되거나, 디스플레이 장치로 출력되거나, 어플리케이션에 전달될 수 있다.
도 1b에서는 자바 기반의 'drawImage API'의 실행 과정을 나타내는 그림이다.
도 1c는 자바 기반의 'Toolkit.sync API'의 실행 과정을 나타내는 그림이다. 도 1b 및 도 1c는 JNI를 포함하는 것을 제외하면 도 1a와 동일하므로 이하 설명을 생략한다. JNI는 표준 API 라이브러리와 네이티브 API 라이브러리 간의 연결을 담당한다.
도 2는 본명의 일 실시예에 따른 GUI를 구현하는 어플리케이션의 일 예이다.
'drawstring'(210)는 문자를 출력하는 API로써, java.awt.Graphics 클래스에서 정의되는 ‘drawString’ API일 수 있다.
'dowomecalculation'필드(220)는 문자가 출력될 위치나 크기 등을 계산하는 일반적인 API를 지칭하는 것으로써 실시 예에 따라서는 ‘common Java API’로 지칭된다.
‘drawImage’(232,234,240)는 임의의 이미지를 생성하는 API로써, java.awt.Graphics 클래스에서 정의되는 ‘drawImage’ API 일 수 있다. ‘drawImage’(232,234,240) API는 입력 값에 따라서 다양한 형태의 이미지를 생성할 수 있다. 'drawimage(smallImage)'(232,234)는 ‘drawImage’ API가 작은 크기의 이미지를 그리는 경우를 나타내며, 'drawimage(fullScreenSizeImage)'(240)는 ‘drawImage’ API가 큰 크기의 이미지를 그림을 나타낸다.
'fillrect'(250)는 사각형을 그리는 API로써, java.awt.Graphics 클래스에서 정의되는 ‘fillRect’ API일 수 있다.
'Toolkit.sync'(260)는 디스플레이 장치로의 출력을 수행하는 API로써, java.awt.Graphics 클래스에서 정의되는 ‘Toolkit.sync’ API일 수 있다.
일반적으로, 'drawString'(210) API, 'drwaImage'(232,234,240) API, 'fillrect'(250) API 의 처리 결과는 내부 메모리와 같은 저장 공간에 저장된 후, 'toolkit.sync'(260) API에 의하여 화면에 출력되게 된다. 이 때, 'toolkit.sync'(260) API는 내부 메모리에 저장된 데이터를 디스플레이 장치내의 저장 공간으로 복사한 후, 각각의 데이터를 믹싱하여 출력될 화면을 생성하게 된다. 따라서, 'toolkit.sync'(260) API는 ‘drawstring’(210)API, 'drwaimage'(232,234,240) API, 'fillrect'(250) API의 처리 결과를 필수적으로 이용하게 된다. 본 명세서에서는 이와 같이 이전에 호출된 둘 이상의 API의 처리 결과를 이용하는 API를 동기화 API로 지칭하고, 이전에 호출된 API의 처리 결과를 이용하지 않는 API를 비동기화 API로 지칭한다.
비동기화 API는 다른 API의 처리 결과를 기다리지 않고 바로 처리될 수 있으므로 처리 속도가 빠르다. 이러한 비동기화 API의 일 예로는 하드웨어 기반의 모듈로 구현된 'drawimage' API 또는 'fillrect' API가 포함된다.
동기화 API는 다른 API의 처리 결과를 이용하기 때문에 호출된 API들이 처리된 후에야 비로써 처리될 수 있다. 이러한 동기화 API의 일 예로는 'Toolkit.sync' API가 포함된다.
디스플레이 장치에 출력되는 화면을 두 차례에 걸쳐서 변경한다고 가정하자. 즉, 'Toolkit.sync' API가 두 번 호출됨을 의미한다. 설명의 편의를 위하여 먼저 호출되는 'Toolkit.sync' API를 제 1 동기화 API로 지칭하고, 나중에 호출되는 'Toolkit.sync' API를 제 2 동기화 API로 지칭하기로 한다.
제 1 동기화 API는 'drawstring'(210), 'drwaimage'(232,234,240), 'fillrect'(250) API가 모두 처리된 후에 처리된다. 특히, 'drwaimage(fullScreenSizeImage)'(240) API를 처리하기 위해서는 많은 시간이 소요되므로 결과적으로 제 1 동기화 API를 처리하는 데에도 많은 시간이 소요되게 된다.
제 1 동기화 API가 호출된 뒤에는 화면을 변경하기 위하여 'drwaimage'(232,234,240), 'fillrect'(250) API가 다시 호출되어야 한다. 이론적으로는 drwaimage'(232,234,240) API, 'fillrect'(250) API는 비동기화 API이므로 다른 API들의 처리 결과를 기다릴 필요가 없다. 그렇다고 하더라도, 제 1 동기화 API의 처리가 완료된 후에 호출될 것이므로, 제 1 동기화 API의 처리가 지연되면 비동기화 API들의 처리도 지연되게 되고 결과적으로 어플리케이션 전체의 처리 시간이 증가하게 된다.
따라서, 동기화 API를 효율적으로 처리하는 것이 자바 어플리케이션의 처리 속도를 향상시키는 하나의 방법이 될 것이다.
도 3은 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)에 관한 블록도를 나타낸다.
본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)는 호출부(310), 판단부(320) 및 처리부(330)를 포함한다.
호출부(310)는 자바 어플리케이션의 처리에 필요한 API들을 호출한다. 호출부(310)는 표준 API 라이브러리에 포함된 API를 호출하는 제 1 호출부(312)와 네이티브 API 라이브러리에 포함된 API를 호출하는 제 2 호출부(314) 중 적어도 하나를 포함할 수 있다.
판단부(320)는 호출한 API가 동기화 API인지를 판단한다. 상술한 바와 같이 본 명세서에서 동기화 API는 이전에 호출된 둘 이상의 API들의 처리 결과를 이용하는 API를 지칭한다.
처리부(330)는 호출한 API가 동기화 API 이면 별도의 쓰레드를 통하여 처리하고, 호출한 API가 비동기화 API 이면 기존의 쓰레드를 통하여 처리한다. 쓰레드는 어플리케이션을 처리하는 작업의 단위를 지칭하는 것으로써 하나의 어플리케이션은 하나의 쓰레드를 통하여 처리될 수도 있으나, 하나의 어플리케이션이 다수의 쓰레드를 통하여 처리될 수도 있다. CPU와 같은 프로세서는 각각의 쓰레드에 물리적 또는 논리적인 메모리 공간을 할당하고, 시분할 방식으로 각각의 쓰레드를 처리한다. 이 때, 특정 쓰레드에 더 높은 우선 순위를 부여함으로써 중요도가 높은 작업이 빨리 처리되도록 할 수 있다.
이하에서는 자바 어플리케이션 실행 장치(300)내의 구성 요소들의 동작을 시간 순서에 따라서 설명한다. 설명의 편의를 위하여 API를 호출한 쓰레드를 제 1 쓰레드로 지칭하고, 동기화 API를 처리하는 쓰레드를 제 2 쓰레드로 지칭한다. 또한, 현재 시점에 호출된 동기화 API를 제 1 동기화 API라고 지칭하고, 이전 시점에 호출된 동기화 API를 제 2 동기화 API라고 지칭한다.
먼저 호출부(310)가 자바 어플리케이션의 실행에 필요한 API를 호출한다.
판단부(320)는 호출한 API가 동기화 API인지를 판단한다.
처리부(330)는 호출한 API가 제 1 동기화 API 이면, 제 2 쓰레드를 통하여 제 1 동기화 API를 처리한다. 동시에, 제 1 동기화 API 이후에 호출된 비동기화 API들을 제 1 쓰레드를 통하여 처리한다.
경우에 따라서는 제 1 동기화 API가 호출된 시점에서 여전히 제 2 동기화 API가 제 2 쓰레드를 통하여 처리되고 있을 수 있다. 즉, 제 1 동기화 API가 호출된 시점에서 제 2 동기화 API의 처리가 완료되지 않은 상태일 수 있다. 이 경우, 처리부(330)는 제 2 동기화 API가 모두 처리될 때까지 제 1 동기화 API의 처리를 유보하는 것이 바람직하다.
처리부(330)는 제 1 동기화 API가 수신된 시점에서 제 2 동기화 API의 처리가 완료되었는지를 확인하기 위하여 확인부(332)를 포함할 수 있다. 확인부(332)는 하드웨어 기반의 모듈로부터 제 2 동기화 API의 처리가 완료되었음을 나타내는 신호를 수신하거나, 자바 표준 라이브러리에서 호출된 API로부터 제 2 동기화 API의 처리가 완료되었음을 나타내는 신호를 수신하거나, 네이티브 라이브러리에서 호출된 API로부터 제 2 동기화 API의 처리가 완료되었음을 나타내는 신호를 수신할 수 있다.
제 1 동기화 API가 호출된 시점에서 제 2 동기화 API의 처리가 완료된 경우에는, 처리부(330)는 제 2 쓰레드를 통하여 제 1 동기화 API가 처리한다.
이와 같이 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)에 의하면, 동기화 API를 제 2 쓰레드를 통하여 처리함으로써 자바 어플리케이션의 실행 속도가 현저히 향상될 수 있다. 종래에는 동기화 API를 처리하기 위해서는 이전 API가 모두 처리될 때까지 기다려야 한다. 또한, 동기화 API가 처리될 때까지, 동기화 API 이후에 처리될 비동기화 API들까지 호출되지 못하고 대기하여야 하였다. 따라서, 어플리케이션의 처리 시간이 길어지게 되는 문제점이 있었다. 그러나, 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)에서는 비동기화 API와 동기화 API가 각각 다른 쓰레드에서 처리되도록 함으로써 비동기화 API들의 대기 시간을 줄일 수 있다.
또한, 이전에 호출된 동기화 API의 처리가 완료되지 않은 경우에는 다음에 호출될 동기화 API의 처리를 유보시킴으로써 동기화 API의 처리 과정에서 발생할 수 있는 오류를 줄일 수 있다.
도 4는 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)에서 자바 어플리케이션을 실행하는 과정을 나타낸다.
자바 어플리케이션 실행 장치(300)는 자바 표준 라이브러리에서 API를 호출하는 자바 그래픽 엔진(410), 네이티브 API 라이브러리에서 API를 호출하는 네이티브 그래픽 엔진(420) 및 디스플레이 장치로 영상 데이터를 출력하는 그래픽 믹서(430)를 포함할 수 있다.
단계 s441에서는, 자바 그래픽 엔진(410)이 Toolkitl.sync() API를 호출한다. Toolkitl.sync() API는 적어도 하나의 API를 처리한 결과를 화면에 출력하고자 하는 경우에 사용될 수 있다.
단계 s442에서는, 네이티브 그래픽 엔진(420)이 Toolkitl.sync() API에 대응하는 API를 네이티브 API 라이브러리로부터 호출한다. 즉, 네이티브 그래픽 엔진(420)은 Toolkitl.sync() API와 동일한 기능을 하는 API를 네이티브 API 라이브러리로부터 호출한다.
단계 s443에서는, 버퍼에 저장된 데이터를 디스플레이 장치내의 버퍼로 복사한다. 이 때, 둘 이상의 API들을 처리한 결과가 디스플레이 장치내의 버퍼로 복사될 수 있다.
단계 s444에서는, 디스플레이 장치내의 버퍼에 저장된 데이터를 믹싱한다. 일 예로, 하나의 API를 처리하여 화면에 뿌려질 글자 데이터를 생성하였고, 다른 하나의 API를 처리하여 화면에 뿌려질 그림 데이터를 생성하였다면, 단계 s444에서는 이들을 믹싱하여 글자 데이터와 그림 데이터가 화면에 모두 출력되도록 한다.
단계 s445에서는, 믹싱된 데이터의 출력을 요청한다.
상술한 과정을 모두 거침으로써 화면이 전환된다.
도 5는 본 발명의 일 실시예에 따른 자바 어플리케이션을 실행하는 방법에 관한 흐름도이다.
도 5에서는 제 1 쓰레드(501)와 제 2 쓰레드(502)를 통하여 자바 어플리케이션의 실행에 필요한 API들이 처리된다. 특히, 제 1 쓰레드(501)를 통해서는 비동기화 API들이 처리되고, 제 2 쓰레드(502)를 통해서는 동기화 API들이 처리된다.
단계 s510에서는, 제 1 동기화 API를 호출한다. 설명의 편의를 위하여 제 1 동기화 API가 최초로 호출된 동기화 API라고 가정한다.
단계 s520에서, 제 1 쓰레드(501)는 제 1 동기화 API의 처리를 제 2 쓰레드(502)에 요청한다.
단계 s530에서는, 제 1 동기화 API 이후에 호출된 비동기 API가 제 1 쓰레드(501)를 통하여 처리된다. 동시에 도면에는 도시되지 않았으나, 제 1 동기화 API 가 제 2 쓰레드(502)를 통하여 처리된다.
단계 s540에서는, 제 2 동기화 API를 호출한다. 이 때, 제 1 쓰레드(501)에서는 제 1 동기화 API의 처리가 완료되었는지를 판단한다. 제 1 동기화 API의 처리가 완료되지 않았으면, 제 2 동기화 API를 처리하지 않고 대기한다.
단계 s550에서는, 제 1 동기화 API가 완료되었음을 나타내는 신호가 제 2 쓰레드(502)로부터 수신된다. 이 때, 제 1 동기화 API가 완료되었음을 나타내는 신호는 하드웨어 모듈로부터 수신되거나, 표준 API 라이브러리에 포함된 API를 통하여 수신되거나, 네이티브 API 라이브러리에 포함된 API를 통하여 수신될 수 있다.
단계 s560에서는, 제 1 쓰레드(501)는 제 2 동기화 API의 처리를 제 2 쓰레드(502)에 요청한다.
도 6은 본 발명의 일 실시예에 따른 자바 어플리케이션을 이용하여 GUI를 구현하는 과정을 나타낸다.
도 6에서는 실행되는 API들이 시간 순서에 따라 기재되어 있다. 또한, 해당 API를 처리하는데 소요되는 시간은 API가 포함된 박스의 크기로 나타내었다.
도 6의 좌측에는 종래의 자바 어플리케이션 실행 방법을 이용하여 GUI를 구현하는 경우를 나타낸다.
DrawImage()(611) API는 이미지를 그린 후 결과 데이터를 내부 버퍼에 저장한다.
FillRectangle()(612) API는 사각형을 그린 후 결과 데이터를 내부 버퍼에 저장한다.
DrawString()(613) API는 문자를 그린 후 결과 데이터를 내부 버퍼에 저장한다.
sync()(614) API는 내부 버퍼에 저장된 데이터를 이용하여 화면을 변경한다. 구체적으로, sync()(614) API는 내부 버퍼에 저장된 데이터를 디스플레이 장치의 내부 저장 공간으로 복사한 다음, 데이터들을 믹싱한다. 또한, 데이터의 믹싱이 완료되면, 믹싱된 데이터를 디스플레이 장치로 출력하는 일련의 처리를 sync()(614) API가 수행한다.
sync()(614) API는 DrawImage()(611) API, FillRectangle()(612) API 및 DrawString()(613) API의 결과를 이용하여 화면의 변경을 수행하는 API로써 동기화 API이다. 따라서, sync()(614) API는 다른 API들의 처리가 완료될 때까지 대기하여야 하며, sync()(614) API 자체를 처리하는 데에도 많은 시간이 소요된다. 따라서, sync()(614) API 이후에 호출되는 비동기화 API들이 처리되지 못하고 대기하여야 한다.
도 6의 우측에는 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 방법을 이용하여 GUI를 구현하는 경우를 나타낸다.
DrawImage()(621) API는 이미지를 그린 후 결과 데이터를 내부 버퍼에 저장 한다.
FillRectangle()(622) API는 사각형을 그린 후 결과 데이터를 내부 버퍼에 저장한다.
DrawString()(623) API는 문자를 그린 후 결과 데이터를 내부 버퍼에 저장한다.
sync()(624) API는 DrawImage()(621) API, FillRectangle()(622) API 및 DrawString()(623) API의 결과를 이용하여 화면의 변경을 수행하는 API로써 동기화 API이다. sync()(625) API를 처리함에 있어서, 이전에 호출된 sync() API의 처리가 완료될 때까지 대기한다. 이전에 호출된 sync() API의 처리가 완료되었다면, sync()(625) API를 다른 쓰레드를 통하여 처리한다.
sync()(625) API를 다른 쓰레드를 통하여 처리하므로, DrawImage()(626), FillRectangle()(627),Drawstring()(628)과 sync()(625) API가 동시에 처리될 수 있다.
마찬가지로, sync()(630) API는 sync()(625) API의 처리가 완료될 때까지 대기한다. sync()(625) API의 처리가 완료되면, 다른 쓰레드를 통하여 sync()(630) API가 처리된다.
도 7은 본 발명의 일 실시예에 따른 자바 어플리케이션을 실행시키는 방법에 관한 흐름도이다.
단계 s710에서는, 자바 어플리케이션을 실행하는데 필요한 API를 호출한다.
단계 s720에서는, 호출된 API가 동기화 API인지를 판단한다. 동기화 API는 이전에 호출된 둘 이사의 API들의 처리 결과를 이용하는 API이다. 이하에서는 설명의 편의를 위하여 현재 시점에서 호출된 동기화 API를 제 1 동기화 API라고 지칭하고, 이전 시점에서 호출된 동기화 API를 제 2 동기화 API라고 지칭한다.
단계 s720에서의 판단 결과, 호출된 API가 제 1 동기화 API이면, 단계 s734에 따라 제 2 쓰레드를 통하여 제 1 동기화 API를 처리한다. 이 때, 제 2 동기화 API의 처리가 완료되었는지를 판단하고, 제 2 동기화 API의 처리가 완료될 때까지 제 1 동기화 API의 처리를 보류할 수 있다.
또한, 제 1 동기화 API를 호출한 제 1 쓰레드를 통해서는 제 1 API 이후에 호출된 비동기화 API들이 처리될 수 있다.
한편, 호출된 API가 제 1 동기화 API가 아니면 즉, 호출된 API가 비동기화 API이면 제 1 쓰레드를 통하여 호출된 API를 처리한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본 질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 JAVA 플렛폼의 계층을 나타낸다.
도 2는 본명의 일 실시예에 따른 GUI를 구현하는 어플리케이션의 일 예이다.
도 3은 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)에 관한 블록도를 나타낸다.
도 4는 본 발명의 일 실시예에 따른 자바 어플리케이션 실행 장치(300)에서 자바 어플리케이션을 실행하는 과정을 나타낸다.
도 5는 본 발명의 일 실시예에 따른 자바 어플리케이션을 실행하는 방법에 관한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 자바 어플리케이션을 이용하여 GUI를 구현하는 과정을 나타낸다.
도 7은 본 발명의 일 실시예에 따른 자바 어플리케이션을 실행시키는 방법에 관한 흐름도이다.

Claims (15)

  1. 자바 어플리케이션을 실행하는 방법에 있어서,
    상기 자바 어플리케이션을 실행하는데 필요한 API를 호출하는 단계;
    상기 호출한 API가 이전에 호출된 둘 이상의 API들의 처리 결과를 이용하는 제 1 동기화 API인지를 판단하는 단계; 및
    상기 API가 상기 제 1 동기화 API이면, 상기 제 1 동기화 API를 호출한 제 1 쓰레드와 구별되는 제 2 쓰레드를 통하여 상기 제 1 동기화 API를 처리하는 단계를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  2. 제 1항에 있어서, 상기 제 1 동기화 API를 처리하는 단계는,
    상기 제 1 동기화 API를 호출하기 이전에 호출된 제 2 동기화 API의 처리가 완료되었는지를 판단하는 단계; 및
    상기 제 2 동기화 API의 처리가 완료되지 않은 경우, 상기 제 1 동기화 API의 처리가 유보되도록 제어하는 단계를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  3. 제 1항에 있어서,
    상기 제 1 쓰레드를 통하여, 상기 제 1 동기화 API 이후에 호출된 API들을 처리하는 단계를 더 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  4. 제 2항에 있어서, 상기 제 2 동기화 API의 처리가 완료되었는지를 판단하는 단계는,
    상기 제 2 동기화 API가 완료되면, 상기 제 2 동기화 API가 완료되었음을 나타내는 확인 신호를 상기 제 2 쓰레드로부터 수신하는 단계를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  5. 제 2항에 있어서, 상기 제 2 동기화 API의 처리가 완료되었는지를 판단하는 단계는,
    상기 제 2 동기화 API가 완료되면, 상기 제 2 동기화 API가 완료되었음을 나타내는 확인 신호를 하드웨이 기반의 모듈로부터 수신하는 단계를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  6. 제 2항에 있어서,
    상기 제 1 동기화 API 및 상기 제 2 동기화 API 중 적어도 하나는 영상을 출력 장치로 출력하기 위한 출력 API인 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  7. 제 6항에 있어서, 상기 출력 API는,
    JAVA 표준 라이브러리에서 정의하는 sync() API인 것을 특징으로 하는 자바 어플리케이션 실행 방법.
  8. 자바 어플리케이션을 실행하는 장치에 있어서,
    상기 자바 어플리케이션을 실행하는데 필요한 API를 호출하는 호출부;
    상기 호출한 API가 이전에 호출된 둘 이상의 API들의 처리 결과를 이용하는 제 1 동기화 API인지를 판단하는 판단부; 및
    상기 API가 상기 제 1 동기화 API이면, 상기 제 1 동기화 API를 호출한 제 1 쓰레드와 구별되는 제 2 쓰레드를 통하여 상기 제 1 동기화 API를 처리하는 처리부를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  9. 제 8항에 있어서, 상기 처리부는,
    상기 제 1 동기화 API를 호출하기 이전에 호출된 제 2 동기화 API의 처리가 완료되었는지를 판단하는 완료 판단부; 및
    상기 제 2 동기화 API의 처리가 완료되지 않은 경우, 상기 제 1 동기화 API의 처리가 유보되도록 제어하는 제어부를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  10. 제 8항에 있어서, 상기 처리부는,
    상기 제 1 쓰레드를 통하여, 상기 제 1 동기화 API 이후에 호출된 API들을 더 처리하는 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  11. 제 9항에 있어서, 상기 완료 판단부는,
    상기 제 2 동기화 API가 완료되면, 상기 제 2 동기화 API가 완료되었음을 나타내는 확인 신호를 상기 제 2 쓰레드로부터 수신하는 수신부를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  12. 제 9항에 있어서, 상기 완료 판단부는,
    상기 제 2 동기화 API가 완료되면, 상기 제 2 동기화 API가 완료되었음을 나타내는 확인 신호를 하드웨이 기반의 모듈로부터 수신하는 수신부를 포함하는 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  13. 제 9항에 있어서,
    상기 제 1 동기화 API 및 상기 제 2 동기화 API 중 적어도 하나는 영상을 출력 장치로 출력하기 위한 출력 API인 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  14. 제 13항에 있어서, 상기 출력 API는,
    JAVA 표준 라이브러리에서 정의하는 sync() API인 것을 특징으로 하는 자바 어플리케이션 실행 장치.
  15. 제 1항 내지 제 7항 중 어느 한 항의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
KR1020090044495A 2009-05-21 2009-05-21 자바 어플리케이션 실행 방법 및 장치 KR101698484B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090044495A KR101698484B1 (ko) 2009-05-21 2009-05-21 자바 어플리케이션 실행 방법 및 장치
US12/751,389 US20100299682A1 (en) 2009-05-21 2010-03-31 Method and apparatus for executing java application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090044495A KR101698484B1 (ko) 2009-05-21 2009-05-21 자바 어플리케이션 실행 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20100125672A KR20100125672A (ko) 2010-12-01
KR101698484B1 true KR101698484B1 (ko) 2017-01-20

Family

ID=43125426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090044495A KR101698484B1 (ko) 2009-05-21 2009-05-21 자바 어플리케이션 실행 방법 및 장치

Country Status (2)

Country Link
US (1) US20100299682A1 (ko)
KR (1) KR101698484B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092703A (zh) * 2011-10-31 2013-05-08 国际商业机器公司 Java资源访问的同步方法和装置
US10198279B2 (en) * 2015-10-22 2019-02-05 Oracle International Corporation Thread synchronization for platform neutrality

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020008703A1 (en) 1997-05-19 2002-01-24 John Wickens Lamb Merrill Method and system for synchronizing scripted animations
US6430591B1 (en) 1997-05-30 2002-08-06 Microsoft Corporation System and method for rendering electronic images
KR100731359B1 (ko) 2006-01-09 2007-06-21 삼성전자주식회사 비 표준 api를 지원하는 방송 수신 장치 및 그 기능설정 방법
US20080148278A1 (en) 2006-12-18 2008-06-19 Alain Regnier Processing fast and slow SOAP requests differently in a Web service application of a multi-functional peripheral

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012081A (en) * 1996-07-03 2000-01-04 Siemens Aktiengesellschaft Service and event synchronous/asynchronous manager
US7092983B1 (en) * 2000-04-19 2006-08-15 Silicon Graphics, Inc. Method and system for secure remote distributed rendering
US20020180793A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Dynamic buffering of graphic images by a platform independent application program interface

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020008703A1 (en) 1997-05-19 2002-01-24 John Wickens Lamb Merrill Method and system for synchronizing scripted animations
US6430591B1 (en) 1997-05-30 2002-08-06 Microsoft Corporation System and method for rendering electronic images
KR100731359B1 (ko) 2006-01-09 2007-06-21 삼성전자주식회사 비 표준 api를 지원하는 방송 수신 장치 및 그 기능설정 방법
US20080148278A1 (en) 2006-12-18 2008-06-19 Alain Regnier Processing fast and slow SOAP requests differently in a Web service application of a multi-functional peripheral

Also Published As

Publication number Publication date
KR20100125672A (ko) 2010-12-01
US20100299682A1 (en) 2010-11-25

Similar Documents

Publication Publication Date Title
US8132191B2 (en) Method and apparatus for adapting and hosting legacy user interface controls
US8806514B2 (en) Data control device, data control method, and computer-readable medium
US6078942A (en) Resource management for multimedia devices in a computer
CN107251004B (zh) 通过使用欺骗时钟及细粒度频率控制实现的向后兼容性
US8904067B2 (en) Adaptive multi-threaded buffer
US20090096810A1 (en) Method for selectively remoting windows
KR20160120343A (ko) 크로스 플랫폼 렌더링 엔진
JP5225376B2 (ja) 仮想インターフェースを提供するためのシステム及び方法
WO2019047187A1 (zh) 导航栏控制方法及装置
US8390631B2 (en) Synchronizing queued data access between multiple GPU rendering contexts
US9779466B2 (en) GPU operation
CN116166259A (zh) 界面生成方法及电子设备
CN116166256A (zh) 界面生成方法及电子设备
CN113892134A (zh) 具有优化的性能的多媒体系统
KR101698484B1 (ko) 자바 어플리케이션 실행 방법 및 장치
US7596762B1 (en) System and method for installing image editing toolbars in standard image viewers
CN116546228B (zh) 用于虚拟场景的推流方法、装置、设备及存储介质
WO2022242628A1 (zh) 投屏方法、装置、设备及存储介质
US9830202B1 (en) Storage and process isolated web widgets
CN117557701A (zh) 一种图像渲染方法和电子设备
EP0972242B1 (en) Video device manager
CN116166255A (zh) 界面生成方法及电子设备
US6888550B2 (en) Selecting between double buffered stereo and single buffered stereo in a windowing system
US6825842B1 (en) Method and system for queueing draw operations
KR101717783B1 (ko) 복수의 그래픽 이미지 레이어의 중첩 순서 제어 방법

Legal Events

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