KR101195822B1 - 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법 - Google Patents

서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법 Download PDF

Info

Publication number
KR101195822B1
KR101195822B1 KR1020050089801A KR20050089801A KR101195822B1 KR 101195822 B1 KR101195822 B1 KR 101195822B1 KR 1020050089801 A KR1020050089801 A KR 1020050089801A KR 20050089801 A KR20050089801 A KR 20050089801A KR 101195822 B1 KR101195822 B1 KR 101195822B1
Authority
KR
South Korea
Prior art keywords
application
code
programming language
written
virtual machine
Prior art date
Application number
KR1020050089801A
Other languages
English (en)
Other versions
KR20070035211A (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 KR1020050089801A priority Critical patent/KR101195822B1/ko
Publication of KR20070035211A publication Critical patent/KR20070035211A/ko
Application granted granted Critical
Publication of KR101195822B1 publication Critical patent/KR101195822B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 가상 머신에 관한 것으로, 자바(JAVA)로 작성된 어플리케이션, 씨(C)로 작성된 어플리케이션, 씨샵(C#)으로 작성된 어플리케이션을 통합적으로 모두 실행할 수 있는 가상 머신과, 이동통신 단말기에 탑재된 가상 머신을 이용하여 자바(JAVA)로 작성된 어플리케이션, 씨(C)로 작성된 어플리케이션, 씨샵(C#)으로 작성된 어플리케이션 각각을 단말 플랫폼 독립적으로 실행하는 방법을 제공하며, 하나의 가상 머신에서 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을 모두 실행할 수 있으며, 이에 프로그램 개발자 등이 단말 플랫폼에 맞추어 동일한 어플리케이션에 대해서 서로 다른 프로그래밍 언어로 각각 구현하지 않아도 되며, 단말에서 어플리케이션 실행을 위한 처리가 이루어지므로 콘텐츠 서버측에서 별도의 어플리케이션 변환, 컴파일링 처리를 수행하지 않아도 되는 효과가 있다.
Figure R1020050089801
가상 머신, 자바(JAVA), 씨(C), 씨샵(C#), 어플리케이션 실행

Description

서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을 실행하기 위한 가상 머신 및 이를 이용해 이동통신 단말기에서 어플리케이션을 실행하는 방법{Virtual Machine for application executing And thereof Method in mobile terminal}
도 1은 본 발명이 적용되는 이동통신 단말기에 탑재된 가상 머신의 계층 구조도.
도 2는 본 발명에 따른 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을 실행하기 위한 가상 머신에 대한 일실시예 구성도.
도 3은 본 발명에 따른 이동통신 단말기에서 가상 머신을 이용해 어플리케이션을 실행하는 방법에 대한 일실시예 흐름도.
* 도면의 주요 부분에 대한 부호 설명
31 : 어플리케이션 관리자 32 : JAVA 디컴파일러
33 : C 디컴파일러 34 : C# 디컴파일러
35 : 중간언어 번역기 36 : 매핑 테이블
37 : 통합목적코드 해석기
본 발명은 가상 머신에 관한 것으로, 더욱 상세하게는 자바(JAVA)로 작성된 어플리케이션, 씨(C)로 작성된 어플리케이션, 씨샵(C#)으로 작성된 어플리케이션을 통합적으로 모두 실행할 수 있는 가상 머신과, 이동통신 단말기에 탑재된 가상 머신을 이용하여 자바(JAVA)로 작성된 어플리케이션, 씨(C)로 작성된 어플리케이션, 씨샵(C#)으로 작성된 어플리케이션 각각을 단말 플랫폼 독립적으로 실행하는 방법에 관한 것이다.
일반적으로, 어플리케이션(예; 음악 파일, 오디오 파일, 게임 등과 같은 콘텐츠, 문서 작성기 등과 같은 프로그램 등)은 자바(JAVA), 씨(C), 씨샵(C#) 등과 같은 프로그래밍 언어로 작성되어져 배포되고 있다. 한편, 이동통신 단말기의 제한적인 시스템 사양 및 스펙에 맞추어서, 기존의 자바 언어를 모바일 환경에 적합하게 구현한 것이 모바일 자바 언어이며, 기존의 C를 모바일 환경에 적합하게 구현한 것이 모바일 C 언어이다.
위와 같은 모바일 언어로 작성된 어플리케이션을 이동통신 단말기에서 실행시키기 위해서는 이동통신 단말기에 해당 모바일 언어를 위한 플랫폼 즉 가상 머신이 탑재되어 있어야 된다. 일례로, 대한민국의 신지소프트사에서 개발한 GVM은 모바일 C 언어를 위한 가상 머신이며, 대한민국의 엑스씨이(XCE)사에서 개발한 SK-VM 은 모바일 자바 언어를 위한 가상 머신이다. 이러한 GVM 및 SK-VM은 J2ME 스펙에 따라 자바 언어를 기반으로 하여 개발되었으며, 인터프리터 방식으로 어플리케이션을 이루는 코드를 해석하여 해당 어플리케이션을 실행한다.
한편, 미국의 퀄컴사에서 개발한 브루(BREW) 및 대한민국에서 표준으로 제정된 위피(WIPI) 모두는 가상 머신 형태로 구현되었지만 인터프리터 방식이 아닌 바이너리코드 처리 방식으로서, 어플리케이션을 이루는 코드를 단말 운영체제 및 CPU에 맞추어 해당 기계어로 변환하여 어플리케이션을 실행한다.
그런데, 상기와 같은 종래의 가상 머신들은 이동통신 단말기 내에서 단일 프로그래밍 언어만을 처리할 수 있기 때문에 다른 프로그래밍 언어로 작성된 어플리케이션을 콘텐츠 서버로부터 다운로드받았더라도 이를 단말에서 실행할 수 없는 문제점이 있다. 특히, 바이너리코드 처리 방식에서는 단말 플랫폼이 변경되면 기존에 컴파일링되어져 저장되어 있던 어플리케이션의 실행 파일을 변경된 플랫폼에 맞춰서 재컴파일링해야 되는 문제점이 있다.
한편, 가상 머신에 따라 해당 언어로 작성된 어플리케이션을 이동통신 단말기로 제공하는 컴파일 온 디맨드(COD) 기술이 최근에 각광받고 있다. COD 기술은 콘텐츠 서버에서 어플리케이션을 이루는 원시코드를 저장해 놓고 있다가 이동통신 단말기로부터 어플리케이션 다운로드를 요청받으면 단말 프로파일 정보를 통해 가상 머신의 종류를 파악해 해당 가상 머신으로 원시코드를 컴파일링해서 이 컴파일된 어플리케이션을 이동통신 단말기로 전송하는 것이다. 그러나, 이러한 COD 기술에서는 콘텐츠 서버가 모든 가상 머신을 구현해 놓아야 되고, 이동통신 단말기의 어플리케이션 요청에 따라 매번 서로 다른 컴파일링 과정을 수행해야 되기 때문에 시스템 부하가 가중되는 문제점이 있다.
본 발명은 상기와 같은 문제점을 해결하고 상기와 같은 요구에 부응하기 위하여 제안된 것으로, 자바(JAVA)로 작성된 어플리케이션, 씨(C)로 작성된 어플리케이션, 씨샵(C#)으로 작성된 어플리케이션을 통합적으로 모두 실행할 수 있는 가상 머신과, 이동통신 단말기에 탑재된 가상 머신을 이용하여 자바(JAVA)로 작성된 어플리케이션, 씨(C)로 작성된 어플리케이션, 씨샵(C#)으로 작성된 어플리케이션 각각을 단말 플랫폼 독립적으로 실행하는 방법을 제공하는데 그 목적이 있다.
상기의 목적을 달성하기 위한 본 발명의 가상 머신은, 사용자 또는 단말에 의해 실행 명령이 내려진 어플리케이션이 어떠한 프로그래밍 언어로 작성된 어플리케이션인지를 확인하여 해당되는 디컴파일러에게 어플리케이션 디컴파일링을 요구하는 어플리케이션 관리자; 상기 어플리케이션 관리자의 요구에 따라 상기 어플리케이션을 이루는 목적코드로부터 소스코드를 추출하는 적어도 하나의 디컴파일러; 상기 디컴파일러에서 추출한 소스코드를 중간코드로 변환한 상태에서 매핑 테이블에 정의되어 있는 중간코드-통합목적코드 변환 규칙을 참조하여 상기 중간코드를 해당되는 통합목적코드로 변환하는 중간언어 번역기; 및 상기 중간언어 번역기에서 변환한 통합목적코드를 단말 운영체제 및 하드웨어에 대응되는 바이너리코드로 해석하여 어플리케이션을 수행하는 통합목적코드 해석기로 이루어진다.
한편, 본 발명의 방법은, 이동통신 단말기에 탑재된 가상 머신을 이용해 어플리케이션을 실행하는 방법에 있어서, 특정 어플리케이션에 대한 실행 명령이 내려지면 상기 가상 머신에서는, 상기 실행 명령이 내려진 어플리케이션이 어떠한 프로그래밍 언어로 작성되었는지를 확인하는 단계; 상기 확인한 프로그래밍 언어에 따라 해당되는 프로그래밍 언어의 디컴파일러로 상기 어플리케이션을 이루는 목적코드로부터 소스코드를 추출하는 단계; 상기 추출한 소스코드를 중간코드로 변환한 상태에서 중간코드-통합목적코드 변환 규칙을 참조하여 상기 중간코드를 해당되는 통합목적코드로 변환하는 단계; 및 상기 변환한 통합목적코드를 단말 운영체제 및 하드웨어에 대응되는 바이너리코드로 해석하여 상기 어플리케이션을 수행하는 단계를 포함한다.
이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명이 적용되는 이동통신 단말기에 탑재된 가상 머신의 계층 구조도이다.
도 1에 도시된 바와 같이, 이동통신 단말기에는 하드웨어 계층에 속하는 디스플레이, 키패드, 마이크, 스피커, 메모리, CPU 등과 같은 하드웨어(10), 운영체제 계층에 속하는 O/S(예; REX 등)(11)과, 미들웨어 플랫폼 계층에 속하는 본 발명의 가상 머신(30)과, 어플리케이션 계층에 속하는 JAVA 프로그래밍 언어로 작성된 어플리케이션(이하, "JAVA 어플리케이션"이라 함)(41)와 C 프로그래밍 언어로 작성된 어플리케이션(이하, "C 어플리케이션"이라 함)(42)와 C# 프로그래밍 언어로 작성된 어플리케이션(이하, "C# 어플리케이션"이라 함)(43)이 탑재되어 있다.
본 발명에서는 콘텐츠 서버 등으로부터 다운로드받은 JAVA 어플리케이션(41), C 어플리케이션(42) 및 C# 어플리케이션(43)이 운영체제(20)에 상관없이 각 어플리케이션을 단말 내에서 실행하는 가상 머신(30)을 제공한다.
즉, 사용자가 JAVA 프로그래밍 언어로 작성된 게임을 다운로드받아 실행시키고자 할 때에 가상 머신(30)에서 이 게임을 이루는 목적코드를 디컴파일링해서 소스코드를 추출하고 이 소스코드를 중간코드로 변환한 상태에서 플랫폼 독립적인 통합목적코드로 변환하여 이 통합목적코드를 단말 운영체제 및 하드웨어에 대응되는 바이너리코드로 해석해 해당 게임을 수행한다. 마찬가지로, C 프로그래밍 언어로 작성된 문서 작성 프로그램 또는 C# 프로그래밍 언어로 작성된 이미지 뷰어 프로그램 등도 가상 머신 상에서 위와 같은 과정을 거친다.
도 2는 본 발명에 따른 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을 실행하기 위한 가상 머신에 대한 일실시예 구성도이다.
도 2에 도시된 바와 같이, 본 발명에 따른 가상 머신(30)은 어플리케이션 관리자(Application Manager)(31), JAVA 디컴파일러(JAVA Decompiler)(32), C 디컴파일러(C Decompiler)(33), C# 디컴파일러(C# Decompiler)(34), 중간언어 번역기(Intermediate-language Translator)(35), 매핑 테이블(Mapping Table)(36) 및 통합목적코드 해석기(Integrated Object Interpreter)(37)로 이루어진다.
도면에 도시된 JAVA 어플리케이션(41)은 콘텐츠 서버 등으로부터 이동통신 단말기에 제공된 것으로서, 콘텐츠 서버측에서 개발자에 의해 JAVA 컴파일러로 java 확장자를 갖는 파일이 class 확장자를 갖는 파일로 컴파일링된 형태이다. 이러한 JAVA 어플리케이션(41)은 각 class 파일 개별적으로 이동통신 단말기에 다운로드되어 저장되거나 class 압축 파일인 jar 파일로 이동통신 단말기에 다운로드되어 저장된다.
도면에 도시된 C 어플리케이션(42)도 콘텐츠 서버 등으로부터 이동통신 단말기에 제공된 것으로서, 콘텐츠 서버측에서 개발자에 의해 C 컴파일러로 컴파일링된 sal 확장자를 갖는 파일로 이동통신 단말기에 다운로드되어 저장된다.
도면에 도시된 C# 어플리케이션(43)도 콘텐츠 서버 등으로부터 이동통신 단말기에 제공된 것으로서, 콘텐츠 서버측에서 개발자에 의해 C# 컴파일러로 컴파일링된 sil 확장자를 갖는 파일로 이동통신 단말기에 다운로드되어 저장된다. 위에서 언급한 바와 같이, JAVA 어플리케이션(41)을 이루는 파일의 확장자, C 어플리케이 션(42)을 이루는 파일의 확장자, C# 어플리케이션(43)을 이루는 파일의 확장자가 서로 다름을 알 수 있다.
상기 어플리케이션 관리자(31)는 사용자 또는 단말에 의해 실행 명령이 내려진 어플리케이션이 어떠한 종류의 어플리케이션인지, 즉 JAVA 어플리케이션(41)인지 C 어플리케이션(42)인지 C# 어플리케이션(43)인지를 확인하여 해당되는 디컴파일러(32, 33, 34)에게 어플리케이션 디컴파일링을 요구한다. 이때에, 어플리케이션 관리자(31)는 어플리케이션을 이루는 파일의 확장자를 조사하여 어플리케이션이 어떠한 프로그래밍 언어로 작성된 것인지를 확인한다. 한편, 이동통신 단말기에 JAVA, C, C#으로 작성된 어플리케이션 이외에도 다른 언어로 작성된 어플리케이션이 다운로드될 수 있는 점을 고려하여, 어플리케이션 관리자(31)에 프로그래밍 언어에 관한 정보가 지속적으로 업데이트되도록 하여 신규 언어로 작성된 어플리케이션을 식별할 수 있도록 하는 것이 바람직하다.
상기 JAVA 디컴파일러(32)는 어플리케이션 관리자(31)의 요구에 따라 JAVA 어플리케이션(41)을 이루는 목적코드를 디컴파일링하여 콘텐츠 제작 시점의 컴파일링 이전의 원래 JAVA 어플리케이션(41)의 소스코드를 추출한다. 상기 C 디컴파일러(33)는 어플리케이션 관리자(31)의 요구에 따라 C 어플리케이션(42)을 이루는 목적코드를 디컴파일링하여 콘텐츠 제작 시점의 컴파일링 이전의 원래 C 어플리케이션(42)의 소스코드를 추출한다. 상기 C# 디컴파일러(34)는 어플리케이션 관리자(31)의 요구에 따라 C# 어플리케이션(43)을 이루는 목적코드를 디컴파일링하여 콘텐츠 제작 시점의 컴파일링 이전의 원래 C# 어플리케이션(43)의 소스코드를 추출한다. 위와 같은 JAVA 디컴파일러(32), C 디컴파일러(33) 및 C# 디컴파일러(34)는 공지의 기술로 쉽게 구현됨을 당업자라면 쉽게 이해할 수 있을 것이다.
상기 중간언어 번역기(35)는 JAVA 디컴파일러(32) 또는 C 디컴파일러(33) 또는 C# 디컴파일러(34)에서 추출한 소스코드를 중간코드(예; JAVA에 사용되는 바이트코드 등)으로 변환한 상태에서 매핑 테이블(36)에 정의된 중간코드-통합목적코드 변환 규칙을 참조하여 위 중간코드를 플랫폼 독립적인 통합목적코드[특히 이러한 통합목적코드는 일종의 중간언어이다]로 변환한다. 예를 들어, JAVA 어플리케이션(41)을 이루는 *.class(모든 파일)에 대한 중간코드가 중간언어 번역기(35)에서 *.j와 같은 통합목적코드로 변환된다. 이러한 *.j 파일은 본 발명의 플랫폼, 즉 통합목적코드 해석기(37)에서 해석되어져 단말 상에서 실행된다.
이러한 중간언어 번역기(35)는 어플리케이션의 소스코드를 중간코드로 변환한 상태에서 매핑 테이블(36)에 정의된 변환 규칙을 참조하여 중간코드를 통합목적코드로 변환하는데, 이때에 가상 머신(30) 상에 탑재된 각종 컴파일러의 기본 스트럭쳐를 바탕으로 하여 프로그래밍 코드 변환 작업을 수행한다.
또한, 중간언어 번역기(35)는 프로그래밍 코드 변환 작업 수행 시에 이동통신 단말기에 탑재된 운영체제(20) 및 하드웨어(10), 바람직하게는 CPU, 단말 리소스 등을 바탕으로 하여 코드 사이즈 최적화 및 변수 처리 등의 프로세스를 적용시킨다. 위와 같은 코드 변환 작업을 수행하여 중간언어 번역기(35)는 각 어플리케이션이 프로그래밍 언어적으로 결합이 가능한 중간코드인 통합목적코드를 생성하는 것이다.
상기 매핑 테이블(36)에는 JAVA 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙, C 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙 및 C# 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙이 있다.
삭제
삭제
삭제
상기 통합목적코드 해석기(37)는 중간언어 번역기(35)에서 변환한 통합목적코드를 단말 운영체제(20) 및 하드웨어(10)에 대응되는 바이너리코드로 해석하여 해당 어플리케이션을 수행한다. 이와 같이 통합목적코드 해석기(37)에서 수행되는 어플리케이션의 내용, 즉 영상 데이터는 이동통신 단말기의 디스플레이에 표시되고 오디오 데이터는 스피커로 출력된다.
도 3은 본 발명에 따른 이동통신 단말기에서 가상 머신을 이용해 어플리케이션을 실행하는 방법에 대한 일실시예 흐름도이다.
먼저, 사용자 또는 이동통신 단말기에 의해 특정 어플리케이션 실행 명령이 내려지면(300), 상기 실행 명령이 내려진 어플리케이션이 어떠한 프로그래밍 언어로 작성되었는지를 확인한다(301).
그런후, 상기 확인한 프로그래밍 언어에 따라 해당되는 디컴파일러[JAVA 디컴파일러(32) 또는 C 디컴파일러(33) 또는 C# 디컴파일러(34)]로 실행 명령이 내려진 어플리케이션을 이루는 목적코드를 디컴파일링하여 소스코드를 추출한다(302).
그리고 나서, 상기 추출한 소스코드를 중간코드로 변환한 상태에서 중간코드-바이트코드 변환 규칙을 참조하여 위 중간코드를 해당되는 통합목적코드로 변환한다(303).
그리고 나서, 상기 변환한 통합목적코드를 단말 운영체제(20) 및 하드웨어(10)에 대응되는 바이너리코드로 해석하여 해당 어플리케이션을 수행한다(304). 이에, 이동통신 단말기에서는 어플리케이션의 내용, 즉 영상 데이터를 디스플레이에 표시하고 오디오 데이터를 스피커로 출력한다(305).
이상 본 발명의 내용이 실시예를 들어 설명되었으나, 본 발명의 실시예는 본 발명의 예시에 불과하며 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다. 본 발명이 속하는 분야의 기술자는 본원의 특허청구범위에 기재된 원리 및 범위 내에서 본 발명을 여러 가지 형태로 변형 또는 변경할 수 있다.
상기와 같은 본 발명은 하나의 가상 머신에서 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을 모두 실행할 수 있으며, 이에 프로그램 개발자 등이 단말 플랫폼에 맞추어 동일한 어플리케이션에 대해서 서로 다른 프로그래밍 언어로 각각 구현하지 않아도 되며, 단말에서 어플리케이션 실행을 위한 처리가 이루어지므로 콘텐츠 서버측에서 별도의 어플리케이션 변환, 컴파일링 과정을 수행하지 않아도 되는 효과가 있다.

Claims (4)

  1. 어플리케이션을 실행하기 위한 가상 머신이 탑재된 이동통신 단말기에 있어서,
    상기 가상 머신은,
    사용자 또는 상기 이동통신 단말기에 의해 실행 명령이 내려진 어플리케이션이 어떠한 프로그래밍 언어로 작성된 어플리케이션인지를 확인하여 해당되는 디컴파일러에게 어플리케이션 디컴파일링을 요구하는 어플리케이션 관리자;
    상기 어플리케이션 관리자의 요구에 따라 상기 어플리케이션을 이루는 목적코드로부터 소스코드를 추출하는 적어도 하나의 디컴파일러;
    상기 디컴파일러에서 추출한 소스코드를 중간코드로 변환한 상태에서 매핑 테이블에 정의되어 있는 중간코드-통합목적코드 변환 규칙을 참조하여 상기 중간코드를 해당되는 통합목적코드로 변환하는 중간언어 번역기; 및
    상기 중간언어 번역기에서 변환한 통합목적코드를 상기 이동통신 단말기 운영체제 및 하드웨어에 대응되는 바이너리코드로 해석하여 어플리케이션을 수행하는 통합목적코드 해석기를 포함하는 것을 특징으로 하는 이동통신 단말기.
  2. 제 1 항에 있어서,
    상기 어플리케이션 관리자는, 어플리케이션을 이루는 파일의 확장자를 조사하여 어플리케이션이 어떠한 프로그래밍 언어로 작성된 것인지를 확인하며,
    상기 매핑 테이블에는, 자바(JAVA) 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙, 씨(C) 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙 및 씨샵(C#) 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙이 정의되어 있으며,
    상기 디컴파일러는, 자바(JAVA) 프로그래밍 언어로 작성된 어플리케이션의 목적코드로부터 소스코드를 추출하는 자바(JAVA) 디컴파일러, 씨(C) 프로그래밍 언어로 작성된 어플리케이션의 목적코드로부터 소스코드를 추출하는 씨(C) 디컴파일러 및 씨샵(C#) 프로그래밍 언어로 작성된 어플리케이션의 목적코드로부터 소스코드를 추출하는 씨샵(C#) 디컴파일러로 이루어진 것을 특징으로 하는 이동통신 단말기.
  3. 이동통신 단말기에 탑재된 가상 머신을 이용해 어플리케이션을 실행하는 방법에 있어서,
    특정 어플리케이션에 대한 실행 명령이 내려지면 상기 가상 머신에서는,
    상기 실행 명령이 내려진 어플리케이션이 어떠한 프로그래밍 언어로 작성되었는지를 확인하는 단계;
    상기 확인한 프로그래밍 언어에 따라 해당되는 프로그래밍 언어의 디컴파일러로 상기 어플리케이션을 이루는 목적코드로부터 소스코드를 추출하는 단계;
    상기 추출한 소스코드를 중간코드로 변환한 상태에서 중간코드-통합목적코드 변환 규칙을 참조하여 상기 중간코드를 해당되는 통합목적코드로 변환하는 단계; 및
    상기 변환한 통합목적코드를 단말 운영체제 및 하드웨어에 대응되는 바이너리코드로 해석하여 상기 어플리케이션을 수행하는 단계
    를 포함하는 이동통신 단말기에서 가상 머신을 이용해 어플리케이션을 실행하는 방법.
  4. 제 3 항에 있어서,
    상기 중간코드-통합목적코드 변환 규칙은 자바(JAVA) 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙, 씨(C) 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙 및 씨샵(C#) 프로그래밍 언어의 중간코드와 통합목적코드간의 변환 규칙을 포함하는 것을 특징으로 하는 이동통신 단말기에서 가상 머신을 이용해 어플리케이션을 실행하는 방법.
KR1020050089801A 2005-09-27 2005-09-27 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법 KR101195822B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050089801A KR101195822B1 (ko) 2005-09-27 2005-09-27 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050089801A KR101195822B1 (ko) 2005-09-27 2005-09-27 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법

Publications (2)

Publication Number Publication Date
KR20070035211A KR20070035211A (ko) 2007-03-30
KR101195822B1 true KR101195822B1 (ko) 2012-11-05

Family

ID=43656426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050089801A KR101195822B1 (ko) 2005-09-27 2005-09-27 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법

Country Status (1)

Country Link
KR (1) KR101195822B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101120614B1 (ko) * 2010-01-06 2012-03-20 인크로스 주식회사 어플리케이션 가공방법
KR101242479B1 (ko) * 2011-07-01 2013-03-18 한국과학기술연구원 어플리케이션 배포 시스템 및 방법
KR101254756B1 (ko) * 2011-07-26 2013-04-15 김재식 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체
KR101598819B1 (ko) * 2013-12-02 2016-03-02 한국과학기술연구원 타겟 독립적인 디버깅 정보를 이용한 코드 변환 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
KR20220064780A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 전자 장치 및 이의 제어 방법

Also Published As

Publication number Publication date
KR20070035211A (ko) 2007-03-30

Similar Documents

Publication Publication Date Title
US11354144B2 (en) Java native interface and windows universal app hooking
KR100503077B1 (ko) 자바 실행 장치 및 자바 실행 방법
KR102077360B1 (ko) 애플리케이션에 대한 중간 언어 코드로부터 네이티브 코드를 생성하는 기법
CN109948308A (zh) 代码安全保护方法、装置、电子设备和计算机可读存储介质
US8762963B2 (en) Translation of programming code
KR20020085872A (ko) 객체지향 컴퓨터 프로그램의 번역 및 실행방법
KR101195822B1 (ko) 서로 다른 프로그래밍 언어로 각각 작성된 어플리케이션을실행하기 위한 가상 머신 및 이를 이용해 이동통신단말기에서 어플리케이션을 실행하는 방법
US8214815B2 (en) Reducing the run-time cost of invoking a server page
KR20020085876A (ko) 객체지향 컴퓨터 프로그램의 로딩
US8528008B2 (en) Method for program protection based on .NET card and a system thereof
CN110309631B (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
CN110059456A (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN111597514B (zh) 安卓源代码保护方法和装置
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
KR20080021071A (ko) 컴퓨팅 환경에서 표현식을 번역하는 방법, 소프트웨어 및시스템
CN106598662B (zh) 基于android的应用加载方法及装置
US20050172263A1 (en) Methods, systems, and computer program products for integrating legacy applications into a platform-independent environment
WO2001086427A3 (en) Transformation of objects between a computer programming language and a data representation language
JP5165234B2 (ja) ジャバ言語におけるメソッド参照のサポート
US8468511B2 (en) Use of name mangling techniques to encode cross procedure register assignment
KR101024707B1 (ko) 바이트코드-투-씨 어헤드-오브-타임 컴파일러를 위한 해석기 호출 방법
Puder et al. Byte code level cross-compilation for developing web applications
CN117290042A (zh) 跨平台动态渲染app原生界面的方法及系统
CN113918214A (zh) 程序运行方法、装置、电子设备及存储介质
Macos et al. ScaMo: Realisation of an OO-functional DSL for cross platform mobile applications development

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20150921

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161005

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180921

Year of fee payment: 7