KR20010093312A - 토큰 기반 링크 - Google Patents

토큰 기반 링크 Download PDF

Info

Publication number
KR20010093312A
KR20010093312A KR1020017009728A KR20017009728A KR20010093312A KR 20010093312 A KR20010093312 A KR 20010093312A KR 1020017009728 A KR1020017009728 A KR 1020017009728A KR 20017009728 A KR20017009728 A KR 20017009728A KR 20010093312 A KR20010093312 A KR 20010093312A
Authority
KR
South Korea
Prior art keywords
token
package
class
interface
code
Prior art date
Application number
KR1020017009728A
Other languages
English (en)
Other versions
KR100713739B1 (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 KR20010093312A publication Critical patent/KR20010093312A/ko
Application granted granted Critical
Publication of KR100713739B1 publication Critical patent/KR100713739B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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

Abstract

시스템은 자원 제약 컴퓨터에 다운로드되는 구조-중립적 코드를 링크한다. 코드는 한 개 이상 기준 아이템을 가지는 한 개 이상 패키지로 분리될 수 있다. 시스템은 한 개 이상 기준 아이템을 상응하는 한 개 이상의 토큰으로 매핑하고, 런타임 모드에 상응하도록 토큰을 정렬하며, 자원 제약 컴퓨터로 패키지를 다운로드하고, 정렬된 토큰을 이용하여 패키지를 실행가능 코드로 링크한다.

Description

토큰 기반 링크{TOKEN-BASED LINKING}
가상 머신은 프로세서에 의해 실행되는 일련의 명령이나 소프트웨어 응용프로그램에 의해 발생되는 추상적 연산 머신이다. "구조 중립적(architecture-natural)"이라는 표현은 여러 다양한 컴퓨터 구조를 가지는 다양한 컴퓨터 플랫폼 상에서 가상 머신에 의해 실행될 수 있는, 자바 프로그래밍 언어로 쓰여진 것과 같은, 프로그램을 의미한다. 따라서 예를 들자면, 윈도우즈 기반의 개인용 컴퓨터 시스템에서 시행되는 가상 머신은 유닉스 기반 컴퓨터 시스템에서 실행되는 가상 머신과 동일 세트의 명령을 이용할 것이다. 플랫폼 독립형 가상 머신의 명령 순서 코딩 결과는 1바이트코드 이상의 스트림으로서, 그 각각은 예를 들어 1바이트 길이 숫자 코드이다.
자바 프로그래밍 언어의 이용은 웹브라우저와 연관된 응용프로그램을 포함하여 여러 응용프로그램에서 발견된다.
자바 프로그래밍 언어는 객체 지향적이다. 객체 지향 시스템에서, "클래스"는 데이터 컬렉션과, 그 데이터 상에서 작동하는 방법을 기술한다. 데이터와 방법은 함께 하여 객체의 행동과 상태를 기술한다.
자바 프로그래밍 언어로 쓰여진 응용 프로그램의 실행 이전에, 프로그램의 어떤 명령 순서가 상기 바이트코드에 대한 부적절한 타입의 데이터를 처리하려할 지에 관해, 또는 프로그램의 바이트코드 명령 실행이 연산수 스택의 언더플로나 오버플로를 유발할 것인지에 관해, 결정이 이루어질 수 있도록 자바 프로그래밍 언어는 확인가능한 특징을 가진다.
자바 가상 머신은 자바 프로그래밍 언어로 쓰여진 가상 머신 코드를 실행하고, 32비트 구조와 함께 이용하도록 고안된다. 그러나, 스마트카드와 같은 자원 제약 장치는 8비트나 16비트 구조를 가진다.
지능적인 휴대용 데이터 내장 카드로 알려진 스마트 카드는 플라스틱이나 금속으로 만들어지고, 프로그램과 데이터 저장을 위한 메모리와 프로그램 실행을 위한 마이크로프로세서를 포함하는 전자 칩을 가진다. 신용카드 크기인 이러한 장치는 메모리 용량이 제한된다. 가령, 일부 스마트카드는 16K ROM과 1K RAM 미만의 용량을 가진다.
더욱이, 자바와 같은 구조적 중립 언어의 장점은 그 의미론을 보존하면서 자원 제약 장치 상에서 실현될 수 있다. 토큰은 내부적이나 전용 요소로 사용될 수 있다. 따라서, 토큰은 전용 및 패키지 가시 사례 필드뿐 아니라 패키지 가시 가상 방법에 할당될 수 있다. 발명은 토큰 할당에 거의 제약을 부과하지 않으며, 토큰 카테고리는 특정 응용프로그램용으로 규정되거나 최적화도리 수 있다. 이와 같이, 발명은 제한된 저장 용량을 가지는 스마트카드와 같이 자원 제약 장치 상에서도 작동하는 휴대용, 구조 중립적 코드를 지원한다.
본 발명은 스마트카드 등과 같이 자원 제약 장치에 사용되는 객체 지향, 구조 중립적 프로그램에 관한 것이다.
도 1은 스마트카드 상의 하드웨어 플랫폼-독립형 코드의 변환 및 로딩을 도시하는 도면.
도 2는 도 1의 스마트카드와 통신하는 컴퓨터 시스템의 도면.
도 3은 패키지간 의존성을 도시하는 도면.
도 4A-B는 두 변환기 작동을 도시하는 도면.
도 5는 정적 기준을 분석하기 위한 두 패키지와 패키지 레지스트리의 도면.
도 6은 도 5의 패키지와 관련된 연결 과정의 순서도.
도 7A-I는 여러 클래스, 필드, 방법 기준을 도시하는 도면.
도 8A-I는 토큰을 할당하고 표를 지원하는 과정의 순서도.
도 9A-C는 사례 필드 및 방법에 대해 토큰을 분석하기 위한 과정의 순서도.
간단하고 안전한 형태로 객체 지향 프로그램에 대한 연결 정보를 나타내기 위한 방법이 기술된다. 이 방법을 이용함으로서, 상기 프로그램이 자원 제약 장치 상에서 다운로드, 링크, 실행이 이루어진다. 자원 제약 장치는 메모리나 연산 출력이나 속도에 한계가 있는 장치로 간주된다. 아래에 기술되는 특정 구현이 스마트카드를 들어 설명되지만, 발명은 휴대전화나 PDA와 같은 타자원 제약 장치에도 물론 적용될 수 있다. 일부 경우에, 자원 제약 장치는 1K RAM과 16K ROM의 메모리를 가질 수 있다. 마찬가지로, 일부 자원 제약 장치는 32비트 미만으로 고안된 구조를바탕으로 한다. 가령, 발명에 사용되는 일부 자원 제약 장치는 32비트 구조보다는 8비트나 16비트 구조를 바탕으로 한다.
도 1에서, 스마트카드(40)와 같은 자원 제약 장치용 애플릿의 개발이 자바 프로그램 개발과 유사한 방식으로 시작된다. 다시 말해서, 개발자는 한 개 이상의 자바 클래스를 기록하고, 한 개 이상의 클래스 파일(10)을 생성하기 위해 자바 컴파일러로 소스 코드를 컴파일한다. 애플릿은 카드(40) 상의 환경을 에뮬레이팅하기 위해 시뮬레이션 툴을 이용하여 워크스테이션 상에서 작동하고 검사되며 디버그될 수 있다. 애플릿이 카드(40)로 다운로딩할 준비가 되면, 클래스 파일(10)은 변환기(14)에 의해 변환 애플릿(CAP) 파일(16)로 변환된다. 변환기(14)는 데스크탑 컴퓨터에 의해 시행되는 자바응용프로그램일 수 있다. 변환기(14)는 변환될 클래스 파일(10)에 추가하여 한 개 이상의 엑스포트 파일(12)을 입력으로 수용할 수 있다. 엑스포트 파일(12)은 변환되는 클래스에 의해 유입되는 다른 패키지의 내용에 대한 명칭이나 연결 정보를 포함한다.
일반적으로, CAP 파일(16)은 단일 자바 패키지에서 규정된 모든 클래스와 인터페이스를 포함하고, 8비트 바이트의 스트림으로 나타난다. 모든 16비트 양 및 32비트 양은 각각 두 개나 네 개의 8비트 바이트를 판독함으로서 구축된다. 다른 중에서도, CAP 파일(16)은 방법 성분(20)으로부터 따로 꾸려지는 일정 풀 성분("성분 풀")(18)을 포함한다. 스마트카드에 의한 실행시나 스마트카드(40)로 프로그램이 링크되거나 다운로드될 때 분석되는 방법 및 필드 기준을 포함하여 일정 풀(18)은 여러 타입의 상수를 포함할 수 있다. 방법 성분(20)은 구체적으로 응용프로그램 명령이 스마트카드(40)로 다운로드되게 하여 이어서 스마트카드에 의해 실행되게 한다.
변환 후, CAP 파일(16)은 하드 드라이브, 플라피 디스크, 광학 매체, 플래시 장치 등의 컴퓨터에 의해 판독되는 매체(17)에 저장될 수 있다. 컴퓨터에 의해 판독되는 매체는 반송파의 형태를 취할 수도 있다. 예를 들어 네트워크 데이터 전송이나 RF 데이터 링크 등을 예로 들 수 있다.
CAP 파일(16)은 주변 카드 수용 장치(CAD)(24)로 데스크탑 컴퓨터와 같은 단말기(22)에 복사되거나 전송될 수 있다. CAD(24)는 정보를 스마트카드(40)에 기록하고 스마트카드(40)로부터 검색하게 한다. CAD(24)는 카드 포트(도시되지 않음)를 포함하고, 상기 카드 포트 내로 스마트카드(40)가 삽입될 수 있다. 삽입되면, 커넥터로부터의 접점이 스마트카드(40) 상의 표면 연결 영역을 눌러서, 출력 및 스마트카드와의 통신을 제공한다. 다른 구현에서 무접점 통신이 사용될 수도 있다. 단말기(22)는 카드(40)로의 전송을 위해 CAP 파일(16)을 로딩하는 설치 툴(26)을 또한 포함한다. 스마트카드(40)는 한 세트의 접점을 포함할 수 있는 입/출력 포트(42)를 가진다. 이를 통해 프로그램, 데이터, 다른 통신이 제공된다. 카드(40)는 설치툴(46)을 또한 포함하여, CAP 파일(16)의 내용을 수신하고 카드(40) 상에서의 실행을 위해 애플릿을 준비한다. 설치 툴(46)은 자바 프로그램으로 구현될 수도 있고, 카드(40) 상에서 실행될 수 있다. 카드(40)는 RAM(50)과 같은 휘발성 메모리를 가진다. 카드(40)는 EEPROM(54)과 같은 비휘발성 메모리와 ROM(52)을 또한 가진다. 제어기(44)에 의해 준비되는 애플릿은 EEPROM(54)에 저장될 수 있다.
한 특정 구현에서, 애플릿은 마이크로프로세서(48) 상에서 구동되는 가상 머신(49)에 의해 실행된다. 자바 카드 가상 머신으로 명명될 수 있는 가상 머신(49)은 CAP 파일(16)을 로딩하거나 조작할 필요가 없다. 차라리, 자바 카드 가상 머신(49)은 CAP 파일(16)의 일부로 앞서 저장된 애플릿 코드를 실행한다. 자바 카드 가상 머신(49)과 설치 툴(46) 사이의 기능 분할은 가상 머신과 설치 툴 모두가 상대적으로 작게 유지되게 한다.
일반적으로, 스마트카드(40)와 같은 자원 제약 플랫폼용으로 쓰여진 애플릿과 구현체는 자바 플랫폼 패키지용 표준 규칙을 따른다. 자바 가상 머신과 자바 프로그래밍 언어는 T. Lindholm 외 다수의 "Java Virtual Matching Specification(1997)"과 K. Arnold 외 다수의 "Java Programming Language", Second Edition(1998)에 기술되어 있다. 스마트카드 플랫폼용 응용 프로그래밍 인터페이스(API) 클래스는 패키지 수신지를 포함하는 자바 소스 파일로 쓰여질 수 있고, 이때 패키지는 다수의 컴파일 유닛과 한 개의 고유 명칭을 가진다. 클래스, 필드, 방법에 대한 접근을 식별하고 제어하기 위해 패키지 메카니즘이 사용된다. 자바 카드 API는 한 자바 카드 작동 플랫폼용으로 쓰여진 응용프로그램이 또다른 자바 카드 작동 플랫폼에서 작동하게 한다. 추가적으로, 자바 카드 API는 ISO 7816과 같은 공식 국제 표준이나 Europay/MasterCard/Visa(EMV)와 같은 산업 표준과 호환된다.
마이크로프로세서(48) 상에서 구동되는 가상 머신(49)이 스마트카드(40) 상에서 바이트코드를 실행하는 구현예를 들어 설명되었으나, 대안의 구현에서 응용프로그램 전용 집적 회로(ASIC)나 하드웨어 및 펌웨어의 조합이 대신 사용될 수 있다.
도 1에서, 제어기(44)는 CAP 파일(16)의 내역을 수신하기 위해, 그리고 프로세서(48)D 의해 실행될 애플릿을 준비하기 위해 설치 툴(46)을 이용한다. 설치 툴(46)은 스마트카드(40) 상에서의 실행을 위해 적절히 변환된 자바 프로그램으로 구현될 수 있다. 아래의 내용에서, 제어기(44)는 마이크로프로세서(48) 상에서 구동되는 가상 머신 프로그램(49)을 포함한다고 가정한다. 가상 머신(49)은 CAP 파일(16)을 조작하거나 로딩할 필요가 없다. 차라리, 가상 머신(49)은 CAP 파일(16)의 애플릿 코드를 실행한다. 가상 머신(49)과 설치 툴(46) 간의 기능 분할은 가상 머신과 설치 툴 모두를 상대적으로 작게 한다. 대안의 구현에서, 제어기(44)는 응용프로그램 전용 집적 회로(ASIC)로 배선될 수 있고, 또는 하드웨어 및 펌웨어의 조합으로 구현될 수도 있다.
다른 자원 제약 장치에도 사용될 수 있는 스마트카드 플랫폼은 클래스 사례와 어레이를 포함하는 동적으로 생성된 객체를 지원한다. 클래스는 단일 기존 클래스의 확장이나 서브클래스로 구현되고, 그 멤버는 필드로 불리는 변수와 방법이다. 방법은 호출될 수 있는, 그리고 고정량의 값을 지나는 실행 코드를 인수로 선언한다. 클래스는 자바 인터레이스를 또한 구현할 수 있다. 인터페이스는 그 멤버가 일정하고 추상적 방법인 기준 타입이다. 가상 머신(49)은 기능을 지원하면서 자바 카드 API를 포함하는 런타임 시스템에 접근을 제공하는 최초 구현이나 인터프리터를 포함할 수 있다.
도 2에 도시되는 바와 같이, 컴퓨터(22)는 도 1의 카드(40)를 수신하기 위해 카드 수용 장치(24)를 갖춘다. 컴퓨터(22)는 서버(47)와 같이 다수의 다른 연산 장치와 통신하는 네트워크(45)에 연결될 수 있다. 카드 내장 장치를 이용하여 네트워크(45) 상에서 스마트카드로 데이터와 소프트웨어를 로딩하는 것이 가능하다. 이 특성의 다운로드는 스마트카드 상에 로딩될 애플릿이나 타프로그램뿐 아니라, 디지털 캐시나 그외 다른 정보를 포함할 수 있다. 카드 수용 장치 및 스마트카드의 처리 요소를 제어하기 위해 사용되는 명령 및 데이터는 휘발성 메모리나 비휘발성 메모리에 저장될 수 있고, 명령 및 데이터를 포함하는 반송파로 통신 링크 상에서 직접 수신될 수도 있다. 가령, 네트워크(45)는 인터넷이나 다른 네트워크와 같은 WAN이나 LAN일 수 있다.
도 3은 스마트카드(40) 상에 로딩될 프로그램 패키지(API와 프로그램 애플릿 포함)의 그룹간 전형적 수직 구조 의존도를 도시하는 블록도표이다. 응용프로그램이 스마트카드(40) 상에 점차적으로 로딩될 수 있고, 실행을 위해 온-카드로 링크되어, 스마트카드(40)의 기능이 공장 프로그램 기능에 부가한 추가 기능으로 갱신될 수 있다. 도면에서, 자바 언어 프레임웍(50)과 자바 카드 프레임웍(52)은 자바 카드 API 레벨로 존재한다. 자바 카드 API 레벨 위에 한 개 이상의 커스텀 프레임웍(54)을 가진 커스텀 API 레벨이 있다. 커스텀 프레임웍(54)은 기존 프레임웍이나 다른 API로 확장하기 위해 여러 소프트웨어 개발 키트(SDK)를 통해 한 개 이상의 부가가치 제공자에 의해 공급될 수 있다. 여러 애플릿(56, 58, 60)이 위치하는 응용프로그램 레벨이 가장 높은 레벨이다.
도 3에 도시되는 바와 같이, 패키지는 낮은 API 레벨의 패키지로부터 또는 동일한 API 레벨의 다른 패키지에 따라 좌우될 수 있다. 가령, 애플릿(58)은 애플릿(58)의 프로그램 요소를 말할 수 있고, 자바 카드 프레임웍(52)은 자바 언어 프레임웍(50)으로부터 의존도를 가질 수 있다. 더욱이, 커스텀 API 레벨에서의 커스텀 프레임웍(54)과 애플릿(58, 60)은 자바 카드 프레임웍(52)으로부터 의존하는 기준을 가질 수 있다. 물론, 애플릿(56, 58)은 커스텀 프레임웍(54)으로부터 좌우되는 기준을 가질 수 있다. 애플릿(56)과 커스텀 프레임웍(54)은 자바 언어 프레임웍(50)으로부터 또한 좌우될 수 있다. 도 3의 예가 선형 의존도를 보여주지만, 적절한 변환기(14)와 설치 툴(46)을 이용함으로서 원형 의존도와 같이 비선형 의존도도 지원될 수 있다.
예를 들어 자바 응용프로그램으로부터 CAP 파일(74)로의 클래스 파일 세트 변환은 스마트카드(40) 상에 설치 준비된 데스크탑 컴퓨터에서 발생할 수 있다. 데스크탑 컴퓨터(22)는 전형적 스마트카드(40)만큼 자원이 제약되지 않는다. 추가적으로, 변환 작동은 다른 적절한 플랫폼에서도 물론 실행될 수 있다.
도 4A는 패키지 변환용 시스템을 도시하고, 이 시스템은 스마트카드(40) 상의 다운로드를 준비한 애플릿이나 라이브러리를 규정할 수 있다. 변환기(72)는 한 개 이상 클래스 파일(70)로부터 데이터 입력을 수신하고, 이 클래스 파일들은 애플릿의 기능을 규정한다. 변환기(72)는 다운로드에 적절한 자바 카드 CAP 파일(74)을 발생시킨다.
아래에 상세히 설명되는 바와 같이, CAP 파일(74)은 패키지 내의 요소에 대한 기준을 분석하기 위해 엑스포트 성분(82)을 내장하고, 이때 상기 요소들을 다른 패키지가 참고할 수 있다. 엑스포트 성분(82)은 클래스, 방법, 필드와 같은 정적 아이템에 대한 엔트리를 포함한다. 사례 필드, 가상 방법, 인터페이스 방법과 같은 동적 아이템에 대한 기준은 엑스포트 성분에 제시될 필요가 없으나 아래에 기술되는 과정에 따라 처리될 수 있다.
자원 제약 장치에서, 아이템을 나타내는 유니코드 스트링의 이용은 메모리와 프로세서 자원을 소모한다. 스트링 대신에, 엑스포트 성분(82)은 토큰이나 간단한 고유 숫자값을 CAP 파일(74)의 타성분에 규정된 특정 요소로 매핑한다. 엑스포트 성분에서 이 요소들을 나타내기 위해 사용되는 토큰 값은 상응하는 엑스포트 파일(80)에서 공개된 토큰 값과 일치한다.
더욱 상세하게, CAP 파일(74)은 헤드 성분(76), 일정 풀(78), 방법 성분(80), 엑스포트 성분(82)을 가진다. 일정 풀(78)은 한 개 이상의 클래스, 필드, 방법 기준을 포함하여, 프로그램 요소나 아이템에 대한 기준이 패키지의 일정 풀(78)을 통해 간접적으로 이루어지게 한다. 방법 성분(80)은 CAP 파일(74)에 의해 나타나는 애플릿 패키지에 의해 구현되는 모든 방법을 포함한다. 방법 기준은 방법 성분에 위치한 방법을 분석한다. 클래스 및 정적 필드 기준은 클래스 성분, 정적 필드 성분의 위치를 각각 분석한다.
엑스포트 성분(82)은 CAP 파일 A(74)에 규정된 패키지에서 특정 프로그램 요소가 발견될 곳을 기술하는 토큰 값(84)과 이에 상응하는 프로그램 요소 링크 정보(86)를 갖춘 한 개 이상의 엔트리를 포함한다. 링크 정보는 CAP 파일(74)의 내역에 특정하지만, 특정 카드 상의 내부 표시와는 특정하지 않다. 따라서 이 성분은 카드 전용 사적/안전 정보를 기술하지 않는다.
변환기(72)는 CAP 파일(74)로 클래스 파일의 변환 중 엑스포트 파일(80)을 발생시킬 수 있다. 각각의 CAP 파일에 대해 한 개의 엑스포트 파일이 발생된다. 엑스포트 파일(80)은 CAP 파일(74)의 특정 프로그램 요소에 대한 기호명(90)과 이에 상응하는 토큰값(92)을 갖춘 한 개 이상의 엔트리를 가진다. 엑스포트 파일(80)은 클래스 파일 패키지의 외부적으로 접근가능한 프로그램 요소에 관한 정보와, 제 2 패키지에 의해 제 2 CAP 파일로 참고될 수 있는 CAP 파일(74)의 프로그램 정보를 제공한다. 가령, 엑스포트 파일(80)은 한 개의 자바 패키지에 규정된 모든 공공 클래스 및 인터페이스에 대한 기준과, 상기 클래스 및 인터페이스에 규정된 모든 공공 및 보호 필드와 방법을 포함한다. 엑스포트 파일(80)은 프로그램 요소나 아이템을토큰으로 매핑하는 것을 또한 포함하며, 이는 패키지 변환 중 유입된 아이템에 대한 명칭을 토큰에 매핑하기 위해 사용될 수 있다. 엑스포트 파일은 애플릿과 관련 라이브러리의 세부사항을 노출시키지 않는다. 따라서, 여러 분리 개발된 응용프로그램이 자원 제약 장치에 로딩될 수 있고, 사적 보안 정보에 절충없이 서로 성분을 공유할 수 있다. 엑스포트 파일(80)은 사적, 또는 전용 요소와 애플릿 및 관련 라이브러리의 세부사항을 노출시키지 않고, 분리 개발된 응용프로그램은 카드(40) 상에서 로딩될 수 있으며, 사적 보안 정보의 절충없이 서로 추출된 요소를 공유할 수 있다.
도 3과 4에서, 자바카드.프레임웍 API(52)를 포함하는 다수의 클래스파일(70)이 변환중일 때, 변환 중 발생되는 엑스포트 파일(80)은 따로 변환되는 타 애플릿 프로그램이, 자바카드.프레임웍.API의 아이템을 외부적으로 기준하기 위해 어느 토큰을 이용할 지 알게 한다. 가령, 애플릿이 프레임웍 클래스 PIN을 기준으로 할 경우, 자바카드.프레임웍에 대한 엑스포트 파일(80)은 그 토큰과 함께 클래스 자바카드.프레임웍.PIN에 대한 엔트리를 포함한다. 변환기(72)는 프레임웍의 클래스에 대한 비분석 기준을 나타내기 위해 새 애플릿의 CAP 파일의 일정 풀에 이 토큰을 위치시킬 것이다. 아래에 설명되는 바와 같이, 애플릿 실행중, 요소 링크 정보 검색을 위해 프레임웍 API 패키지의 엑스포트 성분(78)에 기준 아이템을 위치시키기 위해 토큰이 사용될 수 있다. 가령, 한 방법의 링크 정보는 상기 패키지의 방법 성분(80)에 포함된 적절한 방법을 위치시키기 위한 정보를 제공할 수 있다.
도 4B는 클래스 파일(94)의 제 2 패키지를 변환하는 변환기(72)를 도시한다. 여기서, 상기 클래스 파일(94)은 제 1 패키지(70)로부터의 클래스 파일로부터 요소를 유입한다. 가령, 제 2 패키지는 앞서 변환된 자바카드.프레임웍 라이브러리 패키지에서 포함된 일부 클래스에 의존하는 애플릿 클래스 세트일 수 있다. 변환기(72)는 앞서 변환된 패키지로부터 한 개 이상의 엑스포트 파일(80)과 클래스 파일(94)로부터의 데이터 입력을 수신한다. 변환기(72)는 스마트카드(40)로의 다운로드에 적절한 CAP 파일(100)을 발생시킨다.
제 2 패키지용 CAP 파일 B(100)는 애플릿 클래스로 기준잡은 모든 패키지의 목록을 가지는 임포트(import) 성분(104)을 포함한다. 각각의 이러한 외부 패키지 기준은 상기 패키지에 대한 내부 패키지 토큰과 외부 고유 응용프로그램식별자(AD) 간의 매핑을 포함한다. 각각의 패키지 토큰은 간명한 방식으로 특정 기준 외부 패키지를 식별하기 위해 CAP 파일(100) 내의 다른 성분에 사용되어, 애플릿을 나타내는 족적 크기를 감소시킨다.
CAP 파일(100)은 헤더 성분(102), 임포트 성분(104), 일정 풀(108)을 또한 가진다. 일정 풀(108)은 한 개 이상의 클래스 기준(110)을 포함하고, 상기 클래스 기준(110)은 상응하는 패키지 토큰과 클래스 토큰으로 각각의 클래스 기준을 매핑하여, 전용 클래스를 그 상응하는 외부 패키지와 상기 패키지 내의 클래스로 매핑한다. 이 토큰들의 이용은 아래에 기술된다. 일정 풀(108)은 한 개 이상의 방법 기준(112)을 또한 포함하고, 상기 방법 기준(112)은 상응하는 패키지 토큰, 클래스 토큰, 방법 토큰으로 각각의 방법 기준을 매핑한다. 일정 풀(108)은 한 개 이상의 필드 기준(114)을 또한 포함할 수 있고, 각각의 필드 기준(114)은 그 패키지 토큰, 클래스 토큰, 필드 토큰을 가진다.
일반적으로, 프로그램 요소나 아이템에 대한 기준은 각 패키지의 일정 풀(108)을 통해 간접적으로 만들어진다. 타패키지에서의 아이템에 대한 기준은 외부적이라고 일컬어지며, 토큰 형태로 나타난다. 동일 CAP 파일에서의 아이템에 대한 기준은 내부적이라고 일컬어지며, 토큰 형태나 다른 내부 형태로 나타날 수 있다. 가령, 클래스에 대한 외부 기준(110)은 패키지 토큰과 클래스 코튼으로 이루어진다. 이 토큰들은 어떤 외부 패키지의 어떤 클래스를 구체화한다. 클래스에 대한 내부 기준은 CAP 파일 내 클래스 구조 위치에 대한 포인터일 수 있다. 대안으로, 외부 토큰 시스템은 마찬가지로 내부적으로 사용될 수 있다. 외부 기준(112-114)은정적 필드나 정적 방법에 대한 토큰, 패키지 토큰, 클래스 토큰과 함께 정적 클래스 멤버를 의미한다. 정적 클래스 멤버에 대한 내부 기준은 CAP 파일의 아이템 위치에 대한 포인터일 수 있으나, 토큰 시스템을 이용할 수도 있다. 사례 필드, 가상 방법, 인터페이스 방법에 대한 기준은 적절한 타입의 토큰과 클래스 기준으로 이루어진다. 클래스 기준은 기준이 내부적인지 외부적인지를 표시한다.
CAP 파일의 외부 기준은 토큰 형태로부터 자바 카드 가상 머신에 의해 이용되는 내부 표시로 카드 상에서 분석될 수 있다. 토큰은 이를 규정하는 패키지 범주에서만 분석될 수 있다. 엑스포트 파일이 패키지의 외부 가시 명칭으로부터 토큰으로 매핑함에 따라, 토큰으로부터 분석된 기준까지 매핑하는 카드 상의 각각의 패키지에 대한 링크 정보 세트가 존재한다. 이 방식으로, 변환기(97)는 클래스 파일(92)과 엑스포트 파일(94)을 처리하고, 자원 제약 장치 상에 애플릿을 다운로드하기 위해 적절한 이미지를 생성하며, 제 1 패키지에 대한 기준을 분석한다.
도 4A와 4B에서 실행된 사전 처리 이후에, 도 4B의 CAP 파일은 스마트카드(40)로, 또는 도 4A의 CAP 파일을 포함하는 자원 제약 장치로 다운로드될 수 있다. 도 5와 6은 토큰 기반 연결이 스마트카드(40)나 소형 장치 상의 정적 요소에 대해 행하여지는 방법을 상세히 설명한다. 정적 요소는 변환 과정 중 변환기에 의해 정확한 표기가 식별될 수 있는 요소를 포함한다.
도 5에서, 패키지 P2의 이미지(200)가 가령, CAP 파일 B(100)로부터 카드(40)로 로딩되고, 실행 중이나 실행 전에 이전 패키지 P1에 링크될 수 있다. 패키지 P2(200)의 프로그램 요소는 카드(40) 상의 이미지(174)로 이미 존재하는 외부 패키지 P1의 타 데이터와 방법에 대한 기준을 포함할 수 있다. 이미지(174)는 헤더 성분(176), 일정 풀(178), 방법 성분(180), 엑스포트 성분(182)을 포함하고, 엑스포트 성분(182)은 모든 유출된 정적 아이템(185)에 대한 토큰 목록을 포함한다. 외부 패키지에 대한 기준의 분석을 돕기 위해, 패키지 레지스트리(120)가 카드(40) 상에 생성되어, 패키지 P2의 이미지(200)에 의해 요구되는 특정 방법을 포함하는 페키지 P1의 이미지(174)를 포함하여 한 개 이상의 외부 패키지를 위치시키는 데 사용되는 정보를 제공한다.
패키지 P2의 이미지(200)는 헤더 성분(202), 임포트 성분(204), 일정 풀(208), 방법 성분(216)을 포함하고, 이 모두는 CAP 파일 B(100)의 각 성분(102, 104, 108, 116)에 상응한다. 이들 성분의 일반적 조직화는 CAP 파일에 대해 앞서 기술된 바 있다. 일반적으로, 방법 성분(216)은 "new"(218), "invokestatic"(220), "getstatic_b"(222)와 같은 프로그램 기준을 각각의 호출된 클래스 기준, 방법 기준, 필드 기준과 함께 포함할 것이다.
도 6은 도 5의 패키지 P2(200)에 대한 링크 과정(140)을 도시한다. 방법 성분(216)의 실행 방법이 특정 방법을 호출할 때, 연결(링크)이 필요하다(단계 142). 이때 특정 방법이란 외부 패키지(패키지 1)에 위치하는 방법 성분(180)에서의 방법 T를 예로 들 수 있다. 명령에 대한 연산수로 제공되는 지표를 이용하여, 처리과정(140)은 일치 방법 기준(212)을 일정 풀(208)에 위치시키고 검색한다(단계 144). 아래 기술되는 바와 같이, 방법 기준은 외부 패키지에 상기 특정 방법을 위치시키기 위해 사용되는 패키지 토큰, 클래스 토큰, 방법 토큰으로 이루어진다. 그후, 과정(140)은 검색된 패키지 토큰을 바탕으로 외부 패키지 P1의 고유 AID를 찾기 위해 임포트 성분(204)을 검사한다(단계146). 그후, 패키지 레지스트리(120)는 AID를 바탕으로 패키지 P1의 위치를 찾기 위해 검사된다(단계 148). 패키지 레지스트리(120)로부터 패키지 P1에 대한 이미지(174)가 발견되면, 구체화된 클래스 토큰으로 클래스를 위치시키기 위해 이미지(174)의 엑스포트 성분(182)이 검색된다(단계 150). 바람직한 방법, 가령 방법 T에 대한 프로그램 링크 정보는 구체화 방법 토큰으로 방법을 위치시키기 위해 단계 150에서 발견된 특정 클래스와 연계된 방법 목록을 검색함으로서 발견된다(단계 152). 마지막으로, 방법 성분(180)에서 구체화 방법, 가령 방법 T의 위치는 엑스포트 성분(182)의 방법을 위해 제공된 링크 정보를 바탕으로 결정된다(단계 154).
도 6의 처리과정을 이용하여, 패키지가 카드 상에 다운로드될 수 있고, 가상 머신에 의한 실행을 위해 준비될 수 있다. 이 과정이 "설치"라 불린다. 처리 및 연결 과정의 순서가 다른 여러 설치 과정이 사용될 수 있다. 이 설치 과정은 카드 상의 가용 자원을 바탕으로 최적화될 수 있다. 한 구현에서, 어떤 연결도 발생하지 않고, 데이터가 수신되면 바로 저장된다. 코드 해독이나 실행 중, 회부 기준의 분석이 발생한다. 이와 같이, 모든 임시 링크 정보가 이 카드에 영구 저장되기 때문에 이 구현은 제약이 적은 소형 장치에 사용된다.
앞서 기술한 바와 같이, 자바 클래스 파일에 사용되는 유니 코드 스트링 대신에, 자원 제약 장치 상의 기준을 분석하고 CAP 파일의 아이템을 식별하기 위해 토큰이 사용된다. API용 토큰은 API 개발자에 의해 양도되고, 상기 API에 대한 패키지 엑스포트 파일에서 공개된다. 명칭-토큰 매핑이 공개되기 때문에, API 개발자는 발명의 제약 내에서 토큰에 대한 순서를 선택할 수 있다.
이와 함께, 도 5와 6은 클래스, 정적 필드, 정적 방법인 정적 아이템에 대한 기준의 분석을 기술한다. 이 아이템의 구현은 컴파일과 변환 중에 완전 위치 선정 가능하다. 이와는 대조적으로, 컴파일과 변환 중, 사례 필드, 가상 방법, 인터페이스 방법에 대한 기준은 특정 구현에 정적으로 묶이지 않는다. 이 아이템들은 런타임시 사례를 참고하여 가용한 추가 정보를 필요로한다. 이들 타입에 대한 기준 분석이 도 9A-9C에서 설명된다.
가상 방법에 대한 토큰 양도는 객체 지향 클래스 수직 구조 내의 관계를 보존한다. 가상 방법 및 인터페이스 방법용 토큰은 가상 방법 표와 인터페이스 방법 표에 대한 지표로 이용된다. 특정 카드 플랫폼은 자원 제약 장치의 구현에 가장 유용한 내부 표시로 토큰을 분석할 수 있다.
일부 토큰은 지표로 분석될 수 있다. 가령, 사례 필드 토큰은 클래스 사례로의 지표로 분석될 수 있다. 이러한 경우에, 토큰값은 분석 지표값과 다르고 관련도 없다.
패키지의 각 종류의 아이템은 상기 종류의 토큰에 대한 고유 독립 범위를 가진다. 샘플 토큰 범위와 양도 규칙이 아래에 나열된다.
토큰 타입 범위 타입 구분
패키지 0-127 사적 CAP 파일
클래스(인터페이스 포함) 0-255 공적 패키지
정적 필드 0-255 공적 클래스
정적 방법 0-255 공적 클래스
사례 필드 0-255 공적 또는 사적 클래스
가상 방법 0-127 공적 또는 사적 클래스 수직구조
인터페이스 방법 0-127 공적 클래스
도 7A-7I는 기준 표시를 나타내는 도면이다. 도 7A-7C는 유입된 요소에 대한 기준을 나타내고, 도 7D-7I는 토큰을 사용하는 내부 아이템에 대한 기준을 나타낸다.
도 7A는 외부 클래스(180)에 대한 클래스 기준을 도시한다. 도 7A의 클래스 기준은 패키지 토큰과 클래스 토큰이다. 도 7B는 외부 필드 기준의 표시이다. 외부 필드 기준(182)은 패키지 토큰, 클래스 토큰, 필드 토큰을 포함한다. 도 7C는 외부 방법 기준(184)의 표시이다. 외부 기준(184)은 패키지 토큰, 클래스 토큰, 방법 토큰을 포함한다. 가상 방법의 경우에 높은 비트의 방법 토큰이 0으로 설정된다. 높은 비트의 설정은 이 방법이 규정 패키지의 외부에서 접근됨을 의미한다. 높은 비트는 1바이트의 7번째 비트, 1워드의 15번째 비트, 3바이트 유닛의 23번째 비트와 같은 가장 중요한 비트일 수 있다.
높은 비트의 패키지 토큰은 유입 패키지를 표시하도록 설정된다. 이는 외부 기준과 내부 기준 사이를 구분하기 위해 사용된다. 도 7D-7I에 도시되는 바와 같이, 내부 요소에 대한 기준은 높은 비트를 0으로 설정한다. 도 7D-7I의 형태는 내부 아이템에 대한 확장 토큰 이용의 예이다.
도 7D는 내부 클래스 기준(186)의 표시를 나타낸다. 내부 클래스 기준(186)은 클래스 성분의 클래스 정보 구조에 대한 오프셋을 포함한다. 도 7E는 내부 필드에 대한 정적 필드 기준(188)의 표시를 나타낸다. 이와 같이, 정적 필드 기준(188)은 0으로 설정되는 필드와, 정적 필드 이미지의 정적 필드에 오프셋을 포함하는 필드를 가진다. 도 7F는 내부 방법에 대한 정적 방법 기준(190)의 표시이다. 정적 방법 기준(190)은 유입된 방법 기준과 동일 크기로 기준을 만들기 위해 0으로 설정되는 패딩 필드를 포함한다. 정적 방법 기준(190)은 방법 성분의 정적 방법에 대한 오프셋에 관한 정보를 제공하는 필드를 또한 포함한다.
도 7G는 내부 필드에 대한 내부 필드 기준(192)의 표시를 나타낸다. 도 7G에서 사례 필드 기준(192)은 클래스 성분의 클래스 정보 구조에 대한 오프셋과 필드 토큰을 포함한다. 도 7H는 내부 방법에 대한 공적/보호 방법에 대한 가상 방법 기준(194)을 도시한다. 가상 방법 기준(194)은 도 7C의 포맷에 따르도록 외부적으로 접근하는 가상 방법을 표시하기 위해 삭제되는 필드인 클래스 성분에 클래스 정보 구조에 대한 오프셋을 포함한다. 가상 방법 기준(194)은 방법 토큰을 또한 포함한다.
마지막으로, 도 7I는 내부 방법의 경우 패키지 가시 방법에 대한 가상 방법 기준(196)의 표시를 나타낸다. 가상 방법 기준(196)은 클래스 성분과 클래스 정보 구조에 대한 오프셋을 포함하고, 이는 이 기준의 범위가 패키지 내부에 있음을 표시하는 1로 설정되는 필드이다. 기준(196)은 방법 토큰을 또한 포함한다.
도 8A-8I는 토큰을 할당하고 가상 방법 표와 인터페이스 방법 표를 구축하기 위한 과정의 순서도이다. 이 과정들은 앞서 기술한 바와 같이 변환기(72)에 의해실행될 수 있다. 도 8A에서, 패키지 토큰을 할당하는 과정(230)이 소개된다. 일반적으로, CAP 파일 내로부터의 패키지 기준은 CAP 파일에만 사용되는 할당 토큰이다.
과정(230)은 먼저 유입 패키지 목록을 얻는다(단계 231). 목록은 임의 순서를 가질 수 있다. 그후, 과정(230)은 유입되는 패키지의 수가 127과 같이 정해진 한계값을 넘는 지를 확인한다(단계 232). 이 경우에, 127이라는 한계값은 보존되는 높은 비트로 8비트의 패키지 토큰을 나타내기 위해 사용된다. 유입 패키지의 수가 127과 같은 정해진 한계값을 넘을 경우, 처리과정은 실패한다(단계 205).
대안으로, 과정(230)은 현 토큰값을 0으로 초기화한다(단계 233). 그후, 과정(230)은 현 패키지를 목록의 제 1 패키지로 초기화한다(단계 234). 과정(230)은 현 패키지가 비어었는 지를 확인한다(단계 235). 비지 않았을 경우, 과정(230)은 현 패키지에 현 토큰을 할당한다(단계 236). 그후, 과정(230)은 현 토큰값을 1만큼 증가시키고(단계237), 현 패키지를 목록의 다음 패키지로 설정한다(단계 238).
단계 235로부터, 유입 패키지가 없음을 나타내는 현 패키지가 비어있는 경우에, 과정(230)은 임포트 성분에서 토큰을 기록하고(단계 239) 빠져나온다. 유입 패키지의 아이템에 대한 기준은 유입 성분에 기록된 토큰값을 이용한다.
도 8B에서, 클래스와 인터페이스 토큰을 할당하는 과정(240)이 도시된다. 과정(240)은 임의 순서를 가지는 공적 클래스 및 인터페이스의 목록을 얻는다(단계 241). 그후, 클래스와 인터페이스의 수가 256과 같이 정해진 값을 넘는지 확인한다(단계 242). 이때 256은 8비트로 표시될 수 있는 클래스의 최대 수이다.그러하다면, 과정(240)은 실패한다(단계 205). 대안으로, 과정(240)은 현 토큰값을 0으로 초기화한다(단계 243). 과정(240)은 현재 아이템을 단계 241에서 얻은 목록의 인터페이스나 제 1 클래스로 초기화한다(단계 244). 그후, 과정(240)은 현 아이템이 비어있는 지를 결정한다(단계 245). 이는 목록에 어떤 클래스나 인터페이스도 없음을 나타낸다. 그렇지 않을 경우, 과정(240)은 현 아이템에 현 토큰값을 할당하고(단계246), 이는 클래스나 인터페이스 아이템일 것이다. 그후, 과정(240)은 현 토큰값을 1씩 증가시키고(단계 247), 단계 245로 돌아가기 전에 현 아이템을 목록의 다음 클래스나 인터페이스로 설정한다. 단계 245로부터, 현재 아이템이 비어있는 경우에(목록에 어떤 클래스나 인터페이스도 존재하지 않음을 나타냄), 과정(240)은 엑스포트 성분표에 토큰값을 기록한다(단계 249). 추가적으로, 과정(240)은 엑스포트 파일에 토큰값을 공개하고(단계 251), 빠져나온다.
도 8C-1과 8C-2는 정적 필드 토큰을 처리한다. 도 8C-2는 컴파일 시간 상수를 인라인함에 의한 도 8C-1의 최적화 버전이다. 패키지의 외부적 가시 정적 필드에는 공적 토큰이 할당된다. 패키지-가시 및 사적 정적 필드에는 토큰이 할당되지 않는다. 도 8C-2는 과정(250)의 최적화인 과정(280)을 기술한다. 이 최적화에서, 컴파일 시간 상수로 초기화되는 최종 정적 필드에 대해 토큰이 할당되지 않는다. 이 경우에 필드는 온-카드로 링크되지 않는다.
도 8C-1에서, 공적 클래스나 인터페이스에서 정적 필드 토큰을 할당하기 위한 과정(250)이 도시된다. 과정(250)은 공적 클래스나 인터페이스에서 공적/보호 정적 필드의 임의순서 목록을 먼저 얻는다(단계 252). 그후 과정(250)은 현 토큰값을 0으로 설정하고(단계 254), 현 필드를 목록의 첫 번째 정적 필드로 초기화한다(단계256). 과정(250)은 더 이상의 필드가 남아있지 않음을 표시하는 현 필드의 빔을 결정한다(단계 258). 비지 않았을 경우, 과정(250)은 현 토큰값을 현 필드에 할당하고(단계 260), 현 토큰값을 1씩 증가시킨다(단계 262). 과정(250)은 단계 258로 복귀하지 전에 목록의 다음 정적 필드로 현 필드를 설정한다(단계 264).
단계 258로부터, 현 필드가 비어있는 경우에(더이상의 필드가 없음을 표시), 과정(250)은 현 토큰이 255와 같은 지정값보다 큰 지를 결정한다(단계 266). 255라는 수는 8비트로 나타낼 수 있는 토큰의 최대수이다. 그러하다면, 과정(250)은 실패한다(단계205). 대안으로, 과정(250)은 엑스포트 성분이 발생될 경우 엑스포트 성분에 토큰값을 기록한다(단계268). 마지막으로, 과정(250)은 엑스포트 파일에 토큰값을 공개한다(단계 270).
도 8C-2에서, 공적 클래스나 인터페이스에서 정적 필드 토큰의 할당을 최적화하는 과정(280)이 도시된다. 이 최적화는 컴파일-시간 상수를 제거하고 상수에 대한 기준을 바이트코드의 인라인으로 대체함으로서 메모리 소모를 감소시킨다. 과정(280)은 공정 클래스나 인터페이스에서 공적/보호 정적 필드의 목록을 얻는다(단계282). 그후, 과정(280)은 현 토큰값을 0으로 설정하고(단계284), 현 필드를 목록의 제 1 정적 필드로 초기화한다(단계286). 그후 과정(280)은 현 필드가 비어있는 지를 확인한다(단계288). 그렇지 않을 경우, 과정(280)은 현 필드가 컴파일-시간 상수인 지를 결정한다(단계290). 그러하다면, 과정(280)은 현 필드의 토큰값으로 0xFF와 같은 값을 할당한다(단계296). 대안으로, 현 필드가 컴파일-시간 상수가 아닐 경우, 과정(280)은 현 토큰값을 현 필드에 할당하고(단계292), 현 토큰값을 1씩 증가시킨다(단계294). 단계 294와 296으로부터, 과정(280)은 토큰 처리 계속을 위해 단계 288로 복귀하기 전에 현 필드를 목록의 다음 정적 필드로 설정한다(단계298).
단계288로부터, 현 필드가 비어있을 경우, 과정은 현 토큰이 255와 같은 지정한계를 넘었는 지 확인한다(단계 300). 255는 8비트를 이용하여 나타낼 수 있는 최대 수이다. 그러하다면, 과정(280)은 실패한다(단계205). 대안으로, 유출될 경우, 과정(280)은 엑스포트 성분에 토큰값을 기록한다(단게302). 과정은 컴파일된 시간 상수로 엑스포트 파일에 토큰값을 공개하여(단계304), 패키지 참조가 빠져나가기 전 각각의 값을 인라인할 수 잇다.
도 8D에서, 공적 클래스에 정적 방법 토큰을 할당하기 위한 과정(310)이 도시된다. 과정(310)은 공적/보호 정적 방법의 목록과 공적 클래스의 컨스트럭터를 획득한다(단계 312). 과정(310)은 정적 방법의 수가 256과 같은 지정값을 넘었는 지를 확인한다(단계314). 그렇지 않을 경우, 과정은 토큰값을 0으로 설정하고(단계 316), 현 방법을 목록의 제 1 정적 방법으로 초기화한다(단계318). 다음에, 과정(310)은 현 방법이 비어있는 지를 확인한다(단계320). 그렇지 않을 경우, 과정(310)은 현 토큰값을 현 정적 방법에 할당하고(단계322), 현 토큰값을 1씩 증가시킨다(단계324). 과정(310)은 단계320으로 되돌아가기 전에 현 방법을 목록의 다음 정적 방법으로 설정한다(단계326).
단계 320으로부터, 현 방법이 널(null)이라면, 과정은 엑스포트 성분에 토큰값을 기록하고(단계328), 빠져나가기 전에 엑스포트 파일에 토큰값을 공개한다.
도 8E-1과 8E-2는 사례 필드 토큰 할당 기법에 관한 것이다. 도 8E-1은 필드 토큰 할당의 일반 과정을 도시하고, 도 8E-2는 내부 필드로의 토큰 할당을 확장하는 한가지 최적화 과정이다. 상기 최적화 과정은 타입 기준의 필드를 그룹형성하고, 사례내의 오프셋으로 수비게 토큰이 매핑되게 한다.
도 8E-1에서, 사례 필드 토큰을 공적 클래스에 할당하는 과정(340)이 도시된다. 먼저, 과정(340)은 공적/보호 사례 필드의 목록을 공적 클래스에서 얻는다(단계 342), 사례 필드의 수가 256과 같은 지정값을 넘는 지를 확인하고(단계344), 만약 넘는다면, 과정(340)은 실패한다. 대안으로, 과정(340)은 현 토큰값을 0으로 설정하고(단계 346), 현 필드를 목록의 제 1 필드로 초기화한다(단계348). 그후, 과정(340)은 현 필드가 널인지 확인한다(단계 350). 그렇지 않을 경우, 과정(340)은 현 사례 필드에 현 토큰값을 할당하고(단계 352), 현 토큰값을 1씩 증가시킨다(단계 354). 단계354로부터, 과정은 단계 350으로 돌아가기 전에 목록의 다음 사례 필드로 현 필드를 설정한다(단계360). 단계350으로부터, 현 필드가 널일 경우에, 과정(340)은 엑스포트 파일에 토큰값을 공개하고(단계362), 빠져나온다.
도 8E-1의 일반 접근법을 최적화함에 있어 여러 인자가 고려될 수 있다. 일반적으로, 토큰의 순서는 유연하게 유지되어, 특정 구현에 따라 토큰 배열이 적응할 수 있다. 도 8E-2는 아래의 예에 도시되는 바와 같이 제약된 할당 기법을 보여준다.
가시성 카테고리 타입 토큰
공적/보호 =공적 토큰 원시 boolean 0
byte 1
short 2
기준 byte[] 3
Applet 4
패키지 및 원시 = 사적 토큰 기준 short[] 5
Object 6
원시 int 7
short 9
도 8E-2에서, 사례 필드 토큰의 앞서 할당을 최적화하기 위한 과정(370)이 도시된다. 앞서와 같이, 과정(370)은 클래스의 모든 사례 필드의 목록을 얻는다(단계372). 그후, 과정(370)은 숫자화된 사례 필드가 256과 같은 지정값을 넘는 지 확인한다(단계374). 그러하다면, 과정(370)은 실패하고(단계205), 그렇지 아니하다면, 과정(370)은 공적/보호 원시 타입, 공적/보호 기준 타입, 패키지 및 원시 기준 타입, 그리고 패키지 및 사적 원시 타입을 포함하는 카테고리로 목록을 소팅한다(단계 376). 토큰값이 0으로 설정되고(단계 378), 현 필드는 목록의 제 1 사례 필드로 초기화된다(단계380). 그후, 과정(370)은 현 필드가 널인지 확인한다(단계382). 그렇지 않을 경우, 과정은 현 토큰값을 현 필드에 할당하고(단계384), 현 토큰값을 1씩 증가시킨다(단계386). 과정(370)은 현 필드가 정수 타입인 지를 결정한다(단계 388). 정수 타입은 두 개의 슬롯을 취하여, 토큰이 사례로 쉽게 매핑되게 한다. 정수 타입일 경우, 현 토큰값은 1식 증가된다(단계390). 단계388이나 단계390으로부터, 과정(370)은 단계 382로 돌아가기 전에 현 필드를 목록의 다음 사례 필드(단계392)로 설정한다.
단계 382로부터, 현 필드가 널일 경우, 과정(370)은 빠져나가기 전에 엑스포트 파일에 공적/보호 사례 필드의 토큰값을 공개한다(단계394).
도 8F-1과 8F-2는 가상 방법에 대해 토큰을 할당한다. 도 8F-1은 가상 방법 토큰 할당에 대한 일반 기법을 보여주고, 도 8F-2는 패키지 가시 가상 방법으로 토큰 할당을 확장한다.
도 8F-1과 8F-2에서, 가상 방법 토큰을 할당하는 과정이 도시된다. 일반적으로, 패키지에 규정된 가상 방법이 유출식으로 또는 내부 토큰으로 할당된다. 유출형 토큰은 공적/보호 가상 방법에 할당된다. 이 경우에, 토큰의 높은 비트는 0이다. 내부 토큰은 패키지 가시 가상 방법에 할당된다. 이 경우에 토큰의 높은 비트는 1이다. 높은 비트가 보존되기 때문에, 토큰은 0에서 127(폐구간)까지의 범위를 가진다.
클래스에서 외부적으로 가시 삽입된 가상 방법에 대한 유출형 토큰은 클래스의 수퍼클래스의 가장 높은 숫자의 유출형 가상 방법 토큰보다 큰 것에서 순차적으로 시작하도록 넘버링된다. 방법이 클래스의 수퍼클래스에서 구현되는 방법을 무시할 경우, 상기 방법은 수퍼클래스의 상응하는 방법과 동일한 토큰 번호를 이용하여, 무시된 방법이 무시하는 방법에 관련된 것으로 식별될 수 있게 한다.
내부 가상 방법은 유출형 가상 방법 토큰으로부터 달리 할당된다. 클래스와 그 수퍼클래스가 동일 패키지에서 형성되면, 상기 클래스의 패키지-가시 삽입 가상 방법에 대한 토큰은 클래스의 수퍼클래스의 가장 높게 넘버링된 내부 가상 방법 토큰보다 큰 값에서 시작하여 순차적으로 넘버링된다. 클래스와 그 수퍼클래스가 다른 패키지에서 규정되면, 상기 클래스의 패키지-가시 삽입 가상 방법에 대한 토큰은 0에서 시작하여 순차적으로 넘버링된다. 한 방법이 클래스의 수퍼클래스에서 구현되는 방법을 무시하면, 상기 방법은 수퍼클래스의 상응하는 방법과 동일한 토큰 번호를 이용한다. 배경 정보를 위해, 자바 프로그래밍 언어의 규정은 다음을 명시한다. 즉, 패키지-가시 가상 방법을 무시하는 것은 클래스와 그 수퍼클래스가 동일 패키지에서 규정되는 경우에만 가능하다는 점을 명시한다. 가상 방법 토큰을 포함하는 바이트의 높은 비트는 항상 1로 설정되고, 이는 내부 토큰을 표시한다. 클래스에서 삽입 패키지 가상 방법 토큰의 순서는 구체화되지 않는다.
도 8F-1에서, 과정(400)은 클래스에서 공적/보호 가상 방법의 목록을 얻는다(단계 402). 과정(400)은 클래스가 수퍼클래스를 가지는 지를 확인한다(단계404). 그러하다면, 과정(400)은 수퍼클래스가 동일 패키지에 있는 지를 확인한다(단계406). 단계406으로부터, 수퍼클래스가 동일 패키지에 있는 경우에, 과정은 수퍼클래스를 찾아내고(단계408), 수퍼클래스의 토큰과 가상 방법을 얻는다(단계412). 가상 방법 세트는 수퍼클래스의 모든 수퍼클래스를 정의한 것을 포함한다. 단계406으로부터, 수퍼클래스가 동일 패키지에 있지 않은 경우에, 과정(400)은 유입 패키지의 엑스포트 파일에서 수퍼클래스를 찾아내고(단계410), 그후 단계412로 진행한다. 단계 412로부터, 과정(400)은 현 토큰값을 최대 수퍼클래스 가상 방법 토큰으로 초기화하고, 그 값을 1씩 증가시킨다(단계414). 이는 수직 구조 내에 토큰 충돌이 없을 것임을 보장한다.
단계404로부터, 클래스가 수퍼클래스를 가지지 않는 경우에, 과정(400)은 현 토큰값을 0으로 초기화한다(단계416). 단계 414나 단계 416으로부터, 과정(400)은목록의 제 1 가상 방법으로 현 방법을 초기화한다(단계418). 그후, 과정(400)은 현 방법이 널인지 결정한다(단계420). 그렇지 않을 경우, 과정은 현 가상 방법이 수퍼클래스에 의해 규정되는 지를 결정한다(단계422). 그러하다면, 방법은 무시 방법이고, 단계420으로 돌아가기 전에 수퍼클래스에서 무시된 방법에 할당된 것으로 동일 토큰값이 현 방법에 할당된다(단계 424).
단계 422로부터, 현 가상 방법이 수퍼클래스에 의해 규정되지 않는 경우에, 이는 삽입된 방법이다. 이 경우에, 과정(400)은 현 토큰값을 현 방법에 할당하고(단계 426), 현 토큰값을 1씩 증가시킨다(단계428). 과정(400)은 단계420으로 복귀하기 전에 목록의 다음 방법으로 현 방법을 설정한다(단계430). 단계420으로부터, 현 방법이 널인 경우에, 과정(400)은 현 토큰값이 127과 같은 지정값을 넘는 지 확인한다(단계432). 그러하다면, 과정(400)은 실패한다(단계205). 대안으로, 토큰값이 127보다 크지 않다면, 과정(400)은 빠져나가기 전에 내재적 방법과 그 토큰 값과 함께 엑스포트 파일에 토큰값을 공개한다(단계 434). 도 8F-1의 과정은 도 8F-2에 도시되는 바와 같이 패키지 가시 클래스의 공적/보호 가상 방법에 토큰을 할당하기 위해 또한 사용될 수 있다.
도 8F-2에서, 클래스의 패키지 가시 가상 방법으로 토큰 할당을 확장하는 과정(440)이 도시된다. 과정(440)은 클래스에서 패키지 가시 가상 방법의 목록을 얻는다(단계442). 그후, 과정은 클래스가 수퍼클래스를 가지는 지 확인한다(단계 444). 그러하다면, 과정(440)은 수퍼클래스가 동일 패키지에 있는 지를 확인한다(단계446). 그러하다면, 과정(440)은 동일 패키지에서 수퍼클래스를 찾아내고(단계448), 패키지 가시 가상 방법과 수퍼클래스의 토큰을 얻으며(단계 450), 그리고 현 토큰값을 최대 수퍼클래스 가상 방법 토큰 더하기 1로 초기화하여(단계452), 패키지에 한정되는 수직 구조 내의 토큰 충돌을 방지한다. 이는 수퍼클래스 내에 이전에 할당된 토큰값이 삽입 방법에 재사용되지 않음을 보장한다. 단계 450은 동일 패키지의 수퍼클래스들까지 순환반복된다.
단계 444로부터, 클래스가 수퍼클래스를 가지지 않는 경우에, 또는 단계 446으로부터 수퍼클래스가 동일 패키지에 있지 않는 경우에, 과정(440)은 현 토큰값을 0으로 설정한다(단계 454). 특히, 수퍼클래스가 동일 패키지에 있지 않은 경우, 상기 수퍼클래스의 패키지 가시 가상 방법은 접근불가하고, 따라서 단계 454에 포함되지 않는다. 이 방법들은 도 9D-2와 9D-3에서 앞서 기술한 바와 같이 가상 방법에 대한 기준을 분석할 때 설명된다.
단계 452나 단계454로부터, 과정(440)은 현 방법을 목록의 제 1 가상 방법으로 초기화한다(단계456). 그후, 과정(440)은 현 방법이 널인 지 확인한다(단계458). 그렇지 않을 경우, 과정(440)은 현 가상 방법이 수퍼클래스에 의해 규정되는 지를 확인한다(단계460). 이 경우에, 방법은 무시(override) 방법이다. 그러하다면, 과정(440)은 단계458로 돌아가기 전에 수퍼클래스의 무시된 방법에 할당되는 것과 같이 현 방법에 동일 토큰값을 할당한다(단계462).
단계460으로부터, 현 가상 방법이 그 수퍼클래스에 의해 규정되지 않을 때, 이는 삽입 방법이다. 이 경우에, 과정(440)은 현 토큰값을 현 방법에 할당하고, 높은 비트를 1로 설정한다(단계 464). 가상 방법 토큰의 높은 비트는 공적 가상 방법토큰인지 사적 가상 방법 토큰인 지 결정하기 위해 사용된다. 그후, 과정(440)은 현 토큰값을 1씩 증가시키고(단계466), 단계458로 돌아가기 전에 목록의 다음 방법으로 현 방법을 설정한다(단계468).
단계458에서, 현 방법이 널인 경우에, 과정(440)은 현 토큰값이 127과 같은 값을 넘는 지 결정한다(단계470). 그러하다면, 과정(440)은 실패한다(단계472). 대안으로, 현 토큰값이 범위 내에 있을 경우, 과정(440)은 빠져나간다. 패키지 가시 가상 방법에 대한 토큰은 내부적으로 사용되고 유출되지 않는다.
가상 방법 기준은 실행중에만 분석될 수 있다. 가상 방법 표는 방법의 클래스 사례와 토큰을 바탕으로 하여 호출할 방법이 있는 지 카드가 결정하게 한다. 도 8G-1은 클래스에서 공적 가상 방법 표를 구축하기 위한 과정(480)을 보여준다. 먼저, 클래스에서 공적/보호 가상 방법의 목록을 얻는다(단계482). 그후, 과정(480)은 수퍼클래스의 토큰과 가상 방법을 얻는다(단계484). 단계484는 반복순환적이며, 클래스의 모든 수퍼클래스를 포함한다. 과정(480)은 토큰값에 의한 가상 방법의 순서를 말하는 표를 생성하고(단계 486), 중복되는 가상 방법을 제거한다. 무시되는 방법의 경우 중복이 발생한다. 이 경우에, 현 클래스에 규정된 방법은 수퍼클래스에서 규정된 방법 대신에 방법 표에 나타난다. 과정(480)은 과정(488)에서 최대 가상 방법 토큰 클래스로 카운트를 설정하고, 빠져나가기 전에 클래스 성분에서 표와 카운트를 기록한다(단계 490).
도 8G-2에서, 클래스의 공적 가상 방법 표의 구축을 최적화하는 과정(500)이 도시된다. 과정(500)은 수퍼클래스의 가상 방법 표에서 중복 요소를 제거함으로서가상 방법 표를 저장하기 위해 필요한 크기를 감소시킨다.
과정(500)은 단계 502에서 클래스 내 공적/보호 가상 방법의 목록을 얻는다. 그후, 수퍼클래스의 토큰과 가상 방법을 얻는다(단계504). 단계504는 반복적으로서, 클래스의 모든 수퍼클래스를 포함한다. 그후, 과정(500)은 토큰값에 의해 단계502와 504에서 얻어진 가상 방법을 순서화함으로서 표를 초기화한다(단계 506). 과정(500)은 최대 가상 방법 토큰 플러스 1로 카운트를 초기화한다(단계 508). 과정(500)은 베이스 카운트를 0으로 설정한다(단계 510). 그후, 과정(500)은 카운트가 양인지를 확인한다(단계 512). 그러하다면, 과정은 표의 제 1 엔트리가 현 클래스에 의해 규정되는 지를 확인한다(단계 514). 그렇지 않다면, 과정은 표로부터 방법을 제거하고, 표에서 잔여 방법을 이동시킨다(단계 518). 과정(500)은 카운트를 1씩 감소시키고(단계520), 단계512로 돌아가기 전에 베이스 카운트를 1씩 증가시킨다(단계522).
단계 514로부터, 제 1 엔트리가 현 클래스에서 규정될 경우에, 또는 단계 512에서 카운트가 0일 경우에, 과정(500)은 빠져나가기 전에 클래스 성분에서 표, 카운트, 베이스를 기록한다(단계516).
도 8H-1과 8H-2는 공적 인터페이스에서 인터페이스 방법 토큰을 할당하는 과정(524)을 도시한다. 특히 도 8H-2는 도 8H-1의 단계 526을 보다 상세하게 도시한다.
도 8H-1에서, 과정(524)은 공적 인터페이스에서 인터페이스 방법 토큰을 할당한다. 과정(524)은 공적 인터페이스에서 인터페이스 방법 세트를 얻는다(단계525). 그후, 과정(524)은 인터페이스의 수퍼인터페이스 목록을 얻는다(단계 526). 이 작동은 도 8H-2에서 상세하게 규정된다. 과정(524)은 인터페이스에 의해, 그리고 수퍼인터페이스에 의해 규정된 방법 세트를 통합한다(단계 527). 그후, 과정(524)은 256개 이상의 방법이 존재하는 지 여부를 확인한다(단계529). 그러하다면, 과정(524)은 실패한다(단계205). 대안으로, 256 미만의 방법이 존재할 경우, 과정(524)은 현 토큰값을 0으로 설정하고(단계 530), 현 방법을 방법 세트의 제 1 방법으로 초기화한다(단계 532). 그후, 과정(524)은 현 방법이 널인지 확인한다(단계 533). 그렇지 않을 경우, 과정(524)은 현 토큰값을 현 인터페이스 방법에 할당하고(단계 534), 현 토큰값을 1씩 증가시키며(단계 535), 단계533으로 돌아가기 전에 현 방법을 세트의 다음 방법으로 설정한다(단계536).
단계533으로부터, 현 방법이 널일 경우, 과정(524)은 엑스포트 파일에서 방법 토큰 값과 인터페이스와 관련된 수퍼인터페이스 목록을 공개하고(단계 537), 빠져나간다.
도 8H-2에서, 도 8H-1의 단계526이 보다 상세하게 도시된다. 먼저, 도 8H-2의 과정은 인터페이스를 선택한다(단계 682). 그후, 인터페이스에 의해 내재된 인터페이스 목록을 얻고(단계 684), 현 인터페이스를 목록의 제 1 인터페이스로 설정한다(단계 686). 그후, 도 8H-2의 과정은 결과 세트를 빈 세트로 초기화한다(단계688). 단계 688로부터, 도 8H-2의 과정은 최종 세트에 인터페이스를 반복적으로 더한다. 이는 현 인터페이스가 널인 지 먼저 확인함으로서 행하여진다(단계690). 널이라는 것은 어떤 다른 인터페이스도 처리될 필요가 없다는 것을의미한다. 그렇지 않을 경우, 과정은 현 인터페이스의 수퍼인터페이스 세트를 얻는다(단계692). 단계 692는 순환식으로 과정(526)을 호출한다.
단계 692 완료시, 도 8H-2의 과정은 수퍼인터페이스 세트를 최종 세트에 더하고(단계694), 현 인터페이스를 최종 세트에 더한다(단계 696). 이 과정은 현 인터페이스를 다음 인터페이스로 설정하고(단계 698), 모든 인터페이스 처리를 계속하기 위해 단계 690으로 복귀한다. 단계 690으로부터, 현 인터페이스가 널인 경우에, 도 8H-2의 과정은 결과 세트르 복귀시킴으로서 빠져나간다.
인터페이스 표는 클래스에 의해 직접 구현되는 각각의 인터페이스에 대한 엔트리를 포함하며, 직접 구현되는 인터페이스의 모든 수퍼인터페이스에 대한 엔트리를 포함한다. 인터페이스 표의 각각의 엔트리는 인터페이스 및 인터페이스 방법 표의 식별을 포함한다. 표는 인터페이스 방법 선언을 클래스의 구현에 매핑한다.
도 8I-1과 8I-2는 클래스의 인터페이스 표를 구성하는 과정(700)을 도시한다. 특히 도 8I-2는 도 8I-1의 단계 708을 보다 상세하게 도시한다.
도 8I-1에서, 인터페이스표를 구축하기 위한 과정(700)이 도시된다. 먼저, 과정(700)은 현 클래스에 의해 구현되는 수퍼인터페이스를 포함한 인터페이스 목록을 얻는다(단계 702). 그후, 과정(700)은 현 인터페이스를 이 세트의 제 1 인터페이스로 설정한다(단계704). 과정(700)은 현 인터페이스가 널인 지를 확인한다(단계 706). 그렇지 않을 경우, 과정(700)은 도 8I-2에 도시되는 바와 같이, 클래스에 대한 현 인터페이스를 위한 인터페이스 방법 표를 구축하도록 진행된다(단계 708). 그후, 과정(700)은 단계 706으로 되돌아오기 전에 현 인터페이스를 다음 인터페이스로 설정한다(단계710).
단계 706으로부터, 현 인터페이스가 널인 경우에, 과정(700)은 빠져나가기 전에 클래스 성분의 인터페이스 방법 표로 인터페이스를 기록한다.
도 8I-2에서, 단계708이 보다 상세하게 도시된다. 이 과정은 클래스에 대한 가상 방법을 먼저 얻고(단계 722) 내재적 방법을 포함하여 인터페이스에 대한 토큰 및 인터페이스 방법을 얻는다(단계724). 그후, 도 8I-2의 과정은 토큰값에 의해 방법들을 정렬함으로서 인터페이스 방법 표를 초기화한다(단계 726). 그후, 과정은 인터페이스 방법 표의 제 1 방법으로 현 방법을 설정한다(단계 728). 단계 728로부터, 현 방법이 널인 지 과정이 확인한다(단계 730). 그렇지 않을 경우, 도 8I-2의 과정은 가상 방법 표에서 인터페이스 방법의 구현을 찾아낸다(단계 732). 그후, 과정은 현 방법의 위치에서 인터페이스 방법 표의 가상 방법의 토큰값을 기록한다(단계 734). 단계730으로 복귀하기 전에 현 인터페이스의 다음 방법으로 현 방법을 설정한다(단계 736). 단계 730으로부터, 현 방법이 널인 경우에, 도 8I-2의 과정이 빠져나간다.
실행 중 동적 결합이 도 9A-C에서 논의된다. 도 9A-C는 동적 요소에 대한 기준의 분석을 기술한다. 컴파일 중에, 변환 및 토큰 할당, 사례 필드에 대한 기준, 가상 방법, 인터페이스 방법은 특정 구현에 대해 분석될 수 없고 단지 아이템의 추상적 기술에만 분석될 수 있다.
사례 필드의 경우에, 토큰은 규정 클래스의 범위 내에서 할당된다. 클래스의 사례는 클래스에 의해서만이 아니라 모든 수퍼클래스에 의해 규정되는 모든 필드를포함한다. 토큰은 사례 내의 필드 위치를 표시하지 않으며, 이는 토큰들이 사례의 특정 배치를 반영할 수 없고 수퍼클래스에 의해 규정되는 사적 및 패키지 가시 필드의 위치를 설명할 수 없기 때문이다.
가상 방법의 경우에 컴파일 및 변환 과정 중 명칭과 타입 시그너쳐가 공지되고, 이러한 방법을 구현하는 수직 구조 내의 클래스도 공지된다. 그러나, 방법이 호출되는 사례의 특정 클래스를 결정할 수 있을 때 실행시까지 정확한 구현이 알려질 수 없다. 가령, 클래스 A와 그 수퍼클래스 B는 방법 규정 M을 구현한다. 컴파일-시간 타입 B의 사례 상에서 방법 M의 호출이 클래스 A나 B의 구현의 실행을 유발할 지를 실행시까지 알 수가 없다.
실행 중 가상 방법의 호출을 적절하게 처리하기 위한 수단을 제공하고자, 가상 방법 토큰 할당이 클래스 수직 구조 내에서 자리잡는다. 즉, 수퍼클래스 내재 체인에 이미 삽입된 방법을 무시하는 서브클래스의 방법이 무시하는 방법과 동일한 토큰값을 가져야 한다. 또한, 삽입된 방법은 내재 체인 내에서 고유한 토큰값을 가져야 한다. 가상 방법 표는 가상 방법 토큰을 특정 구현에 매핑하기 위한 수단을 제공하기 위해 각각의 클래스에 대해 규정된다.
인터페이스 방법은 가상 방법과 다음의 측면에서 유사하다. 즉, 실행 시간까지 특정 구현을 알 수가 없다. 하지만, 인터페이스 방법이 다중 인터페이스로부터 나올 수 있다는 면에서 차이가 있다. 인터페이스의 다중 내재는 가상 방법 토큰이 할당되는 방식에서 문제를 야기한다. 두 개 이상의 인터페이스에 삽입된 방법을 무시하는 클래스의 방법은 무시하는 방법과 같은 토큰값을 반드시 가질 수 없다. 왜냐하면, 다중 규정이 모두 다른 값을 가질 수 있기 때문이다. 따라서, 특정 인터페이스에 대한 각 세트의 방법에는 어떤 다른 인터페이스의 방법의 토큰값에 상관없이 토큰값이 할당된다.
인터페이스가 토큰값을 공유하지 않기 때문에, 특정 방법 구현에 인터페이스 방법 호출을 신속처리하기 위해 추가 정보가 필요하다. 인터페이스 방법 토큰이 인터페이스 범위 내에서 고유하기 때문에, 실행 시간에서 사례의 클래스에 의해 구현되는 방법을 결정하기 위해 인터페이스 방법 토큰과 인터페이스의 아이덴터티가 필요하다. 인터페이스 방법 표에 인터페이스 아이덴터티를 매핑하는 각각의 클래스에 대해 인터페이스표가 규정된다. 인터페이스 방법 표는 상기 인터페이스에 대한 인터페이스 방법 토큰을 상기 클래스의 방법 구현에 매핑한다.
도 9A-9C는 실행 중 토큰을 분석하기 위한 과정의 순서도다. 도 9A에서, 사례 필드 기준을 분석하기 위한 과정(580)이 도시된다. 먼저, 과정(580)은 런타임 스택으로부터 필드를 포함하는 사례를 얻는다(단계 582). 그후, 과정(580)은 필드와 연관된 토큰을 결정하고, 토큰을 인덱스에 매핑한다(단계 584). 토큰의 인덱스로의 매핑은 사례 필드 타입 정보를 검사하는 것을 필요로할 수 있다. 더욱이, 작동은 수퍼클래스 사례의 크기에 의해 토큰값을 조절하는 것을 필요로할 수 있다. 마지막으로, 과정(580)은 빠져나가기 전에 인덱스를 이용하여 사례의 필드 표시를 찾아낸다(단계586).
도 9B-1에서, 공적/보호 가상 방법에 대한 기준을 분석하기 위한 과정(620)이 도시된다. 먼저, 과정(620)은 런타임 스택으로부터 클래스 사례를 얻고(단계621), 사례의 클래스를 결정한다(단계 622). 그후, 과정(620)은 클래스의 공적 가상 방법 표에 접근하고(단계624), 인덱스로 방법 토큰을 이용하여 방법 표 엔트리를 얻는다(단계626). 마지막으로, 과정(620)은 가상 방법 표에서 엔트리 내용을 바탕으로 방법을 찾아내고 실행하며(단계 628) 빠져나간다.
도 9B-2에서, 어떤 가상 방법에 대한 기준을 분석하기 위한 과정(600)이 도시된다. 먼저, 과정(600)은 런타임 스택으로부터 클래스 사례를 얻고(단계601), 사례 클래스를 결정한다(단계 602). 그후, 과정(600)은 방법 토큰의 높은 비트가 1로 설정되는 지를 결정한다(단계604). 그렇지 않을 경우, 과정(600)은 공적 가상 방법 표를 얻고(단계 606), 가상 방법 표로의 인덱스로 방법 토큰을 이용한다(단계 608). 단계 604로부터, 방법 토큰의 높은 비트가 1과 같은 경우에, 과정(600)은 높은 비트를 0으로 설정하고(단계 610), 단계608로 복귀하기 전에 패키지 가상 방법 표를 얻는다(단계 612). 마지막으로, 과정(600)은 가상 방법 표의 엔트리 내역을 바탕으로 방법을 찾아내고 실행하며(단계 614), 빠져나간다.
도 9B-3은 도 8G-2에 기술되는 바와 같이 최적화된 가상 방법 표를 이용하여 어떤 가상 방법에 대한 기준을 분석하기 위한 최적화 과정(670)을 도시한다. 먼저, 과정(670)은 런타임 스택으로부터 클래스의 사례를 얻고(단계671), 현 클래스를 사례의 클래스가 되도록 설정한다(단계672). 방법 표 인덱스는 방법 토큰 값으로 초기화된다(단계674). 과정(670)은 방법 토큰의 높은 비트가 1과 같은 지를 결정한다(단계676). 그렇지 않을 경우, 과정(670)은 베이스값을 현 클래스의 공적 방법 표의 베이스로 설정한다(단계 678). 그후, 방법 표는 현 클래스의 공적 가상방법 표로 설정된다(단계680). 과정(670)은 방법 표 인덱스가 베이스값보다 작은 지를 확인하고(단계 682), 그러하다면, 현 클래스를 현 클래스의 수퍼클래스가 되도록 설정한다(단계684). 단계 684로부터, 과정(670)은 처리과정을 계속하기 위해 단계 676으로 되돌아간다.
단계676에서, 높은 비트가 1일 경우, 과정(670)은 방법 표 인덱스의 높은 비트를 0으로 설정한다(단계 690). 과정(670)은 베이스 값을 현 클래스의 패키지 방법 표 베이스로 설정하고(단계692), 단계 682로 계속되기 전에 방법 표를 현 클래스의 패키지 가상 방법 표로 설정한다(단계694).
단계 682로부터, 방법 표 인덱스가 베이스보다 클 경우, 과정(670)은 방법 표 인덱스 플러스 베이스값을 이용하여 방법 표 엔트리를 얻는다(단계686). 과정(670)은 현 클래스의 방법 표에서 엔트리 내역을 바탕으로 방법을 찾아낸다(단계688). 이어서 과정(670)이 빠져나간다.
도 9C에서, 인터페이스 방법 기준을 분석하기 위한 과정(650)이 도시된다. 먼저, 과정(650)은 런타임 스택으로부터 클래스 사례를 얻고(단계651), 현 클래스를 사례의 클래스로 설정한다(단계652). 그후, 과정(650)은 현 클래스의 인터페이스 표에서 구체화 인터페이스를 검색한다(단계654). 과정은 인터페이스가 발견되었는 지를 결정한다(단계 656). 그렇지 않을 경우, 과정은 단계 650으로 복귀하기 전에 현 클래스의 수퍼클래스로 현 클래스를 설정한다(단계 660).
단계 656으로부터, 구체화 인터페이스가 발견된 경우, 과정(650)은 현 클래스에서 상응하는 인터페이스 방법 표를 얻는다(단계 662). 과2정은 그 지표가 인터페이스 방법 토큰과 같은 표의 엔트리로부터 가상 방법 토큰을 얻는다(단계 664). 과정(650)은 사례의 클래스의 공적 가상 방법 표를 얻는다(단계666). 과정(650)은 가상 방법 토큰과 관련된 표의 엔트리로부터 가상 방법 위치를 얻는다(단계668). 과정(650)은 가상 방법 표의 엔트리 내역에 따라 방법을 위치시킨다(단계669). 이것이 행해지면, 과정(650)이 종료된다.
발명이 스마트카드를 들어 설명되었으나 상대적으로 제한된 메모리나 연산 출력이나 속도를 가지는 그외 다른 장치에도 적용된다. 발명은 이들 사이에 공유하는 객체가 있을 경우 서브렛을 이용할 때 장점을 제공할 수 잇다. 일부 데스크탑 시스템도 발명의 기술을 이용할 수 있다.
본 발명은 이 연산들을 실행하기 위한 장치에 또한 관련된다. 이 장치는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 작동되거나 재설정되는 것과 같이 특정 용도나 범용의 컴퓨터를 포함할 수 있다. 여기서 제시된 과정은 특정 컴퓨터나 타장치에 내재적으로 관련되지는 않는다. 여러 범용 머신이 여기서의 기술에 따라 쓰여진 프로그램과 함께 사용될 수 있고, 원하는 방법 단계를 실행하기 위해 보다 전문적인 장치를 구축하는 것이 보다 편리함을 증명할 수 있다. 이들 다양한 머신에 필요한 구조는 주어진 설명으로부터 나타날 것이다. 더욱이, 발명에 따르는 가상 머신은 기존 가상 머신의 기능을 뛰어넘는 기능을 제공할 수 있으며, 자바 가상 머신 명세에서 기술되는 가상 머신을 그 예로 들 수 있다.
자바 프로그래밍 언어와 플랫폼이 발명에 적절하지만, 어떤 특성을 가지는 어떤 언어나 플랫폼도 발명 구현을 위해 적절할 수 있다. 이 특성들은 타입 안전성, 포인터 안전성, 객체 지향, 동적 링크, 가상 머신 기반을 포함한다. 이 특성들 중 모든 것이 특정 구현에 나타날 필요는 없다. 일부 실시예에서, 이들 특성중 일부가 결여된 언어나 플랫폼이 사용될 수 잇다. "가상 머신"은 비트(가상 머신)나 실리콘(실제/물리적 머신/응용프로그램 전용 집적 회로)으로 구현될 수 있다. 또한, 발명이 객체간 보안성을 보여주도록 설명되었으나, 클래스간 보안성과 같은 다른 접근법도 사용될 수 있다.
본 발명의 시스템은 하드웨어나 컴퓨터 프로그램으로 구현될 수 있다. 저장 매체나 장치가 기술되는 과정 실행을 위해 컴퓨터에서 판독될 때, 컴퓨터를 구성하고 작동시키기 위해 범용 또는 전용 프로그램 컴퓨터에 의해 판독되는 저장 매체나 장치에 이러한 각각의 컴퓨터 프로그램이 저장될 수 있다. 시스템은 컴퓨터 프로그램으로 구성된 컴퓨터에 의해 판독가능한 저장 매체로 구현될 수도 있다. 이때 이렇게 구축된 저장 매체는 컴퓨터를 특정 지정 방식으로 작동하게 한다.
프로그램은 바람직한 결과를 이끄는 자체 제약 순서 단계로 간주된다. 이 단계들은 물리적 양의 물리적 조작을 필요로하는 단계들이다. 일반적으로, 이 양들은 저장 전송, 조합, 비교, 조작등이 가능한 전기나 자기 신호의 형태를 취한다.

Claims (42)

  1. 자원 제약 컴퓨터로 코드를 다운로드하기 위한 방법으로서, 상기 코드는 한 개 이상 기준 아이템을 가지는 한 개 이상 패키지로 나눌 수 있으며, 상기 방법은,
    - 패키지를 형성하고,
    - 상응하는 토큰으로 기준 아이템의 매핑을 형성하며,
    - 패키지와 매핑을 제공하는, 이상의 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서, 상기 매핑 단계는 한 개 이상의 토큰 타입을 발생시키는 단계를 추가로 포함하고, 이때 한 개의 토큰 타입이 패키지, 클래스, 정적 필드, 정적 방법. 사례 필드, 그리고 가상 방법 중 하나와 관련된 내부 토큰 타입인 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서, 매핑 단계는 한 개 이상의 토큰 타입을 발생시키는 가정을 추가로 포함하고, 이때 한 개의 토큰 타입은 사례 필드, 가상 방법, 인터페이스 방법 중 하나와 관련된 외부 토큰 타입인 것을 특징으로 하는 방법.
  4. 상기 항들 중 어느 한 항에 있어서, 패키지는 한 개 이상의 기준 타입을 포함하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서, 다음의 그룹으로부터 기준 타입 중 하나가 선택되는 것을 특징으로 하는 방법.
    1) 유입 클래스용 클래스 기준.
    2) 유입 필드용 필드 기준.
    3) 유입 방법용 방법 기준.
    4) 내부 클래스용 정적 필드 기준.
    5) 내부 필드용 정적 필드 기준.
    6) 내부 방법용 정적 방법 기준.
    7) 내부 필드용 사례 필드 기준.
    8) 가상 방법 기준.
    9) 패키지 가시 방법에 대한 가상 방법 기준.
  6. 상기 항들 중 어느 한 항에 있어서, 패키지 토큰, 클래스 토큰, 인터페이스 토큰, 정적 필드 토큰, 정적 방법 토큰, 사례 필드 토큰, 공적 가상 방법 토큰, 인터페이스 방법 토큰 중 하나를 할당하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서, 정적 필드 토큰이 상수로 할당되지 않은 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서, 할당된 토큰이 사례 필드 코튼일 때, 상기 방법은 클래스의 사례 필드 목록을 결정하고 한 개 이상의 카테고리로 목록을 분류하는 과정을 추가로 포함하는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서, 목록이 다수의 카테고리로 분류되고, 이때 공적/보호 원시 타입, 보호 기준 타입, 패키지, 사적 기준 타입, 사적 원시 타입으로 구성되는 그룹으로부터 최소한 두 개의 카테고리가 선택되는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서, 클래스 인터페이스에 대한 인터페이스 방법 표와 인터페이스 표 중 한 개를 구축하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  11. 제 1 항에 있어서, 한 개 이상의 메타데이터와 한 개 이상의 토큰을 포함하는 엑스포트 파일을 발생시키는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  12. 제 1 항에 있어서, 메타데이터에 의해 기준 아이템이 설명되고, 메타데이터는 패키지, 클래스, 필드, 방법 중 한 개와 관련되는 것을 특징으로 하는 방법.
  13. 제 1 항에 있어서, 패키지는 한 개 이상의 아이템을 기준으로 하는 실행가능한 성분과, 한 개 이상의 아이템에 대한 기준을 분석하기 위한 엑스포트 성분을 포함하는 것을 특징으로 하는 방법.
  14. CAP 파일을 발생시키는 방법으로서, 상기 방법은,
    - 클래스에 속하는 한 개 이상의 아이템에 대한 기준을 CAP 파일에서 분석하고,
    - CAP 파일과 연관된 엑스포트 성분을 발생시키며,
    - 인터페이스 표를 클래스에 대해 구축하는, 이상의 단계를 포함하는 것을 특징으로 하는 방법.
  15. 제 50 항에 있어서, 표는 가상 방법, 인터페이스, 필드 중 하나 상에서 정보를 포함하는 것을 특징으로 하는 방법.
  16. 자원 제약 컴퓨터로 다운로드될 코드를 링크하는 방법으로서, 상기 코드는 외부 아이템에 대한 한 개 이상의 기준을 가지는 한 개 이상의 패키지로 분리되며, 상기 방법은,
    - 패키지를 수신하고,
    - 상응하는 기준 아이템으로 토큰에 대한 기준 아이템의 매핑을 수신하며,
    - 매핑을 이용하여 패키지를 링크하는, 이상의 단계를 포함하는 것을 특징으로 하는 방법.
  17. 1) 스마트 카드,
    2) 프로세서에 연결되는 메모리,
    3) 바이트코드를 포함하는 제 1 패키지를 다운로드할 수 있는, 프로세서에 연결되는 인터페이스, 이때 바이트코드는 토큰을 이용하여 제 2 패키지의 아이템을 기준으로 하며,
    4) 아이템에 대한 기준을 분석하고 제 1, 2 패키지의 바이트코드를 링크하기 위해 메모리 상에 저장되는 인스톨러, 그리고
    5) 링크된 바이트 코드를 실행하기 위한 가상 머신의 이상 5가지를 포함하는 것을 특징으로 하는 스마트카드.
  18. 1) 프로세서,
    2) 프로세서에 연결되어, 코드를 내장하는 제 1 패키지를 저장할 수 잇는 메모리 장치, 이때 코드는 토큰을 이용하여 제 2 패키지의 아이템을 기준으로 하고,
    3) 토큰을 이용하여 아이템에 대한 기준을 분석하고 제 1 패키지와 제 2 패키지의 코드를 링크하기 위한 인스톨러,
    4) 링크된 코드를 실행하기 위한 가상 머신의 이상 네가지를 포함하는 것을 특징으로 하는 자원 제약 장치.
  19. 제 17 항이나 18 항에 있어서, 아이템이 표에 나타난 클래스 인터페이스를 이용하여 기준되는 것을 특징으로 하는 스마트카드.
  20. 제 17 항에서 19 항까지 중 어느 한 항에 있어서, 아이템이 방법인 것을 특징으로 하는 스마트카드.
  21. 제 17 항에서 20 항까지 중 어느 한 항에 있어서, 프로세서에 의해 실행되는 운영체제를 추가로 포함하는 것을 특징으로 하는 스마트카드.
  22. 제 17 항에서 21 항까지 중 어느 한 항에 있어서, 상기 패키지는 라이브러리와 애플릿 중 하나인 것을 특징으로 하는 스마트카드.
  23. 제 17 항 또는 18 항에 있어서, 인터페이스를 통해 보내지도록 된 한 개 이상의 패키지로 애플릿을 변환하기 위해 원격 프로세서를 실행하는 변환기를 추가로 포함하는 것을 특징으로 하는 스마트카드.
  24. 자원 제약 컴퓨터에 다운로드되는 구조-중립적 코드를 링크하기 위한 방법으로서, 상기 코드는 한 개 이상의 기준 아이템을 가지는 한 개 이상의 패키지로 분리될 수 있고, 상기 방법은,
    - 한 개 이상의 기준 아이템을 상응하는 한 개 이상의 토큰으로 매핑하고,
    - 런타임 모드에 상응하도록 토큰을 정렬하며,
    - 자원 제약 컴퓨터로 패키지를 다운로드하고,
    - 정렬된 코드를 이용하여 패키지를 실행 코드로 링크하는, 이상의 단계를 포함하는 것을 특징으로 하는 방법.
  25. 제 24 항에 있어서, 상기 방법은,
    - 원격 컴퓨터 상에 저장된 엑스포트 파일에서 매핑을 설명하고,
    - 엑스포트 파일을 바탕으로 원격 컴퓨터 상에서 패키지를 발생시키는, 이상의 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제 25 항에 있어서, 각각의 패키지에 대해 토큰을 할당하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  27. 제 25 항에 있어서, 한 개 이상의 공적 인터페이스 클래스와 인터페이스에 대한 토큰을 할당하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  28. 제 27 항에 있어서, 각각의 공적 정적 필드, 정적 방법. 사례 필드, 가상 방법, 인터페이스 방법에 대해 토큰을 할당하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  29. 제 25 항에 있어서, 엑스포트 파일에 토큰을 공개하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  30. 제 27 항에 있어서, 인터페이스 방법 토큰을 구현 방법 토큰으로 매핑하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  31. 제 30 항에 있어서, 아이템은 클래스 인터페이스이고, 상기 방법은 클래스에 구현되는 각각의 인터페이스에 대해 인터페이스 방법의 목록을 발생시키는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  32. 제 31 항에 있어서, 상기 방법은,
    - 클래스나 그 수퍼클래스에서 방법의 구현을 위치시키고,
    - 방법과 연관된 토큰을 얻으며,
    - 인터페이스 방법 토큰을 구현 방법 토큰과 연관시키는, 이상의 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  33. 제 25 항에 있어서, 상기 발생 단계는 클래스 파일과 엑스포트 파일을 다운로드가능 파일로 변환하는 단계를 추가로 포함하고, 이때 다운로드가능 파일은 변환된 애플릿 파일과 라이브러리 파일 중 하나인 것을 특징으로 하는 방법.
  34. 제 33 항에 있어서, 패키지를 설치하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  35. 제 24 항에 있어서, 상기 링크 단계는 다운로드 단계 중에 실행되는 것을 특징으로 하는 방법.
  36. 제 35 항에 있어서, 링크 단계는 부분 링크를 포함하는 것을 특징으로 하는 방법.
  37. 제 24 항에 있어서, 링크 단계는 한 개의 연속 연산으로 실행되는 것을 특징으로 하는 방법.
  38. 제 24 항에 있어서, 런타임 모드에서 실행 코드를 실행하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  39. 제 38 항에 있어서, 링크 단계는 실행(executing) 단계 이전에 실행되는 것을 특징으로 하는 방법.
  40. 제 38 항에 있어서, 실행 단계와 링크 단계가 동시에 실행되는 것을 특징으로 하는 방법.
  41. 자원 제약 컴퓨터에 다운로드되는 구조-중립적 코드를 링크하기 위한 명령을지닌 반송파로서, 상기 코드는 한 개 이상 기준 아이템을 가지는 한 개 이상 패키지로 분리할 수 있고, 상기 반송파는,
    - 한 개 이상 기준 아이템을 상응하는 한 개 이상의 토큰으로 매핑하고,
    - 런타임 모드에 상응하도록 토큰을 정렬하며,
    - 자원 제약 컴퓨터에 패키지를 다운로드하고,
    - 정렬된 토큰을 이용하여 패키지를 실행 코드로 링크하는, 이상의 명령을 포함하는 것을 특징으로 하는 반송파.
  42. 자원 제약 컴퓨터에 다운로드되는 구조-중립적 코드를 링크하기 위한 컴퓨터에 의해 구현되는 시스템으로서, 상기 코드는 한 개 이상 기준 아이템을 가지는 한 개 이상 패키지로 분리할 수 있고, 상기 시스템은,
    - 한 개 이상 기준 아이템을 상응하는 한 개 이상의 토큰으로 매핑하고,
    - 런타임 모드에 상응하도록 토큰을 정렬하며,
    - 자원 제약 컴퓨터에 패키지를 다운로드하고,
    - 정렬된 토큰을 이용하여 패키지를 실행 코드로 링크하는, 이상의 명령을 포함하는 것을 특징으로 하는 시스템.
KR1020017009728A 1999-02-02 2000-02-02 토큰 기반 링크 KR100713739B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/243,108 1999-02-02
US09/243,108 US6880155B2 (en) 1999-02-02 1999-02-02 Token-based linking

Publications (2)

Publication Number Publication Date
KR20010093312A true KR20010093312A (ko) 2001-10-27
KR100713739B1 KR100713739B1 (ko) 2007-05-02

Family

ID=22917385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017009728A KR100713739B1 (ko) 1999-02-02 2000-02-02 토큰 기반 링크

Country Status (11)

Country Link
US (2) US6880155B2 (ko)
EP (1) EP1145107B1 (ko)
JP (1) JP2002536744A (ko)
KR (1) KR100713739B1 (ko)
CN (2) CN1160626C (ko)
AT (1) ATE343172T1 (ko)
AU (2) AU771699B2 (ko)
BR (1) BRPI0007945B1 (ko)
CA (1) CA2362010A1 (ko)
DE (1) DE60031370T2 (ko)
WO (1) WO2000046667A2 (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PT932865E (pt) 1996-10-25 2002-12-31 Schlumberger Systems & Service Utilizacao de linguagem de programacao de nivel elevado com um microcontrolador
US6793143B2 (en) * 1998-03-12 2004-09-21 Giesecke & Devrient Gmbh Data carrier
US20010007146A1 (en) * 1999-12-23 2001-07-05 Uwe Hansmann Method for providing a set of software components
US8037193B2 (en) * 1999-12-24 2011-10-11 Telstra Corporation Limited Virtual token
US7506175B2 (en) * 2000-11-06 2009-03-17 International Business Machines Corporation File language verification
EP1207454A1 (en) * 2000-11-15 2002-05-22 International Business Machines Corporation Java run-time system with modified linking identifiers
TW552502B (en) * 2000-11-21 2003-09-11 Matsushita Electric Ind Co Ltd File management method and content recording/playback apparatus
TWI230858B (en) * 2000-12-12 2005-04-11 Matsushita Electric Ind Co Ltd File management method, content recording/playback apparatus and content recording program
US6850707B1 (en) 2001-01-30 2005-02-01 The Regents Of The University Of California Secure optical layer multicasting to effect survivability
US20020147907A1 (en) * 2001-04-06 2002-10-10 Bruce Ross System for authorizing transactions using specially formatted smart cards
US7152223B1 (en) * 2001-06-04 2006-12-19 Microsoft Corporation Methods and systems for compiling and interpreting one or more associations between declarations and implementations in a language neutral fashion
US7082597B2 (en) 2001-06-20 2006-07-25 Sun Microsystems, Inc. Representation of objects in a Java programming environment
US7036120B2 (en) * 2001-07-31 2006-04-25 Sun Microsystems, Inc. Two tier clusters for representation of objects in Java programming environments
US7640361B1 (en) * 2001-08-24 2009-12-29 Mcafee, Inc. Systems and methods for converting infected electronic files to a safe format
US6779732B2 (en) * 2001-08-31 2004-08-24 Schulumberger Malco, Inc. Method and apparatus for linking converted applet files
US7155702B2 (en) * 2001-09-13 2006-12-26 Axalto Sa Interface and stub generation for code distribution and synthesis
FR2831684B1 (fr) * 2001-10-31 2004-03-05 Gemplus Card Int Installation de programme compile notamment dans une carte a puce
US7131121B2 (en) * 2001-11-14 2006-10-31 Axalto, Inc. Method and apparatus for linking converted applet files without relocation annotations
US6738969B2 (en) 2001-11-14 2004-05-18 Sun Microsystems, Inc. Non-intrusive gathering of code usage information to facilitate removing unused compiled code
NL1019876C2 (nl) * 2002-01-31 2003-08-04 Chess Embedded Technology B V Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting.
US7167908B2 (en) * 2002-09-27 2007-01-23 Intel Corporation Facilitating operation of a multi-processor system via a resolved symbolic constant
US7222331B2 (en) * 2003-01-16 2007-05-22 Sun Microsystems, Inc. Linking of virtual methods
US8121955B2 (en) * 2003-01-16 2012-02-21 Oracle America, Inc. Signing program data payload sequence in program loading
US7272830B2 (en) * 2003-01-16 2007-09-18 Sun Microsystems, Inc. Ordering program data for loading on a device
US7165246B2 (en) * 2003-01-16 2007-01-16 Sun Microsystems, Inc. Optimized representation of data type information in program verification
US7484095B2 (en) * 2003-01-16 2009-01-27 Sun Microsystems, Inc. System for communicating program data between a first device and a second device
US7281244B2 (en) * 2003-01-16 2007-10-09 Sun Microsystems, Inc. Using a digital fingerprint to commit loaded data in a device
DE10357257A1 (de) 2003-12-08 2005-06-30 Giesecke & Devrient Gmbh Java Smart Card Chip mit für globale Variablen reserviertem Speicherbereich
US7374099B2 (en) * 2004-02-24 2008-05-20 Sun Microsystems, Inc. Method and apparatus for processing an application identifier from a smart card
US7191288B2 (en) * 2004-02-24 2007-03-13 Sun Microsystems, Inc. Method and apparatus for providing an application on a smart card
US7165727B2 (en) 2004-02-24 2007-01-23 Sun Microsystems, Inc. Method and apparatus for installing an application onto a smart card
US7140549B2 (en) * 2004-02-24 2006-11-28 Sun Microsystems, Inc. Method and apparatus for selecting a desired application on a smart card
US7676839B2 (en) * 2004-03-15 2010-03-09 Xceedid Systems and methods for access control
FR2871590B1 (fr) * 2004-06-15 2006-08-04 Gemplus Sa Procede de chargement d'un logiciel en langage intermediaire oriente objet dans un appareil portatif.
US20060053308A1 (en) * 2004-09-08 2006-03-09 Raidy 2 Go Ltd. Secured redundant memory subsystem
CN101048898B (zh) * 2004-10-29 2012-02-01 麦德托尼克公司 锂离子电池及医疗装置
US7395269B2 (en) * 2004-12-20 2008-07-01 Microsoft Corporation Systems and methods for changing items in a computer file
US7383278B2 (en) * 2004-12-20 2008-06-03 Microsoft Corporation Systems and methods for changing items in a computer file
US7232073B1 (en) 2004-12-21 2007-06-19 Sun Microsystems, Inc. Smart card with multiple applications
US9354904B2 (en) * 2006-04-24 2016-05-31 Microsoft Technology Licensing, Llc Applying packages to configure software stacks
US10838714B2 (en) 2006-04-24 2020-11-17 Servicenow, Inc. Applying packages to configure software stacks
US20070250812A1 (en) * 2006-04-24 2007-10-25 Microsoft Corporation Process Encoding
US20080059949A1 (en) * 2006-09-01 2008-03-06 Sap Ag System and method for implementing a safe framework
US20090077118A1 (en) * 2007-03-16 2009-03-19 Novell, Inc. Information card federation point tracking and management
US8151324B2 (en) 2007-03-16 2012-04-03 Lloyd Leon Burch Remotable information cards
US20090204622A1 (en) * 2008-02-11 2009-08-13 Novell, Inc. Visual and non-visual cues for conveying state of information cards, electronic wallets, and keyrings
US20090077655A1 (en) * 2007-09-19 2009-03-19 Novell, Inc. Processing html extensions to enable support of information cards by a relying party
US20090178112A1 (en) * 2007-03-16 2009-07-09 Novell, Inc. Level of service descriptors
US8370913B2 (en) * 2007-03-16 2013-02-05 Apple Inc. Policy-based auditing of identity credential disclosure by a secure token service
US20090077627A1 (en) * 2007-03-16 2009-03-19 Novell, Inc. Information card federation point tracking and management
US20080317042A1 (en) * 2007-06-22 2008-12-25 Palo Alto Research Center Incorporated Extensible framework for compatibility testing
US20090199284A1 (en) * 2008-02-06 2009-08-06 Novell, Inc. Methods for setting and changing the user credential in information cards
US20090217368A1 (en) * 2008-02-27 2009-08-27 Novell, Inc. System and method for secure account reset utilizing information cards
US8079069B2 (en) * 2008-03-24 2011-12-13 Oracle International Corporation Cardspace history validator
US20090272797A1 (en) * 2008-04-30 2009-11-05 Novell, Inc. A Delaware Corporation Dynamic information card rendering
US20100011409A1 (en) * 2008-07-09 2010-01-14 Novell, Inc. Non-interactive information card token generation
US20100031328A1 (en) * 2008-07-31 2010-02-04 Novell, Inc. Site-specific credential generation using information cards
US20100095372A1 (en) * 2008-10-09 2010-04-15 Novell, Inc. Trusted relying party proxy for information card tokens
JP4875043B2 (ja) * 2008-10-31 2012-02-15 株式会社東芝 フレームワークプログラム及びクライアント装置
US8083135B2 (en) 2009-01-12 2011-12-27 Novell, Inc. Information card overlay
US8632003B2 (en) * 2009-01-27 2014-01-21 Novell, Inc. Multiple persona information cards
US20100251353A1 (en) * 2009-03-25 2010-09-30 Novell, Inc. User-authorized information card delegation
US8640115B2 (en) * 2010-04-30 2014-01-28 Oracle International Corporation Access control in modules for software development
CN101976211B (zh) * 2010-09-26 2013-03-13 北京握奇数据系统有限公司 一种在cap文件中替换函数的方法、装置及系统
US9075640B1 (en) * 2010-12-21 2015-07-07 Amazon Technologies, Inc. Sharing applications in a java virtual machine
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
US9455876B1 (en) * 2013-02-01 2016-09-27 Ingram Micro Inc. Method and standard for integrating applications into a cloud
CN104281790A (zh) * 2013-07-03 2015-01-14 钟丹东 电子文件水印保护系统
US9519466B2 (en) * 2013-12-20 2016-12-13 Oracle International Corporation Executable code for constrained computing environments
CN105426239A (zh) * 2015-11-03 2016-03-23 大唐微电子技术有限公司 一种在Java卡中实现本地方法调用的方法及装置
EP3176695A1 (en) * 2015-12-04 2017-06-07 Gemalto Sa Method for managing a package in a secure element
CN105511935B (zh) * 2015-12-09 2019-07-09 网易(杭州)网络有限公司 资源索引值的获取方法及装置
EP3208717A1 (en) * 2016-02-17 2017-08-23 Gemalto Sa Method for managing objects in a secure element
US10846417B2 (en) * 2017-03-17 2020-11-24 Oracle International Corporation Identifying permitted illegal access operations in a module system
CN110874213B (zh) * 2019-11-12 2021-02-12 广州银汉科技有限公司 一种静态强类型语言的运行时类型扩展与反射方法

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2204973A (en) 1987-05-19 1988-11-23 Gen Electric Co Plc Data processing system
US5579509A (en) 1991-02-08 1996-11-26 International Business Machines Corporation Apparatus and method for verifying compatibility of system components
US6131159A (en) * 1992-05-08 2000-10-10 Paradyne Corporation System for downloading programs
US5367685A (en) 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
JP3343354B2 (ja) 1993-05-05 2002-11-11 アップル コンピューター インコーポレーテッド コンピュータシステム中にある複数のモジュラーコンポーネント間に互換性如何を確認する方法ならびに装置
HU215619B (hu) 1993-06-15 1999-01-28 Celltrace Communications Limited Távközlési rendszer, továbbá előfizetői egységet távközlési rendszerben vezérlő modul
US5619695A (en) * 1994-02-03 1997-04-08 Lockheed Martin Corporation Method and apparatus for scheduling resources
EP0666550B1 (en) 1994-02-08 1997-05-02 Belle Gate Investment B.V. Data exchange system comprising portable data processing units
CA2147536A1 (en) 1994-06-01 1995-12-02 Gerard Johan Holzmann On-the-fly model checking with partial-order state space reduction
US5841866A (en) * 1994-09-30 1998-11-24 Microchip Technology Incorporated Secure token integrated circuit and method of performing a secure authentication function or transaction
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5668999A (en) 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US6519767B1 (en) 1995-06-07 2003-02-11 Microsoft Corporation Compiler and method for automatically building version compatible object applications
US5701408A (en) 1995-07-10 1997-12-23 International Business Machines Corporation Method for testing computer operating or application programming interfaces
US6067575A (en) 1995-12-08 2000-05-23 Sun Microsystems, Inc. System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US5692047A (en) 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US5778231A (en) * 1995-12-20 1998-07-07 Sun Microsystems, Inc. Compiler system and method for resolving symbolic references to externally located program files
US5734822A (en) 1995-12-29 1998-03-31 Powertv, Inc. Apparatus and method for preprocessing computer programs prior to transmission across a network
US6038551A (en) * 1996-03-11 2000-03-14 Microsoft Corporation System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer
US5887065A (en) * 1996-03-22 1999-03-23 Activcard System and method for user authentication having clock synchronization
US5889992A (en) 1996-03-28 1999-03-30 Unisys Corp. Method for mapping types stored in a model in an object-oriented repository to language constructs for A C binding for the repository
PT932865E (pt) * 1996-10-25 2002-12-31 Schlumberger Systems & Service Utilizacao de linguagem de programacao de nivel elevado com um microcontrolador
AU729261B2 (en) 1996-11-08 2001-02-01 Huntsman International Llc Process for making flexible polyurethane foams
US6141681A (en) * 1997-03-07 2000-10-31 Advanced Micro Devices, Inc. Method of and apparatus for transferring and interpreting a data package
US5905987A (en) 1997-03-19 1999-05-18 Microsoft Corporation Method, data structure, and computer program product for object state storage in a repository
ATE281680T1 (de) * 1997-03-24 2004-11-15 Visa Int Service Ass System und verfahren für eine mehrzweckchipkarte die eine nachträgliche speicherung einer anwendung auf dieser karte ermöglicht
US6092147A (en) 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US5903899A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks
AU7375098A (en) * 1997-05-09 1998-11-27 Neomedia Technologies, Inc. Method and system for accessing electronic resources via machine-readable da ta on intelligent documents
US6328217B1 (en) 1997-05-15 2001-12-11 Mondex International Limited Integrated circuit card with application history list
GB2326010A (en) * 1997-06-07 1998-12-09 Ibm Data processing system using active tokens
US6067558A (en) * 1997-09-18 2000-05-23 Wendt; James Gordon Method and apparatus for providing increased content from a resource constrained device
US6226744B1 (en) * 1997-10-09 2001-05-01 At&T Corp Method and apparatus for authenticating users on a network using a smart card
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US5974454A (en) * 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US6349344B1 (en) 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US5937412A (en) * 1997-12-29 1999-08-10 Alcatel Usa Sourcing, L.P. Method and system for packaging service logic programs in an advanced intelligent network
US6145021A (en) * 1998-06-02 2000-11-07 International Business Machines Corporation Method and system for managing resource allocation for plug and play devices by providing only the resources required to the devices before system initialization
DE69817333T2 (de) * 1998-06-05 2004-06-09 International Business Machines Corp. Verfahren und Vorrichtung zum Laden von Befehlskodes in einen Speicher und zum Verbinden dieser Befehlskodes
EP1088270B1 (de) 1998-06-26 2002-10-02 Deutsche Telekom AG Verfahren zur prüfung von java-bytecode-programmen auf sicherheitseigenschaften
US6178546B1 (en) * 1998-08-31 2001-01-23 Alcatel Usa Sourcing, L.P. System and method of making software product deliverables
US6163811A (en) * 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
EP1125262A1 (en) * 1998-10-27 2001-08-22 Visa International Service Association Delegated management of smart card applications
CA2255042C (en) 1998-11-30 2004-04-13 Leonard W. Theivendra Class loader
US6438550B1 (en) * 1998-12-10 2002-08-20 International Business Machines Corporation Method and apparatus for client authentication and application configuration via smart cards
US6272674B1 (en) 1998-12-14 2001-08-07 Nortel Networks Limited Method and apparatus for loading a Java application program
US7200842B1 (en) 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
CA2289246C (en) * 1999-11-10 2001-04-24 George Edward Andrews Bicycle saddle

Also Published As

Publication number Publication date
CN1324467C (zh) 2007-07-04
EP1145107A2 (en) 2001-10-17
BRPI0007945B1 (pt) 2015-10-13
BR0007945A (pt) 2002-05-28
CN1591338A (zh) 2005-03-09
CN1160626C (zh) 2004-08-04
DE60031370T2 (de) 2007-09-20
AU2004202909B2 (en) 2007-07-12
US7444631B2 (en) 2008-10-28
CN1346465A (zh) 2002-04-24
KR100713739B1 (ko) 2007-05-02
AU3587200A (en) 2000-08-25
AU2004202909A1 (en) 2004-07-22
DE60031370D1 (de) 2006-11-30
US20030028686A1 (en) 2003-02-06
AU771699B2 (en) 2004-04-01
ATE343172T1 (de) 2006-11-15
US20050097550A1 (en) 2005-05-05
US6880155B2 (en) 2005-04-12
WO2000046667A2 (en) 2000-08-10
EP1145107B1 (en) 2006-10-18
WO2000046667A3 (en) 2000-12-21
CA2362010A1 (en) 2000-08-10
JP2002536744A (ja) 2002-10-29

Similar Documents

Publication Publication Date Title
KR100713739B1 (ko) 토큰 기반 링크
KR100713740B1 (ko) 자원-제약 장치를 위한 객체지향 명령어 세트
Clausen et al. Java bytecode compression for low-end embedded systems
US7587612B2 (en) Generating and communicating information on locations of program sections in memory
US6848111B1 (en) Zero overhead exception handling
AU775261B2 (en) Language subset validation
US7506175B2 (en) File language verification
KR20000052759A (ko) 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
US6751790B2 (en) Frameworks for efficient representation of string objects in Java programming environments
US6793143B2 (en) Data carrier
CN111966443B (zh) 一种智能卡及其工作方法
Bernardeschi et al. Using control dependencies for space-aware bytecode verification

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: 20130419

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140422

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 13