KR20110080768A - C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법 - Google Patents

C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법 Download PDF

Info

Publication number
KR20110080768A
KR20110080768A KR1020100001160A KR20100001160A KR20110080768A KR 20110080768 A KR20110080768 A KR 20110080768A KR 1020100001160 A KR1020100001160 A KR 1020100001160A KR 20100001160 A KR20100001160 A KR 20100001160A KR 20110080768 A KR20110080768 A KR 20110080768A
Authority
KR
South Korea
Prior art keywords
language
code
platform
intermediate language
server
Prior art date
Application number
KR1020100001160A
Other languages
English (en)
Other versions
KR101080804B1 (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 KR1020100001160A priority Critical patent/KR101080804B1/ko
Publication of KR20110080768A publication Critical patent/KR20110080768A/ko
Application granted granted Critical
Publication of KR101080804B1 publication Critical patent/KR101080804B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4868Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with creation or replication
    • 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/54Interprogram communication

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)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템은, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 개발자 플랫폼; 및 상기 개발자 플랫폼으로부터 상기 중간 언어 코드를 수신하고, 상기 중간 언어 코드를 상기 애플리케이션이 전달될 플랫폼에 대응되는 바이너리 코드로 변환하는 서버를 포함할 수 있다. 상기 시스템은, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 개발자 플랫폼; 및 변환된 상기 중간 언어 코드를 수신하는 타겟 플랫폼을 포함하되, 상기 타겟 플랫폼은 상기 중간 언어 코드를 상기 타겟 플랫폼에 대응되는 바이너리 코드로 변환하도록 구성될 수도 있다.

Description

C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법{SYSTEM AND METHOD FOR DISTRIBUTING APPLICATION WRITTEN IN PROGRAMMING LANGUAGE BASED ON C LANGUAGE}
실시예들은 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법에 관한 것이다.
기존의 C 또는 C++ 등의 프로그래밍 언어(programming language)로 작성된 애플리케이션(application)들은, 애플리케이션이 사용될 타겟 플랫폼(platform)에 맞게 플랫폼에 종속적인 중간 언어나 실행파일의 형태로 변환되어 배포된다. 배포된 파일은 타겟 플랫폼에서 실행 환경에 따라 인터프리터(interpreter) 방식 또는 바이너리 코드(binary code) 처리 방식을 통해 실행된다.
인터프리터 방식은 타겟 플랫폼에 설치된 가상 머신(virtual machine)을 통해 애플리케이션 코드를 실행하는 방식을 의미하며, 바이너리 코드 처리 방식은 애플리케이션 코드를 타겟 플랫폼에 맞는 바이너리 코드로 변환하여 실행하는 방식을 의미한다. 예를 들어, BREW(Binary Runtime Environment for Wireless) 또는 WIPI(Wireless Internet Platform for Interoperability) 플랫폼은 애플리케이션 코드를 바이너리 코드 처리 방식으로 실행하고, LLVM(Low Level Virtual Machine) 플랫폼은 바이너리 코드 처리 방식과 인터프리터 방식 모두를 지원한다.
그러나 이러한 종래의 방법에서는 C 또는 C++ 등의 언어로 작성된 애플리케이션을 타겟 플랫폼에 종속적인 중간 언어 또는 실행 파일의 형태로 배포하므로, 타겟 플랫폼이 달라지면 개발자 측에서 애플리케이션을 타겟 플랫폼에 맞게 다시 컴파일(compile)하여 배포해야 하는 문제점이 있다.
본 발명의 일 측면에 따르면, C 또는 C++ 등의 프로그래밍 언어를 사용하여 작성된 애플리케이션(application)을 타겟 플랫폼에 독립적인 중간 언어 코드 형태로 배포하고, 서버 또는 애플리케이션을 사용할 타겟 플랫폼에서 중간 언어 코드를 타겟 플랫폼에 맞게 컴파일(compile)하도록 구성된 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법을 제공할 수 있다.
일 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템은, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 개발자 플랫폼; 및 상기 개발자 플랫폼으로부터 상기 중간 언어 코드를 수신하고, 상기 중간 언어 코드를 상기 애플리케이션이 전달될 플랫폼에 대응되는 바이너리 코드로 변환하는 서버를 포함하여 구성될 수 있다.
다른 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템은, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 개발자 플랫폼; 및 변환된 상기 중간 언어 코드를 수신하는 타겟 플랫폼을 포함하되, 상기 타겟 플랫폼은 상기 중간 언어 코드를 상기 타겟 플랫폼에 대응되는 바이너리 코드로 변환하도록 구성될 수 있다.
일 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법은, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 단계; 상기 중간 언어 코드를 서버에 전송하는 단계; 상기 서버에서 상기 중간 언어 코드를 애플리케이션이 전달될 타겟 플랫폼에 대응되는 바이너리 코드로 변환하는 단계; 및 상기 바이너리 코드를 상기 서버로부터 상기 타겟 플랫폼에 전송하는 단계를 포함할 수 있다.
다른 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법은, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 단계; 상기 중간 언어 코드를 타겟 플랫폼에 전송하는 단계; 및 상기 타겟 플랫폼에서 상기 중간 언어 코드를 상기 타겟 플랫폼에 대응되는 바이너리 코드로 변환하는 단계를 포함할 수 있다.
본 발명의 일 측면에 따르면, C 또는 C++ 등의 프로그래밍 언어를 사용하여 작성된 애플리케이션(application)을 타겟 플랫폼에 독립적인 중간 언어 코드 형태로 서버에 전송한 후, 서버에서 중간 언어 코드를 타겟 플랫폼에 최적화된 실행파일로 컴파일(compile)하여 타겟 플랫폼에 전송하거나 또는 타겟 플랫폼에서 중간 언어 코드를 적당한 실행파일로 컴파일할 수 있다. 따라서 타겟 플랫폼에 최적화된 실행파일을 배포할 수 있으며, 타겟 플랫폼이 달라지더라도 개발자 측에서 애플리케이션의 소스 코드를 다시 컴파일할 필요가 없어지는 이점이 있다.
도 1은 일 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템을 도시한 개략적인 블록도이다.
도 2는 다른 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템을 도시한 개략적인 블록도이다.
도 3은 일 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법의 순서도이다.
도 4는 다른 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법의 순서도이다.
이하에서는, 도면을 참조하여 실시예를 구체적으로 설명한다. 그러나, 본 발명이 하기 실시예에 의하여 제한되는 것은 아니다.
도 1은 일 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션(application)의 배포 시스템의 구성을 나타내는 개략적인 블록도이다.
도 1을 참조하면, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템은 개발자 플랫폼(10) 및 서버(20)를 포함할 수 있다. 또한, 상기 시스템은 서버(20)와 통신하는 하나 이상의 타겟 플랫폼(30, 31, 32)을 더 포함할 수도 있다.
본 명세서에서 플랫폼(platform)이란 하나 또는 복수 개의 처리장치(예컨대, CPU 등)를 포함하는 하드웨어, 상기 하드웨어를 이용하여 동작하는 운영체제(Operating System; OS), 또는 상기 하드웨어 및 운영체제 모두를 지칭한다. 예컨대 플랫폼은 데스크탑 컴퓨터(desktop computer), 노트북(notebook) 컴퓨터, 휴대전화(cellular phone) 등의 이동 장치(mobile device), PDA(Personal Digital Assistant) 등일 수 있으나 이에 한정되는 것은 아니다.
개발자 플랫폼(10)은 애플리케이션 개발자 측의 플랫폼으로서, 개발자 플랫폼(10)에서 애플리케이션이 소스 코드(source code)의 형태로 작성된다. 이때 개발자 플랫폼(10)에서는 C언어 기반의 프로그래밍 언어로 소스 코드를 작성할 수 있다. 본 명세서에서 "C언어 기반의 프로그래밍 언어"란 C언어 자체, C언어를 확장한 객체 지향형 언어인 C++언어, C 프로그래밍 언어에 스몰토크(smalltalk) 스타일의 메시지 구문을 추가한 객체 지향형 언어인 오브젝티브-C(objective-C) 언어, 또는 C/C++언어에 기반하여 이를 수정 및/또는 변형하여 구성되는 임의의 프로그래밍 언어를 지칭하도록 의도된다.
또한 본 명세서에서 "중간 언어 코드"란 플랫폼의 CPU 종류(예컨대, x86, ARM, PPC 등) 및/또는 운영체제의 종류(예컨대, Windows, Linux 등) 등과 같은 플랫폼의 특성에 의존하지 않으며, 플랫폼에 대해 독립적인 형태의 코드를 의미한다. 중간 언어 코드는 추후 컴파일(compile)시에 특정 플랫폼에 대응되는 바이너리(binary) 코드로 변환하여 실행하는 것이 가능하다. 예를 들어, 중간 언어 코드는 소정 규격의 가상 머신(virtual machine)에 의하여 실행될 수 있다.
일 실시예에서, 개발자 플랫폼(10)은 매핑(mapping) 정보(101) 및 중간 언어 변환부(102)를 포함할 수 있다. 매핑 정보(101)는 C언어 기반의 프로그래밍 언어와 플랫폼 독립적인 중간 언어 사이의 변환 규칙이 정의되어 있는 정보를 의미한다. 예를 들어, 매핑 정보(101)는 C언어의 각 지시자를 이에 대응되는 중간 언어 코드와 매칭시킨 테이블(table)의 형태로 저장될 수도 있다. 중간 언어 변환부(102)는 상기 매핑 정보(101)를 이용하여, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 중간 언어 코드로 변환할 수 있다.
예를 들어, C언어에서 사용하는 "int" 라는 타입(type) 지시자는 16비트(bit) 머신 플랫폼에서는 16비트 크기를 의미하는 반면 32 비트 머신 플랫폼에서는 32 비트 크기를 의미한다. 이러한 이유 때문에 C언어를 이용하여 애플리케이션을 작성하는 경우 애플리케이션이 사용될 플랫폼의 사양에 맞추어 "int" 지시자를 사용해야 한다. 본 발명의 실시예들에서는 C언어의 "int" 지시자가 이에 대응되는 중간 언어 코드로 변환되어 배포되며, 추후 중간 언어 코드의 컴파일시에 타겟 플랫폼이 16비트 머신인지 또는 32비트 머신인지에 따라 상기 중간 언어 코드를 적절한 비트 크기를 의미하는 바이너리 코드로 컴파일할 수 있다.
개발자 플랫폼(10)에서 생성된 애플리케이션의 중간 언어 코드는 서버(20)로 송신될 수 있다. 개발자 플랫폼(10)은 다양한 무선 및/또는 유선 통신 수단에 의하여 중간 언어 코드를 서버(20)에 송신할 수 있으며, 개발자 플랫폼(10)과 서버(20) 사이의 통신 방식은 특정 방식으로 한정되지 않는다. 서버(20)는 또한 하나 이상의 타겟 플랫폼(30, 31, 32)과 통신할 수 있다. 각각의 타겟 플랫폼(30, 31, 32)은 동일한 처리장치 및/또는 동일한 운영체제를 사용하는 것일 수도 있으나, 또는 서로 상이한 처리장치 및/또는 운영체제를 사용하는 것일 수도 있다.
예를 들어, 서버(20)가 자동으로 또는 타겟 플랫폼(30)의 다운로드(download) 요청에 의해 하나의 타겟 플랫폼(30)에 애플리케이션을 배포하는 경우를 가정하여 설명한다. 우선, 서버(20)은 중간 언어 코드로 된 애플리케이션을 해당 타겟 플랫폼(30)에 대응되는 형태의 바이너리 코드로 변환할 수 있다. 변환된 바이너리 코드는 타겟 플랫폼(30)에서 실행 가능한 실행파일의 형태일 수 있으며, 예컨대 타겟 플랫폼(30)이 윈도우(Windows) 운영체제를 이용하는 경우 바이너리 코드는 "exe" 확장자를 갖는 실행파일일 수 있다. 변환된 바이너리 코드가 서버(20)로부터 타겟 플랫폼(30)에 전송됨으로써 애플리케이션의 배포가 이루어질 수 있다.
일 실시예에서, 서버(20)는 중간 언어 코드를 다양한 형태의 바이너리 코드로 변환하기 위한 중간 언어 해석부(201)를 포함할 수 있다. 중간 언어 해석부(201)는 플랫폼 독립적인 중간 언어 코드를 컴파일하여 각 플랫폼에 대해 최적화된 형태의 바이너리 코드로 변환할 수 있다. 이를 위하여, 중간 언어 해석부(201)는 중간 언어 코드를 공지된 플랫폼의 유형 별 바이너리 코드로 변환하기 위한 수단을 포함할 수 있으며, 예컨대 가상머신 컴파일러(VM compiler) 등이 이에 해당될 수 있다.
한편 서버(20)에는 서버(20)에 접속한 타겟 플랫폼(30, 31, 32)의 프로파일(profile)(예컨대, CPU 및/또는 운영체제의 종류 등)이 전송된다. 따라서, 중간 언어 해석부(201)는 애플리케이션이 배포될 해당 타겟 플랫폼(30)의 프로파일을 이용하여 코드 사이즈 최적화 및 변수 처리 등을 수행함으로써, 중간 언어 코드를 타겟 플랫폼(30)에 최적화된 바이너리 코드(예컨대, 실행파일)로 변환할 수 있다.
도 2는 다른 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템의 구성을 도시한 개략적인 블록도이다. 본 명세서에 기재된 실시예들의 설명에 있어서, 전술한 실시예로부터 당업자가 용이하게 이해할 수 있는 구성에 대해서는 설명을 생략하며, 전술한 실시예와의 차이점에 대해 중점적으로 설명한다.
도 2를 참조하면, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템은 개발자 플랫폼(10) 및 하나 이상의 타겟 플랫폼(30, 31, 32)을 포함할 수 있다. 상기 시스템은 개발자 플랫폼(10)과 타겟 플랫폼(30, 31, 32)을 중개하는 서버(20)를 더 포함할 수도 있다.
개발자 플랫폼(10)은 배포될 애플리케이션을 중간 언어 코드로 변환하여 서버(20)로 전송할 수 있다. 이때 도 1을 참조하여 전술한 실시예와 달리, 서버(20)는 중간 언어 코드를 바이너리 코드로 변환하지 않고 단지 하나 이상의 타겟 플랫폼(30, 31, 32)에 중간 언어 코드를 전송하는 역할만을 수행할 수 있다.
상기 실시예에서, 하나 이상의 타겟 플랫폼(30, 31, 32)은 각각 중간 언어 코드를 바이너리 코드로 변환하기 위한 중간 언어 해석부(301, 311, 312)를 포함할 수 있다. 즉, 중간 언어 해석부(301)는 서버(20)로부터 중간 언어 코드를 수신하고 이를 타겟 플랫폼(30)에 대응되는 바이너리 코드로 컴파일할 수 있다. 마찬가지로, 중간 언어 해석부(311)는 중간 언어 코드를 타겟 플랫폼(31)에 대응되는 바이너리 코드로 컴파일할 수 있으며, 중간 언어 해석부(321)는 중간 언어 코드를 타겟 플랫폼(32)에 대응되는 바이너리 코드로 컴파일할 수 있다. 예컨대 각각의 중간 언어 해석부(301, 311, 312)는 소정 규격의 가상머신 컴파일러일 수도 있다.
이상에서 살펴본 실시예들에 따르면, 개발자 플랫폼(10)에서 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션을 플랫폼에 독립적인 중간 언어 코드의 형태로 서버(20)에 저장한 후, 서버(20) 또는 타겟 플랫폼(30, 31, 32)에서 중간 언어 코드를 타겟 플랫폼(30, 31, 32)에 대응되는 바이너리 코드로 변환할 수 있다. 따라서, 타겟 플랫폼(30, 31, 32)에 최적화된 실행파일의 형태로 애플리케이션을 배포할 수 있으며, 애플리케이션이 배포될 타겟 플랫폼(30, 31, 32)의 종류가 달라지더라도 개발자 플랫폼(10)에서 소스 코드를 다시 컴파일할 필요가 없다.
또한, 종래의 중간 언어 코드인 JAVA 바이트코드(Bytecode) 또는 CIL(Common Intermediate Language) 코드를 이용하는 경우 애플리케이션이 소스 코드의 작성 시점에서부터 JAVA 언어 또는 .NET 호환 언어에 의하여 작성되어야 하는 제약이 있는 반면에, 본 발명의 실시예들에서는 C언어 기반의 프로그래밍 언어로 작성된 소스 코드를 중간 언어 코드로 변환하므로 C언어가 갖는 아키텍처(architecture) 특성을 유지하는 한편 이미 존재하는 다양한 C언어 라이브러리(library)를 활용하는 것이 가능한 이점이 있다.
도 3은 일 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법의 각 단계를 도시한 순서도이다.
도 3을 참조하면, 개발자 측의 플랫폼에서, C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼에 독립적인 중간 언어 코드로 변환할 수 있다(S11). 변환은 미리 저장된 C언어 기반의 프로그래밍 언어와 중간 언어 코드 사이의 매칭 정보를 이용하여 수행될 수 있다. 그 결과 애플리케이션의 소스 코드를, 특정 CPU 및/또는 운영 체제에 의존적이지 않은 중간 언어 코드로 변환할 수 있다.
다음으로, 변환된 중간 언어 코드를 개발자 측의 플랫폼으로부터 서버에 전송할 수 있다(S12). 전송은 다양한 유선 및/또는 무선 통신 수단을 이용하여 수행될 수 있다. 또한, 서버는 하나 이상의 동일하거나 또는 서로 상이한 종류의 타겟 플랫폼과 통신할 수 있으며, 타겟 플랫폼의 CPU 및/또는 운영체제 정보 등과 같은 타겟 플랫폼의 프로파일을 수신할 수 있다.
다음으로, 서버는 자동으로 또는 하나 이상의 타겟 플랫폼으로부터의 다운로드 요청에 의해, 중간 언어 코드의 형태로 되어 있는 애플리케이션을 해당 타겟 플랫폼에 대응되는 바이너리 코드로 변환할 수 있다(S13). 이는 전술한 타겟 플랫폼의 프로파일을 이용하여 중간 언어 코드를 타겟 플랫폼에서 실행 가능한 실행파일 등으로 변환하는 것에 의하여 수행될 수 있다.
다음으로, 변환된 바이너리 코드를 서버로부터 해당 타겟 플랫폼에 전송할 수 있다(S14). 서버에서 중간 언어 코드가 타겟 플랫폼에 대응되는 바이너리 코드의 형태로 변환되어 타겟 플랫폼에 전송되므로, 타겟 플랫폼에서는 애플리케이션을 타겟 플랫폼에 최적화된 실행파일 등의 형태로 다운로드하게 되는 이점이 있다.
도 4는 다른 실시예에 따른 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법의 각 단계를 도시한 순서도이다.
도 4를 참조하면, 먼저 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 중간 언어 코드로 변환할 수 있다(S21). 다음으로, 변환된 중간 언어 코드를 서버에 전송할 수 있다(S22). 이는 도 3을 참조하여 전술한 실시예의 단계(S11 및 S12)와 동일할 수 있으므로 자세한 설명을 생략한다.
다음으로, 서버는 자동으로 또는 하나 이상의 타겟 플랫폼으로부터의 다운로드 요청에 의해, 중간 언어 코드를 해당 타겟 플랫폼에 전송할 수 있다(S23). 도 3을 참조하여 전술한 실시예와 달리, 본 실시예에서 서버는 개발자 플랫폼에서 수신된 애플리케이션의 중간 언어 코드를 변환하지 않고 단지 하나 이상의 타겟 플랫폼에 배포하는 기능만을 수행한다.
다음으로, 중간 언어 코드를 수신한 타겟 플랫폼에서, 중간 언어 코드를 타겟 플랫폼에 대응되는 바이너리 코드로 변환할 수 있다(S24). 예컨대, 각각의 타겟 플랫폼은 소정의 규격의 가상머신 컴파일러를 이용하여 중간 언어 코드를 타겟 플랫폼에서 실행 가능한 실행파일의 형태로 컴파일할 수 있다.
이상에서 설명한 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법은 도면에 제시된 순서도를 참조로 하여 설명되었다. 간단히 설명하기 위하여 상기 방법은 일련의 블록들로 도시되고 설명되었으나, 본 발명은 상기 블록들의 순서에 한정되지 않고, 몇몇 블록들은 다른 블록들과 본 명세서에서 도시되고 기술된 것과 상이한 순서로 또는 동시에 일어날 수도 있으며, 동일한 또는 유사한 결과를 달성하는 다양한 다른 분기, 흐름 경로, 및 블록의 순서들이 구현될 수 있다. 또한, 본 명세서에서 기술되는 방법의 구현을 위하여 도시된 모든 블록들이 요구되지 않을 수도 있다.
또한 본 명세서에 기술된 실시예는 전적으로 하드웨어이거나, 부분적으로 하드웨어이고 부분적으로 소프트웨어이거나, 또는 전적으로 소프트웨어인 측면을 가질 수 있다. 본 명세서에서 "부(unit)", "장치", "수단" 또는 "시스템" 등은 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어 등 컴퓨터 관련 엔티티(entity)를 지칭한다. 예를 들어, 상기 컴퓨터 관련 엔티티는 실행중인 프로세스(process), 프로세서(processor), 객체(object), 실행파일(executable), 실행 스레드(thread of execution), 프로그램, 및/또는 컴퓨터일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 컴퓨터에서 실행중인 애플리케이션 및 컴퓨터의 양쪽이 모두에 해당될 수도 있다.
한편, 본 명세서에 기술된 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법, 또는 이들의 어떤 측면이나 부분은, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 기타 임의의 컴퓨터로 판독 가능한 기록 매체와 같은 유형 매체에 포함된 프로그램 코드(즉, 명령어)의 형태로 구현될 수도 있다. 상기 프로그램 코드는 컴퓨터와 같은 장치에 로드(load)되어 실행되며, 이때 상기 장치가 본 발명을 실시하기 위한 시스템에 해당된다.
이상에서 살펴본 본 발명은 도면에 도시된 실시예들을 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다. 그러나, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 한다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.

Claims (9)

  1. C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 개발자 플랫폼; 및
    상기 개발자 플랫폼으로부터 상기 중간 언어 코드를 수신하고, 상기 중간 언어 코드를 상기 애플리케이션이 전달될 플랫폼에 대응되는 바이너리 코드로 변환하는 서버를 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템.
  2. 제 1항에 있어서,
    상기 서버로부터 상기 바이너리 코드를 수신하는 타겟 플랫폼을 더 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템.
  3. 제 1항에 있어서,
    상기 개발자 플랫폼은,
    상기 C언어 기반의 프로그래밍 언어와 상기 중간 언어 사이의 매핑 정보; 및
    상기 매핑 정보를 이용하여 상기 소스 코드를 상기 중간 언어 코드로 변환하는 중간 언어 변환부를 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템.
  4. C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 개발자 플랫폼; 및
    변환된 상기 중간 언어 코드를 수신하는 타겟 플랫폼을 포함하되,
    상기 타겟 플랫폼은 상기 중간 언어 코드를 상기 타겟 플랫폼에 대응되는 바이너리 코드로 변환하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템.
  5. 제 4항에 있어서,
    상기 개발자 플랫폼으로부터 상기 중간 언어 코드를 수신하여 상기 타겟 플랫폼에 전송하는 서버를 더 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템.
  6. 제 4항에 있어서,
    상기 개발자 플랫폼은,
    상기 C언어 기반의 프로그래밍 언어와 상기 중간 언어 사이의 매핑 정보; 및
    상기 매핑 정보를 이용하여 상기 소스 코드를 상기 중간 언어 코드로 변환하는 중간 언어 변환부를 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템.
  7. C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 단계;
    상기 중간 언어 코드를 서버에 전송하는 단계;
    상기 서버에서 상기 중간 언어 코드를 애플리케이션이 전달될 타겟 플랫폼에 대응되는 바이너리 코드로 변환하는 단계; 및
    상기 바이너리 코드를 상기 서버로부터 상기 타겟 플랫폼에 전송하는 단계를 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법.
  8. C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 소스 코드를 플랫폼 독립적인 중간 언어 코드로 변환하는 단계;
    상기 중간 언어 코드를 타겟 플랫폼에 전송하는 단계; 및
    상기 타겟 플랫폼에서 상기 중간 언어 코드를 상기 타겟 플랫폼에 대응되는 바이너리 코드로 변환하는 단계를 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법.
  9. 제 8항에 있어서,
    상기 중간 언어 코드를 타겟 플랫폼에 전송하는 단계는,
    상기 중간 언어 코드를 서버에 전송하는 단계; 및
    상기 서버에서 상기 중간 언어 코드를 상기 타겟 플랫폼에 전송하는 단계를 포함하는 것을 특징으로 하는 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 방법.
KR1020100001160A 2010-01-07 2010-01-07 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법 KR101080804B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100001160A KR101080804B1 (ko) 2010-01-07 2010-01-07 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100001160A KR101080804B1 (ko) 2010-01-07 2010-01-07 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20110080768A true KR20110080768A (ko) 2011-07-13
KR101080804B1 KR101080804B1 (ko) 2011-11-07

Family

ID=44919619

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100001160A KR101080804B1 (ko) 2010-01-07 2010-01-07 C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101080804B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101349631B1 (ko) * 2011-12-07 2014-01-09 한국과학기술연구원 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체
KR20150063800A (ko) * 2013-12-02 2015-06-10 한국과학기술연구원 자바 스크립트가 포함된 html 문서를 이용한 애플리케이션 배포 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101349631B1 (ko) * 2011-12-07 2014-01-09 한국과학기술연구원 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체
KR20150063800A (ko) * 2013-12-02 2015-06-10 한국과학기술연구원 자바 스크립트가 포함된 html 문서를 이용한 애플리케이션 배포 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체

Also Published As

Publication number Publication date
KR101080804B1 (ko) 2011-11-07

Similar Documents

Publication Publication Date Title
US9417857B2 (en) Unifying static and dynamic compiler optimizations in source-code bases
JP5650240B2 (ja) オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術
JP5951022B2 (ja) デコード時間命令最適化を用いた、強化されたアプリケーション・バイナリ・インターフェース(abi)のためのコードのリンク
CN106415495B (zh) 用于应用开发的编程系统和语言
WO2016188059A1 (zh) 一种云编译实现Java应用安装的方法、装置及系统
US9141360B1 (en) Web application module translation service
JP2014531680A (ja) デコード時間命令最適化を用いた、強化されたアプリケーション・バイナリ・インターフェース(abi)のためのコードのコンパイル
US10521208B2 (en) Differentiated static analysis for dynamic code optimization
Donovan et al. PNaCl: Portable native client executables
US9038038B1 (en) Just in time cloud compilation
US11366684B2 (en) Import mechanism for hardware intrinsics
Shuja et al. SIMDOM: a framework for SIMD instruction translation and offloading in heterogeneous mobile architectures
EP1214645A2 (en) Translating and executing object-oriented computer programs
KR101242479B1 (ko) 어플리케이션 배포 시스템 및 방법
KR101092373B1 (ko) 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법
Engelke et al. Instrew: Leveraging LLVM for high performance dynamic binary instrumentation
Li et al. Bringing webassembly to resource-constrained iot devices for seamless device-cloud integration
KR101080804B1 (ko) C언어 기반의 프로그래밍 언어로 작성된 애플리케이션의 배포 시스템 및 방법
US10684873B2 (en) Efficient data decoding using runtime specialization
KR101349631B1 (ko) 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체
KR101083271B1 (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
AU766361B2 (en) Loading object-oriented computer programs
US20040025009A1 (en) Method and apparatus for acceleration of multimedia content
WO2022198586A1 (en) Method of providing application executable by a plurality of heterogeneous processor architectures and related devices
KR101277145B1 (ko) 공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체

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
FPAY Annual fee payment

Payment date: 20141103

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151102

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee