KR20010086159A - 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법 - Google Patents

자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법 Download PDF

Info

Publication number
KR20010086159A
KR20010086159A KR1020017008271A KR20017008271A KR20010086159A KR 20010086159 A KR20010086159 A KR 20010086159A KR 1020017008271 A KR1020017008271 A KR 1020017008271A KR 20017008271 A KR20017008271 A KR 20017008271A KR 20010086159 A KR20010086159 A KR 20010086159A
Authority
KR
South Korea
Prior art keywords
java
platform
classes
program
instructions
Prior art date
Application number
KR1020017008271A
Other languages
English (en)
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 KR20010086159A publication Critical patent/KR20010086159A/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

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

Abstract

증가된 수행 성능에 초점맞춰지고 자바 프로그램이 함수성을 요구하는 메모리 양의 감소를 갖는 특정 하드웨어 플랫폼들 상에서 더 효과적으로 동작하기 위해 자바 프로그램들을 최적화하고 향상시키기 위한 방법은 식별하기 위해 상수들 및 특별화 함수들을 정의하고 자바 프로그램과 관련된 존재하는 클래스들을 변형하는 새로운 클래스들을 이용하기 위한 단계들을 포함한다. 이 방법은 어떠한 종류의 특별화가 일어나는지를 판정하는 평가 및 분석의 결과들을 갖는 상수들의 평가 분석에 의존한다. 옵션 단계로서, 얻어진 플랫폼 향상 자바 클래스들은 자바 프로그램들이 장래에 동작될 때 변형된 클래스들이 동일한 자바 프로그램 또는 동일한 하드웨어 플랫폼 상에서 동작하는 다른 자바 프로그램들에 의해 이용되도록 하는 원래의 자바 클래스들을 덮어쓴다.

Description

자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의 플랫폼 특정 효율 강화를 위한 방법{Method for platform specific efficiency enhancement of java programs and software product therefor}
C 및 C++ 프로그램 언어들로 개발된 것과 같은 편집 및 실행 모델로 인해 플랫폼 어웨어(aware)인 프로그램들의 개발자들은 언어 프리프로세서(preprocessor)들을 이용할 수 있다. C와 같은 언어용 프리프로세서는 또한 개발자가 고정된 상수들을 사용하고 정의하는 것을 가능하게 한다. 이러한 상수들은 사실상 주로 특정한 플랫폼이다. 언어 프리프로그램들은 또한 조건부 지시(directive)들(예를 들어,#ifdef 또는 #if)을 포함하기 위해 연속적인 편집 처리 동안 포함되고 실행될 코드의 특정 변형들을 선택하기 위해 차례로 사용되고, 컴파일러에 의해 산출된 실행 파일 상에 차례로 영향을 미치도록 한다. 이러한 상수들 및 지시들을 사용함으로써 개발자들 및 언어 컴파일러 소프트웨어가 더 넓은 공간 및 기계-특정 코드(machine-specific code)의 유효한 수행 성능을 일으키기 위해 프로그램 편집 처리의 출력을 보다 잘 동조(tune)하도록 한다. 이는 정보 기기들의 새로운 범주에 존재하는 것과 같은 내장형 장치들을 위한 소프트웨어를 개발할 때 특히 흥미롭다.
자바는 소스 코드를 자신의 중간 표현으로 컴파일함으로써 아키텍처 독립성을 달성하는 완전히 개체 지향적인(object-oriented) 플랫폼 독립적 프로그래밍 언어이다. 자바 소스 코드는 정규 기계 코드로 컴파일되는 것이 아니라 바자의 특성을 지지하기 위해 특별히 설계된 버추얼 기계를 위한 코드, 즉 바이트코드(bytecode)로 해석된다. 이후에 자바 해석기 또는 자바 인에이블된 브라우저가 해석된 코드를 실행한다. 자바 소스 코드가 컴파일 되는 동안 자바 해석기가 동작 시에 해석된 코드를 다이내믹하게 링크하므로 링크(link) 단계가 요구되지 않는다. 자바 프로그램들은 보통 자바 해석기 상에서 동작되는 어플리케이션 또는 자바 인에이블된 브라우저에 의해 동작되는 애플릿(applet)들로서 분류된다. 모든 목적들을 위한 참조문헌으로서 본 명세서에 통합되는 US 특허 제 5,933,144호를 보자.
자바 빈(Bean)들은 자바에 기초한 소프트웨어 성분들을 만들고 사용하기 위한 성분 모델이다. "빈"은 단순히 오브젝트 링킹(linking) 및 내장(OLE)형 이진수개념과 유사한 여분의 기술적인(descriptive) 정보를 갖는 자바 클래스이다. 하지만 OLE 이진수와 달리, 빈은 보통 클래스의 기호 정보 및 방법 서명(method signature)들을 함유하고 빔에 관한 보다 많은 정보에 대해 인쇄 도구에 의해 주사될 수 있는 파일을 포함하는 자기-기술(self-describing)이다. 일반적인 방법을 이용하는 임의의 자바 클래스는 빈으로 여겨지지만, 빈은 전형적으로 방법들뿐만 아니라 특성들 및 이벤트(event)들을 갖는다.
자바는 도식적인 사용자 환경들 또는 목표 지향적인 인터페이스들에서의 구현을 위해 편리하다. 자바 발췌 윈도우 툴키트(java abstract window toolit; AWT)는 도식적인 사용자 인터페이스(GUI) 프로그램이 동작하는 시스템에 무관하게 오브젝트들이 일반적인 방식으로 다루어지는 것을 가능하게 한다. 플랫폼 독립성의 특성과 조합된, 이 특성은 자바를 사용하는 크로스-플랫폼 소프트웨어와 인터넷의 보다 빠른 개발을 증진시킨다.
따라서, 고도의 이식가능(portable)용 플랫폼 독립적 프로그래밍 언어인 자바는 다른 언어들에 대해 이용가능한 프리프로세싱 성능을 제공하지 않는다. 다른 방식을 언급하면, 자바는 보다 작은 코드 크기들 및 보다 뛰어난 플랫폼 특정 수행성능을 위해 명백히 필요한 것들임에도, 특정 플랫폼에 관해 최적화되기 위한 내부 능력 또는 성능을 처리하지 않는다. 자바 빈들은 개조가능하게 설계될 수 있는 반면, 이들 빈들은 수행 시간 및 메모리 사용에 관한 유효성에만 개조가능성을 제공한다. 이 단가들은 이미 자바의 이식가능성의 뛰어난 유효 단가를 혼합한다. 더욱이, 자바는 빠르게 자바 네트워크 컴퓨터들과 같은 작은 연산 장치들 및 다양한 정보 어플리케이션들용 프로그래밍의 개발에서 지배적인 언어로 되고 있으므로, 문제의 본 장치들에 대해 임의의 프로그래밍을 주문생산하기 불가능하다느는 것이 프로그램 크기 및 효율성에 있어서 상당한 단점이다.
C와 C++ 언어들에 공통적인 프리프로세서 기술은 자바 소프트웨어가 컴파일된 클래스 파일 형식으로 분포되기 때문에 자바에 대해 동작하지 않는다는 것이 이해될 것이다. 이와 같이, 프리프로세서가 C와 C++로서 달성되는 효율성 이득(gain)들을 달성하기 위해 사용되지만, 자바의 이식가능한 컴파일된 클래스 파일 아키텍쳐와 호환가능한 다른 방법이 필요하다.
저스트 인 타임(JIT) 컴파일러들과 같은 자바 동작 시간 최적화 도구들이 존재한다는 것이 또한 이해될 것이다. 하지만, 선택적인 코드 포함/제외(inclusion/exclusion) 최적화들에 대해 자바 프로그램의 초기 또는 사용 진행중인 동안 선택적인 처리로서 발생하게 하는 도구들은 없다. 예를 들어, IBM의 국제 특허 WO98/3786은 플랫폼 특정 최적화들 및 실행을 처리하는 기술보다 더 자바 특정 메모리 페이징(paging) 기술의 이슈(issue)인 요구되는 즉시 자바 클래스 파일들의 로딩을 개시한다. 또한, 선 마이크로 시스템즈의 유럽 특허 출원 EP 0 913 769 A2는 보다 뛰어난 메모리 사용을 위한 이중 데이터(duplicate date)를 제거하기 위해 클래스 파일들을 프리프로세스하고 패키지하기 위한 방법을 상술한다. 하지만, EP '769 출원은 조건 제어 흐름 지시들을 처리하기 위한 능력을 포함하는 언어 프로세서와 거의 유사한 양식으로 동작하지 않는다. 상술된 도큐먼트들 모두가 모든 목적에 대해 참조문헌으로써 본 명세서에 통합된다.
필요한 것은 플랫폼 특정 방식에서 자바 어플리케이션들을 최적화하기 위한 방법이다. 더욱이, 필요한 것은 C 프리프로세서와 같은 도구의 플랫폼 특정 이점들이 이용가능한 자바 어플리케이션들을 최적화하기 위한 방법이다. 이 방법이 얻어진 실행가능 프로그램 지시(instruction) 세트를 최적화하는 데 있어 상수들 및 조건 로직 모두를 이용한다면 이롭다. 마지막으로, 필요한 것은 이식가능하게 기록되고, 독립적인 아키텍쳐이고, 예를 들어 특정 하드웨어 플랫폼에 대해 자신을 스스로 구성하기 위해 자바 언어로 기록된 안전한 자바 프로그램을 가능하게 하는 자바 어플리케이션 최적화 방법이다.
(발명의 배경)
본 발명은 다양한 하드웨어 플랫폼들 상의 자바 프로그램들의 동작을 향상시키고 강화시키기 위한 방법들에 관한 것이다. 특히, 본 발명은 자바 실행가능한 코드를 동작할 때 얻어진 자바 실행 코드의 크기를 줄이고 성능 향상을 제공하기 위한 새로운 세트의 플랫폼 특정 자바 클래스들을 이용하기 위한 방법에 관한 것이다. 소프트웨어 프로덕트(software product)가 또한 개시된다.
도 1은 본 발명의 예시적인 실시예에 대한 간단한 어플리케이션 프로그램 인터페이스(API).
도 2는 예시적인 실시예에서 상술된 바와 같이 본 발명이 어떻게 동작하는지를 이해하기에 유용한 고 레벨 흐름도.
도 3은 이롭게는 도 2의 방법에 따른 자바 프로그램의 실행에 의한 특정 목적의 컴퓨터로 변환될 수 있는 일반적인 목적의 컴퓨터의 고 레벨 블록도.
(발명의 개요)
이상에 근거하여, 상술한 결함들을 줄이는 방법을 위해 본 기술의 필요성이 존재한다는 것을 이해할 수 있을 것이다. 본 발명은 현재 이용가능한 기술의 단점들 및 결점들을 극복하여 본 기술에서 필요한 본 발명을 실현하기 위한 요구에 의해 동기가 부여되고. 본 기술에서 필요한 이것을 실행한다.
본 발명은, 특히 다중 하드웨어 플랫폼들 상에서의 실행에 관한 것으로서 자바 프로그램의 효율성을 향상하기 위한 방법 및 해당 소프트웨어 프로덕트들에 관한 것이다. 한 양상으로, 본 발명은 크로스 플랫폼 자바 어플리케이션과 관련된 변수들 중 적어도 하나가 상수임을 선언하고, 크로스 플랫폼 자바 어플리케이션으로부터 사용되지 않은 함수(function)들 및 관련된 변수들을 제거하여 플랫폼 특정 자바 어플리케이션을 생성하는 단계들을 포함하는 크로스 플랫폼 자바 어플리케이션으로부터 플랫폼 특정 자바 어플리케이션을 산출하는 방법을 제공한다. 변수들 중 적어도 하나는 제 1 클래스에서 선언된 상수이고, 반면 사용되지 않은 클래스들 및 관련된 변수들을 제거하기 위한 지시들이 제 2 클래스에 제공된다는 것을 이해할 것이다.
또 다른 양상으로, 본 발명은 크로스 플랫폼 자바 프로그램으로부터 플랫폼 특정 자바 프로그램을 생성하는 방법을 제공한다. 바람직하게는, 본 방법은 크로스 플랫폼 자바 프로그램과 관련된 선택된 변수들이 상수임을 선언하기 위해 Constant 클래스를 정의하고, 선언된 상수들에 관한 크로스 플랫폼 자바 프로그램과 관련된 특별한 클래스들에 대한 함수들을 제공하는 Specialize 클래스를 정의하고, 선언된 상수들을 사용하여 자바 동작 시간 환경에서 크로스 플랫폼 자바 프로그램을 평가하고, 크로스 플랫폼 자바 프로그램과 관련된 클래스들 중 적어도 하나를 변형하여 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스들을 산출하는 단계들을 포함한다.
바람직하게는, 변형 단계는 아래의 단계들, 즉
크로스 플랫폼 자바 프로그램과 관련된 클래스들 중 적어도 하나로부터 사용되지 않는 함수들 및 관련된 변수들을 제거하여 적어도 하나의 제 1 변형된 클래스들을 산출하는 단계;
크로스 자바 프로그램과 관련된 클래스들 중 적어도 하나에서 새로운 함수를 갖는 존재하는 함수들을 제거하여 적어도 하나의 제 2 변형된 클래스를 산출하는 단계; 및
크로스 플랫폼 자바 프로그램과 관련된 클래스들 중 적어도 하나로 부가적인 함수를 삽입하여 적어도 하나의 변형된 클래스를 산출하는 단계들 중 하나 이상을 포함할 수 있다.
상이한 양상으로, 본 발명은 요구된 플랫폼 특정 결과를 제공하기 위해 상호 작용하는 부가적인 자바 클래스들의 창조 및 구현을 가능하게 하는 방법을 제공한다. 특히, 본 발명은 크로스 플랫폼 자바 프로그램으로부터 플랫폼 특정 자바 프로그램을 만드는 방법을 제공한다. 바람직하게는, 본 방법은
(a)상수들을 선언하기 위한 능력을 제공하는 제 1 자바 클래스를 정의하는 단계;
(b)제 1 자바 클래스에서 선언된 상수들에 관한 다른 클래스들을 특별화하는 함수들을 제공하는 제 2 자바 클래스를 정의하는 단계;
(c)요구된 플랫폼 지지 성능들에 적절한 특정 상수들을 선언하기 위한 제 1 자바 클래스를 사용하는 단계;
(d)요구된 플랫폼 지지 성능들을 제공하는 특별화 함수들을 기재(register)하기 위한 제 2 자바 클래스를 사용하는 단계;
(e)제 1 자바 클래스에서 상수들에 대한 자바 어플리케이션의 실행을 분석하는 단계; 및
(f)상수들의 분석 결과에 근거하여, 제 2 자바 클래스에 의해 열거된 기재된 특별화 함수들을 사용하는 적절한 요구된 코드를 무시하고, 발생하고, 공급하는 단계들 중 적어도 하나를 포함하는 결과적인 작용을 행하는 단계를 포함한다.
또 다른 양상으로, 본 발명은 크로스 플랫폼 자바 어플리케이션과 관련된 변수들 중 적어도 하나가 상수임을 선언하기 위한 컴퓨터 판독가능 매체 내부에서의 지시들, 및 크로스 플랫폼 자바 어플리케이션으로부터 사용되지 않은 함수들 및 관련된 변수들을 제거하여 플랫폼 특정 자바 어플리케이션을 산출하기 위한 컴퓨터 판독가능 매체 내부에서의 지시들을 포함하는 크로스 플랫폼 자바 어플리케이션으로부터 플랫폼 특정 자바 어플리케이션을 만들기 위한 지시들의 컴퓨터 판독가능 매체에서 컴퓨터 프로그램 프로덕트를 제공한다.
또 따른 양상에 따라, 본 발명은 크로스 자바 프로그램으로부터 플랫폼 특정 자바 프로그램을 만들기 위한 지시들의 컴퓨터 판독가능 매체에서 컴퓨터 프로그램 프로덕트를 제공한다. 바람직하게는, 이 지시들은 상수들로서 크로스 플랫폼 자바 프로그램과 관련된 선택된 변수들을 선언하기 위해 Constant 클래스를 정의하기 위한 컴퓨터 판독가능 매체 내부에서의 제 1 지시들, 선언된 상수들에 관한 크로스 플랫폼 자바 프로그램과 관련된 클래스들을 특별화하기 위한 함수들을 제공하는 Specialize 클래스를 정의하기 위한 컴퓨터 판독가능 매체 내부에서의 제 2 지시들, 선언된 상수들을 사용하여 자바 동작 시간 환경에서 크로스 플랫폼 자바 프로그램을 평가하기 위한 컴퓨터 판독가능 매체 내부에서의 제 3 지시들, 및 컴퓨터 판독가능 매체 내부에서의 지시들에 대한 크로스 플랫폼 자바 프로그램과 관련된 클래스들 중 적어도 하나를 변형하여 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스들을 산출하기 위한 컴퓨터 판독가능 매체 내부에서 제 4 지시들을 포함한다.
본 발명의 여러 특성들 및 양상들은 동일 또는 유사한 도면부호들이 전체에 거쳐 사용된 첨부된 도면들과 연관하여 취해진 상세한 설명을 참조하여 쉽게 이해될 것이다.
예시적인 실시예들 및 예시적인 어플리케이션들이 이제 본 발명의 이로운 기술들을 개시하기 위한 첨부된 도면들을 참조하여 상술된다.
본 발명은 특정한 어플리케이션들을 위한 예시적인 실시예들을 참조하여 본 명세서에 상술되고, 본 발명은 여기에 제한되지 않음을 이해해야 한다. 본 기술의 당업자들은 본 명세서에 제공된 기술에 접근 가능한 업자들은 본 발명이 상당한 유용성이 있는 부가적인 분야 및 범위 내에서 부가적인 변형예들, 어플리케이션들, 및 실시예들을 인식할 것이다.
본 발명은 하드웨어 및 장치 특정 자바 코드의 조건적인 실행, 포함, 및 제외를 위한 기초를 제공하기 위해 다중의 새로운 자바 클래스들의 부가를 이용한다.
본 발명의 하나의 예시적인 실시예에서, 본 방법은 두 개의 새로운 자바 클래스들을 이용한다. 제 1 클래스는 자바 프로그램의 조건적 처리를 위한 사용된 상수들의 정의 및 개재를 위해 제공된다. 제 2 클래스는 메모리 소비 및 수행성능에 관하여 보다 뛰어난 효율성을 요구하는 존재하는 자바 클래스들을 교체하거나 보충하기 위한 플랫폼 특정 또는 특별화된 코드의 정의를 위해 제공된다. 자바 클래스들에 관한 부가적인 정보는 본 명세서에서 참고문헌으로서 통합된 "The Java Language Environment, A White Paper"(선 마이크로시스템즈, 인크, 1996년 5월)란 부제의 James Gosling 과 Henry McGilton의 도큐먼트에서 찾을 수 있다.
자바 오브젝트와 이것에 의한 자바 클래스들에 관해 언급된 화이트 페이퍼(White Paper)로부터 이해될 수 있고, 방법들로부터 만들어진다. 하지만, 이는 독창적인 방법들 및 자바 오브젝트 방법들에 관해 혼동을 일으킬 수 있으므로, 자바 오브젝트 방법들은 이하에서 함수들로서 언급된다.
특히, 예시적인 실시예는 두 개의 새로운 오브젝트들 및 이를 이용하기 위한 방법들을 제공한다. 이들 두 개의 새로운 클래스 오브젝트들은 Constant 클래스와 Specialize 클래스이다. 이들 클래스들 모두는 곧 아래에 상세하게 논의되는데, 즉 이들 새로운 클래스들을 이용하는 방법이 그 논의에 따라 제공된다.
제 1의 새로운 클래스는 Constant 클래스이고, Constant 클래스는 이롭게는 진행하는 기재의 시간으로부터 상수와 같이 변수들을 기재하기 위해 사용될 수 있다. 본 실시예에서 Constant 클래스의 하나의 특정한 이로운 효과는 앞서 기재된상수를 변환하려는 임의의 시도가 동작 시에 에러를 일으킬 수 있다는 것을 유의해야 한다. 이 특성은 이러한 에러 조건이 일어났다는 것을 소프트웨어를 개발하는 프로그래머에게 필요한 피드백을 제공한다는 것을 이해할 것이다.
궁극적으로 Constant로 선언되는 변수들이 실행하는 자바 프로그램의 현 동작시간 환경에 존재하는 자원 상수들에 근거하여 설정될 수 있다는 점이 언급된다. 또한, 선언된 상수인 변수들이 이롭게는 개시 시의 사용자 기호 또는 설치 시의 사용자 기호에 부합할 수 있는 것이 언급된다. 이 상수들의 선언은 소정의 프로그래머에게서 도출된 세팅들 등의 결과로서 일어날 수 있다.
앞서 언급된 바와 같이, 제 2 클래스는 Specialize 클래스로서, 이 특별화 클래스는 상수들에 관하여 클래스들을 "특별화"하는 함수들을 제공한다. 특히, 클래스를 특별화하는 것은 Specialize 클래스의 정의된 함수들이 평가들을 행하고 정의된 Constant들의 값에 근거하여 분석하는 것을 타나낸다. 이들 평가들 및 분석은 바람직하게
(1)상수들 이상의 스위치들의 분해능
(2)상수 조건들을 갖는 컴퓨터 "if" 문구들의 평가
(3)상수들만을 포함하는 임의 표현의 연산을 포함한다는 것을 이해할 것이다.
진술된 또 다른 방식으로, Specialize 클래스는 자바 동작 시간 환경에서 로드된 클래스들과 더 효과적인 클래스들을 교체한다. 선택적으로, 특별화된 후에, 얻어진 최적화된 클래스들은 이미 앞서-최적화된 클래스들로서 앞으로의 사용을 위해 파일에 기록될 수 있다. 결과적으로, Constant 및 Specialize 클래스들의 이 조합은 오버헤드(overhead) 코드가 표준 클래스들로부터 제거되도록 한다.
본 특정 예시적인 실시예에 사용된 어플리케이션 프로그래밍 인터페이스(API)는 도 1에 도시될 수 있다. 새로운 클래스들 각각은 이 도면에 관해 상술되는데, 즉 이들 클래스들의 어플리케이션은 도 2에 관해 상술된다.
클래스 Constant는 두 개의 건설자(constructor)들 또는 두 개의 클래스 함수들을 포함하는 것으로서 정의된다. 제 1 건설자는 다양한 특정 클래스의 선택적인 기재가 상수로서 기재되도록 한다. 제 2 건설자는 상수들로서 특정 클래스의 모든 변수들의 기재를 허용한다.
또한, 두 개의 클래스 함수들은 동작 시간 에러 검사 및 관련된 에러 리포팅(reporting)을 디스인에이블 및 인에이블하기 위해 사용될 수 있다. 어플리케이션 개발 동안, 동작 시간 에러 검사는 보통 디버깅을 위해 인에이블된다. 하지만, 일단 자바 프로그램이 잘 테스트되고 정상적이라고 생각되고, 에러 검사는 이롭게는 실행 수행성능을 향상시기 위해 턴오프된다.
계속해서 도 1을 참조하여, 클래스 Specialize는 세 개의 클래스 함수들을 특징짓는 것과 같이 정의된다. 제 1 클래스 함수, 즉 specializeFor는 정렬과 같은 클래스들의 어레이 및 상수들의 어레이를 취하고, 제공된 상수들을 이용하여 입력 클래스들을 "특별화"하기 이해 이들 정렬을 이용한다. 이들 상수들은 차례로 상술된 상수 클래스를 경유하여 Constant들로서 기재되었던 변수들과 클래스들의 조합일 수 있다는 것이 언급된다. 이 제 1 클래스 함수는 이롭게는 입력 클래스들 및상수들에 근거하여 프로그램된 평가 또는 분석을 행할 수 있다. 이 분석들은 매개변수로서 통과된 모든 클래스들 및 상수들에 인가된 신호 함수를 구성한다는 것이 이해될 것이다. 대조적으로, 상이한 평가 절차는 입력 클래스들 및 상수들 각각의 조합에 대해 제공될 수 있다.
SpecializeFor 함수는 단순히 신호 단계가 아니지만, 프로그래머 또는 프로그램 발생기(generator)가 다중 상수들에 근거하여 복합 연산에 대한 제공된 상수들 상에서의 간단한 불린(Boolean) 동작으로부터 레인징(ranging)을 개발하거나 부가하는 임의 레벨의 복잡성들을 가질 수 있다는 것을 유의해야 한다. 평가의 출력에 근거하여, SpecializeFor 함수는 정상 또는 일반적인 클래스에서의 코드를 위해 특별화된 코드를 대체할 수 있다. 예를 들어, SpecializeFor 함수는 종래의 자바 빔에 대한 호출을 플랫폼 특정 자바 클래스에 대한 호출로 교체한다. 또한, SpecializeFor 함수는 클래스에서 정상 또는 일반적인 코드를 보충하기 위해 코드의 부가적인 시퀀스를 수행한다.
제 2 및 제 3 의 Specialize 함수들은 이롭게는 SpecializeFor 함수성을 디스인에이블 또는 인에이블하기 위해 이용될 수 있는 disable()함수 및 enable()함수이다. disable()함수는 이것이 특별화 코드를 디버깅하도록 될 때 특히 유용하다. 언급된 또 다른 방식으로, 일반적인 자바 동작 시간 클래스들이 정상적(보다 느리긴 하지만)으로 동작하고, SpecializeFor 함수가 명령을 받아 디스에이블될 수 있으므로, 이들 결과들은 서로 비교될 수 있다. SpecializeFor에 의해 제공된 특별화 함수성은 Specialize.enable()함수에 대한 호출에 의해 인에이블된다.
도 2는 샘플 어플리케이션에서 이들 두 개의 새로운 클래스들을 이용하기 위한 방법을 예시하는 흐름도이다. 예시적인 어플리케이션은 개발 중인 자바 어플리케이션이라기보다 완성된 자바 어플리케이션으로 사료된다.
단계들(100 및 110) 동안, 도 1에서의 API로 묘사된 Constant 및 Specialize 클래스들이 정의된다. 마치 특정 시퀀스에서 실행되는 것과 같이 이 단계들이 그려지게 되고, 이들 단계들이 이롭게는 사용자에게 적합하도록 실행될 수 있다는 것을 이해할 수 있을 것이다. 단계(120) 동안, 사용자는 하나 이상의 Constant 클래스의 사용을 통해 Constant 로서 변수들을 정의하고 기재한다. Constant 클래스에 대한 호출은 차례로 얼마나 많은 매개변수들이 제공되었는지에 근거하여 적합한 건설자 함수들을 요구한다는 것을 이해하게 된다. 여기서, 변수들이 이롭게는 자바 프로그램을 동작하기 전에 명령 라인 옵션들을 통해 설정될 수 있다는 것을 이해하게 된다. 대안으로, 변수들이 아래에 놓인 하드웨어 플랫폼의 동일성을 판정하기 위해 설계된 판정 처리의 일부로서 하드(hard) 코드되거나 발견적으로 발생될 수 있다. 또한, 변수들은 동작 시에 프로그램의 사용자에 의해 기입될 수 있다. 즉, 사용자에게 자바 프로그램이 사용자의 컴퓨터 상에 설치될 때 대화 박스를 통해 이들 변수들을 공급하도록 알려준다. 이후, 단계(130) 동안, SpecializeFor 함수의 상수들이 정의된다. 즉, 블록(120)에 설정된 상수에 근거하여 다양한 클래스들에 상에서 취해질 행동(들)이 정의된다.
단계(140) 동안, 새로운 상수들 및 특별화 함수들을 포함하는 자바 어플리케이션이 완성된다. 완성 후 몇몇 지점에서, 얻어진 프로그램은 또한 동작을 위해 실행되거나 개시한다. 자바 어플리케이션의 실행 중에, 이 어플리케이션은 단계(150) 동안 SpecializeFor 함수를 동작시킨다. 자바 어플리케이션이 동작함에 따라, 정의된 상수들에 근거하여 임의의 클래스들을 선택적으로 업데이트하고 변형한다. 즉, 변형된 또는 업데이트된 클래스들은 이후 나머지 실행동안 이용된다. 이들 변형되고 업데이트된 클래스들은 어플리케이션의 모든 앞으로의 실행 동안 특정한 플랫폼 상에 위치된 자바 어플리케이션과 영속적으로 관련될 수 있다.
모든 이러한 변형들 또는 업데이트들이 정의된 상수들의 평가에 근거하므로, 여러 가지 평가 결과가 있다는 점을 언급한다. 세 개의 가장 일반적인 평가 결과들은
(1)당분간 특별화를 무시하고, 단계(150)의 반복된 수행 동안 상수들의 부가적인 평가를 포함할 수 있는 프로그램 실행(단계160)을 지속하고;
(2)문제의 클래스를 특별화된 코드(170)로 교체하고, 단계(150)의 반복된 수행 동안 상수들의 부가적인 평가를 포함할 수 있는 단계(160) 동안 프로그램 실행을 지속하고;
(3)현재의 클래스 코드를 코드(180)의 더욱 향상된 버전으로 이롭게 교체할 수 있는 부가적인 코드를 문제의 클래스에 부가하고, 상수들의 부가적인 평가를 야기할 수 있는 단계(160) 동안 프로그램 수행, 즉 단계(150)의 반복된 실행을 지속하고;
(4)특별화된 코드가 이 자바 어플리케이션이 동작하는 동안 사용되지 안으므로, 특별화된 코드(단계 190)를 완전히 버리고, 단계(150)의 반복된 실행 동안 상수들의 부가적인 평가를 다시 야기할 수 있는 프로그램 수행(단계 160)을 지속한다.
상술된 Specialize 클래스의 제 2 및 제 3 함수들을 통해 SpecializeFor 함수를 인에이블하거나 디스에이블하는 것을 포함한다든 것을 이해할 것이다. 또한, 도시되지는 않았지만, 몇몇 수학적인 방법으로 상수들을 조합하는 숫자적인 결과와 같은, 가능한 평가 결과들의 실질적으로 제한되지 않은 변형예가 있음을 당업자는 이해할 것이다. 중요한 것은 Specialize 클래스의 SpecializeFor 함수로 제공된 코드를 사용하여 상수들의 사용을 통해 이 결과가 일어난다는 것이다.
자바 어플리케이션의 실행 동안 또는 후 몇몇 점에서, 이 어플리케이션이 변형된 클래스들을 기록(단계 200 동안)할 수 있다는 것이 언급된다. 바람직하게는, 출력된 변형된 클래스들은 동일한 자바 어플리케이션의 장래의 실행들 또는 동일한 하드웨어 플랫폼 상에서 동작하고 동일한 클래스들을 호출하는 또 다른 자바 프로그램들의 장래의 실행들이 변형된 클래스(들)를 이용하도록 Specialize 클래스에 정의된 모든 특별화들을 통합한다. 따라서, Specialize 클래스에 의해 변형된 클래스들을 호출하는 모든 자바 어플리케이션들은 각각의 동작 동안 또는 각각의 자바 어플리케이션에 대해 특별화의 노력을 다시 행하지 않고 초기의 특별화 노력으로부터 이익을 얻을 수 있다. 단일의 자바 어플리케이션으로 Specialize 클래스를 이용하여 변형된 클래스(들)를 호출하는 모든 자바 어플리케이션들을 위한 극적인 실행 오버헤드를 산출할 수 있다는 것을 이해할 것이다.
도 3은 이롭게는 컴퓨터 시스템, 프로세스 제어 시스템, 또는 프로세서 및자비 버추얼 머신을 실증할 수 있는 관련된 메모리를 이용하는 임의의 다른 시스템일 수 있는 중앙 프로세서에 근거한 시스템(700)의 고 레벨 블록도이다. 시스템(700)은 중앙 처리 장치(CPU)(702), 예를 들어 버스(720) 위의 RAM(712) 및 I/O 장치(708)와 통신하는 마이크로프로세서를 포함한다. 버스(720)는 프로세서에 근거한 시스템에서 일반적으로 사용된 일련의 버스들 및 브리지들일 수 있지만, 편의를 위해, 버스(720)는 단일의 버스로서 예시되었다는 것에 유의해야 한다. 프로세서에 근거한 시스템(700)은 또한 리드-온니 메모리(ROM)(714)를 포함하고, 디스크 드라이브(704)와 같은 주변 장치들, 예를 들어 플로피디스크 드라이브 또는 하드디스크 드라이브, 및 본 기술에서 잘 알려진 바와 같이 버스(720) 위의 CPU(702)와 또한 통신하는 컴팩트 디스크(CD)ROM 드라이브(705)를 포함할 수 있다. 상술된 Constant 및 Specialize 클래스들에 대응하는 컴퓨터 판독가능 코드는 이롭게는 RAM(712) 및 디스크 드라이브(704) 중 하나에 저장될 수 있다는 것이 이해될 것이다.
요약해서, 본 발명은 조건적으로 포함되거나 제외된 섹션들을 갖기 위한 능력을 자바 프로그램에 제공하는 방법 및 대응하는 소프트웨어 프로덕트이다. 이는 제한된 메모리 자원들을 갖는 작은 연산 장치들에서 보다 뛰어난 메모리 이용을 위해 실행가능한 코드 크기의 감소를 용이하게 한다는 것을 이해할 것이다.
또한, 본 발명의 바람직한 실시예들은 자바 언어에 대한 간단한 언어 프리프로세서 프로그램의 함수성과 유사한 함수성을 제공한다. 이 함수성은 상수들을 정의하고, 정의된 상수들 상의 부분적인 평가들을 행하고, 이러한 평가들의 점진적인결과들에 근거하여 행동이 취해지도록 하는 능력을 포함한다는 것을 이해할 것이다. 이롭게는, 새로운 함수성을 포함하기 위해 변형되는 원래의 자바 프로그램의 이식가능성은 본 발명으로 유지된다.
위에서 상세히 논의한 바와 같이, 본 발명에 따른 방법 및 대응하는 소프트웨어 프로덕트는 자바 동작 시에 클래스들을 보다 효과적인 클래스들로의 교체를 가능하게 한다. 이 교체는 이롭게는 존재하는 클래스들과 교체된 최적화된 클래스들의 조합을 갖는 클래스들을 재기록 및/또는 변형함으로써 영구적으로 될 수 있다는 것을 이해할 것이다.
본 발명은 위에서 식별된 하나 이상의 오브젝트들을 포함하는 방법 및 소프트웨어에 제한되지 않는다는 것, 즉 열거된 오브젝트들은 이롭게는 본 발명의 모두는 아니지만 임의의 오브젝트들이 명확하게 상술되었으므로 첨부된 청구항들에 의해 정의된 발명에 나타낼 실질적인 필요성이 없다는 것을 이해할 것이다.
다수의 다른 오브젝트들은 이롭게는 본 발명의 정신과 범위에서 벗어남이 없이 첨부된 청구범위에서 정의된 바와 같이 본 발명에 의해 제공될 수 있다.
본 발명의 바람직한 실시예가 위에서 자세하게 상술되었지만. 이는 당업자에게는 명백한 본 명세서에 개시된 기본적 독창적인 개념의 많은 변종예들 및/또는 변형예들이 첨부된 청구범위에서 정의된 바와 같이, 본 발명의 정신과 범위 내에 있다는 것을 이해할 것이다.

Claims (10)

  1. 크로스 플랫폼 자바 어플리케이션(Java application)으로부터 플랫폼 특정 자바 어플리케이션을 생성하기 위한 방법에 있어서,
    상기 크로스 플랫폼 자바 어플리케이션과 관련된 변수들의 적어도 하나가 상수(120)임을 선언하는 단계, 및
    상기 크로스 플랫폼 자바 어플리케이션으로부터 사용되지 않은 함수들 및 관련된 변수들을 제거하여(150, 190) 상기 플랫폼 특정 자바 어플리케이션을 산출하는 단계를 포함하는, 플랫폼 특정 자바 어플리케이션 생성 방법.
  2. 제 1항에 있어서, 상기 변수들 중 상기 적어도 하나는 제 1 클래스에서 상수로 선언되는, 플랫폼 특정 자바 어플리케이션 생성 방법.
  3. 크로스 플랫폼 자바 프로그램으로부터 플랫폼 특정 자바 프로그램을 생성하기 위한 방법에 있어서,
    상기 크로스 플랫폼 자바 프로그램과 관련된 선택된 변수들을 상수들(120)로서 선언하기 위해 Constant 클래스(100)를 정의하는 단계,
    상기 선언된 상수들에 관한 상기 크로스 플랫폼 자바 프로그램과 관련된 클래스들을 특별화하기 위해 함수들을 제공하는 Specialize 클래스(110)를 정의하는 단계,
    상기 선언된 상수들(150)을 사용하는 자바 동작 시간 환경에서 상기 크로스 플랫폼 자바 프로그램을 평가하는 단계,
    상기 크로스 플랫폼 자바 프로그램과 관련된 상기 클래스들 중 적어도 하나를 변형하여 상기 플랫폼 특정 자바 프로그램(170)을 한정하는 변형된 클래스들을 산출하는, 변형 단계를 포함하는, 플랫폼 특정 자바 어플리케이션 생성 방법.
  4. 제 3항에 있어서, 상기 변형 단계는 상기 크로스 플랫폼 자바 프로그램과 관련된 상기 클래스들 중 하나로부터 사용되지 않은 변수들 및 관련된 함수들을 제거하여 상기 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스들을 산출하기 위한 단계를 포함하는, 플랫폼 특정 자바 어플리케이션 생성 방법.
  5. 제 1항에 있어서, 상기 변형 단계는 상기 크로스 플랫폼 자바 프로그램과 관련된 상기 클래스들 중 하나에 존재하는 함수를 새로운 함수로 대체하여 상기 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스들을 산출하는 단계를 포함하는, 플랫폼 특정 자바 어플리케이션 생성 방법.
  6. 크로스 플랫폼 자바 어플리케이션으로부터 플랫폼 특정 자바 어플리케이션을 생성하기 위한 지시들의 컴퓨터 판독가능 매체에서의 컴퓨터 프로그램 프로덕트에 있어서,
    상기 크로스 플랫폼 자바 어플리케이션과 관련된 상기 변수들 중 적어도 하나가 상수임을 선언하기 위한 상기 컴퓨터 판독가능 매체 내의 지시들(120), 및
    상기 크로스 플랫폼 자바 어플리케이션으로부터 사용되지 않은 변수들 및 관련된 변수들을 제거하여 상기 플랫폼 특정 자바 어플리케이션을 산출하기 위한 상기 컴퓨터 판독가능 매체 내의 지시들(150, 190)을 포함하는, 컴퓨터 프로그램 프로덕트.
  7. 제 6항에 있어서, 사용되지 않은 함수들 및 관련된 변수들을 제거하기 위한 지시들이 Specialize 클래스에 제공되는, 컴퓨터 프로그램 프로덕트.
  8. 크로스 플랫폼 자바 프로그램으로부터 플랫폼 특정 자바 프로그램을 생성하기 위한 지시들의 컴퓨터 판독가능 매체에서의 컴퓨터 프로그램 프로덕트에 있어서,
    상기 크로스 플랫폼 자바 프로그램과 관련된 선택된 변수들을 상수들로서 선언하기 위해 Constant 클래스를 정의하기 위한 상기 컴퓨터 판독가능 매체 내의 제 1 지시들(100),
    상기 선언된 상수들에 관한 상기 크로스 플랫폼 자바 프로그램과 관련된 클래스들을 특별화하기 위해 함수들을 제공하는 Specialize 클래스를 정의하기 위한 상기 컴퓨터 판독가능 매체 내의 제 2 지시들(110),
    상기 선언된 상수들을 사용하는 자바 동작 시간 환경에서 상기 크로스 플랫폼 자바 프로그램을 평가하기 위한 상기 컴퓨터 판독가능 매체 내의 제 3지시들(150), 및
    상기 컴퓨터 판독가능 매체 내의 지시들에 대해 상기 크로스 플랫폼 자바 프로그램과 관련된 상기 클래스들 중 적어도 하나를 변형하여 상기 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스들을 산출하기 위한 상기 컴퓨터 판독가능 매체 내의 제 4 지시들(170)을 포함하는, 컴퓨터 프로그램 프로덕트.
  9. 제 8항에 있어서, 상기 제 4 지시들은 상기 크로스 플랫폼 자바 프로그램과 관련된 상기 클래스들 중 하나에 존재하는 함수를 새로운 함수로 교체하여 상기 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스를 산출하기 위한 상기 컴퓨터 판독가능 매체 내의 지시들을 포함하는, 컴퓨터 프로그램 프로덕트.
  10. 제 8항에 있어서, 제 4 지시들은 부가적인 함수를 상기 크로스 플랫폼 자바 프로그램과 관련된 상기 클래스들 중 하나에 삽입하여 상기 플랫폼 특정 자바 프로그램을 한정하는 변형된 클래스들을 산출하기 위한 상기 컴퓨터 판독가능 매체내의 지시들을 포함하는, 컴퓨터 프로그램 프로덕트.
KR1020017008271A 1999-10-28 2000-10-09 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법 KR20010086159A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/428,766 US6634022B1 (en) 1999-10-28 1999-10-28 Method for platform specific efficiency enhancement of java programs and software product therefor
US09/428,766 1999-10-28
PCT/EP2000/009956 WO2001031438A2 (en) 1999-10-28 2000-10-09 Method for platform specific efficiency enhancement of java programs and software product therefor

Publications (1)

Publication Number Publication Date
KR20010086159A true KR20010086159A (ko) 2001-09-08

Family

ID=23700315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017008271A KR20010086159A (ko) 1999-10-28 2000-10-09 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법

Country Status (5)

Country Link
US (1) US6634022B1 (ko)
EP (1) EP1208428A2 (ko)
JP (1) JP2003513353A (ko)
KR (1) KR20010086159A (ko)
WO (1) WO2001031438A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150134681A (ko) * 2014-05-22 2015-12-02 박경란 다수의 이기종 컴퓨팅 플랫폼을 지원하며 타분야 간에 데이터 상호호환이 가능한 크로스 플랫폼 기반의 개방형 bim 시스템의 구축 방법

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7013455B1 (en) * 2000-10-19 2006-03-14 International Business Machines Corporation System for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence
US6986129B2 (en) * 2001-05-16 2006-01-10 Sun Microsystems, Inc. System and method for java preprocessor
US20020174579A1 (en) * 2001-05-22 2002-11-28 Corry Arthur A. Artificial log burning fireplace assembly
US7571389B2 (en) * 2001-05-31 2009-08-04 International Business Machines Corporation System, computer-readable storage device, and method for combining the functionality of multiple text controls in a graphical user interface
US7562306B2 (en) * 2001-05-31 2009-07-14 International Business Machines Corporation System and method for reducing memory use associated with the graphical representation of a list control
US20020191018A1 (en) * 2001-05-31 2002-12-19 International Business Machines Corporation System and method for implementing a graphical user interface across dissimilar platforms yet retaining similar look and feel
US6789254B2 (en) * 2001-06-21 2004-09-07 International Business Machines Corp. Java classes comprising an application program interface for platform integration derived from a common codebase
US6938241B1 (en) * 2001-12-10 2005-08-30 Lsi Logic Corporation Compiler independent bit-field macros
US6856994B2 (en) * 2002-05-30 2005-02-15 Hewlett-Packard Development Company, L.P. System and method for condensing application software
US7000221B2 (en) * 2002-07-31 2006-02-14 International Business Machines Corporation Script evaluator
US7188339B2 (en) * 2003-10-24 2007-03-06 Hewlett-Packard Development Company, L.P. ACPI preprocessor
US7581216B2 (en) * 2005-01-21 2009-08-25 International Business Machines Corporation Preserving platform independence with native accelerators for performance critical program objects
US8042103B2 (en) * 2005-11-29 2011-10-18 International Business Machines Corporation Pre-translated files used in a virtual machine
US8813041B2 (en) * 2008-02-14 2014-08-19 Yahoo! Inc. Efficient compression of applications
US8615744B2 (en) * 2011-02-09 2013-12-24 Beek Fund B.V. L.L.C. Methods and system for managing assets in programming code translation
US10365900B2 (en) * 2011-12-23 2019-07-30 Dataware Ventures, Llc Broadening field specialization
US8843912B2 (en) 2012-02-20 2014-09-23 International Business Machines Corporation Optimization of an application to reduce local memory usage
US8966441B2 (en) * 2012-07-12 2015-02-24 Oracle International Corporation Dynamic scripts to extend static applications
US9276829B2 (en) * 2013-02-07 2016-03-01 International Business Machines Corporation Transparently tracking provenance information in distributed data systems
US9164740B2 (en) * 2013-05-16 2015-10-20 Toshiba Global Commerce Solutions Holdings Corporation System and method for replacing java beans
US10733099B2 (en) 2015-12-14 2020-08-04 Arizona Board Of Regents On Behalf Of The University Of Arizona Broadening field specialization
US10884764B1 (en) 2019-07-18 2021-01-05 International Business Machines Corporation Optimizing managed runtime applications for serverless environments

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901319A (en) * 1996-06-14 1999-05-04 The Foxboro Company System and methods for generating operating system specific kernel level code from operating system independent data structures
US5884083A (en) 1996-09-20 1999-03-16 Royce; Robert Computer system to compile non-incremental computer source code to execute within an incremental type computer system
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
WO1998037486A1 (en) 1997-02-18 1998-08-27 International Business Machines Corporation Method for lookup of packages and classes in java, and devices making use of this method
US5943496A (en) 1997-05-17 1999-08-24 Intertop Corporation Methods for developing and instantiating object classes using a java virtual machine extension
US6115550A (en) * 1997-06-11 2000-09-05 Digital Equipment Corporation Loader conditionally replacing a code sequence with a functionally-alike code sequence in an executable program intended for execution in different run-time environments
US6320592B1 (en) * 1997-06-30 2001-11-20 Sun Microsystems, Inc. Method and apparatus for separating image data from a color system in image processing
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
US6366876B1 (en) 1997-09-29 2002-04-02 Sun Microsystems, Inc. Method and apparatus for assessing compatibility between platforms and applications
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US5933144A (en) 1997-11-12 1999-08-03 International Business Machines Corporation Utility for providing printing support to graphical Java applications
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6128011A (en) * 1998-08-31 2000-10-03 Sony Corporation Of Japan Cross-platform digital signal processing designs using Java and C
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
US6332216B1 (en) * 1999-03-09 2001-12-18 Hewlett-Packard Company Hybrid just-in-time compiler that consumes minimal resource
US6269480B1 (en) * 1999-03-29 2001-07-31 International Business Machines Corporation Cross platform installer-with the ability to create platform independent variables of specific operating system variables from a scripting language

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150134681A (ko) * 2014-05-22 2015-12-02 박경란 다수의 이기종 컴퓨팅 플랫폼을 지원하며 타분야 간에 데이터 상호호환이 가능한 크로스 플랫폼 기반의 개방형 bim 시스템의 구축 방법

Also Published As

Publication number Publication date
WO2001031438A3 (en) 2002-02-28
US6634022B1 (en) 2003-10-14
WO2001031438A2 (en) 2001-05-03
EP1208428A2 (en) 2002-05-29
JP2003513353A (ja) 2003-04-08

Similar Documents

Publication Publication Date Title
KR20010086159A (ko) 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
US7725883B1 (en) Program interpreter
Schultz et al. Automatic program specialization for Java
EP0905617B1 (en) Method for generating a java bytecode data flow graph
US6311324B1 (en) Software profiler which has the ability to display performance data on a computer screen
Benton et al. Compiling standard ML to Java bytecodes
Consel et al. A uniform approach for compile-time and run-time specialization
US6289506B1 (en) Method for optimizing Java performance using precompiled code
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US6219832B1 (en) System and method of using annotations to optimize dynamically translated code in the presence of signals
US6164841A (en) Method, apparatus, and product for dynamic software code translation system
US6874140B1 (en) Debug annotations
EP1164478A2 (en) Method and apparatus for resolving data references in generated code
US20070226698A1 (en) Method for improving performance of executable code
WO2001002956A2 (en) Compiling and persisting of intermediate language code
KR20100106409A (ko) 다중 언어 소프트웨어 코드 분석
JP2003196106A (ja) プログラム変換方法、コンピュータ装置及びプログラム
US8762974B1 (en) Context-sensitive compiler directives
US20090144709A1 (en) Reducing stack space consumption via head-call optimization
Reshadi et al. Hybrid-compiled simulation: An efficient technique for instruction-set architecture simulation
WO2022172025A1 (en) Optimising computer program code
US20100083238A1 (en) Binary manipulation of intermediate-language code
Birken Building code generators for DSLs using a partial evaluator for the Xtend language
CN112631656A (zh) 一种基于源代码的智能合约优化方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application