KR20140057547A - 런타임 시스템 - Google Patents

런타임 시스템 Download PDF

Info

Publication number
KR20140057547A
KR20140057547A KR1020147003539A KR20147003539A KR20140057547A KR 20140057547 A KR20140057547 A KR 20140057547A KR 1020147003539 A KR1020147003539 A KR 1020147003539A KR 20147003539 A KR20147003539 A KR 20147003539A KR 20140057547 A KR20140057547 A KR 20140057547A
Authority
KR
South Korea
Prior art keywords
interface
operating system
type
abstract
language
Prior art date
Application number
KR1020147003539A
Other languages
English (en)
Other versions
KR101795844B1 (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 마이크로소프트 코포레이션
Publication of KR20140057547A publication Critical patent/KR20140057547A/ko
Application granted granted Critical
Publication of KR101795844B1 publication Critical patent/KR101795844B1/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
    • 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
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

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

Abstract

다양한 실시예는 프로그래밍 언어와는 무관하게, 운영 체제와 연관된 하나 이상의 인터페이스를 기술하는 능력을 제공한다. 이와 달리 또는 그에 더해, 특정 프로그래밍 언어와 연관된 컴파일러가 독립적인 인터페이스 기술(들)을 특정 프로그래밍 언어에 매핑하도록 구성될 수 있다. 몇몇 실시예에서, 애플리케이션은 운영 체제의 하나 이상의 인터페이스를 프로그램에 따라 결정하도록 구성될 수 있다.

Description

런타임 시스템{RUNTIME SYSTEM}
오늘날 컴퓨터들은 하드웨어 및 소프트웨어 리소스들에 대한 액세스를 관리하는 운영 체제를 포함한다. 결과적으로, 운영 체제는 프로그래머 및/또는 애플리케이션이 이들 리소스를 액세스할 수 있도록 해주는 애플리케이션 프로그래밍 인터페이스(API)와 같은 다양한 타입의 인터페이스를 포함할 수 있다. 몇몇 경우, 인터페이스들은 염두에 둔 특정 프로그래밍 언어로 프로그래밍된다. 클라이언트 애플리케이션이 특정 프로그래밍 언어로 작성된 경우, 이 클라이언트 애플리케이션은 특정 프로그래밍 언어에 고유한 방식으로 인터페이스를 액세스할 수 있다. 그러나, 인터페이스의 언어와 다른 언어로 작성된 클라이언트 애플리케이션은 때때로 인터페이스를 호출하기 위해 결국에는 추가의 코드 및/또는 래퍼 함수(wrapper functions)를 이용하게 될 수 있다.
일반적으로, 인터페이스들은 운영 체제 외부에 문서화된다. 성공적으로 인터페이스를 호출하고 래퍼 함수를 작성하기 위해, 프로그래머는 어떤 인터페이스들이 이용가능한지, 연관된 호출 파라미터가 무엇인지 등을 결정하기 위해 외부 문서를 참고한다. 새로운 버전의 운영 체제는 새로운 인터페이스, 구 인터페이스에 대한 수정, 및 더 이상 쓸모없는 인터페이스들의 제거를 포함할 수 있다. 따라서, API의 현재 세트를 유지하기 위해, 프로그래머는 운영 체제의 각각의 새로운 버전에 대해 외부 문서를 참고해야 한다. 이것은 때때로 인터페이스가 운영 체제에 출시되는 시점과 그 인터페이스가 프로그램에 포함될 수 있는 시점 간에 지연을 야기할 수 있다.
본 요약부는 이하 발명의 상세한 설명에서 보다 자세히 기술될 개념들 중 선택된 것들을 단순화된 형식으로 소개하기 위해 제공되는 것이다. 본 요약부는 청구항에 기재된 청구대상의 주된 사항 또는 핵심 사항을 밝히기 위한 것이 아니며, 청구항에 기재된 청구대상의 범위를 한정하기 위한 것은 더더욱 아니다.
다양한 실시예는 프로그래밍 언어와 무관하게, 운영 체제와 연관된 하나 이상의 인터페이스(들)를 기술하는 능력을 제공한다. 이와 달리 또는 그에 더해, 특정 프로그래밍 언어와 연관된 컴파일러가 독립적인 인터페이스 기술(들)을 특정 프로그래밍 언어에 매핑하도록 구성될 수 있다. 몇몇 실시예에서, 애플리케이션은 운영 체제의 하나 이상의 인터페이스(들)를 프로그램에 따라 결정하도록 구성될 수 있다.
몇몇 실시예는 추상 타입 시스템(abstract type system)을 이용하여 객체 지향 방식으로 운영 체제의 하나 이상의 인터페이스(들)를 모델링하는 능력을 제공한다. 몇몇 실시예에서, 확장형 인터페이스 정의 언어(IDL)는 하나 이상의 인터페이스(들) 간의 관계를 기술하기 위한 신택스(syntax)를 포함할 수 있다. 몇몇 실시예에서, 바이너리 계약(binary contract)은 추상 타입 시스템과 연관된 행위(behavior)를 노출시키도록 구성될 수 있다.
도면 전반에 걸쳐 유사한 특징부들을 참조하는데 동일한 참조번호가 사용된다.
도 1은 본 명세서에서 기술된 다양한 원리들이 하나 이상의 실시예에 따라 채용될 수 있는 동작 환경을 나타내는 도면.
도 2는 하나 이상의 실시예에 따른 아키텍처를 나타내는 도면.
도 3은 하나 이상의 실시예에 따른 방법의 단계들을 나타내는 흐름도.
도 4는 하나 이상의 실시예에 따른 관계도를 나타내는 도면.
도 5는 하나 이상의 실시예를 구현하는데 사용될 수 있는 예시적인 시스템을 나타내는 도면.
개요
다양한 실시예는 프로그래밍 언어와 무관하게, 운영 체제와 연관된 하나 이상의 인터페이스(들)를 기술하는 능력을 제공한다. 추상 타입 시스템이 인터페이스 정의 언어(IDL)와 연계하여 인터페이스를 기술 및/또는 정의하도록 구성될 수 있다. 몇몇 실시예에서, 인터페이스는 객체 지향 방식으로 기술될 수 있다. 이와 달리 또는 그에 더해, 특정 프로그래밍 언어와 연관된 컴파일러가 언어 독립적인 인터페이스 기술(들)을 특정 프로그래밍 언어의 적절한 구성(appropriate constructs)에 매핑하도록 구성될 수 있다. 이와 달리 또는 그에 더해, 프로그래밍 언어 애플리케이션 런타임 환경은 언어 독립적인 인터페이스 기술(들)을 특정 런타임 환경에서의 적절한 구성에 동적으로 (예를 들어, 런타임 실행 동안) 매핑하도록 구성될 수 있다. 몇몇 실시예에서, 애플리케이션은 독립적인 인터페이스 기술(들)을 프로그램에 따라 결정하도록 구성될 수 있다. 몇몇 경우, 독립적인 인터페이스 기술(들)은 머신 판독가능 포맷으로 저장될 수 있다.
이하의 설명에서, "동작 환경"이라는 제목의 단락이 제공되어 하나 이상의 실시예가 채용될 수 있는 하나의 환경을 설명한다. 이에 이어, "운영 체제 컴포넌트 액세스"라는 제목의 단락이, 다수의 프로그래밍 언어들이 시스템 컴포넌트들을 프로그램에 따라 액세스할 수 있게 해주는 아키텍처를 설명한다. 다음으로, "추상 타입 시스템을 이용한 객체 지향 언어의 모델링"이라는 제목의 단락이, 추상 타입 시스템이 확장형 IDL과 연계하여 운영 체제 인터페이스들을 객체 지향 방식으로 기술하는 방식을 설명한다. 마지막으로, "예시적인 시스템"이라는 단락이, 하나 이상의 실시예를 구현하는데 이용될 수 있는 예시적인 시스템을 설명한다.
이하에서 설명될 다양한 실시예들에 대한 개요가 제공되었으며, 이제 하나 이상의 실시예가 구현될 수 있는 예시적인 동작 환경을 설명한다.
동작 환경
도 1은 하나 이상의 실시예에 따른 동작 환경을 참조 번호(100)로 나타낸다. 환경(100)은 하나 이상의 프로세스(들)(104) 및 하나 이상의 컴퓨터 판독가능 저장 매체(106)를 구비한 컴퓨팅 장치(102) 포함한다. 컴퓨터 판독가능 저장 매체는 예를 들어 일반적으로 컴퓨팅 장치와 연관된 휘발성 및 비휘발성 메모리 및/또는 저장 매체의 모든 형태를 포함할 수 있으나 여기에 국한되지는 않는다. 이러한 매체는 ROM, RAM, 플래시 메모리, 하드 디스크, 착탈가능 매체 등을 포함할 수 있다. 컴퓨팅 장치의 하나의 특정 예는 이하의 도 5에서 도시 및 설명된다.
또한, 컴퓨팅 장치(102)는 운영 체제(OS)(108) 및 연관된 운영 체제 인터페이스(들)(110)를 포함한다. 별개의 모듈로서 도시되어 있지만, 운영 체제(108) 및 운영 체제 인터페이스(들)(110)는 청구된 발명의 범주를 벗어나지 않으면서 별개의 모듈, 통합된 모듈 또는 이들의 임의의 조합으로 구현될 수 있음을 이해할 것이다. 운영 체제(108)는 컴퓨팅 장치(102)의 소프트웨어 및/또는 하드웨어 리소스(들)를 관리하도록 구성된 기능을 나타낸다. 운영 체제 인터페이스(들)(110)는 예를 들어 메모리 관리, 파일 관리, 서비스, 기능들, 리소스 관리, 주변 장치 관리 등과 같은, 운영 체제(108)에 의해 제공되는 서비스 및/또는 기능에 대한 프로그램적 액세스를 나타낸다.
컴퓨팅 장치(102)는 하나 이상의 인터페이스(들)를 기술하도록 구성된 하나 이상의 파일(들)을 나타내는 하나 이상의 기술 언어 파일(들)(112)을 포함한다. 몇몇 실시예에서, 운영 체제 인터페이스(들)(110)와 같은 인터페이스는 운영 체제와 연관될 수 있다. 기술 언어 파일들은 예를 들어 인터페이스 정의 언어(IDL), 확장가능 마크업 언어(XML) 등과 같은 임의의 적절한 기술, 마크업 언어 및/또는 신택스를 이용하여 인터페이스를 기술할 수 있다.
또한, 컴퓨팅 장치(102)는 하나 이상의 편집기/컴파일러 모듈(들)(114)도 포함한다. 몇몇 실시예에서, 편집기/컴파일러 모듈(114)은 기술 언어 파일(들)(112)을 판독 및/또는 해석하고 파일(들)(112)에 기초하여 하나 이상의 바이너리 메타데이터 파일(들)(116)과 같은 출력을 생성하는 기능을 나타낸다. 바이너리 메타데이터 파일(들)(116)은 운영 체제 인터페이스(들)(110) 및/또는 운영 체제(108)와 연관된 정보, 예를 들어, 입력 파라미터 타입, 파라미터 호출 순서, 인터페이스들 간의 관계 등을 포함하는 하나 이상의 머신 판독가능 파일(들)을 나타낸다.
이와 달리 또는 그에 더해, 편집기/컴파일러 모듈(들)(114)은 하나 이상의 소스 코드 파일(들)(118)을 판독 및/또는 해독하는 기능을 나타낸다. 소스 코드 파일(들)(118)은 적어도 하나의 프로그래밍 언어와 연관된 프로그래밍 문들(programming statements)을 포함하는 하나 이상의 파일(들)에 대응한다. 몇몇 경우, 소스 코드 파일(들)(118)은 하나 이상의 운영 체제 인터페이스(들)를 호출하는 문들(statements)을 포함할 수 있다. 편집기/컴파일러 모듈(들)(114)은 소스 코드 파일(들)(118)을 해석하고, 그 소스 파일(들)에 기초하여 머신 실행가능 코드를 생성한다.
컴퓨팅 장치(102)는 예를 들어 데스크탑 컴퓨터, 휴대용 컴퓨터, 노트북 컴퓨터, PDA와 같은 핸드헬드 컴퓨터, 셀룰러 폰 등과 같은 임의의 적절한 컴퓨팅 장치로서 구현될 수 있다.
예시적인 동작 환경에 대해 설명하였으며, 이제 운영 체제를 프로그램에 따라 하나 이상의 프로그래밍 언어(들)에 노출시키는 것에 대해 논의한다.
운영 체제 컴포넌트 액세스
컴퓨팅 장치 상에서 구동되는 애플리케이션들은 때때로 컴퓨팅 장치 상에서 구동되는 운영 체제에 의해 제공되는 특징들을 이용한다. 운영 체제는 컴퓨팅 장치 상에서 구동되는 연관된 리소스들에 대한 간단한 액세스를 가능하게 하고, 또한 서비스를 제공할 수 있다. 때때로, 이들 특징, 서비스 및/또는 리소스는 프로그램에 따라 액세스될 수 있다. 그러나, 운영 체제가 이들 기능을 애플리케이션이 작성된 프로그래밍 언어와 다른 프로그래밍 언어 포맷으로 노출시키는 경우, 프로그래머는 일반적으로 상이한 프로그래밍 언어들 간의 변환을 돕기 위해 래퍼 함수를 작성할 것이다. 예를 들어, 플랫 익스포트 "C" 함수(flat, exported, "C" function)로서 작성 및/또는 노출된 인터페이스를 고려한다. "C"-스타일 함수를 사용하기를 원하는 C# 또는 비주얼 베이직 프로그래머는 그들의 프로그래밍 언어가 "C"-스타일 함수를 성공적으로 호출할 수 있도록 하기 위해 특별한 문들(statements) 및/또는 추가의 코드를 포함할 수 있다. 결과적으로, 노출된 인터페이스와 다른 프로그래밍 언어로 작성된 애플리케이션들은 추가의 문들 및/또는 래퍼 함수가 작성될 때까지 인터페이스에 대한 액세스를 가지지 않는다.
다양한 실시예는 프로그래밍 언어와 무관하게, 운영 체제와 연관된 하나 이상의 인터페이스(들)를 기술하는 능력을 제공한다. 프로그래밍 언어와 무관하게 인터페이스를 기술하게 되면 다수의 프로그래밍 언어들이 인터페이스를 용이하게 액세스할 수 있게 된다. 프로그래밍 언어가 인터페이스의 언어 독립적인 기술을 해석하는 방식을 알게 되면, 이 지식은 언어 독립적인 기술을 사용하는 기존 및 향후 인터페이스에 적용될 수 있다. 몇몇 실시예에서, 인터페이스는 추상 타입 시스템을 사용하여 기술될 수 있다. 이후, 특정 프로그래밍 언어, 또는 연관된 프로그래밍 언어 컴파일러는 인터페이스를 해석 및/또는 액세스하기 위해 추상 타입 시스템을 그의 연관된 타입 시스템에 맵핑할 수 있다.
하나 이상의 실시예에 따른 아키텍처(200)를 나타내는 도 2를 참조한다. 아키텍처(200)는 컴퓨팅 장치상에서 실행되도록 구성될 수 있는 운영 체제(202)를 포함한다. 명료성을 위해, 운영 체제(202) 전부가 도시되어 있지는 않음을 이해해야한다. 운영 체제(202)는 컴퓨팅 장치와 연관된 리소스들을 관리하도록 구성된 하나 이상의 운영 체제 컴포넌트(들)(204)를 포함한다. 몇몇 실시예에서, 운영 체제 컴포넌트(들)(204)는 리소스들에 대한 프로그램적 액세스, 및 리소스들을 관리하는 것과 연관된 하나 이상의 서비스(들) 및/또는 특징들을 제공할 수 있다. 운영 체제 컴포넌트(들)(204)는 또한 운영 체제(202)와 연관된 기본 요소들, 및 그 기본 요소들로부터 구성된 복합 요소들을 포함할 수 있다.
몇몇 실시예에서, 운영 체제 컴포넌트(들)(204)는 API와 같은 하나 이상의 인터페이스(들)를 통해 노출될 수 있다. 이 예에서, 운영 체제(202)는 새로운 API 계열(206), COM 기반 API 계열(208) 및 플랫 익스포트 기반 API 계열(210)을 포함한다. 새로운 API 계열(206)은 함수(즉, 클래스, 인터페이스, 메소드, 속성, 이벤트 등)가 이하에서 더 설명되는 바와 같이 추상 타입 시스템을 사용하여 직접 기술되는 하나 이상의 관련 API를 나타낸다. COM 기반 API 계열(208)은 함수가 컴포넌트 객체 모델(COM) 타입 시스템을 사용하여 기술되는 하나 이상의 API를 나타낸다. 플랫 익스포트 기반 API 계열(210)은 함수가 메소드 시그너처(즉, 메소드 이름, 호출 조약, 메소드 인자들(arguments)의 수 및 타입을 포함하는 메소드 시그너처)를 사용하여 기술되는 하나 이상의 API를 나타낸다. 플랫 익스포트 기반 API는 또한 그들의 이름에 의해서만 식별되고, 클래스 및/또는 객체 지향 방식으로 정렬되지 않는 API를 나타낸다. 어떤 API가 이용가능한지를 결정하기를 희망하는 프로그래머는 각 API의 기술을 수동으로 및/또는 프로그램에 따라 액세스할 수 있다. 예를 들어, 새로운 API 계열(206)에 대해 어떤 인터페이스가 존재하는지와 그들을 어떻게 호출할 것인지를 결정하기 위해, 프로그래머는 연관된 메타데이터(212)를 액세스할 수 있다. COM 기반 API 계열(208) 및 플랫 익스포트 기반 API 계열(210)은 연관된 언어 독립적인 타입 시스템 기술을 제각기의 메타데이터(214,216)에 가지고 있지만, 프로그래머는 먼저 언어 독립적인 타입 시스템 기술을 COM 기반 및/또는 플랫 익스포트 기반 API에 맵핑하기 위한 래퍼 코드를 작성한다.
메타데이터(212,214,216)는 연관된 인터페이스(들)의 다양한 측면을 기술하는 정보, 예를 들어 버전 정보, 어떤 메소드가 이용가능한지, 인터페이스(들)가 어떤 파라미터를 취하는지, 파라미터의 데이터 타입, 파라미터를 전달하는 순서 등을 포함하도록 구성될 수 있다. 몇몇 실시예에서, 메타데이터는 객체 지향 방식으로 인터페이스(들)를 기술하고 및/또는 인터페이스(들) 간의 관계를 기술하는 정보와 같은, 인터페이스와 연관된 계층적 정보를 포함할 수 있다. 메타데이터는 클래스 기술, 클래스의 연관된 메소드 및 파라미터 등을 포함하도록 구성될 수 있다. 몇몇 경우, 하나 이상의 IDL 파일(들)이 이들 기술의 일부를 포함하도록 확장될 수 있고 하나 이상의 메타데이터 파일(들)의 생성에 사용될 수 있다. 몇몇 경우, 메타데이터는 이하에서 더 설명되는 바와 같이 적어도 부분적으로 하나 이상의 IDL 파일(들)에 기초할 수 있다.
운영 체제(202)는 또한 애플리케이션 바이너리 인터페이스(들)(ABI)(218)를 포함한다. ABI는 머신 레벨에서, 함수, 메소드, API 등을 호출하는 바이너리 계약을 기술한다. 바이너리 계약은 함수와 연관된 식별자 또는 이름, 함수를 호출하는데 사용될 수 있는 시그너처, 함수에 전달되는 파라미터들의 순서 및/또는 파라미터들과 연관된 데이터 타입 등을 포함할 수 있다. 이와 달리 또는 그에 더해, 바이너리 계약은 타입 시스템의 적어도 하나의 타입과 연관된 행위를 노출시키는 정의 및/또는 룰(rules)을 포함할 수 있다. 전형적으로, 바이너리 계약과 연관되고 및/또는 그에 의해 정의된 행위는 변하지 않는다. 예를 들어, 바이너리 계약의 시그너처 및/또는 식별자가 일정하게 유지되는 경우, 그 계약의 연관된 행위 또한 일정하게 유지된다.
애플리케이션 바이너리 인터페이스(218)는 다른 애플리케이션들에 의해 신뢰성있게 호출될 수 있는 바이너리를 통해 노출되는 함수를 나타낸다. 이 예에서, 애플리케이션 바이너리 인터페이스(들)(218)는 운영 체제 컴포넌트(들)(204)와 연관된 인터페이스, 기본 타입 및 기본 패턴을 포함한다. 애플리케이션(들)(220)과 같은, 운영 체제(202) 외부의 하나 이상의 애플리케이션(들)은 하나 이상의 애플리케이션 바이너리 인터페이스(들)(218)를 통해 운영 체제 컴포넌트(들)(204)를 액세스할 수 있다.
애플리케이션(220)은 HTML, 자바스크립트, 비주얼 베이직, C#, C++ 등과 같은 하나 이상의 프로그래밍 언어(들)로부터 생성된 하나 이상의 애플리케이션(들)을 포함할 수 있다. 몇몇 실시예에서, 애플리케이션(220)은 운영 체제 컴포넌트로의 하나 이상의 호출(들)을 포함한다. 몇몇 경우, 애플리케이션(들)(220)은 먼저 어떤 인터페이스(들)가 이용가능한지를 프로그램에 따라 판정하고, 그런 다음 판정된 하나 이상의 인터페이스(들)로의 호출을 행하도록 구성될 수 있다. 몇몇 경우, 애플리케이션(들)(220)은 이하에서 더 설명되는 바와 같이 하나 이상의 생성된 언어 투영 모듈(one or more generated language projection module)(들)(222)의 도움을 받아, 애플리케이션 바이너리 인터페이스(들)(218)를 통해 인터페이스(들)에 액세스한다.
하나 이상의 실시예에서, 생성된 언어 투영 모듈(들)(222)은 추상 타입 시스템 정의를 특정 프로그래밍 언어에 맵핑한다. 임의의 적절한 프로그래밍 언어가 맵핑될 수 있으며, 그에 대한 예는 앞서 제공되었다. 몇몇 실시예에서, 생성된 언어 투영 모듈은 각 프로그래밍 언어에 대해 고유할 수 있다. 다른 실시예에서, 생성된 언어 투영 모듈은 다목적일 수 있고 다수의 프로그래밍 언어에 의해 사용될 수 있다. 맵핑은 추상 타입 시스템을 사용하여 기술되는 현재 및 향후 인터페이스들이 추가의 프로그래밍 문들(즉, 래퍼 함수)없이도 특정 프로그래밍 언어에 액세스될 수 있도록 해준다. 맵핑은 특정 프로그래밍 언어가 그 특정 프로그래밍 언어에 고유한 방식으로 인터페이스를 호출할 수 있도록 해준다. 임의의 적절한 타입의 정보, 예를 들어, 클래스, 데이터 타입, 함수 포인터, 구조 등이 맵핑될 수 있다.
프로그래머가 운영 체제 컴포넌트를 액세스하기를 희망하는 예를 고려한다. 애플리케이션(들)(220)과 같은 애플리케이션을 작성하는 경우, 프로그래머는 적어도 하나의 특정 프로그래밍 언어와 연관된 편집기/컴파일러에서 소스 코드를 생성한다. 편집기/컴파일러는 운영 체제와 연관된 어떤 인터페이스들 및/또는 API들이 이용가능한지와 연관된 정보를 얻기 위해 메타데이터 파일(들)에 액세스하도록 구성될 수 있다. 예를 들어, 몇몇 실시예에서, 프로그래머가 운영 체제 컴포넌트의 일부로서 구현되는 클래스로의 호출을 포함하는 코드 라인을 작성하는 경우, 컴파일러/편집기는 클래스와 연관된 메타데이터에 질의하고 어떤 메소드, 속성 등의 리스트가 클래스와 연관되어 있는지를 프로그래머에 반환한다. 이 리스트는 클래스의 임의의 부류의 정보, 연관된 메소드 및/또는 속성 등을 포함할 수 있다. 이와 달리 또는 그에 더해, 리스트는 이용가능한 클래스들의 리스트를 포함할 수 있다. 몇몇 실시예에서, 정보는 선택을 위해 인터페이스의 관련 메소드, 속성 등을 사용자에게 시각적으로 제시하도록 구성된 자동 완성 기능의 일부로서 제공될 수 있다. 메소드 및/또는 속성이 선택되면, 컴파일러/편집기는 보다 효율적이고 정확한 소스 코드 생성을 위해 대응하는 신택스를 소스 코드에 삽입할 수 있다.
몇몇 실시예에서, 프로그래머는 운영 체제 컴포넌트들의 클래스 객체를 인스턴스화하도록 구성된 소스 코드를 작성할 수 있다. 런타임시 호출되는 경우, 운영 체제는 호출 코드에 돌려줄 클래스의 인스턴스를 동적으로 생성한다. 그러나, 호출 코드에 돌려준 인스턴스는 이하에서 더 설명되는 바와 같이 "추상 객체" 또는 운영 체제 컴포넌트와 연관된 추상 타입 시스템에서 기술되는 객체일 수 있다. 추상 객체 타입과 호출 코드와 연관된 프로그래밍 언어의 구체적인 데이터 타입 간을 연결하기 위해, 컴파일러는 예를 들어 생성된 언어 투영 모듈(들)(222)을 통해 추상 객체를 그의 연관된 프로그래밍 언어의 필적하는 타입으로 변환 및/또는 맵핑하도록 구성될 수 있다. 몇몇 경우, 프록시는 운영 체제 컴포넌트의 추상 객체와 프로그래밍 언어와 연관된 구체적인 객체 간에 호출들을 연결하는데 사용될 수 있다.
운영 체제 컴포넌트 클래스의 행위를 에뮬레이팅하도록 구성된 프록시를 고려한다. 몇몇 경우, 클래스의 연관된 타입, 메소드, 속성, 이벤트, 인터페이스 등의 스터브(stubs)를 포함하는 프록시가 생성될 수 있다. 프록시는 호출 코드의 프로그래밍 언어로 구성되어, 코드 호출이 호출 코드에 고유한 방식으로 프록시를 액세스하는 것이 가능해진다. 스터브는 이들 호출을 운영 체제로 (및 그로부터) 변환 및/또는 맵핑하기 위한 적절한 지식 및/또는 코드를 포함할 수 있다. 예를 들어, 몇몇 실시예에서, 프록시는 애플리케이션 바이너리 인터페이스(들)(218)와 통신할 수 있다.
몇몇 실시예에서, 프로그래밍 언어는 전술한 바와 같은 래퍼 함수 및/또는 프록시를 개입시켜(interject) 추상 타입을 프로그래밍 언어에 고유한 타입에 맵핑할 수 있다. 프로그래밍 언어 편집기/컴파일러는 메타데이터 파일(212,214,216)과 같은 메타데이터를 판독하고, 어떤 추상 타입이 사용되고 있는지를 판정하며, 추상 타입(들)을 연관된 프로그램 언어의 하나 이상의 필적하는 타입(들)에 맵핑하고, 연관된 래퍼 함수 및/또는 프록시를 운영 체제 컴포넌트와 연관된 추상 타입에 연결한다. 프로그래밍 언어와 추상 타입 시스템 간에 각 타입에 대한 맵핑이 존재하면, 추상 타입 시스템에 의해 정의된 임의의 현재 또는 향후 인터페이스는 프로그래머로부터의 추가의 코딩없이도 프로그래밍 언어에 의해 자동적으로 액세스될 수 있다.
예를 들어, 하나 이상의 실시예에 따른 방법의 단계들을 나타내는 흐름도를 나타내는 도 3을 고려한다. 이 방법은 임의의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합에 의해 수행될 수 있다. 적어도 몇몇 실시예에서, 방법의 측면들은 컴퓨팅 장치(102) 상에서 실행되는 편집기/컴파일러 모듈(114)과 같은 소프트웨어에 의해 수행된다.
단계(302)는 이용가능한 운영 체제 인터페이스들과 연관된 정보에 대한 요청을 수신한다. 예를 들어, 이 요청은 어떤 인터페이스들이 이용가능한지 및/또는 이용가능한 인터페이스들과 연관된 다른 정보를 요청하도록 구성될 수 있다. 이것은 임의의 적절한 방식으로 달성될 수 있다. 몇몇 실시예에서, 요청은 소스 코드가 개발되고 있는 소스 코드 편집기에 의해 자동적으로 생성될 수 있다. 코드 편집기는 운영 체제 인터페이스 및/또는 컴포넌트로의 호출을 식별할 수 있고, 식별시, 운영 체제 인터페이스와 연관된 이용가능한 메소드, 속성 등에 대한 요청을 전송할 수 있다. 몇몇 실시예에서, 요청은 드롭-다운 메뉴, 라디오 버튼 등의 선택을 통해 수동으로 생성될 수 있다. 요청은 모든 이용가능한 운영 체제 인터페이스, 몇몇 이용가능한 운영 체제 인터페이스, 개개의 운영 체제 인터페이스, 또는 이의 임의의 조합과 연관된 정보를 요청하도록 구성될 수 있다. 몇몇 실시예에서, 요청은 도 2의 애플리케이션(들)(220)과 같은 실행 애플리케이션을 통해 생성될 수 있다.
단계(304)는 하나 이상의 운영 체제 인터페이스(들)와 연관된 정보를 획득한다. 예를 들어, 몇몇 실시예에서, 운영 체제는 정보에 대해 질의를 받을 수 있다. 이와 달리 또는 그에 더해, 정보는 하나 이상의 메타데이터 파일(들)에 포함될 수 있고 메타데이터 파일에 질의 및/또는 판독함으로써 획득될 수 있다. 앞서 및 이하에서 설명되는 바와 같이, 메타데이터 파일은 머신 판독가능 포맷일 수 있고, 인터페이스와 연관된 객체 관계 대형(object relationship formation)과 같은 계층적 정보를 포함할 수 있다.
정보 획득에 응답하여, 단계(306)는 하나 이상의 운영 체제 인터페이스(들)와 연관된 하나 이상의 추상 타입(들)을 결정한다. 앞서 설명한 바와 같이, 몇몇 실시예에서, 운영 체제 인터페이스는 추상 타입 시스템의 사용을 통해 특정 프로그래밍 언어와 무관하게 기술될 수 있다. 하나 이상의 운영 체제 인터페이스(들)와 연관된 하나 이상의 추상 타입(들)을 결정한 것에 응답하여, 단계(308)는 하나 이상의 추상 타입(들) 각각을 특정 프로그래밍 언어와 연관된 타입에 맵핑한다.
OpenPicker 런타임 클래스에 대해 ABI를 기술하는 인터페이스 기술 언어의 예를 고려한다. FileItem 객체의 수집물을 반환하도록 구성된 PickMultipleItems 메소드가 OpenPicker 런타임 클래스에 포함된다. 이 특정 예에서, FileItem 클래스는 이름 값을 포함하는 FileItemProperties 객체를 반환하도록 구성된 GetProperties 메소드를 포함한다.
Figure pct00001
몇몇 실시예에서, C# 언어 컴파일러는 기술(description)을 C# 언어 구성에 맵핑할 수 있다. 기술을 언어 특정 구성에 맵핑함으로써, 운영 체제 인터페이스는 아래에 도시되어 있는 바와 같이 C# 프로그래밍 언어에 고유한 방식으로 액세스될 수 있다.
Figure pct00002
또 다른 예에서, 언어 독립적인 방식으로 정의된 구조는 자바스크립트 객체에 맵핑될 수 있다.
Figure pct00003
을 사용하여 정의된 FrameRate 구조의 예를 고려한다.
FrameRate 구조는 두 개의 UNIT32 필드, 즉 Numerator 및 Denominator를 포함한다. FrameRate 구조는 언어 독립적인 항들을 사용하여 정의되기 때문에, 구조는 적절한 매핑을 사용할 때 다양한 언어 특정 프로그래밍에 의해, 예를 들어 자바스크립트를 통해 액세스될 수 있다. 그러나, 자바스크립트는 필드를 포함하는 구조의 개념, 또는 부호없는 32비트 정수의 개념을 포함하지 않는다. 대신, 자바스크립트는 속성들을 갖는 객체의 개념 및 수(Number)의 개념을 포함한다. 이 예에서, 전술한 구조 정의는 Numerator 및 Denominator로 명명된 두 개의 속성을 갖는 객체일 수 있으며, 그들 모두의 타입 수(type Number)는 아래와 같다.
Figure pct00004
운영 체제 컴포넌트들을 프로그램에 따라 하나 이상의 프로그래밍 언어(들)에 노출시키는 것을 설명하였으며, 이제 하나 이상의 실시예에 따라 추상 타입 시스템을 이용해 객체 지향 언어를 모델링하는 것에 대해 설명한다.
추상 타입 시스템을 이용한 객체 지향 언어의 모델링
운영 체제 인터페이스가 특정 프로그래밍 언어를 사용하여 정의된 경우, 인터페이스와 연관된 파라미터들은 그 특정 프로그래밍 언어의 데이터 타입에 의해 특징지워진다. 그에 따라, 인터페이스의 호출자는 특정 프로그래밍 언어가 데이터 타입을 정의하는 방식에 부합한다. 인터페이스로서 특정 프로그래밍 언어로 작성된 프로그램의 경우, 데이터 타입에 부합하는 것은 프로그램들이 동일한 데이터 타입 정의를 가지기 때문에 사소한 것이 된다. 인터페이스를 호출하는 특정 프로그래밍 언어로 작성되지 않은 프로그램들은 때때로 데이터 타입에 부합하기 위해 그들의 능력을 감소시킬 수 있다. 예를 들어, 다른 프로그래밍 언어로부터 인터페이스를 호출하는 프로그래머는 다른 프로그래밍 언어 및/또는 데이터 타입 간을 변환 및/또는 연결(bridge)하기 위한 코드를 추가할 수 있다. 그에 따라, 데이터 타입 간의 연결 프로세스는 때때로 호출 프로그래밍 언어의 데이터 타입에 고유한 기능을 감소시킬 수 있다. 또한, 이 변환은 때때로 복잡할 수 있고, 몇몇 경우 다른 프로그래밍 언어가 객체가 무엇인지에 대한 상이한 개념을 갖는 경우 변환은 존재하지 않을 수 있다.
다양한 실시예는 운영 체제의 하나 이상의 인터페이스(들)를 추상 타입 시스템을 사용하여 객체 지향 방식으로 모델링하는 능력을 제공한다. 몇몇 실시예에서, 확장형 IDL은 하나 이상의 인터페이스(들) 간의 관계를 기술하기 위한 신택스를 포함할 수 있다. 이와 달리 또는 그에 더해, 확장형 IDL은 인터페이스가 기술 및/또는 정의되는 방식을 관리하는 룰을 포함할 수 있다. 몇몇 실시예에서, 바이너리 계약은 추상 타입 시스템과 연관된 행위를 노출하도록 구성되고, 또한 통합된 데이터 타입들과 연관된 정보를 포함하도록 구성될 수 있다.
객체 지향 모델은 클래스 계층을 사용하여 객체들을 기술하는데, 클래스는 메소드, 속성, 상속 등을 포함할 수 있다. 전형적으로, 반드시 그럴 필요는 없지만, 객체 지향 클래스는 하나 이상의 생성자(constructor)(들)를 포함할 수 있다. 생성자는 호출되는 경우 사용하기 위해 메모리에 클래스의 인스턴스/객체를 생성하는 클래스 함수이다. 클래스의 몇몇 생성자는 사용하기 위해 생성된 인스턴스/객체를 준비하는 추가의 코드를 포함한다. 예를 들어, 추가 코드는 클래스의 멤버 변수를 초기화하고, 그 클래스의 연관된 시작 루틴을 구동하는 것 등을 할 수 있다. 디폴트 생성자는 입력 파라미터를 가지지 않지만, 비-디폴트 생성자는 하나 이상의 입력 파라미터(들)를 갖는다.
몇몇 실시예에서, 운영 체제 컴포넌트의 하나 이상의 생성자(들)는 특정 구현 및/또는 설계를 따르도록 강제될 수 있다. 특정 구현을 따름으로써, 생성자의 호출자는 생성자 및/또는 결과적인 객체가 동작하는 방식에 의존할 수 있다. 예를 들어, 운영 체제 컴포넌트의 디폴트 생성자는 클래스 팩토리 객체의 IActivationFactory 인터페이스의 ActivateInstance 메소드의 디폴트 생성자로 제한 및/또는 그에 맵핑될 수 있다. 클래스 팩토리 객체는 생성된 객체의 정확한 클래스를 지정하지 않고도 객체를 생성하도록 모델링된 설계 패턴이다. 클래스 팩토리 모델을 사용함으로써, 디폴트 생성자는 충분한 레벨의 추상화를 유지할 수 있다. 운영 체제 컴포넌트의 비-디폴트 생성자는 클래스 팩토리의 교번적인 인터페이스와 같은 하나 이상의 특별히 지정된 인터페이스(들)에 배치되도록 제한될 수 있다.
인터페이스의 기술을 명시하는 한가지 방법은 IDL 및/또는 XML과 같은 확장형 기술 언어와 같은 기술 언어 파일의 사용을 통해 이루어진다. 몇몇 실시예에서, 확장형 기술 언어는 운영 체제 컴포넌트의 하나 이상의 생성자 인터페이스(들)를 기술 및/또는 지정하는 능력을 가능하게 하도록 구성될 수 있다. 예를 들어, 이하에서 설명되는 Compressor 클래스를 고려한다. 이 예에서, Compressor 클래스는 클래스와 연관된 비-디폴트 생성자 메소드(들)의 적어도 하나의 정의를 포함하는 그의 ICompressorFactory 인터페이스를 선언한다.
Figure pct00005
이들 기술은 하나 이상의 파일(들)에 포함될 수 있고 이하에서 설명되는 바와 같이 머신 판독 가능 포맷으로 하나 이상의 인터페이스 기술(들)을 생성하기 위해 적어도 하나의 컴파일러와 연계하여 사용될 수 있다.
객체 지향 클래스는 적어도 하나의 정적 메소드, 적어도 하나의 정적 속성, 적어도 하나의 정적 이벤트, 또는 이들의 임의의 조합을 포함하도록 구성될 수 있다. 생성자의 정의를 제한하는 것과 유사하게, 정적 메소드, 정적 속성, 및/또는 정적 이벤트는 하나 이상의 특별히 지정된 인터페이스(들)에 부합하도록 설계될 수 있다. 정적 메소드, 속성 및 이벤트를 선언하는 CallControl 클래스의 예를 고려한다. 이 예에서, 정적 메소드, 속성 및 이벤트는 ICallControlStatics 인터페이스에 정의된다.
Figure pct00006
객체 지향 클래스는 적어도 하나의 인스턴스 메소드, 적어도 하나의 인스턴스 속성, 적어도 하나의 인스턴스 이벤트 또는 이들의 임의의 조합을 포함하도록 구성될 수 있다. 인스턴스 멤버들(메소드, 속성 및 이벤트)은 클래스의 특정 인스턴스에 대해 동작하지만 정적 멤버들은 클래스의 모든 멤버들에 의해 공유된다. 클래스는 CallControl 클래스가 그의 연관된 인스턴스 메소드, 속성 및 이벤트가 ICallControl 인터페이스 내에 정의되어 있음을 선언하는 전술한 예와 같이, 하나 이상의 특별히 지정된 인터페이스(들)에 부합하도록 설계될 수 있다. 몇몇 실시예에서, 하나 이상의 운영 체제 컴포넌트(들)는 클래스 팩토리 설계 패턴에 따라/상에서 이들 인터페이스를 모델링/구현할 수 있다.
특정 프로그래밍 언어가 언어 특정 생성자, 정적 또는 인스턴스 멤버를 호출하는 경우, 도 2의 생성된 언어 투영 모듈(222)과 같은 언어 투영 모듈은 프로그래밍 언어 특정 호출을 적절한 클래스 팩토리 객체 또는 인스턴스와 연관된 적절한 메소드 및/또는 인터페이스에 맵핑할 수 있다. 몇몇 실시예에서, 클래스 팩토리 객체는 운영 체제 컴포넌트 및/또는 런타임 클래스와 연관된다. 예를 들어, 런타임 클래스의 인스턴스를 생성할 것을 컴파일러에게 지시하는 코드의 메소드 시그너처는 클래스 팩토리 객체의 적절한 생성자 인터페이스 메소드에 일치할 수 있다. 또 다른 예에서, 언어 투영 모듈은 정적 메소드를 호출할 것을 컴파일러에게 지시하는 언어 특정 메소드 시그너처를 운영 체제 컴포넌트와 연관된 정적 인터페이스 상의 적절한 매칭 인터페이스 메소드에 일치시키도록 구성될 수 있다. 또 다른 예에서, 언어 투영 모듈은 인스턴스 메소드를 호출할 것을 컴파일러에게 지시하는 언어 특정 메소드 시그너처를 운영 체제 컴포넌트의 특정 인스턴스와 연관된 인터페이스 상의 적절한 매칭 인터페이스 메소드에 일치시키도록 구성될 수 있다.
몇몇 실시예에서, IDL 컴파일러는 적어도 하나의 운영 체제 컴포넌트 인터페이스 기술과 연관된 하나 이상의 확장형 IDL 파일(들)을 판독하고, 연관된 머신 판독가능 파일을 생성하도록 구성될 수 있다. 타입, 메소드, 속성, 이벤트, 및 연관된 운영 체제 컴포넌트의 인터페이스를 기술하는 정보와 같은 임의의 적절한 타입의 정보가 확장형 IDL 파일에 포함될 수 있다. 몇몇 경우, 컴파일러는 머신 판독가능 메타데이터 파일을 생성할 수 있다. 하나 이상의 애플리케이션(들)은 어떤 인터페이스가 이용가능한지, 인터페이스의 연관된 기술 및/또는 선언, 인터페이스의 파라미터들의 데이터 타입 등을 프로그램에 따라 결정하기 위해 연관된 머신 판독가능 파일을 판독하도록 구성될 수 있다. 하나 이상의 애플리케이션(들)은 임의의 적절한 프로그래밍 언어로 작성될 수 있으며, 그에 대한 예는 앞서 제공되었다.
몇몇 실시예에서, IDL 컴파일러는 타입, 메소드, 속성, 이벤트 및/또는 인터페이스와 연관된 하나 이상의 통신 프록시 및/또는 코드 스터브(들)를 생성할 수 있다. 통신 프록시 및/또는 코드 스터브는 추가적으로 운영 체제 컴포넌트에 의해 액세스될 수 있도록 구성될 수 있다.
하나 이상의 실시예에 따라 확장형 IDL 파일(들)(402), 컴파일러(404), 및 메타데이터 파일(들)(406) 간의 관계를 나타내는 도 4를 고려한다. 여기서, 확장형 IDL 파일(들)(402)은 컴파일러(404)에 의해 수신 및 처리되어 메타데이터 파일(들)(406)을 생성한다. 적어도 몇몇 실시예에서, 관계도에 도시되어 있는 모듈들은 소프트웨어, 하드웨어, 또는 이들의 임의의 조합, 예를 들어 컴퓨팅 장치(102) 상에서 실행되는 편집기/컴파일러 모듈(114)로서 구현될 수 있다.
도시되고 기술되어 있는 실시예에서, 확장형 IDL 파일(들)(402)은 운영 체제 API와 같은 하나 이상의 운영 체제 컴포넌트 인터페이스(들)를 정의하는 하나 이상의 파일을 포함할 수 있다. 파일 객체/클래스, 스트링 객체/클래스, 그래픽 객체/클래스, 컬처 객체/클래스 등과 같은 임의의 적절한 타입의 운영 체제 컴포넌트가 기술될 수 있다. 각 객체는 객체 지향 클래스와 연관될 수 있는 메소드, 속성, 상속 정보 등을 포함할 수 있다. 확장형 IDL은 기술된 하나 이상의 인터페이스(들) 간의 관계의 이들 타입을 인에이블링하기 위한 신택스를 포함할 수 있다. 이와 달리 또는 그에 더해, 확장형 IDL은 추상 타입 시스템을 기술할 수 있다.
몇몇 실시예에서, 추상 타입 시스템은 다양한 데이터 타입을 지원 및/또는 기술하도록 구성될 수 있다. 예를 들어, 메소드 인터페이스는 모든 인터페이스가 객체의 인스턴스에 대해 동작하는 물리적 요건을 맵핑하도록 구성될 수 있다. 또 다른 예에서, 추상 타입 시스템은 프로그래밍 언어 및 컴포넌트 경계에 걸쳐 호출될 수 있는 함수 포인터를 정의하는데 사용될 수 있다. 제1 컴포넌트는 메소드에 구속된 함수 포인터 또는 대표자(delegate)를 생성할 수 있다. 대표자는 바이너리 컴파일 경계를 가로질러 임의적인 프로그래밍 언어로 작성된 제2 컴포넌트로 전달되고, 호출될 수 있다. 다양한 실시예는 기본 데이터 타입(fundamental data type)을 구성하고, 또한 데이터 타입을 통합 타입(aggregate type)에 혼합하는 룰을 정의하기 위해, 확장형 IDL이 이들 데이터 타입을 정의 및/또는 기술할 수 있도록 한다.
도시되고 설명되어 있는 실시예에서, 컴파일러(404)는 확장형 IDL 파일(들)(402)과 같은 하나 이상의 입력 파일(들)을 수용하고, 하나 이상의 메타데이터 파일(들)(406)을 생성한다. 메타데이터 파일(들)(406)은 자동화된 액세스를 위해 구성될 수 있다. 예를 들어, 메타데이터 파일(들)은 머신 판독가능 포맷으로 저장될 수 있다. 몇몇 실시예에서, 메타데이터 파일(들)(406)은 하나 이상의 운영 체제 컴포넌트(들)와 연관된다. 이와 달리 또는 그에 더해, 컴파일러(404)는 앞서 설명한 바와 같이 스터브 아웃 통신 프록시(stubbed out communication proxies)를 생성할 수 있다.
애플리케이션(들)(408)은 예를 들어 메타데이터 파일(들)(406)의 판독을 통해 어떤 API들이 이용가능한지를 동적으로 판정할 수 있다. 몇몇 실시예에서, 애플리케이션(들)(408)은 도 1의 편집기/컴파일러(114)로서 구성될 수 있다. 메타데이터 파일(들)(406)을 통해, 애플리케이션은 기능의 보다 나중의 버전이 존재하는지, 어떤 파라미터들을 API가 취하는지를 판정할 수 있고, 또한 런타임시 API를 위해 어떤 기능이 존재한지에 대해 사용자에게 알려줄 수 있다. 따라서, 머신 판독가능 포맷의 API 기술을 포함하고, 또한 추상 타입 시스템으로 API를 기술함으로써, 추상 타입 시스템과 특정 프로그래밍 언어 간의 매핑을 지원하는 애플리케이션 및/또는 언어는 프로그래머로부터의 노력을 거의 필요로 하지 않고 API를 쉽게 액세스할 수 있다.
추상 타입 시스템을 이용하여 객체 지향 언어를 모델링하는 것을 설명하였으며, 이제 하나 이상의 실시예에 따른 예시적인 시스템을 설명한다.
예시적인 시스템
도 5는 전술한 다양한 실시예를 구현하는데 사용될 수 있는 예시적인 컴퓨팅 장치(500)를 나타낸다. 컴퓨팅 장치(500)는 예를 들어 도 1의 컴퓨팅 장치(102) 또는 임의의 다른 적절한 컴퓨팅 장치일 수 있다.
컴퓨팅 장치(500)는 하나 이상의 프로세서(들) 또는 처리 장치(들)(502), 하나 이상의 메모리 및/또는 저장 컴포넌트(504), 하나 이상의 입/출력(I/O) 장치(들)(506), 및 다양한 컴포넌트 및 장치들이 서로 통신할 수 있도록 해주는 버스(506)를 포함한다. 버스(508)는 메모리 버스 또는 메모리 제어기, 주변 버스, 가속 그래픽 포트, 및 임의의 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 비롯하여, 하나 이상의 임의의 몇몇 타입의 버스 구조를 나타낸다. 버스(508)는 유선 및/또는 무선 버스를 포함할 수 있다.
메모리/저장 컴포넌트(504)는 하나 이상의 컴퓨터 저장 매체를 나타낸다. 컴포넌트(504)는 휘발성 매체(예를 들어, 랜덤 액세스 메모리(RAM)) 및/또는 비휘발성 매체(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 광학 디스크, 자기 디스크 등)를 포함할 수 있다. 컴포넌트(504)는 고정된 매체(예를 들어, RAM, ROM, 고정된 하드 드라이브 등) 및 착탈가능 매체(예를 들어, 플래시 메모리 드라이브, 착탈가능 하드 드라이브, 광학 디스크 등)를 포함할 수 있다.
하나 이상의 입/출력 장치(들)(506)는 사용자가 명령 및 정보를 컴퓨팅 장치(500)에 입력할 수 있도록 해주고, 또한 정보가 사용자 및/또는 다른 컴포넌트 또는 장치에 제시될 수 있도록 해준다. 입력 장치의 예는 키보드, 커서 제어 장치(예를 들어, 마우스), 마이크로폰, 스캐너 등을 포함한다. 출력 장치의 예는 디스플레이 장치(예를 들어, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
본 명세서에서 다양한 실시예는 소프트웨어 또는 프로그램 모듈의 일반적인 문맥에서 설명될 수 있다. 일반적으로, 소프트웨어는 특정 작업을 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 이들 모듈 및 기법의 구현은 몇몇 형태의 컴퓨터 판독가능 매체 상에 저장될 수 있거나 또는 그를 통해 전달될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 장치에 의해 액세스될 수 있는 임의의 이용가능한 매체 또는 매체들일 수 있다. 예를 들어, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체"를 포함할 수 있다.
"컴퓨터 판독가능 저장 매체"는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장 위해 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈가능 및 고정된 매체를 포함한다. 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하나, 여기에 국한되지 않는다.
결론
다양한 실시예는 운영 체제와 연관된 하나 이상의 인터페이스(들)를 프로그래밍 언어와 무관하게 기술할 수 있는 능력을 제공한다. 이와 달리 또는 그에 더해, 특정 프로그래밍 언어와 연관된 컴파일러가 독립적인 인터페이스 기술(들)을 프로그래밍 언어에 특정한 적절한 구성에 맵핑하도록 구성될 수 있다. 몇몇 실시예에서, 애플리케이션은 운영 체제의 하나 이상의 인터페이스(들)를 프로그램에 따라 결정하도록 구성될 수 있다.
본 발명은 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 설명되었지만, 첨부한 청구항에 정의된 본 발명은 전술한 특정 특징 또는 동작에 국한될 필요는 없다. 그보다, 전술한 특정 특징 및 동작은 청구항을 구현하는 예시적인 형식으로서 개시된다.

Claims (10)

  1. 하나 이상의 이용가능한 운영 체제 인터페이스와 연관된 정보에 대한 요청을 수신하는 단계와,
    상기 하나 이상의 이용가능한 운영 체제 인터페이스와 연관된 상기 정보를 획득하는 단계- 상기 운영 체제 인터페이스는 추상 타입 시스템을 사용하여 기술됨 -와,
    상기 하나 이상의 이용가능한 운영 체제 인터페이스와 연관된 하나 이상의 추상 타입을 결정하는 단계와,
    개개의 결정된 추상 타입을 적어도 하나의 특정 프로그래밍 언어와 연관된 개개의 각 타입에 맵핑하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 추상 타입을 결정하는 단계는 상기 하나 이상의 추상 타입과 연관된 행위(behavior)를 결정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  3. 제2항에 있어서,
    상기 하나 이상의 추상 타입과 연관된 행위를 결정하는 단계는 적어도 하나의 바이너리 계약(binary contract)을 통해 행위를 프로그램에 따라 결정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 하나 이상의 이용가능 운영 체제 인터페이스와 연관된 정보는 계층적 정보(hierarchical information)를 더 포함하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 정보는 적어도 하나의 인터페이스와 연관된 버전 정보, 상기 적어도 하나의 인터페이스와 연관된 개개의 파라미터의 데이터 타입, 상기 적어도 하나의 인터페이스와 연관된 상기 개개의 파라미터의 호출 순서를 포함하는, 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 하나 이상의 이용가능한 운영 체제 인터페이스와 연관된 정보를 획득하는 단계는 적어도 하나의 메타데이터 파일로부터 프로그램에 따라 정보를 획득하는 단계를 포함하는, 컴퓨터 구현 방법.
  7. 컴퓨터 판독가능 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 명령어들은 실행되는 경우,
    운영 체제와 연관된 기능에 대한 프로그램적 액세스를 가능하게 하도록 구성된 하나 이상의 애플리케이션 프로그래밍 인터페이스(API) 모듈과,
    상기 하나 이상의 API 모듈과 연관된 하나 이상의 메타데이터 파일- 상기 하나 이상의 메타데이터 파일은 상기 하나 이상의 API의 적어도 하나의 기술을 포함하도록 구성되고, 상기 적어도 하나의 기술은 추상 타입 시스템을 이용함 -과,
    상기 하나 이상의 API를 호출하는 하나 이상의 머신 레벨 바이너리 계약을 포함하도록 구성된 하나 이상의 애플리케이션 바이너리 인터페이스(ABI) 모듈과,
    상기 추상 타입 시스템의 적어도 하나의 타입을 하나 이상의 특정 프로그래밍 언어의 적어도 하나의 타입에 맵핑하도록 구성된 하나 이상의 생성된 언어 투영 모듈(generated language projection module)
    을 구현하는, 컴퓨터 판독가능 저장 매체.
  8. 제7항에 있어서,
    실행되는 경우, 상기 적어도 하나의 메타데이터 파일을 통해, 상기 적어도 하나의 API 모듈에 포함된 적어도 하나의 인터페이스를 프로그램에 따라 결정하도록 구성된 적어도 하나의 애플리케이션을 구현하는 명령어들을 더 포함하는 컴퓨터 판독가능 저장 매체.
  9. 제7항에 있어서,
    상기 생성된 언어 투영 모듈은 상기 하나 이상의 특정 프로그래밍 언어에 고유한 방식으로 상기 추상 타입 시스템의 적어도 하나의 타입을 에뮬레이팅하도록 구성된 적어도 하나의 프록시를 포함하는, 컴퓨터 판독가능 저장 매체.
  10. 제7항에 있어서,
    상기 하나 이상의 API를 호출하는 상기 바이너리 계약은 상기 추상 타입 시스템의 적어도 하나의 타입과 연관된 적어도 하나의 행위 정의를 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020147003539A 2011-08-11 2011-10-08 런타임 시스템 KR101795844B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/207,806 2011-08-11
US13/207,806 US8776094B2 (en) 2011-08-11 2011-08-11 Runtime system
PCT/US2011/055492 WO2013022465A1 (en) 2011-08-11 2011-10-08 Runtime system

Publications (2)

Publication Number Publication Date
KR20140057547A true KR20140057547A (ko) 2014-05-13
KR101795844B1 KR101795844B1 (ko) 2017-11-08

Family

ID=47668756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147003539A KR101795844B1 (ko) 2011-08-11 2011-10-08 런타임 시스템

Country Status (13)

Country Link
US (2) US8776094B2 (ko)
EP (1) EP2742420B1 (ko)
JP (1) JP5933002B2 (ko)
KR (1) KR101795844B1 (ko)
CN (1) CN103718155B (ko)
AU (2) AU2011374897B2 (ko)
BR (1) BR112014003123B1 (ko)
CA (1) CA2844492C (ko)
IN (1) IN2014CN00797A (ko)
MX (1) MX336195B (ko)
RU (1) RU2601198C2 (ko)
TW (2) TWI577539B (ko)
WO (1) WO2013022465A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US20140237368A1 (en) * 2013-02-19 2014-08-21 Microsoft Corporation Proxying non-interactive controls to enable narration
US9442700B2 (en) * 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
US10228920B2 (en) * 2014-05-13 2019-03-12 Oracle International Corporation Automatic selection of an abstract data type
US10635504B2 (en) * 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
US10120655B2 (en) * 2016-06-03 2018-11-06 Microsoft Technology Licensing, Llc. Seamless high performance interoperability between different type graphs that share a garbage collector
US11343352B1 (en) * 2017-06-21 2022-05-24 Amazon Technologies, Inc. Customer-facing service for service coordination
US11050607B2 (en) * 2017-06-21 2021-06-29 Red Hat, Inc. Proxy with a function as a service (FAAS) support
CN109814861A (zh) * 2017-11-21 2019-05-28 海云数据 为终端用户提供能力的开放平台
US10635416B2 (en) * 2018-07-31 2020-04-28 Microsoft Technology Licensing, Llc Property filtering
CN111400162B (zh) * 2019-01-02 2023-04-25 阿里巴巴集团控股有限公司 一种测试方法及测试系统
DE112019006805A5 (de) * 2019-01-31 2021-11-04 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Ausführen von Programmkomponenten auf einem Steuergerät, ein computerlesbares-Speichermedium, ein Steuergerät und ein System
CN111857662B (zh) * 2020-07-15 2023-06-30 曹蕤 基于map和接口来描述对象特定构成的程序设计方法
CN111949253B (zh) * 2020-08-07 2023-12-01 抖音视界有限公司 组合idl文件的方法、装置、计算机设备和存储介质
US11036482B1 (en) 2020-12-22 2021-06-15 Temper Systems, Inc. Deriving many idiomatic programming language interfaces
US10963228B1 (en) 2020-12-22 2021-03-30 Temper Systems, Inc. Preventing garbage object accumulation on minimal runtimes
US11163559B1 (en) * 2020-12-28 2021-11-02 Temper Systems, Inc. Cross-publishing software libraries to module repositories
CN117453708A (zh) * 2023-12-25 2024-01-26 成都深瑞同华科技有限公司 一种gis图形与cad图形的双向联动互转方法

Family Cites Families (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097533A (en) 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
JPH0540682A (ja) 1990-06-08 1993-02-19 Internatl Business Mach Corp <Ibm> アトミシテイを有する記憶装置の高可用性耐故障再配置
US5339422A (en) 1991-03-07 1994-08-16 Digital Equipment Corporation System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment
US5964835A (en) 1992-12-17 1999-10-12 Tandem Computers Incorporated Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source
US5594863A (en) 1995-06-26 1997-01-14 Novell, Inc. Method and apparatus for network file recovery
US5910180A (en) 1995-11-21 1999-06-08 Diamond Multimedia Systems, Inc. Context virtualizing device driver architecture
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
CA2199675C (en) 1996-05-08 2002-03-26 John C. Goodwin, Iii System and method for managing electronic price label overlays
US6035342A (en) * 1997-03-19 2000-03-07 Microsoft Corporation Method and computer program product for implementing object relationships
US6026238A (en) 1997-08-18 2000-02-15 Microsoft Corporatrion Interface conversion modules based upon generalized templates for multiple platform computer systems
US6269431B1 (en) 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6920537B2 (en) 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US20050182828A1 (en) 1999-04-21 2005-08-18 Interactual Technologies, Inc. Platform specific execution
US6745385B1 (en) 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
EP1117033A1 (en) * 2000-01-14 2001-07-18 Sun Microsystems, Inc. Dynamic dispatch function
US6629264B1 (en) 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
JP3562435B2 (ja) 2000-04-12 2004-09-08 日本電気株式会社 コンポーネントの自動生成装置
US6813770B1 (en) 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US7783720B1 (en) * 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6691302B1 (en) 2000-05-31 2004-02-10 Siemens Information & Communications Networks, Inc. Interfacing a service component to a native API
US6643672B1 (en) 2000-07-31 2003-11-04 Hewlett-Packard Development Company, Lp. Method and apparatus for asynchronous file writes in a distributed file system
US6925476B1 (en) 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
US6928555B1 (en) 2000-09-18 2005-08-09 Networks Associates Technology, Inc. Method and apparatus for minimizing file scanning by anti-virus programs
US7065742B1 (en) 2000-10-30 2006-06-20 Microsoft Corporation System and method for dynamically processing declarative language instance data
US7574346B2 (en) 2000-10-30 2009-08-11 Microsoft Corporation Kernel emulator for non-native program modules
US7730213B2 (en) 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6993744B2 (en) 2000-12-19 2006-01-31 Tajen Corporation Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time
US20020161596A1 (en) 2001-04-30 2002-10-31 Johnson Robert E. System and method for validation of storage device addresses
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
CA2349905A1 (en) 2001-06-07 2002-12-07 Ibm Canada Limited-Ibm Canada Limitee System and method of mapping between software objects and structured language element based documents
US6643612B1 (en) 2001-06-28 2003-11-04 Atrica Ireland Limited Mechanism and protocol for per connection based service level agreement measurement
US7165239B2 (en) 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7581231B2 (en) 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7631084B2 (en) 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US20040201600A1 (en) 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US7330971B1 (en) 2002-01-11 2008-02-12 Microsoft Corporation Delegated administration of namespace management
US7072915B2 (en) 2002-01-22 2006-07-04 International Business Machines Corporation Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time
JP2003223350A (ja) 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US20030188043A1 (en) 2002-03-27 2003-10-02 Woodall Thomas R. Two layer middleware architecture with an intermediate target independent interface
US7320123B2 (en) 2002-04-01 2008-01-15 Sun Microsystems, Inc. Method and system for detecting deprecated elements during runtime
US7519976B2 (en) 2002-05-01 2009-04-14 Bea Systems, Inc. Collaborative business plug-in framework
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7219339B1 (en) 2002-10-29 2007-05-15 Cisco Technology, Inc. Method and apparatus for parsing and generating configuration commands for network devices using a grammar-based framework
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7546607B2 (en) 2002-11-19 2009-06-09 Microsoft Corporation Native code exposing virtual machine managed object
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US6993603B2 (en) 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7020746B2 (en) 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7197417B2 (en) 2003-02-14 2007-03-27 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
US7846023B2 (en) 2003-03-27 2010-12-07 Microsoft Corporation Application-centric user interface techniques
US7322029B2 (en) 2003-05-08 2008-01-22 American Megatrends, Inc. Method and system for recovering program code in a computer system
US7383255B2 (en) * 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7380235B1 (en) 2003-06-27 2008-05-27 Microsoft Corporation Application program interface call replay tool
US7519951B2 (en) 2003-09-30 2009-04-14 International Business Machines Corporation Multi-attribute dynamic link library packaging
US20050091271A1 (en) 2003-10-23 2005-04-28 Kasy Srinivas Systems and methods that schematize audio/video data
US7721254B2 (en) 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7493592B2 (en) 2003-10-24 2009-02-17 Microsoft Corporation Programming interface for a computer platform
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
US20050114832A1 (en) 2003-11-24 2005-05-26 Microsoft Corporation Automatically generating program code from a functional model of software
US7392527B2 (en) 2003-12-10 2008-06-24 Microsoft Corporation Driver-specific context for kernel-mode shimming
GB2409735A (en) 2003-12-30 2005-07-06 Ibm Method and system for change management of interfaces in distributed computer systems
US7440966B2 (en) 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7694315B2 (en) 2004-02-13 2010-04-06 Microsoft Corporation Schema-based machine generated programming models
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US20050216552A1 (en) 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
US7707583B2 (en) 2004-05-20 2010-04-27 Sap Ag Robust sharing of runtime systems
WO2005114487A2 (en) 2004-05-21 2005-12-01 Computer Associates Think, Inc. Method and apparatus for updating a database using table staging and queued relocation and deletion
US20050268308A1 (en) 2004-05-28 2005-12-01 Nokia Corporation System and method for implementing a general application program interface
US8306991B2 (en) * 2004-06-07 2012-11-06 Symantec Operating Corporation System and method for providing a programming-language-independent interface for querying file system content
US7941402B2 (en) 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
JP4104586B2 (ja) 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US8898123B2 (en) * 2005-06-07 2014-11-25 Rockwell Automation Technologies, Inc. Method and system for interface configuration via device-side scripting
WO2006055838A2 (en) 2004-11-18 2006-05-26 America Online, Inc. Runtime environment
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20060129745A1 (en) 2004-12-11 2006-06-15 Gunther Thiel Process and appliance for data processing and computer program product
US7617259B1 (en) 2004-12-31 2009-11-10 Symantec Operating Corporation System and method for managing redundant storage consistency at a file system level
US20060161910A1 (en) 2005-01-14 2006-07-20 International Business Machines Corporation Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment
US7519713B2 (en) 2005-02-04 2009-04-14 Microsoft Corporation Mapping between object oriented and service oriented representations of a distributed application
US7950023B2 (en) * 2005-02-04 2011-05-24 Microsoft Corporation Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7325007B2 (en) 2005-03-07 2008-01-29 Microsoft Corporation System and method for supporting non-native data types in a database API
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7716661B2 (en) 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
JP4591148B2 (ja) 2005-03-25 2010-12-01 富士ゼロックス株式会社 機能変換装置、機能変換方法、機能変換プログラム、デバイスデータ生成装置、デバイスデータ生成方法、及びデバイスデータ生成プログラム
US20060287890A1 (en) 2005-06-15 2006-12-21 Vanderbilt University Method and apparatus for organizing and integrating structured and non-structured data across heterogeneous systems
US7992140B2 (en) 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
US20070039010A1 (en) 2005-08-15 2007-02-15 Microsoft Corporation Automatic generation of software code to facilitate interoperability
CN1936853B (zh) 2005-09-22 2010-05-05 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法
KR101198583B1 (ko) 2005-10-12 2012-11-06 한국과학기술원 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체
US7716246B2 (en) 2005-11-30 2010-05-11 Microsoft Corporation Dynamic mechanism for providing metadata
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
US7890659B2 (en) 2005-12-15 2011-02-15 Microsoft Corporation Conforming web services to an updated contract
WO2007075587A2 (en) 2005-12-19 2007-07-05 Commvault Systems, Inc. Systems and methods for performing data replication
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8082555B2 (en) 2006-02-21 2011-12-20 Microsoft Corporation Routing calls via reflective interfaces and a proxy
US7552148B2 (en) 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
US7620721B2 (en) 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US9081585B1 (en) 2006-03-31 2015-07-14 The Mathworks, Inc. Interfacing a device driver with an application using a virtual driver interface and a strategy
EP1845444B1 (en) 2006-04-13 2010-05-19 Microsoft Corporation Virtual execution system for ressource-constrained devices
US7730351B2 (en) 2006-05-15 2010-06-01 Oracle America, Inc. Per file dirty region logging
JP2007316944A (ja) 2006-05-25 2007-12-06 Toshiba Corp データ処理装置、データ処理方法、およびデータ処理プログラム
US8104048B2 (en) 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
EP2293230B1 (en) 2006-09-11 2014-05-07 Software AG System for managing the lifecycle of a service oriented architecture
US20080077590A1 (en) 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
GB0619147D0 (en) 2006-09-28 2006-11-08 Ibm A method, apparatus or software for managing software component version identifications in a componentised software system
EP2075706B1 (en) 2006-10-20 2010-12-15 Fujitsu Limited Memory device and refresh adjusting method
US7840752B2 (en) 2006-10-30 2010-11-23 Microsoft Corporation Dynamic database memory management policies
US7971208B2 (en) 2006-12-01 2011-06-28 Microsoft Corporation Developing layered platform components
US8370818B2 (en) 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US7956721B2 (en) 2007-01-09 2011-06-07 Homerun Holdings Corporation Power conserving mobile transmitter
JP2008293218A (ja) 2007-05-23 2008-12-04 Nec Corp ファイル管理システム、ファイル管理方法、ファイル管理プログラム
CN101051324A (zh) 2007-05-23 2007-10-10 中兴通讯股份有限公司 一种内存数据库的事务管理方法
WO2009004620A2 (en) 2007-07-03 2009-01-08 Xeround Systems Ltd. Method and system for data storage and management
US7720800B2 (en) 2007-07-06 2010-05-18 International Business Machines Corporation Method and approach to hosting versioned web services
JP2009020705A (ja) 2007-07-12 2009-01-29 Hitachi Ltd Guiアプリケーション開発支援装置及び開発支援方法
US20090024986A1 (en) 2007-07-19 2009-01-22 Microsoft Corporation Runtime code modification
US8667482B2 (en) 2007-08-10 2014-03-04 Microsoft Corporation Automated application modeling for application virtualization
KR100927442B1 (ko) 2007-08-16 2009-11-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법
US8364683B2 (en) 2007-08-30 2013-01-29 International Business Machines Corporation Importing and reconciling resources from disjoint name spaces to a common namespace
US20090132285A1 (en) 2007-10-31 2009-05-21 Mckesson Information Solutions Llc Methods, computer program products, apparatuses, and systems for interacting with medical data objects
KR101528853B1 (ko) 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8250524B2 (en) 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US9058407B2 (en) 2008-01-22 2015-06-16 Oracle International Corporation Persistent multimedia content versioning
EP2088506A1 (en) * 2008-02-06 2009-08-12 Software AG Method and system for calling services from a remote client
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP5386111B2 (ja) 2008-05-22 2014-01-15 株式会社日立ソリューションズ ファイルシステムの記録方法
US8484204B2 (en) 2008-08-28 2013-07-09 Microsoft Corporation Dynamic metadata
US9639375B2 (en) 2008-08-28 2017-05-02 Red Hat, Inc. Generation of language bindings for libraries using data from compiler generated debug information
US8595714B1 (en) 2009-03-04 2013-11-26 Amazon Technologies, Inc. User controlled environment updates in server cluster
GB0907171D0 (en) 2009-04-27 2009-06-10 Springsource Ltd Method and apparatus for automatically generating source code files in a storage unit
US9075667B2 (en) 2009-05-21 2015-07-07 Microsoft Technology Licensing, Llc Dynamic binding directed by static types
EP2433200B1 (en) 2009-05-21 2020-02-26 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US8495621B2 (en) 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8539475B2 (en) 2009-09-29 2013-09-17 Oracle America, Inc. API backward compatibility checking
US8433865B2 (en) 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8983982B2 (en) 2009-12-22 2015-03-17 Bmc Software, Inc. Mechanism for deprecating object oriented data
US8572591B2 (en) 2010-06-15 2013-10-29 Microsoft Corporation Dynamic adaptive programming
US8224780B2 (en) 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9619779B2 (en) 2011-08-26 2017-04-11 Apple Inc. Client-side policy enforcement of developer API use
US20130055291A1 (en) 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
US9262183B2 (en) 2012-04-23 2016-02-16 Microsoft Technology Licensing, Llc Self-service composed web APIs
US8949292B2 (en) 2012-06-13 2015-02-03 International Business Machines Corporation Interoperability format translation and transformation between IFC architectural design file and simulation file formats
US9444899B2 (en) 2012-12-26 2016-09-13 Microsoft Technology Licensing, Llc Use of internet information services logging to collect user information in an asynchronous manner
US8793359B1 (en) 2013-11-25 2014-07-29 Software Ag Systems and/or methods for intelligently detecting API key domains
US9110770B1 (en) 2014-03-04 2015-08-18 Amazon Technologies, Inc. Assessing quality of code in an open platform environment

Also Published As

Publication number Publication date
CN103718155A (zh) 2014-04-09
MX2014001629A (es) 2014-05-28
BR112014003123A2 (pt) 2017-02-21
WO2013022465A1 (en) 2013-02-14
RU2014104582A (ru) 2015-08-20
CN103718155B (zh) 2017-09-26
CA2844492A1 (en) 2013-02-14
AU2011374897B2 (en) 2016-11-10
AU2017200899A1 (en) 2017-03-02
JP5933002B2 (ja) 2016-06-08
RU2601198C2 (ru) 2016-10-27
TWI577539B (zh) 2017-04-11
KR101795844B1 (ko) 2017-11-08
AU2017200899B2 (en) 2017-12-07
CA2844492C (en) 2018-11-20
EP2742420A1 (en) 2014-06-18
TW201609366A (zh) 2016-03-16
US9563487B2 (en) 2017-02-07
MX336195B (es) 2016-01-11
US20130042258A1 (en) 2013-02-14
TWI533217B (zh) 2016-05-11
IN2014CN00797A (ko) 2015-04-03
EP2742420B1 (en) 2020-09-02
AU2011374897A1 (en) 2014-02-27
EP2742420A4 (en) 2015-02-11
US8776094B2 (en) 2014-07-08
US20140325534A1 (en) 2014-10-30
TW201308209A (zh) 2013-02-16
BR112014003123B1 (pt) 2021-07-20
JP2014522063A (ja) 2014-08-28

Similar Documents

Publication Publication Date Title
KR101795844B1 (ko) 런타임 시스템
TWI556170B (zh) 將作業系統之原始應用程式介面投射至其它程式語言(二)
US9395963B1 (en) System and method for accessing meta-data in a dynamically typed array-based language
WO2014062950A1 (en) Code dependency calculation
KR20090024229A (ko) 마크업 내부에서 명시적으로 서브클래스를 정의하고 이용하는 시스템 및 방법
US20150067653A1 (en) Automatic generation of analysis-equivalent application constructs
JP6338713B2 (ja) 柔軟性の高いメタデータの合成
US7219341B2 (en) Code analysis for selective runtime data processing
US10346225B2 (en) Synthesized modules for module renaming
Ludin Learn BlackBerry 10 App Development: A Cascades-Driven Approach
Ali iPhone SDK 3 programming: advanced mobile development for Apple iPhone and iPod touch
Weitz et al. Chapter 22: The World Outside

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant