KR100438143B1 - 한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치 - Google Patents

한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치 Download PDF

Info

Publication number
KR100438143B1
KR100438143B1 KR10-1999-0023824A KR19990023824A KR100438143B1 KR 100438143 B1 KR100438143 B1 KR 100438143B1 KR 19990023824 A KR19990023824 A KR 19990023824A KR 100438143 B1 KR100438143 B1 KR 100438143B1
Authority
KR
South Korea
Prior art keywords
header
class
code
extracting
byte code
Prior art date
Application number
KR10-1999-0023824A
Other languages
English (en)
Other versions
KR20000006395A (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 KR20000006395A publication Critical patent/KR20000006395A/ko
Application granted granted Critical
Publication of KR100438143B1 publication Critical patent/KR100438143B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)
  • Detection And Correction Of Errors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

적시에 클래스들과 객체들을 공급하는 방법과 장치가 제공된다. 시간 정보를 포함하는 헤더가 상기 클래스들 그리고/혹은 객체들에 붙여진다. "로딩 시작" 시각과 "로드되는" 시각이 헤더에서 특정된다. 로드될 다른 클래스들 그리고/혹은 객체들이 또한 헤더에서 특정된다. 선택적인 압축, 보안 그리고/혹은 에러 회복의 방법 역시 헤더에서 특정된다. 헤더를 생성하고 그것을 클래스나 객체에 붙이는 과정이 제공된다. 클래스 혹은 객체를 부착된 헤더와 함께 수신하고 처리하는 과정이 제공된다. 발명의 실시예들은 클래스들 그리고/혹은 객체들이 신뢰할 수 없는 수송 절차와 적시에 공급된다는 어떤 보장도 없이 아주 다양한 수송 절차를 통해 적시에 공급되게 한다.

Description

한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치{Method and apparatus for timely delivery of a byte code and serialized objects stream}
본 발명은 컴퓨터 소프트웨어 분야에 관한 것으로서, 더 자세히는, 객체지향의 컴퓨터 응용에 관련된 것이다.
본 발명의 문서에 게시된 부분들은 저작권의 보호를 받는 자료를 포함하고 있다. 저작권자는 그 자료가 특허청의 파일이나 기록들로 나올 때에 어느 누구나 그 특허 문서나 특허 게시물을 팩시밀리로 복사하는 것에 대해 반대하지 않으나, 그 외의 경우에는 어느 경우에나 저작권은 유보된다. Sun, Sun Microsystems, Sun 로고, Solaris, SPARC, "Write Once, Run Anywhere", Java, JavaOS, JavaStation 및 Java에 근거한 모든 상표와 로고들은 미국과 다른 국가들의 Sun Microsystems, Inc.의 상표들이거나 등록 상표들이다.
네트웍 기술이 발달함에 따라 문자, 그래픽 그리고 오디오와 같은 미디어 정보를 배급하는 것을 쉽게 하기 위한 네트웍의 사용은 극적으로 증가하였고, 이는 인터넷과 세계광역망(World Wide Web)의 경우에 특히 그러하다. 현재의 개발의 노력의 초점이 되는 한 영역은 웹(web) 응용과 대화식 네트웍의 분야이다. HTML 정의들 같은 수동의 미디어 콘텐트(content)에 덧붙여, 컴퓨터 사용자들이나 네트웍에 결합된 "클라이언트(client)들"은 응용 콘텐트에 접근하거나 그것을 애플릿(applet)들의 모습으로, 예를 들면, 네트웍의 "서버들"로부터 다운로드(download)할 수 있다.
클라이언트들이 사용하는 다양한 하드웨어 시스템들에 적합하기 위해, 응용 프로그램들이나 애플릿들은 JavaTM(이하 자바라 함) 클래스(class) 파일 형식과 같이 플랫폼(platform)에 독립적인 형식으로 배포된다. 객체지향 응용프로그램들은 서버들로부터 접근되고 필요시 개별적으로 다운로드되는 다중의 클래스 파일로 형성된다. 클래스 파일들은 바이트 코드(bytecode) 명령들을 포함한다. 특정 하드웨어 플랫폼에서 실행되는 "가상 기계" 프로세스는 개개의 클래스 파일들을 로드(load)하고 그에 포함된 바이트 코드들을 실행한다.
클래스 파일 형식과 클래스를 로드하는 과정에서의 문제는 클래스 파일들을 적시에 공급하는 것을 보증하는 어떤 방법도 제공되지 않는다는 것이다. 그러므로 개개의 클래스 파일들을 저장, 전송하고 처리하는 시간이 특정의 시간 프레임(frame)내에서 발생하도록 계획되거나 보장되지 않는다. 또한, 한 응용 프로그램이 많은 클래스 파일들을 포함할 수도 있으며, 이 클래스 파일들이 모두 로드되어 분리된 트랜잭션(transaction)들로 처리된다. 그러므로 심지어 한 개의 클래스 파일을 공급하는 데에 지연이 생기면 그 응용 프로그램을 지연시키고 성능을 저하시킨다.
이러한 문제들은 일반적인 객체지향 프로그래밍에 대한 전망과 현재의 네트웍 응용프로그램 환경의 예로부터 이해될 수 있다.
객체지향 프로그래밍을 이하에서 설명한다.
객체지향 프로그래밍은 특정의 기본적인 빌딩(building) 블록들을 결합하고 그 빌딩 블록들간의 관계를 설정해서 컴퓨터 프로그램들을 만드는 방법이다. 객체지향 프로그래밍 시스템들에서의 빌딩 블록들은 "객체들(objects)"이라고 불린다. 객체는 데이터 구조(하나 혹은 그 이상의 인스턴스(instance) 변수)와 그 데이터를 사용할 수 있거나 그 데이터에 영향을 미칠 수 있는 연산(메소드(method))들을 같이 모아놓은 프로그래밍 단위이다. 그러므로 객체는 데이터와 그 데이터에 실행될 수 있는 하나 혹은 그 이상의 연산들 혹은 프로시져(procedure)들로 이루어진다. 데이터와 연산들을 단일의 빌딩 블록으로 결합하는 것은 "캡슐화(encapsulation)"라고 불려진다.
객체가 "메시지"를 수신했을 때에 그 객체의 메소드들 중 하나를 실행하라고 그 객체는 명령받을 수 있다. 메시지는 어떤 특정 메소드를 실행하라고 그 객체에 전송되는 코맨드(command)나 명령이다. 하나의 메시지는 하나의 메소드 선택(예를 들면 메소드 이름)과 복수의 변수들로 이루어진다. 메시지는 수신한 객체가 어떤 연산들을 실행해야 하는지를 말하는 것이다.
객체지향 프로그래밍의 한가지 이점은 메소드들이 불려지는 방법에 있다. 한 메시지가 객체에 전송되면 그 메시지는 그 객체에게 어떤 특정 메소드를 어떠한 방법으로 실행하라고 명령할 필요가 없다. 그 객체에게 그 메소드를 실행하라고 요청하는 것만이 필요하다. 이러면 프로그램 개발이 아주 단순해진다.
객체지향 프로그래밍 언어들은 "클래스" 방법에 주로 기초하고 있다. 클래스 기반의 객체지향 프로그램 방법은 Lieberman의 "Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems," OOPSLA 86 Proceedings, September 1986, pp.214-223 에 대략적으로 기술되어 있다.
클래스는 전형적으로 변수들과 그 클래스의 메소드를 포함하는 객체의 종류를 정의한다. 객체 클래스는 객체의 특정 인스턴스를 만드는데 사용된다. 객체 클래스의 인스턴스는 그 클래스를 위해 정의된 변수들과 메소드를 포함한다. 같은 클래스의 다중 인스턴스는 객체 클래스로부터 만들어질 수 있다. 그 객체 클래스에서 만들어진 각 인스턴스는 같은 종류 또는 같은 클래스라고 불려진다.
설명을 위해, 종업원(employee) 객체 클래스는 "name과 "salary"의 인스턴스 변수들과 "set_salary" 메소드를 포함할 수 있다. 종업원 객체 클래스의 인스턴스들은 한 조직에서 각 종업원을 위해 만들어지거나 예증될 수 있다. 각 객체 인스턴스는 "employee"형이라고 말해진다. 각 객체 인스턴스는 "name"과 "salary" 인트턴스 변수들과 "set_salary" 메소드를 포함한다. 각 종업원 객체 인스턴스의 "name"과 "salary" 변수들과 연관된 값들은 그 조직에서 종업원의 이름과 급여를 포함한다. 종업원의 급여(예를 들면 종업원의 종업원 객체의 "salary" 변수와 연관된 값)를 변경하기 위해 "set_salary" 메소드를 불러오려고 한 메시지가 종업원의 종업원 객체 인스턴스에게 전송될 수 있다.
클래스들의 계층구조는 객체 클래스 정의가 하나 혹은 그 이상의 서브클래스(subclass)들을 가지도록 정의될 수 있다. 서브클래스는 그의 부모의(그리고 조부모의 등등) 정의를 상속받는다. 계층 구조에서 각 서브 클래스는 자신의 부모 클래스에 의해 지정된 행동에 부가되거나 그 행동을 변형할 수도 있을 것이다. 일부 객체지향 프로그래밍 언어들은 한 서브클래스가 하나보다 많은 부모 클래스로부터 한 클래스 정의를 상속할 수도 있는 다중 상속을 지원한다. 다른 프로그래밍 언어들은 오직 하나의 상속만을 지원하여, 이때에 한 서브클래스는 오직 하나의 부모 클래스의 클래스 정의만을 상속하도록 제한된다. 또한 자바 프로그래밍 언어는 상수와 추상 메소드 선언의 한 세트를 포함하는 "인터페이스(interface)"라고 알려진 방법을 공급한다. 객체 클래스는 인터페이스에 정의된 추상 메소드를 구현할 수 있다. 단일 그리고 다중 상속이 하나의 인터페이스에 다 이용 가능하다. 말하자면, 인터페이스는 하나 혹은 그 이상의 부모 인터페이스로부터 인터페이스 정의를 상속할 수 있다.
객체는 관련된 코드와 변수들을 포함하는 하나의 모듈을 언급하기 위해 객체지향 프로그래밍 환경에 사용되는 일반적인 용어이다. 소프트웨어 응용 프로그램은 객체지향 프로그래밍 언어를 이용하여 작성될 수 있으며, 그 언어에 의해 객체들을 사용해서 프로그램의 기능이 구현된다.
자바 프로그래밍과 실행에 대해 이하에서 설명한다.
자바 프로그램은 여러 클래스들과 인터페이스들로 구성된다. 실행되는 기계에 의존하는 실행 가능한 프로그램 코드로 컴파일 되는 여러 프로그래밍 언어들과는 틀리게, 자바의 클래스들은 기계에 독립적인 바이트 코드 클래스 파일들로 컴파일된다. 각 클래스는 클래스 파일 형식이라고 불리는 플랫폼에 독립적인 형식의 코드와 데이터를 가진다. 실행기로 행동하는 컴퓨터 시스템은 가상기계로 불리는 프로그램을 포함하는데, 그 가상기계는 자바 클래스들의 코드를 실행하는 역할을 한다. 그 가상기계는 바이트 코드 클래스들의 기계 독립성과 기본적인 컴퓨터 하드웨어의 기계 의존적인 명령세트간의 추상성의 수준을 제공한다. 가상기계내의 "클래스 로더(class loader)"는 필요한 바이트코드 클래스 화일을 로드하는 역할을 하고, 인터프리터는 바이트 코드들을 직접 실행하거나 혹은 "just-in-time"(JIT) 컴파일러가 바이트 코드들을 기계어로 변환하여, 그 코드들은 프로세서에 의해 실행될 수 있다.
자바 네트웍 응용프로그램 환경 예를 이하에서 설명한다.
도 1은 자바 응용프로그램이나 애플릿을 실행하기 위해 자바 클래스 파일들에 접근하기 위한 목적으로 네트웍(101)을 통해 서버(100)와 결합되는 클라이언트(client) 플랫폼(102)을 포함하는 자바 네트웍 환경 샘플을 도시하는 블록 다이아그램이다.
도 1에서, 서버(100)는 주어진 응용프로그램을 위해 자바 클래스 파일들을 생성하는데 사용하기 위한 자바 개발 환경(104)을 포함한다. 자바 개발 환경(104)은 편집기와 애플릿 보기 프로그램과 같은 클래스 파일들을 생성하고 애플릿 미리 보기를 위한 방법을 제공한다. 자바 코아 클래스들(103)의 세트는 다른/새로운 자바 클래스들을 포함하는 원시 파일들에 의해 참조될 수 있는 자바 클래스들의 라이브러리를 포함한다. 자바 개발 환경(104)으로부터 하나 혹은 그 이상의 자바 원시 파일들(105)이 생성된다. 자바 원시 파일들(105)은 프로그래머 읽기 가능 클래스 정의들을 포함하는데, 이 정의들은 데이터 구조들, 메소드 구현 그리고 다른 클래스들에 참조될 것들을 포함한다. 자바 원시 파일들(105)이 자바 컴파일러(106)에 제공되고, 자바 원시 파일들(105)은 자바 가상 기계에 의해 실행될 수 있는 바이트 코드들을 포함하는 ".class" 파일들(107)로 컴파일 된다. 바이트 코드 클래스 파일들(107)은 서버(100)에 저장되고(예들 들면 임시적인 혹은 영구적인 저장), 네트웍(101)을 통하여 다운로드될 수 있다.
클라이언트 플랫폼(102)은, 이용 가능한 본래의 운영 시스템(O/S) 호출들(112)을 사용하여, 바이트 코드 클래스 파일들을 실행할 수 있고, 실행 중에 필요한 때에는 본래의 O/S 호출을 실행할 수 있는 자바 가상 기계(JVM, 111)를 포함한다.
자바 클래스 파일들은 종종 HTML(hypertext markup language) 문서내의 애플릿 태그들(tags)에서 인식된다. 웹 서버(web server) 응용 프로그램(108)은, "웹 페이지들"이라고 불리는, HTML 문서들에 대한 URL들(universal resource locators)을 포함하는 HTTP(hypertext transport protocol) 요청들에 응답하기 위해 서버(100)에서 실행된다. 클라이언트 플랫폼(102)에서 실행되는 브라우저(browser) 응용 프로그램이, URL(109)을 웹 서버(108)에 전송하는 것처럼, HTML 문서를 요청할 때에 그 브라우저 프로그램은 HTML 문서의 애플릿 태그(tag)에서 인식된 클래스 파일들(107)을 자동적으로 다운로드하기 시작한다. 클래스 파일들(107)은 대체로 서버에서 다운로드되어 필요한대로 개별적으로 가상 기계(111)로 로드된다.
자바 프로그램의 클래스들은 프로그램 실행 중에 가능한 늦게 로드되는 것이 보통이다; 그것들은 자바 프로그램의 실행 중에 첫 번째로 참조될 때에 요구에 따라 (서버에 저장되어) 네트웍으로부터 혹은 지역 파일 시스템으로부터 로드된다. 가상 기계는 각 클래스 파일을 위치시키고 로드하며 클래스 파일 형식을 분석하고 클래스의 다양한 구성 요소들을 위해 메모리를 할당하며 클래스를 다른 이미 로드된 클래스들과 연결한다. 이 과정은 클래스의 코드가 가상기계에 의해 쉽게 실행 가능하도록 한다.
적시 공급에 관해서 이하에서 설명한다.
자바 바이트 코드나 연속화 된 객체들이 클라이언트에게 적시에 공급될 필요가 있는 다양한 응용프로그램들이 있다. 예를 들면, 자바 바이트 코드가 푸시(push) 방법에 따라 시간을 인식하는 미디어를 제어하기 위해 사용되는 경우에 바이트 코드를 적시에 공급하는 것을 보장하는 것이 필수 불가결하다.
현재, 바이트 코드를 적시에 공급하는 것을 가능하게 하는 절차는 없다. 현재, 바이트 코드를 공급하는 기술은 바이트 코드를 서버들로부터 클라이언트들로 전송하는데 전송제어규약(Transmission Control Protocol, TCP)을 사용한다. TCP는 정보의 적시 공급을 보장하지 못한다.
시간에 민감한 데이터(예를 들면 오디오, 비디오 등)를 미디어 흐름들로 전송하기 위해 준비하는데 이용 가능한 여러 가지 방법(예를 들면, MPEG-1, MPEG-2, MPEG-4 등과 같은 동 화상 전문가 그룹(Motion Picture Experts Group(MPEG)) 표준)이 있다. 비슷하게, 미디어 흐름들 같은 "시간을 인식"하는 미디어 흐름들을 적시에 공급하기 위한 실시간 전송 규약(Real-time Transport Protocol, RTP)과 MPEG-2 흐름 전송과 같은 여러 가지 방법들이 있다. "시간을 인식"하는 정보는 그 정보를 사용하는 데에 관련된 시간을 나타내는 부가적인 정보를 그 정보와 같이 전송하는 정보이다. 예를 들어, 특정한 방법으로 그 정보가 처리되어야하는 마감시간을 나타내는 시각의 스탬프(stamp)를 포함하는 정보는 "시간을 인식"하는 정보로간주된다.
그러나, 그러한 기술들은 오디오와 비디오 데이터와 같은 실행 가능하지 않은 바이트 코드인 미디어 흐름을 공급하도록 설계된다. 미디어 흐름들은 보전된 데이터가 변조되거나 손실되어도 본래 견뎌내는 정보를 포함하는 것이 보통이다. 예를 들면, 오디오 혹은 비디오 데이터가 수 밀리 초간 변조되더라도 청취자 혹은 시청자에게는 잠깐 혼란만을 생기게 할뿐이다. 그러나, 실행 가능한 바이트 코드는 약간만이라도 변조되면 적절한 실행을 방해받을 수 있다.
더 나아가 바이트 코드의 한 클래스 파일은 적절한 실행을 위해 흔히 다른 클래스 파일들에 의존적이다. 미디어 흐름의 적시 공급을 위한 현존하는 기술들은 이러한 의존성을 위한 규정을 포함하지 않는다. 그러므로, 바이트 코드의 적시 공급을 제공하기 위한 기술이 필요하다.
클래스 파일(혹은 연속화 된 객체)을 시간을 인식하는 흐름으로 변환전송하기 위한 기술이 필요하다. 자바 바이트 코드 흐름이 시간을 인식하도록 만들어진다면, RTP 같은 다른 실시간 전송 방법들이 그 흐름을 적시에 전송하도록 사용될 수 있을 것이다. 그러한 방법은 어떤 다중통신 혹은 동보통신 방법에서 바이트 코드를 사용하는 것을 용이하게 할 것이다. 이것은 사용자 데이터그램 규약(User Datagram Protocol, UDP)과 같은 인터넷 규약을 사용하여 바이트 코드를 전송하는 것을 가능하게 할 것이다. UDP는 신뢰할 수 없는 규약(데이터 공급을 보장하지 않는 규약)이기 때문에, 그러한 방법이 없이는 UDP는 바이트 코드를 공급하기에는 부적합하다. 신뢰할 수 없는 규약을 통해서 바이트 코드를 전송하는 것은 바이트 코드의 일부를손실하는 결과를 가져올 수 있고, 그렇게 되면 그 바이트 코드가 적절히 실행되는 것을 방해할 수 있다.
본 발명이 이루고자 하는 기술적인 과제는, 상기의 문제점들을 해결하기 위해, 한 바이트 코드와 연속화된 객체 흐름을 적시에 공급하는 방법과 장치를 제공하는데 있다.
도 1은 자바 네트웍 응용프로그램의 환경의 일 실시예이다.
도 2는 본 발명의 일 실시예를 위해 적합한 실행 환경을 제공하기에 적합한 컴퓨터 시스템의 일 실시예의 블록 다이아그램이다.
도 3은 클래스 파일 형식의 일 실시예의 블록 다이아그램이다.
도 4는 본 발명의 일 실시예에 따른 적시 공급을 보장하기 위해 클래스 파일들이나 (연속화 된) 객체들을 위한 헤더를 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따라 적시에 클래스 파일들을 공급하는 방법을 보여주는 도면이다.
도 6은 본 발명의 일 실시예에 따라 바이트 코드가 적시에 공급되기 위해 준비되는 과정을 보여주는 흐름도이다.
도 7a와 도 7b는 본 발명의 일 실시예에 따라 바이트 코드가 적시에 수신되고 사용되는 과정을 보여주는 흐름도이다.
도 8은 본 발명의 일 실시예에 따라 공급된 바이트 코드가 실행을 위해 준비되고 실행되는 것을 보여주는 흐름도이다.
바이트 코드 흐름을 적시에 공급하는 방법과 장치가 기술된다. 발명의 실시예들은 존재하는 전송 기술들의 불리한 점을 회피한다. 예를 들면, 시기에 맞추지 못하고 신뢰할 수 없는 전송을 피하게 된다.
본 발명의 실시예들은 다중통신/동보통신 방법에서 배후 채널이 있거나 혹은 없는 상태에서 자바 바이트 코드를 적시에 공급하는 것을 가능하게 한다. 또한 같은 방법들이 (연속화 된) 객체들을 공급하기 위해 사용될 수 있다. 다중통신을 이용하여 특별히 주소를 부여받은 데이터 흐름을 다수의 사용자들에게 전송하는 것이 가능하다. 다중통신을 사용하면, 데이터 흐름은 각 사용자에게 개별적으로 전송될 필요가 없다. 오히려 사용자들은 다중통신 서비스에 예를 들면 특별히 주소를 부여받은 데이터 흐름의 주소를 기입함으로 해서 가입할 수 있다. 동보통신을 이용하면 다중통신의 서명 과정 없이 사용자에게 전송할 수 있다.
본 발명의 실시예들은 사용자들이 그 정보를 요청할 필요가 없이 정보가 사용자들에게 전송되는 "푸시" 미디어에 사용하는데 적합하다. 사용자가 미디어의 근원과 거꾸로 통신할 수 있게 하는 배후 채널이 없는 환경에서조차 "푸시" 미디어는 전송될 수 있다. 본 발명의 실시예들은 또한 사용자들이 미디어의 근원으로부터 정보를 요청하는 "풀(pull)" 미디어에 사용하는데 적합하다.
본 발명의 실시예들은 (클래스 파일내의) 자바 바이트 코드가 "시간을 인식"하도록 만든다. 바이트 코드가 적시에 공급되는 것을 확실하게 하기 위해 적절한 마감 시간들이 콘텐트들과 같이 시각 스탬프들로 클라이언트들에게 전해진다. 이런 시각 스탬프들은 그러한 공급 절차를 이용하기 위해 헤더(header)에 사용된다. 그 헤더는 바이트 코드 흐름을 적시에 공급하기 위해 그 바이트 코드에 붙여진다.
바이트 코드를 적시에 공급하는데 주소가 부여된 전송의 일 면은 패킷(packet) 손실이다. 종래의 기술은 자바 바이트 코드 흐름에서 패킷 손실을 복구하기 위한 아무런 방법도 제공하지 않았다. 한 가능한 접근은 배후 채널이 없는 경우 정기적인 간격으로 모든 클래스를 재 전송하는 방법을 포함한다. 이것은 미디어의 경우에 임의적 접근점들을 이용하도록 도울 수 있을 것이다. 그러나 클라이언트들의 수가 너무 많거나 클래스(혹은 객체)가 매우 큰 때에는 이 방법은 가능하지 않을 수 있고, 재전송을 금지하게 한다.
배후 채널이 존재할 때에 패킷 손실이 서버로 신호로 보내질 수 있고, 그러면 없어진 패킷은 재 전송될 수 있다. 신뢰성 있는 다중통신 방법이 사용되면 데이터는 또한 서버보다는 다른 장소들로부터 재 전송될 수 있다.
부분적인 패킷 손실을 회복하는데 이용될 수 있는 내장된 중복 코드와 함께 사용되는 여러 가지 에러(error) 복구 방법이 있다. 예를 들면, 순방향 오류 정정방법과 같은 방법이 사용될 수 있다. 패킷 손실 문제는 몇몇 신뢰성 있는 다중통신 방법을 사용해서 부분적으로 해결될 수도 있다. 본 발명의 실시예들은 패킷 손실을 극복하기 위해 에러 복구 또는 신뢰성 있는 다중통신 알고리즘을 사용하는 것을 용이하게 한다.
주소가 부여되는 다른 태양은 보안이다. 클라이언트의 안전을 보장하기 위해 바이트 코드를 인증 하는 것이 필요하다. 바이트 코드의 인증을 보장하기 위해 사용될 수 있는 여러 가지 보안 방법이 있다. 본 발명의 실시예들은 또한 자바 보안 API들의 보안 표본내의 어떤 보안 방법이라도 이용한다.
주소가 부여되는 또 다른 태양은 압축이다. 압축은 주어진 정보의 양을 전송하는데 필요한 시간을 줄임으로 해서 공급의 효율을 증가시킨다. LZW, LZS 등과 같은 많은 압축 방법이 효율을 위해 클래스 파일들을 압축하는데 이용될 수 있다.
본 발명은 바이트 코드 흐름의 적시 공급을 제공하는 방법과 장치를 제공한다. 다음의 설명에서, 본 발명을 더 철저하게 이해할 수 있도록 여러 가지 상세한 설명이 게시된다. 그러나 본 발명은 이러한 상세한 설명 없이도 실시될 수 있다는 것은 본 발명이 속한 분야 기술분야에 통상의 지식을 가진 자에게는 명확할 것이다. 다른 예에서는, 불필요하게 본 발명을 불명료하게 하지 않기 위해서 잘 알려진 특징들은 상세하게 기술되지 않는다.
컴퓨터 실행 환경의 하드웨어의 실시예가 이하에서 설명된다.
본 발명의 일 실시예는 도 2에 도시된 컴퓨터(200)와 같은 범용 컴퓨터에서 실행되는 컴퓨터가 읽을 수 있는 프로그램 코드의 모습이나 혹은 그러한 컴퓨터에서 동작하고 있는 가상 기계에 의해 실행될 수 있는 바이트 코드 클래스 파일들의 모습으로 컴퓨터 소프트웨어로 구현될 수 있다. 키보드(210)와 마우스(211)가 양방향 시스템 버스(218)에 연결되어 있다. 키보드와 마우스는 컴퓨터 시스템에 사용자 입력을 하게 하고 사용자 입력이 중앙 연산 장치(CPU, 213)에게 전달되도록 한다. 다른 적합한 입력 장치들이 마우스(211)와 키보드(210)에 덧붙여 혹은 대신하여 사용될 수 있을 것이다. 양방향 시스템 버스(218)에 연결된 I/O(입력/출력) 장치(219)는 프린터, A/V(오디오/비디오) I/O 등의 입출력 요소들을 나타낸다.
컴퓨터(200)는 비디오 메모리(214), 주 메모리(215) 그리고 대용량 저장 장치(212)를 포함하고, 이것들은 모두 키보드(210), 마우스(211) 및 CPU(213)과 함께 양방향 시스템 버스(218)에 연결된다. 대용량 저장 장치(212)는 광학적 혹은 자기 광학적 저장 시스템이나 혹은 다른 이용 가능한 대용량 저장 기술의 고정된 그리고 이동 가능한 미디어를 다 포함할 수 있다. 버스(218)는, 예를 들면, 비디오 메모리(214)나 주메모리(215)를 위한 32개의 어드레스 선을 포함할 수 있다. 시스템 버스(218)는 또한, 예를 들면, CPU(213), 주 메모리(215), 비디오 메모리(214) 및 대용량 저장 장치(211)간의 데이터 전송을 위한 32비트 데이터 버스를 포함할 수 있다. 다른 방법으로는 별개의 데이터와 어드레스선 대신에 다중화된 데이터/어드레스 선들이 사용될 수 있다.
본 발명의 일 실시예에서는, CPU(213)는 680X0 프로세서와 같은 Motorola에서 제조한 마이크로 프로세서이거나 혹은 80X86 이나 펜티움 프로세서와 같은 Intel에서 제조한 마이크로 프로세서이거나 Sun Microsystems의 스팍 마이크로 프로세서이다. 그러나, 어떤 다른 적합한 마이크로 프로세서나 마이크로 컴퓨터도 사용할 수 있다. 주 메모리(215)는 동적임의접근 메모리(DRAM)로 구성된다. 비디오 메모리(214)는 이중 포트 비디오 임의접근 메모리이다. 비디오 메모리(214)의 한 포트는 영상 증폭기(216)에 연결된다. 영상 증폭기(216)는 음극선관(CRT) 래스터(raster) 모니터(217)를 구동한다. 영상 증폭기(216)는 본 기술 분야에 잘 알려져 있고 어떤 적절한 장치로 구현될 수 있을 것이다. 이 회로는 비디오 메모리(214)에 저장된 픽셀(pixel) 데이터를 모니터(217)에 의해 사용되기 적합한 래스터 신호로 변환한다. 모니터(217)는 그래픽 영상을 표시하는데 적합한 종류이다.
컴퓨터(200)는 버스(218)에 연결된 통신 인터페이스(220)도 포함할 수 있다. 통신 인터페이스(220)는 네트웍 연결(221)을 통해 지역 네트웍(222)에 연결되는 양방향 데이터 통신을 제공한다. 예를 들어 만일 통신 인터페이스(220)가 종합정보 통신망(ISDN)카드나 모뎀이면, 통신 인터페이스(220)는 전화선의 교신 종류의 데이터 통신 접속을 제공하는데, 그 전화선은 네트웍 연결(221)의 부분을 구성한다. 만일 통신 인터페이스(220)가 근거리 통신망(LAN) 카드라면 통신 인터페이스(220)는 호환되는 LAN으로의 데이터 통신 접속을 네트웍 연결(221)을 경유하여 제공한다. 무선 연결들 역시 가능하다. 그런 구현의 어떠한 경우이건, 통신 인터페이스(220)는 다양한 종류의 정보를 표시하는 디지털 데이터 흐름들을 나르는 전기적, 전자기적 혹은 광학적인 신호들을 송수신 한다.
네트웍 연결(221)은 하나 혹은 그 이상의 네트웍을 통해 다른 데이터 장치들로의 데이터 통신을 제공하는 것이 일반적이다. 예를 들면, 네트웍 연결(221)은 지역 네트웍(222)을 통해 호스트 컴퓨터(223)로 혹은 인터넷 서비스 제공자(ISP, 224)에 의해 운용되는 데이터 장치로 접속하는 것을 제공할 수 있다. ISP(224)는 이제는 일반적으로 "인터넷"(225)으로 언급되는 범세계 패킷 데이터 통신망을 통해 데이터 통신 서비스를 차례로 제공한다. 지역 네트웍(222)과 인터넷(225)은 모두 디지털 데이터 흐름들을 운반하는 전기적인, 전자기적인 혹은 광학적인 신호들을 사용한다. 다양한 네트웍들을 통한 신호들과 네트웍 연결(221)상에 그리고 통신 인터페이스(220)를 통한 신호들, 컴퓨터(200)로 그리고 컴퓨터(200)로부터 디지털 데이터를 운반하는 이 신호들은 정보를 수송하는 반송파들의 전형적인 모습이다.
컴퓨터(200)는 네트웍(들), 네트웍 연결(221) 그리고 통신 인터페이스(220)를 통해서 프로그램 코드를 포함하는 메시지들을 전송하고 데이터를 수신한다. 인터넷의 예에서, 서버(226)는 응용 프로그램을 위해 요청된 코드를 인터넷(225), ISP(224), 지역 네트웍(222) 및 통신 인터페이스(220)를 통해 전송할 것이다. 본 발명에 따르면, 그렇게 다운로드된 응용 프로그램은 이 문서에서 설명된 클래스 파일들을 전처리(pre-processing)하고 패키징(packaging)하는 장치이다.
수신된 코드는 수신되면 CPU(213)에 의해 실행될 수도 있고 그리고/혹은 다음의 실행을 위해 대용량 저장 장치(212) 혹은 비휘발성 저장 장치에 저장된다. 이러한 방법으로 컴퓨터(200)는 반송파의 모습으로 응용 프로그램 코드를 얻을 수 있을 것이다.
상기에 설명된 컴퓨터 시스템들은 예를 들기 위한 것뿐이다. 본 발명의 실시예는 컴퓨터 시스템이나 프로그래밍 혹은 처리 환경의 어떤 모습으로도 구현될 수 있을 것이다.
클래스 파일 구조를 이하에서 설명한다.
본 발명의 실시예들은 클래스 파일 형식의 모습을 참조하면 더 잘 이해될 수 있다. 이하에서 자바 클래스 파일 형식에 대한 설명이 제공된다. 자바 클래스 형식에 대한 추가의 설명은 Chapter 4, "The class File Format", and Chapter 5, "Constant Pool Resolution," of theJava TM Virtual Machine Specification, by Tim Lindholm and Frank Yellin, published by Addison-Wesley in September 1996, ⓒSun Microsystems, Inc.에서 찾아볼 수 있다.
자바 클래스 파일은 연속적인 8 비트 바이트들로부터 구성된 16 비트, 32 비트 및 64 비트 구조들을 수반하는 8비트 바이트의 흐름으로 구성된다. 하나의 클래스 혹은 인터페이스 파일 구조는 클래스 파일에 담겨진다. 이 클래스 파일 구조는 다음과 같이 나타난다.
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interface_count;
u2 interface[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
이때에 u2와 u4는 부호없는 2바이트와 4바이트 크기를 언급하는 것이다. 이 구조는 도 3에 그래픽으로 표현된다.
도 3에서, 클래스 파일(300)은 4바이트의 매직(magic)값(301), 2바이트의 마이너(minor) 버전(version) 숫자(302), 2바이트의 메이저 버전 숫자(303), 2바이트의 상수 풀(pool) 계산값(304), 변수 길이 요소들의 상수 풀 행렬에 해당하는 상수 풀 테이블(305), 2바이트인 억세스 플래그들(access flag) 값(306), 2바이트인 "이 클래스(this class)" 인식자(307), 2바이트인 수퍼 클래스(superclass) 인식자(308), 2바이트인 인터페이스들 계산값(309), 2바이트 요소들의 인터페이스들 행렬에 해당하는 인터페이스들 테이블(310), 2바이트인 필드들 계산값(311), 변수 길이 요소들의 필드들에 해당하는 필드들 테이블(312), 2바이트인 메소드들 계산값(313), 변수 길이 요소들의 메소드들 행렬에 해당하는 메소드들 테이블(314), 2바이트의 속성들 계산값(315) 및 변수 길이 요소들의 속성들 행렬에 해당하는 속성들 테이블(316)을 포함한다. 상기 구조들의 각각은 아래에 간략히 설명된다.
매직값(301)은 클래스 파일 형식을 나타내는 숫자를 포함한다. 자바 클래스 파일 형식을 위해서, 매직 숫자는 0xCAFEBABE의 값을 가진다. 마이너 버전 숫자(302)와 메이저 버전 숫자(303)는 클래스 파일을 생성하는 책임이 있는 컴파일러의 마이너와 메이저 버전 숫자들을 특정한다.
상수 풀 계산값(304)은 상수 풀 테이블(305)에 들어있는 것들의 개수를 인식한다. 상수 풀 테이블(305)은 ClassFile 구조내에 언급된 다양한 스트링(string) 상수들, 숫자 상수들, 클래스 이름들, 필드 이름들 및 다른 상수들을 나타내는 변수-길이 데이터 구조들의 데이블이다. 상수 풀 테이블의 각 내용물은 다음의 일반적인 구조를 가진다.
cp_info {
u1 tag;
u1 info[];
}
이때에 1바이트 "태그"는 특별한 상수형을 특정한다. info[] 행렬의 형식은 상수형에 따라 다르다. info[] 행렬은 정수와 부유 상수들같은 숫자값, 스트링 상수를 위한 스트링 값 혹은 상수 풀 테이블의 다른 상수 종류의 다른 내용물에 대한인덱스일 수 있다. 상수 풀 테이블 구조와 상수형에 대한 더 상세한 것들은 Chapter 4 ofThe Java TM Virtual Machine Specification (supra)에서 이용 가능하다.
억세스 플래그 값(306)은 클래스와 인터페이스 선언들과 함께 사용되는 변형자(modifier)를 가린다. "이 클래스" 값(307)은 상수 풀 테이블(305)에 이 클래스 파일에 의해 정의된 클래스나 인터페이스를 나타내는 상수형 구조의 지표이다. 수퍼 클래스 값(308)은 그 클래스가 java.lang.Object의 서브 클래스를 나타내는 0이거나 상수 풀 테이블(305)에 이 클래스 파일에 의해 정의된 클래스의 수퍼클래스를 나타내는 상수형 구조의 지표이다.
인터페이스 계산값(309)은 이 클래스 혹은 인터페이스의 직접적인 수퍼인터페이스의 개수를 인식하고 그에 따라서 인터페이스들 테이블(310)에 있는 요소들의 숫자를 인식한다. 인터페이스들 테이블(310)은 상수 풀 테이블(305)에 2바이트의 지표들을 포함한다. 상수 풀 테이블(305)의 각 해당 내용물은 이 클래스 파일에 의해 정의된 클래스나 인터페이스의 직접적인 수퍼인터페이스인 인터페이스를 나타내는 상수형 구조이다.
필드들 계산값(311)은 필드들 테이블(312)의 구조들의 숫자를 제공한다. 필드들 테이블(312)의 각 내용물은 클래스 형에서 필드를 설명하는 것을 제공하는 변수-길이 구조이다. 필드들 테이블(312)은 이 클래스 파일에 의해 정의된 클래스나 인터페이스에 의해 선언된 그 필드들만을 포함한다.
메소드들 계산값(313)은 메소드 테이블(314)의 구조들의 숫자를 나타낸다.메소드 테이블(314)의 각 요소는 그 클래스 혹은 인터페이스의 메소드를 설명하고 그 메소드를 위한 가상 기계 코드를 제공하는 변수-길이 구조이다.
속성들 계산값(315)은 속성들 테이블(316)의 구조들의 개수를 나타낸다. 속성들 테이블(316)의 각 요소는 변수-길이 속성 구조이다. 속성 구조들은 section 4.7 of Chapter 4 ofThe Java TM Virtual Machine Specification (supra)에 논의되어 있다.
본 발명의 실시예들은 다중통신/동보통신 방법에서 배후 채널이 있거나 혹은 없는 상태에서 자바 바이트 코드를 적시에 공급하는 것을 가능하게 한다. 또한 같은 방법들이 (연속화 된) 객체들을 공급하기 위해 사용될 수 있다. 다중통신을 이용하여 특별히 주소를 부여받은 데이터 흐름을 다수의 사용자들에게 전송하는 것이 가능하다. 다중통신을 사용하면, 데이터 흐름은 각 사용자에게 개별적으로 전송될 필요가 없다. 오히려 사용자들은 다중통신 서비스에 예를 들면 특별히 주소를 부여받은 데이터 흐름의 주소를 기입함으로 해서 서명할 수 있다. 동보통신을 이용하면 다중통신의 서명 과정없이 사용자에게 전송하는 것을 가능하다.
본 발명의 실시예들은 사용자들이 그 정보를 요청할 필요가 없이 정보가 사용자들에게 전송되는 "푸시" 미디어에 사용하는데 적합하다. 사용자가 미디어의 근원과 거꾸로 통신할 수 있게하는 배후 채널이 없는 환경에서조차 "푸시" 미디어는 전송될 수 있다. 본 발명의 실시예들은 또한 사용자들이 미디어의 근원으로부터 정보를 요청하는 "풀(pull)" 미디어에 사용하는데 적합하다.
본 발명의 실시예들은 (클래스 파일내의) 자바 바이트 코드가 "시간을 인식"하도록 만든다. 바이트 코드가 적시에 공급되는 것을 확실하게 하기 위해 적절한 마감 시간들이 콘텐트들과 같이 시각 스탬프들로 클라이언트들에게 전해진다. 이런 시각 스탬프들은 그러한 공급 절차를 이용하기 위해 헤더(header)에 사용된다. 그 헤더는 바이트 코드 흐름을 적시에 공급하기 위해 그 바이트 코드에 붙여진다.
바이트 코드를 적시에 공급하는데 주소가 부여된 전송의 일 면은 패킷(packet) 손실이다. 종래의 기술은 자바 바이트 코드 흐름에서 패킷 손실을 복구하기 위한 아무런 방법도 제공하지 않았다. 한 가능한 접근은 배후 채널이 없는 경우 정기적인 간격으로 모든 클래스를 재전송하는 방법을 포함한다. 이것은 미디어의 경우에 임의적 접근점들을 이용하도록 도울 수 있을 것이다. 그러나 클라이언트들의 수가 너무 많거나 클래스(혹은 객체)가 매우 큰 때에는 이 방법은 가능하지 않을 수 있고, 재전송을 금지하게 한다.
배후 채널이 존재할 때에 패킷 손실이 서버로 신호로 보내질 수 있고, 그러면 없어진 패킷은 재전송될 수 있다. 신뢰성있는 다중통신 방법이 사용되면 데이터는 또한 서버보다는 다른 장소들로부터 재전송될 수 있다.
부분적인 패킷 손실을 회복하는데 이용될 수 있는 내장의 중복 코드와 함께 사용되는 여러 가지 에러(error) 복구 방법이 있다. 예를 들면, 순방향 오류 정정법과 같은 방법이 사용될 수 있다. 패킷 손실 문제는 몇몇 신뢰성있는 다중통신 방법을 사용해서 부분적으로 해결될 수도 있다. 본 발명의 실시예들은 패킷 손실을 극복하기 위해 에러 복구 또는 신뢰성있는 다중통신 알고리즘을 사용하는 것을 용이하게 한다.
주소가 부여되는 다른 태양은 보안이다. 클라이언트의 안전을 보장하기 위해 바이트 코드를 인증하는 것이 필요하다. 바이트 코드의 인증을 보장하기 위해 사용될 수 있는 여러 가지 보안 방법이 있다. 본 발명의 실시예들은 또한 자바 보안 API들의 보안 표본내의 어떤 보안 방법이라도 이용하는 것을 조정한다.
주소가 부여되는 또 다른 태양은 압축이다. 압축은 주어진 정보의 양을 전송하는데 필요한 시간을 줄임으로 해서 공급의 효율을 증가시킨다. LZW, LZS 등과 같은 많은 압축 방법이 효율을 위해 클래스 파일들을 압축하는데 이용될 수 있다.
도 5는 본 발명의 일실시예에 따라 적시에 클래스 파일들을 공급하는 방법을 보여주는 도면이다. 클래스 파일(혹은 객체)(501)이 제공된다. 클래스 파일(혹은 객체)(501)은 선택적인 압축, 에러 회복 및 보안 방법들의 하나 혹은 그 이상에 따라 진행될 수도 아닐 수도 있다. 헤더(502)는 클래스 파일(혹은 객체)(501)에 부가된다. 클래스 파일(혹은 객체)(501)은 헤더(502)와 같이 다른 곳으로 공급을 위해서 수송 절차(508)로 넘겨진다. 수송 절차(508)는 클래스 파일(혹은 객체)(501)을 헤더(502)와 함께 연속될 패킷들(504, 505, 506, 507)로 전송하기 위해 패킷화기(packetizer, 503)를 사용한다. 수송 절차(508)는 주어진 클래스 파일(혹은 객체)(501)을 헤더(502)와 같이 담겨지는 패킷들의 적절한 개수를 결정한다.
도 4는 본 발명의 일 실시예에 따라 적시 공급을 보장하기 위해 클래스 파일들이나 (연속화 된) 객체들을 위한 헤더를 나타내는 도면이다. 바이트 코드 헤더로 나타내진 이 헤더는 도 5에 도시된 것처럼 패킷화되기 전에 클래스 파일에 붙여진다. 패킷화된 후에 "시간을 인식"하는 수송 절차(예를 들면 RTP, MPEG-2 전송 흐름)가 그 데이터를 클라이언트 측에 수송하는데 사용될 수 있다. 이 방법은 압축, 보안 그리고 에러 회복 방법들을 위한 테이블을 정의함으로 해서 어떤 특정한 미디어 콘텐트(예를 들면 MPEG-1, MPEG-2 등)와 수송 절차(MPEG-2 전송 흐름, RTP 등)를 위해 채택될 수 있다.
헤더의 일 실시예는 헤더의 길이, 버전, 클래스 혹은 객체를 나타내는 플래그, 요청된 클래스들의 수, "로딩 시작" 시각 스탬프, "로드되는" 시각 스탬프, 클래스 크기, 사용될 압축의 종류, 사용될 보안 방법 종류, 사용될 에러 정정의 종류, 다른 종류의 정보, 클래스 인식자(ID)의 길이, 클래스 인식자(ID), 요청된 클래스들 각각의 클래스 ID의 길이들 및 요청된 클래스들 각각을 위한 클래스 ID들을 나타내는 정보를 포함한다.
헤더 정보의 길이(401)의 일실시예는 적시 공급을 제공하기 위해 바이트 코드 파일에 부가된 헤더의 바이트 단위의 크기를 나타내는 16비트를 포함한다. 버전 정보(402)의 일 실시예는 그 바이트 코드 파일을 적시에 공급하는 것을 제공하는데 사용된 방법의 버전을 나타내는 2비트를 포함한다. 클래스/객체 플래그(403)의 일 실시예는 헤더가 부가된 바이트 코드 파일이 클래스인가 혹은 객체인가를 나타내는 한 비트를 포함한다. 예를 들면, 0은 객체를 나타내고 1은 클래스를 나타낸다.
요청된 클래스들 정보(404)의 숫자의 일 실시예는 이번 클래스를 로드하기 전에(혹은 객체들의 경우에는 예증(instantiation) 이전에) 요청되는 클래스들의 수를 나타내는 13비트를 포함한다. "로딩 시작" 시각 스탬프(405)의 일 실시예는 일단 클래스가 수신되고 완전히 재조립되면 그 시간후에 클래스 로딩이 시작되는시각을 나타내는 64비트를 포함한다. 시각 스탬프들의 길이는 NTP 시각 스탬프들에 적응하기 위해 64비트로 설정된다. 더 적은 비트의 시각 스탬프들이 64비트 길이를 채우기 위해 별도의 비트들과 함께 덧붙여진다. 각 방법은 단편의 시각 스탬프들을 나타내기 위한 십진 소수점의 위치를 정의할 수 있다. 클락 틱(clock tick)들이 사용되는 경우(MPEG-2)에는 모든 64비트들이 사용될 수 있다.
시각 스탬프들은 절대적인 혹은 상대적인 시간 표현을 포함할 수도 있다. 예를 들면, 시각 스탬프는 날짜의 실제 시간이나 시간의 어떤 다른 절대 측정법을 나타낼 수도 있거나 또한 시각 스탬프들은 한 세션(session)의 시작, 어떤 사건의 발생 혹은 어떤 다른 상대적인 시간 측정 이래의 경과된 시간을 나타낼 수도 있다.
"로드되는" 시각 스탬프(406)의 일 실시예는 그 시간까지는 그 클래스가 완전히 로드되어야 하는 시각을 나타내는 64비트를 포함한다. 클래스 정보(407)의 크기의 일 실시예는 전송되고 있는 데이터의 바이트 크기를 나타내는 16비트를 포함한다.
본 발명의 일 실시예는 종류 필드들을 포함한다. 압축 종류 필드(408)는 사용된 압축의 종류(객체들에 대해서 혹은 압축을 사용하지 않을 때에는 0000)를 지정하는 4비트를 포함한다. 보안 종류(409) 필드는 사용된 보안 방법(아무 방법도 사용하지 않는다면 0000)을 지정하는 4비트를 포함한다. 에러 정정 종류 필드(401)는 사용된 에러 정정 방법(아무 방법도 사용하지 않는다면 0000)을 지정한다. 종류 필드(411)는 나중에 사용하기 위해 유보된 4비트를 포함한다.
클래스 ID의 길이 정보(412)의 일 실시예는 클래스 ID 정보(413)의 바이트들의 길이를 나타내는 32비트를 포함한다. 클래스 ID 정보(413)는 (각 세션마다 유일한) 그 클래스들을 인식하는 각 변수 길이 스트링을 포함한다. 스트링이 덧붙여지면 클래스 ID 길이 정보(412)와 클래스 ID 정보(413)의 결합의 길이는 32비트의 배수이다.
헤더의 일 실시예는 또한 요청된 클래스들 각각을 위한 클래스 ID들과 ID들의 길이들을 포함한다. 클래스 ID 1 길이 정보(414)는 첫 번째 요청된 클래스를 위한 클래스 ID의 길이를 나타내는 16비트 정보를 포함한다. 클래스 ID 1 정보(415)는 변수 길이 스트링을 포함하며, 그 스트링은 첫 번째 요청된 클래스를 인식하고 그 스트링이 덧붙여지면 클래스 ID 1 길이 정보(414)와 클래스 ID 1 정보(415)가 결합된 길이는 32비트의 배수이다.
첫 번째 요청된 클래스 이상의 요청된 클래스들을 위한 클래스 ID 정보 길이와 클래스 ID 정보는 클래스 ID 1 정보(415)를 뒤따라 참조번호 416 부분을 차지한다. 클래스 ID n 길이 정보(417)는 16비트를 포함하고 n번째 요청된 클래스를 위한 클래스 ID의 길이를 지정한다. 클래스 ID n 정보(418)는 n번째 요청된 클래스를 인식하는 비트들의 변수를 포함하고 다음 32비트 경계에 덧붙여진다.
본 발명의 일 실시예에서는, 각 클래스는 개별적인 단위로 포장된다. 그러므로 하나의 헤더가 적시 공급을 가능하게 하기위해 각 클래스에 붙여진다. 시간 프레임(frame) 내에 그 클래스가 로드되는 시각 프레임을 제공함으로 해서 적시 공급이 용이해진다. "로딩 시작" 시각 스탬프는 어떤 시각후에 그 클래스가 로드될 수 있는 그 시각을 나타내기 위해 각 클래스를 위해 제공된다. "로드되는" 시각 스탬프는 어떤 시각까지 각 클래스가 로드될 필요가 있는 그 시각을 나타내기 위해 각 클래스에게 제공된다. "로드되는" 시각 스탬프는 그 시각후에 클래스가 응용 프로그램에서 이용 가능할 것을 기대할 수 있는 보장된 시각을 제공한다.
이 방법에 의해 공급되는 페이로드(payload)는 클래스들(압축된 혹은 압축되지 않은) 혹은 인스턴스들일 수 있다. 효율과 안전 그리고 신뢰성을 제공하기 위해 헤더에는 세가지 종류의 필드들이 있는데, 이 필드들은 데이터(클래스 혹은 객체)의 속성들을 지정한다.
적당한 압축 방법이 본 발명의 실시예와 함께 사용될 수 있을 것이다. 사용된 압축 방법의 종류 확인을 제공하기 위해 헤더의 일부(예를 들면 4비트)가 지정된다. 예를 들면 비트 패턴(pattern) 0000이 압축하지 않는 것을 나타내기 위해 사용되고 비트 패턴 0001 내지 1111은 특정 압축 방법들을 나타내기 위해 사용된다.
적당한 보안 방법이 본 발명의 실시예와 함께 사용될 수 있을 것이다. 사용된 보안 방법의 종류 확인을 제공하기 위해 헤더의 일부(예를 들면 4비트)가 지정된다. 예를 들면 비트 패턴(pattern) 0000이 보안 방법을 사용하지 않은 것을 나타내기 위해 사용되고 비트 패턴 0001 내지 1111은 특정 보안 방법들을 나타내기 위해 사용된다.
적당한 에러 회복 방법이 본 발명의 실시예와 함께 사용될 수 있을 것이다. 사용된 에러 회복 방법의 종류 확인을 제공하기 위해 헤더의 일부(예를 들면 4비트)가 지정된다. 예를 들면 비트 패턴(pattern) 0000이 에러 회복 방법을 사용하지 않은 것을 나타내기 위해 사용되고 비트 패턴 0001 내지 1111은 특정 에러 회복 방법들을 나타내기 위해 사용된다. 헤더의 일부(예를 들면 4비트)는 추후에 사용하기 위해 남겨진다.
에러 회복 방법을 사용하는 하나의 이점은 UDP 같은 신뢰할 수 없는 프로토콜이 바이트 코드를 전송하는데 사용될 수도 있다는 것이다. 불완전하거나 혹은 에러들에 의해 영향을 받은 바이트 코드는 적절하게 실행되지 않을 것이다. UDP 같은 신뢰할 수 없는 프로토콜은 정보 공급이 완전하며 에러가 없다는 것을 보장하지 않는다. 그러나 부가적인 에러 회복 방법은 바이트 코드가 실행되기 전에 완전성이 검증되고 에러들이 정정되는 것을 가능하게 한다. 그러므로 바이트 코드 전송은 더 이상 신뢰성 있는 전송 수단에만 한정되지 않는다.
클래스들은 ID에 의해 인식되는데, 이것은 그 세션에 유일한 것이다. 이 ID는 클래스들을 여러 번 수신할 때에 클래스들을 인식하는데 사용될 수 있다. 이것은 각각이 그 클래스의 인스턴스인 클래스를 인식하기 위해 객체들에 의해 사용된다. 자바 클래스 이름들은 ID로서 사용된다. 이들은 변수 길이 스트링들이기 때문에, 스트링의 길이 또한 헤더에 포함된다. 클래스 ID와 그 길이(16 비트)의 결합은 다음의 32비트 경계에 덧붙여진다.
본 발명의 실시예들은 또한 요청된 클래스들의 목록을 제공한다. 각 요청된 클래스의 "로드되는" 시각은 그 클래스를 요청한 클래스의 "로딩 시작" 시각 이전일 것이 필요하다. 13비트 숫자가 클래스/객체 데이터를 로딩/예증하기 전에 요청된 클래스들의 개수를 지정하는데 사용된다. 요청된 클래스들은 그들의 클래스 ID에 의해(그들의 클래스 ID의 길이에 따라) 지정된다.
도 6은 본 발명의 일 실시예에 따라 바이트 코드가 적시에 공급되기 위해 준비되는 과정을 보여주는 흐름도이다. 과정은 601 단계에서 시작된다. 602 단계에서, 공급될 바이트 코드가 제공된다. 603 단계에서, 요망되는 압축, 에러 회복 및 보안 방법이 그 바이트 코드에 실행된다. 압축, 에러 회복 및 보안 방법의 어떤 결합도 어떤 순서로라도 실행될 수 있을 것이다. 예를 들면 보안 방법이 적용되고 그 뒤에 압축은 사용되지 않으면서 에러 회복 방법이 적용된다. 그러므로 압축, 에러 회복, 보안 방법 혹은 이들의 부분적인 사용의 어떤 순열도 사용될 수도 있다. 604 단계에서, 헤더가 바이트 코드에 붙여진다. 헤더는 바이트 코드에 관한 정보를 포함한다. 그러한 헤더의 일 실시예는 위에서 도 4에 관해서 설명되어 있다. 헤더 정보가 바이트 코드보다 앞서도록 헤더가 바이트 코드에 부착된 것으로 설명되어 있지만 헤더는 바이트 코드의 어떤 부위에도 위치할 수 있다. 예를 들면 바이트 코드의 끝, 바이트 코드 부분들의 사이 혹은 바이트 코드에 끼워져 있을 수 있다.
605 단계에서, 부착된 헤더를 가진 바이트 코드는 수송 절차를 통해 공급된다. 어떠한 적절한 수송 절차가 사용될 수 있다. 예를 들면, TCP처럼 그것만으로 공급은 보장하나 공급 타이밍은 보장하지 않는 수송 절차가 사용될 수 있을 것이다. 다른 태양으로는 RTP와 같이 시기적절을 보장하는 수송 절차가 사용될 수 있을 것이다. 더 다른 태양으로는 UDP처럼 공급을 보장하지 않는 수송 절차도 사용될 수 있을 것이다. 606 단계에서 과정은 끝난다.
도 7a와 도 7b는 본 발명의 일 실시예에 따라 바이트 코드가 적시에 수신되고 사용되는 과정을 보여주는 흐름도이다. 과정은 701단계에서 시작한다. 702 단계에서, 부착된 헤더를 가진 바이트 코드가 수송 절차를 통해 수신된다. 수송 절차는 어떤 적당한 수송 절차일 수 있다. 703 단계에서, 헤더에 포함된 정보가 읽혀진다. 704 단계에서, 바이트 코드가 실행될 수 있기 전에 추가 클래스들이 로드될 필요가 있는지 없는지에 대한 결정을 한다. 이 결정을 하기 위한 정보는 헤더에서 추출될 수 있을 것이다. 추가 클래스들이 로드될 필요가 있다면 706 단계로 계속한다.
706 단계에서, 헤더에서 지정된 "로딩 시작 시각"이 아직 지났나 혹은 지나지 않았나에 대한 결정이 이루어진다. 지나지 않았다면, 과정은 706 단계로 되돌아가고 "로딩 시작 시각"이 될 때까지 기다린다. "로딩 시작 시각"이 되면 과정은 참조 B(707)를 경유해서 708 단계로 계속된다. 708 단계에서, 요청된 클래스들이 로드된다. 709 단계에서, 요청된 클래스들 전부가 로드되었는가 아닌가를 결정하게 된다. 아니라면, 과정은 710 단계를 시작한다. 701 단계에서, 헤더에서 지정된 "로드되는 시각"이 지났는가 아닌가에 대한 결정이 된다. "로드되는 시각"이 지나지 않았다면 과정은 708 단계로 되돌아가고, 그곳에서는 요청된 클래스들을 로드하는 것이 계속된다. 710 단계에서 "로드되는 시각"이 이미 지났다면 과정은 712 단계를 계속한다. 712 단계에서, 이전의 로딩 에러가 처리된다. 이전의 로딩 에러 처리는 요청된 "로드되는 시각" 최종 시간까지 성공적으로 로드될 수 없었다는 공지를 포함할 수 있을 것이다. 이 공지에 기초하여 그 로딩이 다시 계획되어야 하는 지(예들 들면, 새로운 "로드되는 시각"을 지정함으로 해서) 혹은 그 로딩 과정이 (그 바이트 코드를 실행하지 않고) 취소되어야 하는 지에 대한 결정이 이루어질 수 있다. 과정은 712 단계로부터, 713 단계에서 끝난다.
709 단계에서, 요청된 클래스들 모두가 로드되었다면 그 과정은 711 단계로 계속된다. 또한 704 단계에서, 추가 클래스들이 로드될 필요가 없다면 그 과정은 참조 A(705)를 통해 711 단계로 계속된다. 711 단계에서, 바이트 코드가 실행된다. 만일 보안, 압축 그리고/혹은 에러 회복 방법이 그 바이트 코드에 실행되었다면, 그 바이트 코드를 실행하는 것은 추가의 단계들을 수반할 수 있을 것이다. 어떤 추가의 단계들을 포함하는 과정의 일 예가 도 8에 도시되어 있다. 과정은 711 단계로부터, 713 단계에서 끝난다.
도 8은 어떤 과정에 의해 공급된 바이트 코드가 본 발명의 일 실시예에 따라 실행을 위해 준비되고 실행되는 그 과정을 보여주는 흐름도이다. 그 과정은 801 단계에서 시작한다. 802 단계에서, 보안 방법이 사용되었는지 아닌지에 대한 결정이 이루어진다. 보안 방법이 사용되었다면 과정은 803 단계로 계속된다. 803 단계에서, 사용된 보안 방법이 인식되고 바이트 코드는 그 보안 방법에 따라 처리된다. 보안 방법을 인식하는 것은 703 단계에서 읽어진 것 같은 헤더 정보에서 발견된 정보에 기초하여 실행될 수 있을 것이다. 803 단계로부터 과정은 804 단계로 계속된다. 802 단계에서, 아무 보안 방법도 사용되지 않았다고 결정되면 과정은 804 단계로 계속된다.
804 단계에서, 압축 방법이 사용되었는가 아닌가를 결정한다. 압축 방법이 사용되었다면 과정은 805 단계로 계속된다. 805 단계에서, 사용된 압축 방법이 인식되고 바이트 코드는 그 압축 방법에 따라 압축이 해제된다. 압축 방법을 인식하는 것은 703 단계에서 읽어진 것 같은 헤더 정보에서 발견된 정보에 기초하여 실행될 수 있을 것이다. 805 단계로부터 과정은 806 단계로 계속된다. 804 단계에서, 아무 압축 방법도 사용되지 않았다고 결정되면 과정은 806 단계로 계속된다.
806 단계에서, 에러 회복 방법이 사용되었는가 아닌가를 결정한다. 에러 회복 방법이 사용되었다면 과정은 807 단계로 계속된다. 807 단계에서, 사용된 에러 회복 방법이 인식되고 발생할 수도 있었던 에러들이나 탈락된 것들은 정정되거나 보정된다. 에러 회복 방법을 인식하는 것은 703 단계에서 읽어진 것 같은 헤더 정보에서 발견된 정보에 기초하여 실행될 수 있을 것이다. 806 단계로부터 과정은 808 단계로 계속된다. 806 단계에서, 아무 에러 회복 방법도 사용되지 않았다고 결정되면 과정은 808 단계로 계속된다.
808 단계에서, 바이트 코드가 실행된다. 본 발명의 일 실시예가 바이트 코드의 실행을 시도하기 전에 요청된 클래스들 모두가 로드된 것을 보장하는 절차를 제공하기 때문에 바이트 코드의 성공적인 실행이 제공된다. 809 단계에서 과정이 끝난다.
그러므로, 바이트 코드 흐름을 적시에 공급하기 위한 방법과 장치가 하나 혹은 그 이상의 특정한 실시예들과 함께 설명되었다. 본 발명은 청구항들과 그 청구항들과 균등한 모든 범위에 의해 정의된다.
본 발명에 의하면, 바이트 코드를 헤더와 같이 수송하고, 그 헤드에서 시간에 대한 내용을 포함하는 부가적인 클래스 정보를 추출하여, 이 정보에 따라 부가적인 클래스들을 로드하여, 바이트 코드와 연속화 된 객체들의 흐름을 시간적으로 적절하게공급하게 되어, 실행 가능한 바이트 코드, 바이트 코드의 클래스 파일 혹은 연속화 된 객체 파일들을 신뢰성 있게 시간에 적절하게 전송할 수 있다.

Claims (23)

  1. 바이트 코드를 공급하는 방법에 있어서,
    상기 바이트 코드를 헤더와 같이 수송하는 단계;
    로드될 부가적인 클래스들을 설명하는 부가적인 클래스 정보를 상기 헤더에서 추출하는 단계;
    상기 헤더에서 첫 번째 시각 스탬프를 추출하는 단계;
    상기 헤더에서 두 번째 시각 스탬프를 추출하는 단계; 및
    상기 첫 번째 시각 스탬프에 의해 특정되는 첫 번째 시각 후에 그리고 상기 두 번째 시각 스탬프에 의해 특정되는 두 번째 시각 전에 상기 부가적인 클래스들을 로드하는 단계를 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  2. 제 1항에 있어서,
    상기 헤더에서 보안 코드를 추출하는 단계; 및
    상기 보안 코드에 의해 확인된 보안 방법을 실행하는 단계를 더 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  3. 제 1항에 있어서,
    상기 헤더에서 압축 코드를 추출하는 단계; 및
    상기 압축 코드에 의해 인식된 압축 방법에 따라 상기 바이트 코드 압축을푸는 단계를 더 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  4. 제 1항에 있어서,
    상기 헤더에서 에러 정정 코드를 추출하는 단계; 및
    상기 에러 정정 코드에 의해 확인된 에러 정정 방법에 따라 에러 보정을 실행하는 단계를 더 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  5. 제 1항에 있어서,
    상기 헤더에서 플래그 값을 추출하는 단계; 및
    상기 바이트 코드가 클래스 파일을 포함하는가 혹은 객체 파일을 포함하는가를 상기 플래그 값에 기초하여 결정하는 단계를 더 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  6. 제 1항에 있어서,
    상기 부가적인 클래스 정보를 추출하는 단계는 상기 부가적인 클래스들의 수를 나타내는 값을 추출하는 단계를 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  7. 제 1항에 있어서, 상기 부가적인 클래스 정보를 추출하는 단계는,
    클래스 인식자 길이 값을 추출하는 단계; 및
    상기 클래스 인식자 길이 값을 사용하여 클래스 인식자를 추출하는 단계를 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 방법.
  8. 컴퓨터 프로그램 제품에 있어서,
    바이트 코드를 공급하기 위해 구현된 컴퓨터 프로그램 코드를 담고 있는 컴퓨터가 읽을 수 있는 매체를 포함하고,
    컴퓨터가 읽을 수 있는 그 매체는 컴퓨터가,
    상기 바이트 코드를 헤더와 함께 전송하는 단계;
    로드될 부가적인 클래스들을 설명하는 부가적인 클래스 정보를 상기 헤더에서 추출하는 단계;
    상기 헤더에서 첫 번째 시각 스탬프를 추출하는 단계;
    상기 헤더에서 두 번째 시각 스탬프를 추출하는 단계; 및
    상기 첫 번째 시각 스탬프에 의해 특정되는 첫 번째 시각 후에 그리고 상기 두 번째 시각 스탬프에 의해 특정되는 두 번째 시각 전에 상기 부가적인 클래스들을 로드하는 단계를 실행하도록 구성된 컴퓨터 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  9. 제 8항에 있어서,
    상기 컴퓨터 프로그램 코드는 상기 컴퓨터가
    상기 헤더에서 보안 코드를 추출하는 단계; 및
    상기 보안 코드에 의해 인식된 보안 방법을 실행하는 단계를 더 실행하도록 구성된 것을 특징으로 하는 컴퓨터 프로그램 제품.
  10. 제 8항에 있어서,
    상기 컴퓨터 프로그램 코드는 상기 컴퓨터가
    상기 헤더에서 압축 코드를 추출하는 단계; 및
    상기 압축 코드에 의해 확인된 압축 방법에 따라 상기 바이트 코드 압축을 해제하는 단계를 더 실행하도록 구성된 것을 특징으로 하는 컴퓨터 프로그램 제품.
  11. 제 8항에 있어서,
    상기 컴퓨터 프로그램 코드는 상기 컴퓨터가
    상기 헤더에서 에러 정정 코드를 추출하고; 그리고
    상기 에러 정정 코드에 의해 확인된 에러 정정 방법에 따라 에러 보정을 더 실행하도록 구성된 것을 특징으로 하는 컴퓨터 프로그램 제품.
  12. 제 8항에 있어서,
    상기 컴퓨터 프로그램 코드는 상기 컴퓨터가
    상기 헤더에서 플래그 값을 추출하는 단계; 및
    상기 바이트 코드가 클래스 파일을 포함하는가 혹은 객체 파일을 포함하는가를 상기 플래그 값에 기초하여 결정하는 단계를 더 실행하도록 구성된 것을 특징으로 하는 컴퓨터 프로그램 제품.
  13. 제 8항에 있어서,
    상기 부가적인 클래스 정보를 추출하는 단계는 상기 부가적인 클래스들의 개수를 나타내는 값을 추출하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  14. 제 8항에 있어서, 상기 부가적인 클래스 정보를 추출하는 단계는,
    클래스 인식자 길이 값을 추출하는 단계; 및
    상기 클래스 인식자 길이 값을 사용하여 클래스 인식자를 추출하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  15. 바이트 코드 파일에 헤더를 붙이도록 구성된 서버;
    첫 번째 시각 스탬프, 두 번째 시각 스탬프 및 로드될 부가적인 클래스들을 설명하는 클래스 정보를 포함하는 상기 헤더; 및
    상기 헤더와 함께 상기 바이트 코드를 수신하는 클라이언트를 포함하며,
    상기 클라이언트는 상기 첫 번째 시각 스탬프에 의해 특정되는 첫 번째 시각 후에 그리고 상기 두 번째 시각 스탬프에 의해 특정되는 두 번째 시각 전에 상기 부가적인 클래스들을 로드하도록 구성된 것을 특징으로 하는 장치.
  16. 제 15항에 있어서,
    상기 헤더는 보안 방법을 인식하는 보안 코드를 더 포함하는 것을 특징으로 하는 장치.
  17. 제 15항에 있어서,
    상기 헤더는 압축 코드를 더 포함하며;
    상기 클라이언트는 상기 압축 코드에 기초하여 상기 바이트 코드 파일의 압축을 해제하도록 더 구성된 것을 특징으로 하는 장치.
  18. 제 15항에 있어서,
    상기 헤더는 에러 정정 코드를 더 포함하며;
    상기 클라이언트는 상기 에러 정정 코드에 기초하여 상기 바이트 코드의 에러 정정을 실행하도록 더 구성된 것을 특징으로 하는 장치.
  19. 제 15항에 있어서,
    상기 헤더는 상기 바이트 코드가 클래스 파일을 포함하는가 혹은 객체 파일을 포함하는가를 나타내는 플래그 값을 더 포함하는 것을 특징으로 하는 장치.
  20. 제 15항에 있어서,
    상기 헤더는 상기 부가적인 클래스들의 수를 인식하는 값을 더 포함하는 것을 특징으로 하는 장치.
  21. 제 15항에 있어서, 상기 헤더는,
    클래스 인식자 길이 값; 및
    상기 부가적인 값들 중 하나에 해당하는 클래스 인식자를 더 포함하며,
    상기 클라이언트는 상기 클래스 인식자 길이 값에 기초하여 상기 클래스 인식자를 추출하도록 구성된 것을 특징으로 하는 장치.
  22. 제 15항에 있어서,
    상기 서버와 상기 클라이언트간의 수송 절차를 더 포함하며,
    상기 수송 절차는 상기 헤더와 함께 상기 바이트 코드를 포함하는 하나 혹은 그 이상의 패킷들을 전송하도록 구성된 것을 특징으로 하는 장치.
  23. 바이트 코드를 공급하는 장치에 있어서,
    상기 바이트 코드를 헤더와 함께 전송하는 수단;
    로드될 부가적인 클래스들을 설명하는 부가적인 클래스 정보를 상기 헤더에서 추출하는 수단;
    상기 헤더에서 첫 번째 시각 스탬프를 추출하는 수단;
    상기 헤더에서 두 번째 시각 스탬프를 추출하는 수단; 및
    상기 첫 번째 시각 스탬프에 의해 특정되는 첫 번째 시각 후에 그리고 상기두 번째 시각 스탬프에 의해 특정되는 두 번째 시각 전에 상기 부가적인 클래스들을 로딩하는 수단을 포함하는 것을 특징으로 하는 바이트 코드를 공급하는 장치.
KR10-1999-0023824A 1998-06-26 1999-06-23 한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치 KR100438143B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/105,963 1998-06-26
US09/105,963 US6092120A (en) 1998-06-26 1998-06-26 Method and apparatus for timely delivery of a byte code and serialized objects stream

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020010087967A Division KR20020022044A (ko) 1998-06-26 2001-12-29 한 바이트 코드와 연속화 된 객체들 흐름을 적시에공급하는 방법과 장치

Publications (2)

Publication Number Publication Date
KR20000006395A KR20000006395A (ko) 2000-01-25
KR100438143B1 true KR100438143B1 (ko) 2004-07-01

Family

ID=22308743

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-1999-0023824A KR100438143B1 (ko) 1998-06-26 1999-06-23 한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치
KR1020010087967A KR20020022044A (ko) 1998-06-26 2001-12-29 한 바이트 코드와 연속화 된 객체들 흐름을 적시에공급하는 방법과 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020010087967A KR20020022044A (ko) 1998-06-26 2001-12-29 한 바이트 코드와 연속화 된 객체들 흐름을 적시에공급하는 방법과 장치

Country Status (4)

Country Link
US (3) US6092120A (ko)
EP (3) EP0967547A3 (ko)
JP (1) JP4397460B2 (ko)
KR (2) KR100438143B1 (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591305B2 (en) * 1998-06-30 2003-07-08 Sun Microsystems, Inc. Method and system for delivering data from a server object to a client object using a non-proprietary data transfer protocol
US6366898B2 (en) * 1998-09-21 2002-04-02 Sun, Microsystems, Inc. Method and apparatus for managing classfiles on devices without a file system
GB2343021A (en) * 1998-10-19 2000-04-26 Ibm Class loading model for object oriented programming
US6460086B1 (en) * 1998-12-01 2002-10-01 Sun Microsystems, Inc. Method and apparatus for delivery of a bytecode embedded within a transport stream
US6305012B1 (en) * 1998-12-03 2001-10-16 International Business Machines Corporation Method and apparatus for dynamic selection of instructions for compiling using tags
US6336213B1 (en) * 1998-12-03 2002-01-01 International Business Machines Corporation Method and apparatus for dynamic selection of which bytecodes should be just in time compiled
US6438751B1 (en) * 1999-02-18 2002-08-20 Joseph F. Voyticky Integrated television and internet information system
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US8464302B1 (en) 1999-08-03 2013-06-11 Videoshare, Llc Method and system for sharing video with advertisements over a network
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
JP3730835B2 (ja) * 2000-03-03 2006-01-05 株式会社エヌ・ティ・ティ・ドコモ パケット伝送方法、中継装置およびデータ端末
WO2001067772A2 (en) 2000-03-09 2001-09-13 Videoshare, Inc. Sharing a streaming video
GB2363866B (en) * 2000-05-31 2002-11-06 Intamission Ltd Data processing apparatus, method and system
EP1187379B1 (en) * 2000-08-01 2005-03-16 Command Audio Corporation Method and signal for transmitting a broadcast program to a wireless receiver
US7386238B2 (en) * 2000-08-15 2008-06-10 Lockheed Martin Corporation Method and system for infrared data communications
WO2002015438A1 (en) * 2000-08-15 2002-02-21 Lockheed Martin Corporation Infrared data communication system
US6996813B1 (en) * 2000-10-31 2006-02-07 Sun Microsystems, Inc. Frameworks for loading and execution of object-based programs
US7140016B2 (en) * 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service
EP1227666A1 (en) * 2001-01-18 2002-07-31 Sony Service Centre (Europe) N.V. Method and device for downloading application data
FI110973B (fi) * 2001-05-15 2003-04-30 Digita Oy Menetelmä sovellusten lähettämiseen digitaalisessa yleislähetysverkossa
US6799147B1 (en) * 2001-05-31 2004-09-28 Sprint Communications Company L.P. Enterprise integrated testing and performance monitoring software
US8205193B2 (en) 2001-06-11 2012-06-19 Hewlett-Packard Development Company, L.P. Runtime updating of virtual machine class files
US20030115363A1 (en) * 2001-12-06 2003-06-19 Yared Peter A. Method and apparatus for packaging a trimmed object graph
FR2836317A1 (fr) * 2002-02-19 2003-08-22 Michel Francis Monduc Procede de transmission de messages audio ou video sur le reseau internet
US7386723B2 (en) * 2002-11-22 2008-06-10 Intel Corporation Method, apparatus and system for compressing IPSec-protected IP packets
US7073171B2 (en) * 2003-02-28 2006-07-04 Bea Systems, Inc. EJB implementation class loading with removed dependencies with ability to replace EJB implementation class without full redeployment
US20050063575A1 (en) * 2003-09-22 2005-03-24 Ge Medical Systems Global Technology, Llc System and method for enabling a software developer to introduce informational attributes for selective inclusion within image headers for medical imaging apparatus applications
GB0424756D0 (en) * 2004-11-10 2004-12-08 Ibm Executing a native software routine in a virtual machine
US7581216B2 (en) * 2005-01-21 2009-08-25 International Business Machines Corporation Preserving platform independence with native accelerators for performance critical program objects
JP4852906B2 (ja) * 2005-06-24 2012-01-11 富士ゼロックス株式会社 連携処理システム及び装置
EP1977315A2 (en) * 2005-12-30 2008-10-08 Edda Technology, Inc. Methods and system for process sharing among independent systems/applications via data encapsulation in medical imaging
JP2009540395A (ja) * 2006-06-15 2009-11-19 株式会社東芝 携帯可能電子装置およびその制御方法
US20080111977A1 (en) * 2006-11-14 2008-05-15 Asml Holding N.V. Compensation techniques for fluid and magnetic bearings
US8180029B2 (en) * 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8688789B2 (en) * 2009-01-30 2014-04-01 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US20110019662A1 (en) 2007-06-28 2011-01-27 Rebelvox Llc Method for downloading and using a communication application through a web browser
US8645477B2 (en) * 2009-01-30 2014-02-04 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US20100198988A1 (en) * 2009-01-30 2010-08-05 Rebelvox Llc Methods for using the addressing, protocols and the infrastructure of email to support near real-time communication
US8825772B2 (en) 2007-06-28 2014-09-02 Voxer Ip Llc System and method for operating a server for real-time communication of time-based media
US11095583B2 (en) 2007-06-28 2021-08-17 Voxer Ip Llc Real-time messaging method and apparatus
US8533611B2 (en) * 2009-08-10 2013-09-10 Voxer Ip Llc Browser enabled communication device for conducting conversations in either a real-time mode, a time-shifted mode, and with the ability to seamlessly shift the conversation between the two modes
US9178916B2 (en) 2007-06-28 2015-11-03 Voxer Ip Llc Real-time messaging method and apparatus
US20090277226A1 (en) * 2007-10-16 2009-11-12 Santangelo Salvatore R Modular melter
US8380874B2 (en) 2007-10-19 2013-02-19 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8090867B2 (en) 2007-10-19 2012-01-03 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8233598B2 (en) * 2007-10-19 2012-07-31 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8782274B2 (en) * 2007-10-19 2014-07-15 Voxer Ip Llc Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network
US7751362B2 (en) * 2007-10-19 2010-07-06 Rebelvox Llc Graceful degradation for voice communication services over wired and wireless networks
US8111713B2 (en) * 2007-10-19 2012-02-07 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8559319B2 (en) * 2007-10-19 2013-10-15 Voxer Ip Llc Method and system for real-time synchronization across a distributed services communication network
US7751361B2 (en) 2007-10-19 2010-07-06 Rebelvox Llc Graceful degradation for voice communication services over wired and wireless networks
US8682336B2 (en) 2007-10-19 2014-03-25 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8391312B2 (en) 2007-10-19 2013-03-05 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8699678B2 (en) 2007-10-19 2014-04-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8321581B2 (en) 2007-10-19 2012-11-27 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8706907B2 (en) 2007-10-19 2014-04-22 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8250181B2 (en) * 2007-10-19 2012-08-21 Voxer Ip Llc Method and apparatus for near real-time synchronization of voice communications
US8099512B2 (en) * 2007-10-19 2012-01-17 Voxer Ip Llc Method and system for real-time synchronization across a distributed services communication network
US8699383B2 (en) 2007-10-19 2014-04-15 Voxer Ip Llc Method and apparatus for real-time synchronization of voice communications
US8145780B2 (en) 2007-10-19 2012-03-27 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8001261B2 (en) * 2007-10-19 2011-08-16 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US20090103529A1 (en) * 2007-10-19 2009-04-23 Rebelvox, Llc Telecommunication and multimedia management method and apparatus
US8542804B2 (en) 2008-02-08 2013-09-24 Voxer Ip Llc Voice and text mail application for communication devices
US9054912B2 (en) 2008-02-08 2015-06-09 Voxer Ip Llc Communication application for conducting conversations including multiple media types in either a real-time mode or a time-shifted mode
US8321582B2 (en) * 2008-02-08 2012-11-27 Voxer Ip Llc Communication application for conducting conversations including multiple media types in either a real-time mode or a time-shifted mode
US8401583B2 (en) 2008-04-11 2013-03-19 Voxer Ip Llc Time-shifting for push to talk voice communication systems
US8325662B2 (en) * 2008-09-17 2012-12-04 Voxer Ip Llc Apparatus and method for enabling communication when network connectivity is reduced or lost during a conversation and for resuming the conversation when connectivity improves
US8270950B2 (en) * 2008-12-05 2012-09-18 Voxer Ip Llc Mobile communication device, method, and system for reducing exposure to radio frequency energy during transmissions by transmitting media in/out while the mobile communication device is safe distance away from user
US8849927B2 (en) 2009-01-30 2014-09-30 Voxer Ip Llc Method for implementing real-time voice messaging on a server node
US9043684B2 (en) * 2012-03-22 2015-05-26 Lsi Corporation Systems and methods for variable redundancy data protection
US10884945B2 (en) * 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
US10635307B2 (en) * 2015-06-30 2020-04-28 International Business Machines Corporation Memory state indicator
KR102599885B1 (ko) 2015-10-15 2023-11-08 삼성전자주식회사 냉장고
CN111082951B (zh) * 2019-12-30 2022-04-22 中国联合网络通信集团有限公司 故障诊断方法、装置、设备及存储介质
US20230281178A1 (en) * 2022-03-04 2023-09-07 The Boeing Company Discovering contexts and structured data structures from hazy data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0718761A1 (en) * 1994-12-20 1996-06-26 Sun Microsystems, Inc. A platform independent object and object viewer loader and method
WO1997026596A1 (en) * 1996-01-16 1997-07-24 British Telecommunications Public Limited Company Distributed processing
JPH09311781A (ja) * 1996-05-24 1997-12-02 Toshiba Corp プログラム開発支援方法およびシステム
JPH1091446A (ja) * 1996-07-03 1998-04-10 Sun Microsyst Inc Javaベースアプリケーションの発見とダウンロードのための分散オブジェクトシステムの利用

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4989133A (en) * 1984-11-30 1991-01-29 Inmos Limited System for executing, scheduling, and selectively linking time dependent processes based upon scheduling time thereof
CA1337132C (en) * 1988-07-15 1995-09-26 Robert Filepp Reception system for an interactive computer network and method of operation
US6018771A (en) * 1992-11-25 2000-01-25 Digital Equipment Corporation Dynamic assignment of multicast network addresses
JP4279905B2 (ja) 1994-02-18 2009-06-17 ソニー株式会社 放送システムおよび受信端末
WO1995025313A1 (en) * 1994-03-16 1995-09-21 International Business Machines Corporation Method and apparatus for synchronization and scheduling of multiple data streams and real time tasks
US5689560A (en) * 1994-04-25 1997-11-18 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for allowing a try-and-buy user interaction
FR2723653B1 (fr) * 1994-08-11 1996-09-13 Cegelec Procede pour ordonnancer des taches successives qui ne subissent que des contraintes du type delais
JP3575100B2 (ja) * 1994-11-14 2004-10-06 ソニー株式会社 データ送信/受信装置及び方法並びにデータ記録/再生装置及び方法
US6282578B1 (en) * 1995-06-26 2001-08-28 Hitachi, Ltd. Execution management method of program on reception side of message in distributed processing system
JPH096695A (ja) 1995-06-26 1997-01-10 Hitachi Ltd 情報処理システムの通信方法およびプログラム間通信方法
JPH0934710A (ja) * 1995-07-18 1997-02-07 Fuji Xerox Co Ltd オブジェクト指向プログラミング方法
TW385431B (en) * 1995-09-29 2000-03-21 Matsushita Electric Ind Co Ltd A method and an apparatus for encoding a bitstream with plural possible searching reproduction paths information useful in multimedia optical disk
EP0847199B1 (en) * 1995-09-29 1999-04-28 Matsushita Electric Industrial Co., Ltd. Method, disc and device for encoding seamless-connection of telecine-converted video data
TW335480B (en) * 1995-09-29 1998-07-01 Matsushita Electric Ind Co Ltd Method and apparatus for encoding a bistream for multi-angle connection
JPH09191453A (ja) 1995-11-07 1997-07-22 Sony Corp データ送受信、データ記録再生のための装置及びその方法並びに記録媒体
EP0806113B1 (en) * 1995-11-24 2000-05-17 Koninklijke Philips Electronics N.V. Transmission of data items
JP3684262B2 (ja) * 1996-01-17 2005-08-17 富士通株式会社 ネットワークシステム及び集線装置
US6047027A (en) * 1996-02-07 2000-04-04 Matsushita Electric Industrial Co., Ltd. Packetized data stream decoder using timing information extraction and insertion
US6134603A (en) * 1998-03-20 2000-10-17 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US5907372A (en) * 1996-06-28 1999-05-25 Hitachi, Ltd. Decoding/displaying device for decoding/displaying coded picture data generated by high efficiency coding for interlace scanning picture format
EP1513348A1 (en) 1996-09-11 2005-03-09 Matsushita Electric Industrial Co., Ltd. Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
JP3431465B2 (ja) 1996-09-11 2003-07-28 松下電器産業株式会社 データの提示を制御するデータ提示制御装置、データの提示を制御するために用いる情報を送信するデータ送信装置
TW346593B (en) 1996-09-11 1998-12-01 Matsushita Electric Ind Co Ltd Data display control apparatus, a data transmission apparatus, and a data display control information editing apparatus
US6173317B1 (en) * 1997-03-14 2001-01-09 Microsoft Corporation Streaming and displaying a video stream with synchronized annotations over a computer network
US6269475B1 (en) * 1997-06-02 2001-07-31 Webgain, Inc. Interface for object oriented programming language
US6292827B1 (en) * 1997-06-20 2001-09-18 Shore Technologies (1999) Inc. Information transfer systems and method with dynamic distribution of data, control and management of information
US6208665B1 (en) * 1997-08-25 2001-03-27 Intel Corporation Data synchronization unit for a headend
US6031584A (en) * 1997-09-26 2000-02-29 Intel Corporation Method for reducing digital video frame frequency while maintaining temporal smoothness
US6502137B1 (en) * 1997-10-09 2002-12-31 International Business Machines Corporation System and method for transferring information over a computer network
US6181713B1 (en) * 1997-10-27 2001-01-30 Sun Microsystems, Inc. Selectable depacketizer architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0718761A1 (en) * 1994-12-20 1996-06-26 Sun Microsystems, Inc. A platform independent object and object viewer loader and method
WO1997026596A1 (en) * 1996-01-16 1997-07-24 British Telecommunications Public Limited Company Distributed processing
JPH09311781A (ja) * 1996-05-24 1997-12-02 Toshiba Corp プログラム開発支援方法およびシステム
JPH1091446A (ja) * 1996-07-03 1998-04-10 Sun Microsyst Inc Javaベースアプリケーションの発見とダウンロードのための分散オブジェクトシステムの利用

Also Published As

Publication number Publication date
US20120266160A1 (en) 2012-10-18
EP0967547A2 (en) 1999-12-29
US7185102B1 (en) 2007-02-27
JP2000105704A (ja) 2000-04-11
KR20000006395A (ko) 2000-01-25
JP4397460B2 (ja) 2010-01-13
EP1233335A3 (en) 2003-01-15
EP1233334A2 (en) 2002-08-21
EP1233335A2 (en) 2002-08-21
US8312167B2 (en) 2012-11-13
US6092120A (en) 2000-07-18
EP0967547A3 (en) 2003-01-15
EP1233334A3 (en) 2003-01-15
KR20020022044A (ko) 2002-03-23

Similar Documents

Publication Publication Date Title
KR100438143B1 (ko) 한 바이트 코드와 연속화 된 객체들 흐름을 적시에 공급하는 방법과 장치
JP4444510B2 (ja) トランスポート・ストリームに埋め込まれたバイトコードの配信のための方法およびその装置
US6530080B2 (en) Method and apparatus for pre-processing and packaging class files
US6480880B2 (en) Method and apparatus for automatically optimizing execution of a computer program
US6181713B1 (en) Selectable depacketizer architecture
US7069562B2 (en) Application programming interface for connecting a platform independent plug-in to a web browser
US6654765B2 (en) Method and apparatus for providing plug-in media decoders
US7644415B2 (en) Application programming interface to the simple object access protocol
US8099758B2 (en) Policy based composite file system and method
EP0834818B1 (en) System, method, apparatus and article of manufacture for identity based caching
EP1310868A2 (en) Method and apparatus for a platform independent plug-in
US20020174262A1 (en) Method and apparatus for dynamically brokering object messages among object models
US20040028049A1 (en) XML encoding scheme
US20030167320A1 (en) Registration service for registering plug-in applications with a management console
GCR Report on Interactive Television Technology & Standards

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130604

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140609

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150519

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 16

EXPY Expiration of term