KR20010006997A - 자바환경의 관리용이성과 유용성을 향상시키는 시스템 및방법 - Google Patents

자바환경의 관리용이성과 유용성을 향상시키는 시스템 및방법 Download PDF

Info

Publication number
KR20010006997A
KR20010006997A KR1020000020931A KR20000020931A KR20010006997A KR 20010006997 A KR20010006997 A KR 20010006997A KR 1020000020931 A KR1020000020931 A KR 1020000020931A KR 20000020931 A KR20000020931 A KR 20000020931A KR 20010006997 A KR20010006997 A KR 20010006997A
Authority
KR
South Korea
Prior art keywords
application
environment
java
subprocess
dependencies
Prior art date
Application number
KR1020000020931A
Other languages
English (en)
Other versions
KR100397589B1 (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 KR20010006997A publication Critical patent/KR20010006997A/ko
Application granted granted Critical
Publication of KR100397589B1 publication Critical patent/KR100397589B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • 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
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser

Abstract

본 발명은 자바환경의 관리용이성과 유용성을 향상시키기 위한 방법, 시스템 및 컴퓨터를 읽을 수 있는 코드를 제공한다. 각각의 특정한 단점들을 피하면서, 애플릿과 애플리케이션의 장점이 결합되어, 동작시 환경을 제공하는데 있어 모든 자바 프로그램이 브라우저에 의존하지 않고서도 실행될 수 있다. 애플리케이션뿐만 아니라 동작시 환경과 확장자들을 포함한 자바 구성요소들의 패키징을 향상시킬 수 있는 기법이 정의된다. 종속성들은 동적으로 위치확인되어 설치되는 방법으로 정의되고, 애플리케이션들간의 종속모듈들(동작시 환경을 포함하는)의 공유를 가능하게 한다. 종속성을 정의하는 기법은, 사용자의 수동설치를 요구하지 않고서도 모든 종속성 코드가 자동적으로 이용가능하게 되는 것을 보장한다. 애플리케이션에 필요한 동작시 환경이 정의되고, 사용자의 중재 없이도 사용될 수 있는(프로그램 단위로 동작시간을 변경할 수 있는 기능을 포함하는) 동작시간을 동적으로 변경할 수 있는 기법이 제공된다.

Description

자바환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법{SYSTEM AND METHOD FOR IMPROVING THE MANAGEABILITY AND USABILITY OF A JAVA ENVIRONMENT}
본 발명은 컴퓨터 시스템에 관한 것으로, 자바환경(java environment)의 관리용이성(manageability)과 유용성(usability)을 향상시키는 방법, 시스템 및 컴퓨터 독출 가능(computer readable) 코드(code)를 보다 특별히 다루고 있다.
자바는 선마이크로 시스템즈 주식회사(Sun Microsystems, Inc.)에서 개발된 견실성 있고(robust), 이식가능한(portable) 목적지향성(object-oriented) 프로그래밍언어이고, 인터넷과 월드와이드웹(World Wide Web)에 대한 코드를 작성하는데 널리 사용되고 있다. 대부분의 프로그래밍 언어에 대한 컴파일러(compiler)가 특별한 운영체계 환경에 대하여 코드를 생성하는 반면에, 자바는 "한 번 작성하면, 어디서든 동작한다"(Write Once, Run Anywhere)는 패러다임을 이용하여 프로그램을 작성할 수 있게 한다.("자바"와 "한 번 작성하면, 어디서든 동작한다"는 선마이크로 시스템을 대표하고 있다.)
자바는 특별히 고안된 가상머신(VM : Virtual Machine)의 사용을 통하여 이식성을 달성하고 있다. 이러한 가상머신은 자바가상머신(JVM : Java Virtual Machine)으로 달리 불리기도 한다. 가상머신은 자바 프로그래밍 명령어를 컴파일하는데 이용되는 컴파일러로부터 기층의 하드웨어의 상세부를 분리시킬 수 있다. 앞서의 상세부는 가상머신의 구현으로 제공이 되고, 리틀(little) 또는 빅(big) 엔디언 포맷(Endian Format)이 컴파일된 명령어들을 저장하는데 사용되는 지와 컴파일된 명령어의 길이 같은 것들을 포함한다. 이러한 머신기반의 상세부들은 컴파일된 코드 내에서 나타나지 않기 때문에, 코드는 다른 환경(다른 하드웨어 머신, 다른 운영체계)으로 옮겨질 수 있고, 코드변경 또는 재컴파일의 요구 없이도(따라서 "한 번 작성하면, 어디서든 동작한다"는 구호처럼) 다른 환경에서 실행 가능하다. 자바 바이트코드(bytecode)로 불리는 컴파일된 코드는 자바가상머신의 최상부에서 동작하며, 자바가상머신은 특정 운영환경에 적합하도록 만들 수 있다.
자바로 작성된 프로그램은 2개의 형태, 애플리케이션(application)과 애플릿(applet)을 가진다. 자바 애플릿은 웹페이지를 가진 사용자 머신으로 다운로드(download)되어 웹페이지를 보여주는 웹브라우저(Webbrowser)내에서 동작되는 것을 목적으로 하는 애플리케이션들이다. 자바가 1995년에 소개된 이후로, 짧은 시간동안 수많은 눈부신 변화들이 있어 왔다. 이러한 발전동안, 애플리케이션 대 애플릿의 사용에 대한 많은 장점들과 단점들이 드러나게 되었다.
애플리케이션과 애플릿간의 차이점 중의 하나가 자바 동작시 환경(runtime environment)에 있다.(동작시 환경은 자바 애플리케이션과 애플릿을 동작시키는데 필요한 수많은 파일과 클래스(class)뿐만 아니라 자바가상머신까지 포함한다. 이하, "자바가상머신"과 "동작시 환경"이라는 용어들은 달리 언급하지 않는 한 상호 같은 뜻으로 사용될 것이다.) 자바가상머신의 고유 레벨인 포애플릿(foapplet)은 브라우저의 부여된 버전내에 존재한다. 언어의 변화에 보조를 맞추어 자바가상머신 레벨을 향상시키기 위해서는, 브라우저의 새로운 버전이 설치되어야만 한다. 브라우저의 새로운 레벨이 클라이언트 머신에 설치됨에 따라, 개발자는 브라우저의 자바가상머신 레벨과 조화시키기 위해 자바코드를 재검파일하면서 갱신하고 유지하여야만 한다. 덧붙여, 자바언어의 발전은 자바레벨간에서 기능성(functionality) ("API"와 같은 특정 애플리케이션 프로그래밍 인터페이스)의 충돌을 가져왔다. 이것은 자바버전 1.0.2로 작성된 다애플릿(thaapplet)이 비록 자바버전 1.1에서 동작하는 반면에, 브라우저가 다음 버전인 자바 2를 채택한 경우 동작하지 않을 수도 있다는 것을 의미한다. 예전의 자바버전으로 작성된 애플릿을 변경 없이 계속 사용할 수 있기 위해서는, 예전의 자바가상머신 레벨이 사용되어야만 한다. 이러한 방법은 예전의 자바버전으로 작성된 애플릿을 동작시키는 문제를 해결하는 반면에, 개발툴은 예전 레벨의 코드생성 지원을 대개 중단하기 때문에 앞서의 브라우저 내에서 새로운 애플릿의 전개를 가능하게 하지 않는다. 더욱이, 기존의 브라우저 자바가상머신내의 결함들이 확인되면, 자바가상머신 개발자가 문제를 해결하는 것을 기다리는 대신에 애플릿 개발자들은 종종 임시 방편(work-arounds)을 만들어낸다. 일단 해결이 되더라도, 임시 방편은 애플릿내의 결함을 일으킬 수 있다. 덧붙여, 브라우저내의 자바가상머신 레벨이 현시점에서 발표된 자바가상머신 레벨보다 6개월에서 8개월 정도 뒤쳐지는 경향이 있기 때문에 브라우저의 최신판을 입수한다는 것이 반드시 자바가상머신 레벨의 최신판을 공급한다는 것을 의미하는 것이 아니다. 이것은 개발중인 애플릿이, 새로운 브라우저 내에서 이용가능한 것보다 더 새로운 자바가상머신 레벨을 이용하여 생성됨을 의미할 수 있다.
애플리케이션에 있어서, 대부분의 자바 애플리케이션들은 자바 동작시간의 레벨과 함께 묶이고, 이러한 것들은 자바 동작시의 필요한 레벨을 기술하지 않기 때문에, 동작시 환경을 바꾸는 것이 다루기에 보다 쉽다. 그러나, 동작시간을 애플리케이션과 함께 싣는다는 것은 동일한 자바가상머신 레벨의 수많은 복사본이 클라이언트에 설치될 수 있으며, 이것은 저장공간의 낭비를 초래할 수 있다는 것을 의미한다. 애플리케이션이 동작시간과 함께 묶이지 않을 때, 반면에 사용자는 정확한 자바가상머신이 설치되고 애플리케이션이 그 레벨을 사용하도록 설정되는 것을 확인할 책임이 있다. 자바 프로그램이 동작할 수 있도록 동작시간 레벨을 바꾸고, 모든 시스템 설정이 새로운 레벨에 적합하도록 확인하는 것은 현재의 환경을 실행하는 최종 사용자에게는 어려운 일이다. 이러한 문제에 대한 하나의 해결책은 여러 가지 자바 동작시간 레벨을 뛰어 넘어서 정확히 동작하도록 자바프로그램을 작성하는 것이다. 그러나, 이것은 개발자에게 매우 어려운 일이므로 실행 가능한 해결책은 아니다.
애플릿에 대한 동작시 환경에 있어 또다른 논쟁은 다른 벤더로부터의 브라우저가 특정한 자바가상머신 레벨을 어떻게 구축하느냐에 대한 차이이다. 오늘날 가장 일반적으로 사용되는 브라우저는 네스케이프 네비게이터(Netscape Navigator)와 인터넷 익스플로러(Internet Explorer)이다. 애플릿 개발자는 어떤 브라우저가 애플리케이션을 동작시키기 위해서 사용되는지를 예측할 수 없기 때문에, 좋은 개발 관행은 각 잠재적인 브라우저와 함께 애플릿을 테스트하기를 요구한다. 복수의 브라우저와 각 브라우저내의 자바가상머신(다른 운영체계 플랫폼(platform)상에서 브라우저의 구현을 테스트하는 경우는 물론)이 테스트 될 때, 애플릿을 테스트하는데 소요되는 시간은 급격히 증가하게 된다. 선 마이크로시스템즈는, 브라우저에 의해 제공되는 동작시 환경 대신에 선에 의해 제공되는 동작시 환경을 이용하여 애플릿이 실행될 수 있도록 하는 자바 플러그인(Plug-In)을 공급함으로써 브라우저 상호간의 차이점들(애플릿 실행에 유용한 최신 동작시 레벨을 만드는 방법을 제공하는)을 해결하고자 시도하여 왔다. 자바가상머신 레벨은 플러그인에 의해 제공되는 것들 가운데서 선택할 수 있다. 그러나, 이러한 방법은 사용자로 하여금 어느 것이 필요한 자바가상머신 레벨인지와 어떻게 그것을 선택하는지에 대한 이해를 요구한다. 덧붙여, 사용자가 다른 레벨을 선택할 때까지 플러그인은 여전히 단 하나의 자바가상머신 레벨을 제공하고, 따라서 자바가상머신 레벨과 관련되어 위에서 논의된 문제들을 해결하지 않는다.
애플리케이션에 있어서, 자바가상머신 구현상의 차이는 그것들을 다른 것과 명확히 구별한다. 대개, 운영체계 플랫폼당 각 자바가상머신 레벨이 단지 하나의 버전만 존재한다. 애플릿을 실행하는데 어느 브라우저가 사용될 것인지를 예측하는 것보다 애플리케이션이 어느 운영체계 상에서 동작될 것이지를 예측하는 것이 개발자에게는 더 용이할 것이다. 따라서, 테스트와 지원요구사항들은 애플릿보다 애플리케이션이 상당히 더 간단하다. 오류 수정과 관련된 동기(synchronization) 문제 뿐만 아니라, 애플리케이션 개발에 사용되는 자바가상머신 레벨과 애플리케이션 실행을 위해 사용되는 자바가상머신간의 동기 문제는 앞서 논의된 애플릿의 환경에 비하여 문제가 되지 않을 것 같다. 이것은 애플리케이션에 대한 개발과 동작시 환경의 양자가 동일한 벤더에 의해 공급될 것 같기 때문이다. 또한, 애플리케이션을 종래의 자바가상머신상에서 동작시키고자 할 때, 애플릿보다는 애플리케이션이 보다 덜 쉬운 문제가 된다. 애플리케이션 시나리오의 유일한 요구사항은 종래의 자바가상머신이 아직도 유용하냐는 것이다.
애플리케이션과 애플릿의 또 다른 중요한 차이점은 최종 사용자에 대한 사용상의 편의이다. 자바 브라우저는 사용자가 자바 애플릿을 동작시키는 것을 매우 용이하게 하는데, 애플릿에서 사용자는 브라우저를 지정하고, 버튼을 누르는 것 이상의 아무것도 할 필요가 없다. 사용자는 자바언어, 애플릿에 대해서 거의 알 필요가 없으며, 애플릿이 호출되고 있다는 것조차 인식할 필요가 없다. 따라서, 사용자는 자바 애플릿을 어떻게 동작시키는지에 관해서 훈련받을 필요가 없으며, 이로써 시간과 돈을 절약할 수 있다. 자바 애플리케이션(예를 들어, 브라우저 밖에서 자바 프로그램을 동작시키는 것)을 동작시키는 것은 상당히 복잡하다. 자바 애플리케이션은 선 마이크로시스템즈 제품인 자바개발키트(Java Development Kit; JDK)와 같은 개발 툴킷으로부터 동작시킬 수 있고, 마찬가지로 애플리케이션은 "JRE"(Java Runtime Environment)제품을 이용하여 동작시킬 수 있을 것이다. JRE는 JDK의 하나로서, 애플리케이션 실행에 요구되는 기능을 제공한다. JRE를 사용할 때, 명령 라인으로부터 프로그램은 실행된다. JDK 또는 JRE 중 어느 하나에서 애플리케이션을 실행시킨다는 것은 자바 언어와 환경에 대한 상당한 양의 지식을 요한다. 예를 들면, 링크된 라이브러리(library)경로와 클래스 경로가 바르게 설정되어야 하고, 이것은 각기 다른 응용 프로그램에 따라 변할 수 있다. 특정 애플리케이션을 동작시키는데 많은 종속된 것들이 필요할 수 있다. 예를 들어, 애플리케이션이 스윙(Swing) 사용자 인터페이스 요소들과 같은 자바 확장자(Jave extension)를 이용한다면 스윙 라이브러리가 이용가능 하여야만 한다. 확장에 필요한 코드가 미리 사용자의 머신에 설치되어 있지 아니하다면, 보통의 사용자가 코드를 확인하여 설치(예를 들어, 클래스 로더(loader)가 코드를 찾을 수 있게 하기 위해 필요한 변수를 세팅하는 것을 포함하는)를 수행하는 것이 어려울 수 있다. 또한, 사용자는 프로그램 실행을 위해 JDK 또는 JRE를 어떻게 동작시키는지를 이해하여야만 한다. 자바 개발자가와 시스템 관리자가 이러한 형태의 정보를 당장 이해하고 있는 반면에, 프로그램을 단순히 실행하고자 하는 보통의 최종 사용자에게 앞서의 책임을 지우는 것은 타당하지 않다.
브라우저 구현상의 차이로 인한 몇 가지 문제들이 논의가 되었다. 추가로 제기되는 2가지 문제점들은 보안기능의 지원과 아카이브(archive) 형식상의 차이이다. 보안기능은 브라우저에 의해 제공되는 보안 API를 불러옴으로써 애플릿에서 이용된다. 오늘날 사용되는 주요한 브라우저는 다른 보안 API들을 가지고 있다. 이것은 애플릿 개발자로 하여금 브라우저간에 서로 다른 보안코드를 작성하게 만듦으로써, 애플릿 코드 제공비용을 증가시켰다. "캡(cabinet; CAB)" 파일 형식이 인터넷 익스플로러 브라우저에 대한 파일들을 배포하고 아카이브(archive) 하는데 사용되는 반면에, "자알(Java archive; JAR)" 파일형식은 재플릿(Japplet) 파일들을 배포하고 아카이브하는데 사용된다.
따라서, 현재의 자바환경 내의 이러한 단점들을 극복할 수 있는 기법들이 요구되고 있다. 이상적으로는, 애플릿의 장점과 애플리케이션의 장점이 결합되어, 각각의 단점을 극복할 수 있어야 한다. 본 발명은 이러한 문제를 해결할 수 있는 새로운 방법을 규정할 것이며, 이것은 보다 사용하기 쉽고 더 적은 비용으로 제공할 수 있는 프로그램이 될 것이다.
본 발명의 목적은 현재의 자바 환경내의 단점을 극복할 수 있는 기법을 제공하는 것이다. 본 발명의 또 다른 목적은 애플릿의 장점과 애플리케이션의 장점이 결합되어 각각의 단점을 피할 수 있는 기법을 제공하는 것이다.
본 발명의 다른 목적은 자바 프로그램에 대한 동작시 환경 중에서, 프로그램 단위로 동적으로 스위칭할 수 있도록 하는 기법을 제공하는 것이다. 본 발명의 다른 목적은 사용자로 하여금 다른 동작시 환경 가운데서, 쉽게 스위치할 수 있도록 하는 기법을 제공하는 것이다.
본 발명의 목적은 어떤 동작시 환경이 필요한가를 포함해서, 자바 애플리케이션의 종속성을 정의하는 기법을 제공하는 것이다. 본 발명의 또 하나의 목적은 위치확인정보의 정의를 요구하지 않고도 종속성이 자동적으로 위치확인되고, 다운로드 되어 설치되도록 하는 기법을 제공하는 것이다.
본 발명의 다른 목적들과 장점들은 발명의 상세한 설명과 도면에서 일부 설명될 것이며, 일부는 발명의 상세한 설명으로부터 자명하거나 또는 발명의 실시로부터 알 수 있다.
앞서의 목적을 달성하기 위해서 이후에 폭넓게 기술되는 발명의 목적에 따라서, 본 발명은 망접속 가능한 컴퓨터 환경에서 이용될 수 있고, 자바환경의 관리용이성과 유용성을 향상시킬 수 있는 방법, 시스템, 컴퓨터 독출 가능 (computer-readable) 코드를 제공한다. 자바 애플리케이션에 대한 수많은 속성을 규정하는 데 있어서, 속성들은 애플리케이션과 애플리케이션을 실행하는 데 필요한 0 또는 그 이상의 확장자를 기술하고 있고, 애플리케이션의 식별과 함께 규정된 속성을 저장하는 것으로 이러한 기법은 이루어져 있다. 이러한 기법은 나아가 저장된 속성들을 이용하여 클라이언트 머신상에 애플리케이션을 설치하는 것을 포함한다. 애플리케이션을 설치하는 것은 하나 또는 그 이상의 애플리케이션 종속성을 설치하는 것과 클라이언트 머신상에 애플리케이션에 대한 자바 아카이브 파일을 설치하는 것으로 이루어져 있으며, 종속성은 필요한 확장자와 동작시 환경으로 이루어진다. 이러한 종속성 설치는 종속성의 위치를 확인하는 속성들을 분해하고, 각각의 속성이 클라이언트 머신상에 이미 설치되었는지를 결정하는 것과 미리 설치되어 있지 아니할 때 위치확인된 종속성을 검색하고 설치하는 것들을 더 포함한다. 선택적으로, 이러한 기법은 하나 또는 그 이상의 종속성을 설치하는 동작에 앞서 애플리케이션에 대한 저장된 속성의 최신 버전을 호출하는 것을 더 포함할 수 있다. 하나 또는 그 이상의 종속성을 설치하는 것은 상기의 검색과 설치에 이용되는 위치확인을 동적으로 검색하는 것을 더 포함할 수 있다. 그 기법은 속성에 대응하는 클라이언트 머신상에서 등록파일(registry file)을 생성하는 것을 포함할 수 있다. 이러한 관점에서, 그 기법은 클라이언트 머신상에서 선택된 애플리케이션을 실행하는 요구를 수신하고, 대응하는 등록파일을 이용하여 선택된 애플리케이션에 대한 적절한 동작시 환경을 구축하고, 구축된 환경내에서 선택된 애플리케이션의 실행을 시작하는 것을 포함한다. 구축과정은 애플리케이션에 대한 현재의 종속성을 결정하기 위해서 해당 등록파일을 읽어내고, 선택된 애플리케이션의 현재 종속성들의 각각이 설치되었는지를 확인하고, 현재의 동작시 환경에 대한 적절한 환경변수를 설정하고, 현재 요구되는 확장자에 대한 적절한 환경변수를 설정하는 것을 포함하며, 현재의 종속성을 결정함에 있어서 현재의 종속성은 현재 요구되는 확장자와 애플리케이션에 대한 현재의 동작시 환경으로 이루어져 있다. 선택적으로, 그 기법은 등록파일내의 현재의 동작시 환경을 갱신하고 등록파일내의 현재 요구되는 확장자를 갱신하는 것을 포함할 수 있다. 또한, 그 기법은 해당 등록파일을 이용하여 선택된 애플리케이션의 하나 또는 그 이상의 매개변수를 설정하는 것을 포함하고, 등록파일내의 매개변수 갱신을 제공할 수 있다.
도 1은 본 발명이 실시될 수 있는 컴퓨터 워크스테이션 환경의 블록도.
도 2는 본 발명이 실시될 수 있는 망접속의 컴퓨터 환경을 도시한 도면.
도 3은 속성들을 자바 애플리케이션과 결합시키고 향후 사용을 위해서 속성들을 저장하는 것을 기술하는 본 발명의 바람직한 실시예를 도시한 도면.
도 4a는 본 발명에서 사용되는 속성정보에 관한 설계를 도시한 도면이고, 도 4b는 특정 응용 프로그램에 관하여 앞서의 설계를 사용한 예를 기술한 도면.
도 5a와 5b는 응용 프로그램에 관한 종속성을 위치확인하고 설치하기 위하여 바람직한 실시예에서 사용되는 로직과 클라이언트의 컴퓨터 상에서 응용 프로그램에 대한 Jobbi 파일을 설치하기 위하여 바람직한 실시예에서 사용되는 로직을 도시한 도면.
도 6a는 본 발명에서 사용되는 등록파일의 설계를 규정한 도면이고, 도 6b는 특정 응용 프로그램에 대하여 앞서의 설계를 사용한 예를 기술한 도면.
도 7은 응용 프로그램이 클라이언트 컴퓨터 상에서 시작될 때, 바람직한 실시예에서 호출되는 로직을 서술한 도면.
도 8은 응용 프로그램이 설치된 후에 동작시 정보가 갱신되는 로직을 기술한 도면.
<도면의 주요부분에 대한 부호의 설명>
10 : 컴퓨터 워크스테이션
40 : 데이터 처리망
400 : 파일설계
500 : 종속성 설치 로직
600 : 파일 포맷
도 1은 본 발명이 실시되는 대표적인 워크스테이션(workstation) 하드웨어 환경을 예시하고 있다. 도 1의 환경은 관련된 주변장치를 포함해서 개인용 컴퓨터와 같은 대표적인 1인용 사용자 컴퓨터 워크스테이션(10)으로 구성되어 있다. 워크스테이션(10)은 마이크로프로세서(12)와 버스(14)를 포함하고, 버스는 이미 공지된 기술에 따라서 마이크로 프로세서(12)와 워크스테이션(10)의 구성요소들간을 연결하고 통신을 가능하도록 하기 위해서 사용된다. 워크스테이션(10)은 사용자 접속 어댑터(16)를 대개 포함하고 있으며, 이것은 버스(14)를 통하여 마이크로 프로세서(12)를 하나 또는 그 이상의 접속장치(예를 들어, 키보드(18), 마우스(20) 또는 다른 접속장치(22))에 연결한다. 여기서 접속장치는 접촉식 인식 스크린(touch sensitive screen), 디지털식 엔트리 패드(digitized entry pad) 등과 같이 어떤 사용자 접속장치도 가능하다. 따라서, 버스(14)는 표시 어댑터(26)를 통하여 LCD 스크린 또는 모니터와 같은 표시장치(24)를 마이크로 프로세서(12)에 연결한다. 버스(14)는 마이크로 프로세서(12)를 메모리(28)와 장기간 저장장치(30)(하드 드라이브, 디스켓 드라이브, 테이프 드라이브 등을 포함)에 연결한다.
워크스테이션(10)은 다른 컴퓨터 또는 컴퓨터 통신망(예를 들어, 채널 또는 모뎀(32)을 통하여)과 통신할 수 있다. 마찬가지로, 워크스테이션(10)은 셀룰러 디지털 패킷 데이터(Cellular Digital Packet Data; CDPD) 카드와 같은 무선접속(32)을 사용하여 통신할 수 있다. 워크스테이션(10)은 근거리망(Local Area Network; LAN) 또는 원거리망(Wide Area Network; WAN)내의 다른 컴퓨터와 결합하거나 또 다른 컴퓨터를 포함하는 클라이언트/서버 배치 내에서 클라이언트가 될 수도 있다. 적절한 통신 하드웨어와 소프트웨어뿐만 아니라, 이러한 배치 모두는 당해 기술분야에서는 공지된 사실이다.
도 2는 본 발명이 실시될 수 있는 데이터 처리망(40)을 예시한다. 이러한 데이터 처리망(40)은 무선망(42)과 같은 다수의 개인망을 포함할 수 있으며, 각각의 개인망은 다수의 개인 워크스테이션을 가질 수 있다. 또한, 당해 기술분야의 당업자는 통신망이 하나 또는 그 이상의 근거리망을 포함하고, 여기서 근거리망은 호스트 프로세서와 결합된 다수의 워크스테이션으로 구성됨을 인식할 수 있다.
도 2에서, 통신망(42, 44)은 게이트웨이 컴퓨터(46) 또는 애플리케이션 서버(47)와 같은 메인프레임(main frame) 컴퓨터 또는 서버들을 역시 포함할 수 있다. 게이트웨이 컴퓨터(46)는 각 통신망(44)으로의 접속점으로서 동작할 수 있다. 또한, 게이트웨이(46)는 통신링크(50b, 50c)를 통하여 하나 또는 그 이상의 워크스테이션(10)과 직접 결합될 수 있다. 게이트웨이 컴퓨터(46)는 IBM이 공급하는 Enterprise Systems Architecture/370 또는 Enterprise Systems Architecture/390을 이용하여 구현할 수 있다. 애플리케이션에 따라서, Application System/400과 같은 중형컴퓨터가 사용될 수 있다.
게이트웨이 컴퓨터(46)는 저장장치와 결합될 수 있다(46). 또한, 게이트웨이 (46)는 하나 또는 그 이상의 워크스테이션(10)과 직접 또는 간접적으로 결합될 수도 있다.
당해 기술분야의 당업자는 게이트웨이 컴퓨터(46)가 통신망(42)으로부터 지리적으로 멀리 위치하고, 워크스테이션(10)이 통신망(42, 44)으로부터 상당히 떨어져 위치할 수 있음을 인식할 수 있다. 예를 들어, 게이트웨이(46)가 텍사스에 있고, 하나 또는 그 이상의 워크스테이션(10)이 뉴욕에 있는 반면에, 통신망(42)은 캘리포니아에 위치할 수 있다. 워크스테이션(10)은 전송제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protocol; TCP/IP)을 써서 IP, X.25, 프레임 릴레이(Frame Relay), 종합정보통신망(Integrated Services Digital Network; ISDN), 공중교환전화망(Public Switched Telephone Network; PSTN) 등을 통하여 게이트웨이(46)에 접속할 수 있다. 워크스테이션(10)은 다이얼접속(50b, 50c)을 통하여 게이트웨이(46)에 직접 접속될 수도 있다. 또한, 무선망(42)과 통신망(44)은 하나 또는 그 이상의 다른 망과 도 2에서 도시된 것과 유사한 방법으로 접속될 수 있다.
본 발명을 구현하는 소프트웨어 프로그래밍 코드는 대개 워크스테이션(10)의 마이크로 프로세서(12)와 서버(47)에 의해 접근(access) 가능하다. 소프트웨어 프로그래밍 코드는 디스켓, 하드 드라이브, CD-ROM과 같은 데이터 처리 시스템과 함께 이미 알려진 여러 매체 중 어느 것에서도 구현할 수 있다. 코드는 그러한 매체상으로 배포되거나, 통신망을 통하여 메모리 또는 컴퓨터 시스템내의 저장장치로부터 사용자에게 배포될 수 있다. 또한, 프로그래밍 코드는 메모리(28)내에서 구현되어, 버스(14)를 써서 마이크로 프로세서(12)에 의해 접근 가능하다. 메모리 내에서 소프트웨어 프로그래밍코드를 구현하고, 통신망을 통하여 소프트웨어 코드를 배포하는 기술들과 방법들은 잘 알려져 있고, 이하 더 이상 논의되지 않을 것이다.
본 발명의 사용자는 유선접속 또는 무선접속을 통하여 컴퓨터를 서버에 접속시킨다. 유선접속은 케이블(cable), 전화선과 같은 물리적 매체를 사용하는 것들인 반면에, 무선접속은 위성링크, 무선주파수파(radio frequency wave), 적외선과 같은 매체를 사용한다. 많은 접속기술들이 다양한 매체와 함께 사용된다. 예를 들어, 전화선을 통하여 접속을 설정하는 컴퓨터 모뎀을 사용하는 방법, 토큰 링(Token Ring) 또는 이더넷(ethernet)과 같은 근거리망 카드를 사용하는 방법, 무선접속을 설정하는 셀룰러 모뎀을 사용하는 방법 등이 있다. 사용자 컴퓨터는 랩탑(laptop), 이동용 컴퓨터 등의 컴퓨터 프로세서와 차량탑재용 장치, 탁상용 컴퓨터, 메인프레임 컴퓨터 등의 어느 한 가지 타입이 될 수 있다. 원격 서버도 마찬가지로 프로세싱과 통신능력을 갖춘 컴퓨터의 수많은 형태 중의 하나가 될 수 있다. 이러한 기술들은 당해 기술분야에서는 잘 알려져 있고, 하드웨어 장치 및 소프트웨어는 쉽게 구할 수 있다. 이하, 사용자 컴퓨터는 워크스테이션, 장치 또는 컴퓨터로서 같은 의미로 불릴 것이고, 이러한 용어의 사용은 앞서 기술된 컴퓨터 장치중의 어느 한 가지 형태를 의미하는 것이 된다.
바람직한 실시예에서, 본 발명은 컴퓨터 소프트웨어 프로그램으로서 구현된다. 통신망 접속이 가능한 것으로 가정하고, 이는 사용자 워크스테이션으로의 로딩소프트웨어가 호출될 때 동작할 수 있어야 한다. 바람직한 실시예에서, 본 발명은 하나 또는 그 이상의 모듈들(객체지향 프로그래밍에서는 코드 서브루틴(subroutines) 또는 객체로 불리는)로서 구현된다. 클라이언트 컴퓨터가 접속된 서버는 웹서버로서 동작할 수 있고, 여기서 웹서버는 인터넷을 통하여 접속된 클라이언트로부터의 요구에 응답하여 서비스를 제공한다. 또한, 서버는 클라이언트 워크스테이션이 일부를 이루는 인터넷 또는 엑스트러넷(extranet)내에 위치할 수 있다. 비록 TCP/IP 상에서 동작하는 HTTP(Hyper Text Transfer Protocol)가 이러한 메시지 흐름을 설명할 때 예로서 사용되더라도, 본 발명은 클라이언트와 서버간에 메시지 또는 파일을 전송하는데 사용되는 통신프로토콜과 독립해서 동작한다.
본 발명의 바람직한 실시예는 도 3으로부터 도 8을 참조하여 보다 자세히 논의될 것이다.
도 3은 본 발명의 바람직한 실시가 속성들을 자바 애플리케이션과 결합시키고, 향후 사용을 위해서 그러한 속성들을 저장하는 기술을 예시한다. 본 발명에서 정의된 속성정보의 형식과 특정 애플리케이션에 대한 이러한 정보의 사용의 예가 도 4a와 4b에 각각 나와 있다.
도 3에 나와 있는 속성정의(property definition) 프로세스는 애플리케이션 개발자에 의해 실행되는 독자적인(stand-alone) 프로세스이며, 애플리케이션 개발과정에서 개발자가 사용하는 통상의 애플리케이션 구축 프로세스(build process)로 통합될 수 있다. 블록(300)은 개발자가 이러한 통상의 구축 프로세스를 실행하고, 이것은 당해 기술분야에서 공지된 기술을 사용하는 것임을 표시한다. 이러한 구축 프로세스의 출력은, 블록(305)에서 표시된 대로 "JAR"로 알려진 자바 아카이브(Java Archive) 파일이 된다. 본 발명은 JAR 파일 내용을 변경시키지 않는다. 블록(310)은 호출되고 있는 "Jobbi 패키저(packager)"를 나타내고 있다. 이러한 패키징(packaging) 단계는 블록(320, 325)에서 보다 자세히 예시된다. 블록(320)에서는 개발자가 애플리케이션의 요구사항에 대한 지식을 이용하여 애플리케이션의 속성값을 규정한다. 이러한 속성들은 도 4를 참조하여 아래에서 보다 상세히 기술될 애플리케이션 종속성, 동작시간 요구조건 등을 포함한다. Jobbi JAR 파일로 칭하는 새로운 JAR 파일이 블록(325)의 결과로 생성된다. 이러한 Jobbi JAR 파일은 주된 흐름인 블록(315)에서 기술된 바와 같이 기존의 JAR파일이 저장되는 방법과 동일하게 향후 사용을 위해 아카이브의 형태로 저장된다. 도 3에서 보는 바와 같이, 블록(315)에서 아카이브로 저장될 Jobbi JAR 파일은 애플리케이션(요소(330)에 표시된 바와 같이)에 대한 공지기술에 따라 생성된 JAR 파일과 Jobbi 속성정보(요소 335에 의해 표시되는) 역시 포함한다. 이러한 아카이브로부터, 자바환경에서 애플리케이션을 동작시키는데 필요한 모든 정보는 이용가능하다.(도 3은 기존의 아카이브 데이터(330)와 Jobbi 정보(335)를 함께 저장하는 것을 나타내지만, 이것은 사용가능한 단순히 하나의 기술에 지나지 않음을 주목하여야 할 것이다. 또한, Jobbi 속성이 아카이브된 애플리케이션 정보와 함께 결합되는 한 정보의 이러한 두 가지 타입은 본 발명에서 벗어나지 않고도 분리하여 저장될 수 있다. 이러한 결합은 포인터(pointer) 또는 JAR 파일내의 다른 참조(reference)를 사용함으로써 구현될 수 있고, 이것은 결합된 Jobbi 속성파일을 확인하거나 그러한 포인터 또는 참조가 Jobbi 속성 파일에 저장되어 JAR 파일을 다시 포인팅하게 된다.)
또 다른 실시예에서는, 블록(310, 320, 325)에서 기술된 동작들이, 본 발명의 기술적 사상에서 벗어나지 않고도 통상의 구축 프로세스의 동작과 JAR 파일의 생성으로부터 분리될 수 있다. 이러한 다른 기법이 사용될 때, 블록(305)에서 생성된 JAR 파일은 오늘날의 기술로도 저장될 수 있다. 속성정보가 애플리케이션에 대하여 이어서 생성될 때, 애플리케이션에 대하여 저장된 JAR 파일은 위치확인이 되고, 속성정보는 도 3을 참조하여 기술된 대로 결합되거나 저장될 것이다.
도 4a는 본 발명의 바람직한 실시예로서 속성정보와 파일 설계(layout)(400)를 규정한다. 설계(400)는 도 4b의 예(450)를 참조하여 설명되고, 이것은 가정적(hypothetical) 애플리케이션에 대한 속성정보를 예시하고 있다. 이 설계에서 정의된 속성정보는 애플리케이션뿐만 아니라, 자바 동작시간과 확장자를 패키징하는 표준화된 수단을 제공한다. 정보의 다른 형태들이 패키지화된 각 타입에 해당한다. 속성값의 9가지 다른 형태가 설계에서 요소들(405, 410, 415, 420, 425, 430, 435, 440, 445)에 나와 있다.(9개의 이러한 형태의 정보가 바람직한 실시예에서 사용되지만, 지금까지 게시된 발명의 사상에서 벗어남이 없이 부가적으로 또는 다른 값을 적절히 세팅할 수 있음은 통상의 기술로서도 자명하다. 또한, 앞서의 속성들 대신에 다른 이름들도 사용가능하며, 엔트리(entries)의 순서도 바뀔 수 있다.)
속성파일내의 정보 중 일부는 애플리케이션, 동작시간 또는 확장자를 기술하고 있고, 다른 정보들은 종속성(dependencies)을 기술한다. 각각의 개별 엔트리에 관해 이제 논의하기로 한다. 첫 번째 요소(405)는 애플리케이션에 사용되는 표시명(display name)이다. 표시명은 예를 들어 사용자가 애플리케이션을 호출하는 데 사용되는 아이콘(icon)을 표시하는데 사용될 수 있다. 가정적 애플리케이션 "X1"에 있어서, 도 4b의 요소(455)에 표시된대로 표시명 엔트리는 459에 나와 있다. 속성명이 첫 번째로 나타나고, 여기서는 "displayname"이다. 속성값이 "x1 display name"으로 표시된다. 속성파일내의 다음 엔트리(480)에 대하여, 이는 "Y1"로 이름 붙여진 동작시간에 해당하며, 표시명(481)은 "y1"로 예시되어 있다.(도 4b의 예에서, 등호 사인(equal sign)은 속성명을 그 값으로부터 분리시키는 데 사용된다. 이것은 단순히 하나의 분리자(separator)이다.) 속성 엔트리(408)는 애플리케이션 파일에 사용되는 표시 아이콘을 규정하고, 그 예가 460에 예시되어 있다. 이 엔트리의 값은 아이콘이 이미지, 비트맵 등으로 저장될 파일명이 될 것이다. 이러한 속성값 내에서, "|" 문자가 경로 분리자를 표시하기 위해 바람직한 실시예에서 사용되고, 요소(460)의 경로정의 "images|hod.gif"에서 사용되어 왔다.(이러한 "|"기호는 레지스트리 설치시에 클라이언트 머신으로 대체될 것이며, 여기에 관해서는 도 6을 참조하여 아래에서 논의될 것이다.)
다음 속성(410)은 패키지된 아이템의 버전에 관한 것이다. 바람직한 실시예에서는, 이러한 정보는 메이저(major), 마이너(minor), 재개정(revision), 버전완성번호를 포함하는 콤마분리(comma-separated) 목록으로 정의된다. 이러한 버전정보는 속성정보에 관계된 애플리케이션의 버전, 동작시간 또는 확장자를 식별한다. 도 4b의 애플리케이션(X1)에 대하여, 버전의 문장구성이 요소(461)에 나와 있다. 동작시간(Y1)에 대한 버전은 482에 나와 있다. 바람직한 실시예의 콤마분리 목록 외의 버전 문장구성(syntax)은 특정 애플리케이션에서 사용되는 문장구성과 대응시키기 위해 사용될 수 있다.
속성엔트리(415)는 속성파일내에서 이러한 엔트리로 기술되고 있는 정보의 형태를 식별한다. 그 형태는 애플리케이션, 동작시간, 확장자가 될 수 있다. 도 4b의 462와 483에서 보는 바와 같이, 키워드(keyword) "애플리케이션"과 "동작시간"이 사용된다. 마찬가지로, 패키지에 수치(0부터 2까지의)를 할당하는 것과 같은 형태를 전달하기 위해서 다른 기법들이 사용될 수 있다.
패키지된 아이템의 위치형태는 속성엔트리(420)를 사용하여 정의된다. 위치형태(420)는 위치엔트리(425)와 함께 사용된다. 도 4a에서 기술된 대로, 위치형태는 아카이브된 패키지 아이템이 검색되는 망위치를 규정하는 URL(Uniform Resource Locator)이 될 것이다. URL을 사용하는 예가 요소(484)(형태가 "URL" 키워드를 써서 식별됨)와 요소(485)(URL예가 정의되는)에 나와 있다. 위치타입(420)은 파일일 수 있고, 위치(425)가 파일이 위치하는 디렉토리 구조에 대한 정보를 정의한다. 파일위치를 사용하는 예가 도 4b의 요소(463, 464)에 나와 있다. 464에서 보여지는 위치의 예에서는, 특수문자 "."가 아카이브된 정보가 현재 JAR 파일내에 있음을 지시하기 위해서 사용된다. 그러한 경우, 속성파일내에 위치값(425)을 정의할 필요가 없다.(바람직한 실시예에서는 이러한 상황, 특수키워드가 사용되는 다른 기법들을 나타내기 위해서 특수문자를 사용하는 반면에) JAR 파일내에 아카이브된 정보를 참조할 때, JAR 파일내에서 정보를 유일하게 식별하는 고유식별자 "UID"가 사용될 수 있다. 위치타입(420)은 위치가 동작시에 동적으로 결정되는 것을 의미하는 "Jobbi 검색서버(lookup-server)"로 정의될 수 있다. 이 경우에 있어, 위치값(425)은 빈(empty) 것으로 남겨진다. 위치(425)는 428에 나와 있는 대로, 키워드 "프람프트(prompt)"로 정의된다. 이 경우, 사용자는 위치정보를 입력하도록 요구된다.(바람직한 실시예에서는, 속성타입에 대한 키워드는, 그 값이 비었을 때 관련값 없이 분리자 문장구성에 앞서는 속성파일에 나타난다.) 엔트리(415)를 참조하여 기술된 바와 같이, 수치와 같은 보다 짧은 식별자가 엔트리(420)의 키워드 대신에 사용될 수 있다.
속성 엔트리(430)는 아카이브된 패키지 아이템이 본래의 코드를 포함하고 있는지를 상술한다. 이러한 엔트리(430)는 엔트리(435)에 연결되어 사용되며, 엔트리(435)는 엔트리(430) 값이 "참(true)"일 때 본래 코드플랫폼(native code platform)의 스트링식별자를 정의한다. 이러한 엔트리를 사용하는 예들이 요소(465, 466)에 나와 있고 여기서 플랫폼값은 거짓(false)이고, 요소(486, 487)에서 플랫폼값은 참이다.
이러한 패키지 아이템에 대한 종속성은 속성엔트리(440)를 사용하여 정의된다. 바람직한 실시예에서는, 종속성 문장구성은 패키지 아이템이 어떠한 고유플랫폼상에서도 동작할 수 있도록 설치되는 코드에 대한 UID의 콤마분리목록을 사용한다. 종속성이 없다면, 이런 속성값은 빈 것으로 남겨질 것이다. 요소(467)는 종속성정보의 예를 보여주고, 2개의 식별자 "x2"와 "y1"이 열거된다. 요소(470, 480)에서 보듯이, 속성정보는 이러한 종속성에 대하여 제공될 수도 있다. 요소(488)는 예시시간(example-time)(Y1)이 종속성을 갖지 않음을 표시한다. 아카이브된 패키지내에 종속성을 정의함으로써, 패키지를 설치하고 사용하는 데 필요한 모든 자바특유(Java-specific)의 정보는 사용가능하다. 예를 들어, X1(도 4b의 요소(455)를 참조)과 같은 애플리케이션은 467에서 필요로 하는 동작시 환경(Y1)을 규정한다.
속성엔트리(445)는 바람직한 실시예의 최종엔트리를 정의하고, 이것은 메인 함수를 포함하는 클래스의 자바클래스명이다. 패키지 아이템이 애플리케이션이면, 이러한 엔트리는 빈 값(empty value)을 가진다. 이러한 엔트리에 대해 열거된 값은 애플리케이션을 시작하기 위해 동작시에 사용될 것이다. 요소(468)에서 애플리케이션(X1)에서 보는 바와 같이, 이 애플리케이션에 대한 메인함수는 "com.ibm.X1" 클래스에 위치한다.
도 5a는 응용 프로그램에 대한 종속성을 위치확인하고 설치하기 위해서 바람직한 실시예에서 사용되는 로직(logic)을 나타내고 있으며, 도 5b는 클라이언트의 컴퓨터상에 응용 프로그램에 대한 Jobbi JAR 파일을 설치하기 위하여 사용되는 로직을 보여준다. 500에 기술된 대로, 종속성설치 로직은 클라이언트의 컴퓨터 상에서 동작한다. 이러한 로직은 애플리케이션의 종속성이 설치되는 것을 확인하기 위해 독자적인(stand-alone) 방법으로 호출될 수 있다. 마찬가지로, 도 7의 블록(730)과 관련하여 아래에서 논의되는 바와 같이, 애플리케이션의 실행 중에 호출될 수 있다. 특정 애플리케이션에 대한 종속성의 설치는 블록(505)에서 요구된다. 바람직한 실시예에서는, HTTP 요구가 웹서버(510)로 보내지고(506), 웹서버(510)는 Jobbi JAR 파일들(515, 516, 517 등)을 저장하고, 이러한 파일들은 도 3과 관련되어 기술된 기법을 이용하여 생성된다. 이러한 HTTP 요구는 요구된 애플리케이션에 대한 고유식별자(unique identifier)를 정의한다. 관련 Jobbi JAR 파일은 웹서버(510)에 의해 위치확인이 되어, 클라이언트 머신으로 다시 반환된다(507). 블록(520)은 이러한 파일이 클라이언트 머신에서 수신되어 블록(525)에서 이어서 처리되는 것을 표시한다. Jobbi JAR 파일의 처리는 블록(535, 540)에서 더 자세히 설명된다. 속성정보(도 4 참조)는 블록(505)에서 요구되는 애플리케이션에 대한 종속성을 위치확인하기 위해서 블록(535)에서 분석된다. 종속성정보가 추출될 때, 블록(540)은 종속 아이템이 설치되었는지의 여부를 검사한다. 이러한 검사과정은 흐름(541, 542, 543)에 표시된 3개의 결과를 가질 수 있다. 종속성이 이미 설치되었다면, 흐름(542)에 표시된 대로, 블록(530)에서 프로세싱이 계속된다. 만약, 종속성이 있고, 종속성의 위치가 알려지면 흐름(541)에 표시된 바와 같이 블록(505)으로 제어가 되돌아온다. 당해 기술분야의 통상의 기술로서는 자명한 사실로서, 이것은 종속성설치과정의 반복되는(recursive) 호출이다. 이러한 반복성 호출은 요구된 애플리케이션에 필요한 동작시간을 검색하는데 이용될 수 있다. 만약, 종속성이 필요하나 그 위치가 알려지지 않았다면(예를 들어, 속성엔트리(420) 값이 "Jobbi 검색 서버"로서 정의된다) 종속성의 고유식별자는 흐름(543)에 표시된 대로, 검색서버(545)로 보내질 것이다. 이러한 검색서버(545)는, 흐름(544)에 표시된 대로 관련 Jobbi JAR 파일위치를 클라이언트 머신으로 보낸다. 바람직한 실시예에서는, 반환된 정보가, 아카이브된 정보가 저장된 서버의 위치를 정의하는 URL이다. 종속성의 위치가 알려졌으므로, 종속성 설치 프로세스의 반복성 호출은 흐름(541)을 써서 호출된다. 종속성의 위치를 동적으로 결정하는 이러한 기법은, 위치정보가 통계적으로 미리 정의되는 현재의 기술에 비하여 본 발명이 매우 유연한 패키징을 제공할 수 있도록 한다.(유일한 웹서버(510)가 도 5a에 서술되나, 이것은 예시적인 것임을 주의하도록 하자. 하나 이상의 서버가 사용될 수 있고, 여기서 HTTP요구(506)가 URL을 이용하여 적절한 서버를 정의한다.)
블록(540)의 종속성검사 과정은 정의된 각각의 종속성에 대하여 되풀이될 것이다. 종속성이 이미 설치되었는지를 결정하는 것은 당해 기술분야에서 알려진 기법을 사용한다. 블록(535, 540)을 참조하여 기술된 바와 같이, 종속성이 완전히 처리된 이상, 제어는 블록(530)내의 주된 처리과정으로 반환되고, 507에서 검색된 Jobbi JAR파일은 클라이언트 머신상의 Jobbi 레지스트리로 설치된다. 이러한 과정이 도 5b에서 보다 자세히 기술된다.
클라이언트의 컴퓨터 상에서 응용 프로그램에 대한 Jobbi JAR파일을 설치하는데 이용되는 설치 프로세스는 도 5b의 블록(570)에서 시작되고, 애플리케이션의 JAR 파일은 Jobbi JAR 파일(두 가지 모두 함께 저장되어 있을 때; 도 3의 요소(315) 참조)로부터 추출되어 클라이언트 머신의 UID 디렉토리로 복사된다.(UID 디렉토리는 Jobbi 아카이브의 UID와 동일한 이름을 가진, 클라이언트 머신상에서 생성되는 디렉토리이다. 이어서 애플리케이션에 대한 환경을 설정할 때, 이러한 기법은 Jobbi 아카이브 정보를 찾는 것을 용이하게 한다. 마찬가지로, 다른 디렉토리 애플리케이션에 대한 아카이브된 정보를 저장하기 위해서 사용되는 디렉토리명을 등록파일(registry file)의 일부로서 저장하여야만 하는 경우에도 다른 디렉토리 명명방법(naming approach)이 사용될 수 있다.) 블록(575)은 Jobbi JAR 파일로부터 Jobbi 속성정보를 사용하고, 이러한 속성정보로부터 등록파일을 생성한다. 등록파일의 형식이 도 6에 기술되어 있고, 아래에서 보다 자세히 논의된다. 등록파일정보(580)는 클라이언트 머신에 대한 등록 디렉토리내의 블록(585)에 저장된다. 도 5b의 프로세스는 이어서 종료된다.
도 6a는 본 발명이 사용하는 등록파일의 설계(layout)(600)를 규정하고, 도 6b는 특정 응용 프로그램에 대하여 이러한 설계를 이용한 예(670)를 도시한 것이다. 속성파일은 수많은 플랫폼상에서 애플리케이션을 사용하는데 필요한 정보를 포함하는 반면, 레지스트리는 특정 클라이언트 머신상에서 애플리케이션의 사용에 관한 가공된 정보를 제공한다. 동작시, 등록정보(registry information)는 애플리케이션에 대한 적절한 환경을 구축하는데 이용될 것이다. 수많은 레지스트리 엔트리들은 도 5b의 블록(575)의 처리과정동안 속성파일정보로부터 직접 추출된다.(도 4의 속성파일설계를 참조하여 기술된 방법과 유사하게, 등록파일설계(600)는 바람직한 실시예를 기술하고, 애플리케이션, 동작시간 또는 확장자와 관계가 있다. 이러한 설계정보는 적절한 환경내에서 변경되거나 확장될 수 있고, 다시 재배열되거나 앞서 의 것들 대신에 다른 키워드가 사용될 수도 있다.)
레지스트리 엔트리(605)는 이러한 패키지의 고유식별자를 정의하며, 식별자는 어떤 유효한 스트링도 될 수 있다. 예를 들어, 난수발생기(random number generator)함수의 발생 또는 본 발명의 일부를 형성하지 않는 다른 기법들(사용자 입력을 포함)에 의해 식별자는 생성될 수 있다. 식별자 스트링의 예가 도 6b의 요소(671)에 나타나 있다.
레지스트리 엔트리(610)는 메인함수를 포함하는 자바 클래스를 정의하기 위해 사용된다. 이러한 정보는 속성파일이 애플리케이션의 파일이면, 도 5b의 블록(575) 처리동안 속성파일의 엔트리(445)로부터 추출된다. 이러한 엔트리(610)의 사용예가 도 6b의 요소(672)와 나와 있으며, 도 6b에는 특정 클래스 이름이 정의되어 있다. 레지스트리 엔트리(615)는 이러한 패키지의 표시명이며, 어떠한 표시가능한 스트링 값이 될 수 있다. 이러한 값은 속성 엔트리(405)로부터 추출되며, 요소(673)의 예(670)에서 예시되어 있다. 엔트리(620)는 애플리케이션 파일에 사용되는 표시 아이콘을 상술하고, 674에 그 예가 예시되어 있다. 이 엔트리 값은 아이콘이 이미지, 비트맵(bitmap) 등으로 저장되는 파일의 이름이 될 것이다. 도 6a의 하단에 있는 주석에서 보듯이, "|" 문자는 경로분리자(path separator)를 지시하기 위해 바람직한 실시예에서 사용되며, 요소(674)의 경로정의 "images|hod.gif"에 사용된다. 이러한 기호 "|"은 클라이언트 운영체계에 적절한 "\" 또는 "/" 문자를 사용하기 위해 레지스트리의 설치로 대체될 것이다. 엔트리(620)의 값은 속성 요소(408)로부터 추출된다.
클래스경로 환경변수(environment variable)에 포함될 필요가 있는 상대적(relative) 디렉토리 또는 아카이브 이름은 레지스트리 엔트리(625)를 사용하여 상술된다. 이러한 엔트리에 사용되는 값은 자동적으로 생성되고, 아카이브 패키지가 저장되는 클라이언트 머신의 파일시스템내의 위치이다. 예가 675에 나와 있다. 클라이언트 머신(도 6a에서 설명한대로)상의 레지스트리 설치시, 이러한 기호를 대체하기 위해 연결(concatenation)에 대한 플랫폼특유(platform-specific)의 기호가 사용됨을 지시하는데, 기호 "&"이 사용되어 왔음을 주목하자.
레지스트리 엔트리(630)는 패키지가 실행될 수 있는 동작시 환경의 고유식별자의 목록을 정의한다. 이 목록은 속성파일로부터의 정보를 써서 초기에 구축될 수 있고, 패키지에 대한 종속성은 각각의 운영시간을 위치확인하기 위해서 검사된다. 또한, 사용자 또는 개발자의 입력은 이러한 목록의 값들을 확장하기 위해서 이어서 사용될 수 있다. 요소(676)는 3개의 다른 동작시 환경 중 어느 것도 애플리케이션을 실행하는데 이용될 수 있음을 보여준다.
환경변수로 설정될 필요가 있는 상대적 작업 디렉토리(working directory)는 레지스트리 엔트리(635)의 값으로 정의된다. 특수기호 "."는 예(677)에서 사용되고, 현재의 디렉토리를 표시하기 위해 사용된다. 이 값은 "." 값을 초기화하고, 필요시 변경시킬 수 있는 수단(구성 메뉴와 같은)을 제공함으로써 생성된다.
레지스트리 정보에 의해 기술되는 아이템의 타입은 엔트리(640)를 써서 정의되고, 애플리케이션, 확장자 또는 동작시간 중의 하나가 될 것이다. 요소(678)는 0의 애플리케이션 값을 써서, 예가 애플리케이션에 적당함을 표시하고 있다. 이러한 값은 속성파일 엔트리(415)로부터 추정할 수 있다.
레지스트리 엔트리(645)는 애플리케이션에 대해 사용될 현재 선택된 동작시 환경을 상술한다. 이러한 엔트리는 동작시간과 확장자에 대한 등록파일로부터 생략된다. 동작시간 식별자의 예가 679에 나와 있으며, 이것은 요소(676)내의 동작시간 목록으로부터의 최종 선택에 해당한다. 엔트리(645)에 사용되는 값은 엔트리(630)의 값으로부터 선택될 것이다. 오히려, 선택목록으로부터 최종요소를 선택하거나 또는 첫 번째 요소 등을 선택하는 것과 같은 특별한 구현을 위해 선택방안(selection policy)이 사용될 수 있다. 마찬가지로, 사용자로 하여금 목록으로부터 선택하도록 유도할 수 있다.
패키지 엔트리(650)는 패키지에 대한 아카이브 이름을 상술하고, 이로써 URL을 써서 망내의 서버에서 어디에 저장되는지 또는 파일경로를 써서 파일 시스템내의 어디에 저장되는지를 확인한다. 아카이브된 패키지가 확장되고, 클라이언트 머신의 UID 디렉토리에 설치되면, 엔트리 값은 요소(680)에 보는바와 같이 여백으로 남겨진다.
엑스턴(extern) 엔트리(655)는 패키지가 종속되는 고유식별자의 세미콜론 분리목록이고, 속성파일의 엔트리(440)로부터 생성된다. 종속성이 없을 때, 예(670)에서와 마찬가지로 이러한 엔트리는 등록파일로부터 완전히 생략된다.
등록파일의 바람직한 실시예내의 최종 엔트리는 매개변수 엔트리(660)이다. 이것은 매개변수의 목록으로, 세미콜론을 써서 분리되며 애플리케이션의 호출시 메인함수로 전달될 것이다. 따라서, 레지스트리 타입(640)이 애플리케이션이 아니면 이러한 엔트리는 정의되지 않는다. 대개, 매개변수 값들은 애플리케이션 개시과정 동안 사용자에게 의해 입력되며, 등록파일내에 끝까지 저장되지 않는다. 그러나, 하나 또는 그 이상의 매개변수들은 불변의 또는 고정값을 가질 수 있다. 그러한 경우, 사용자로 하여금 동작시에 값을 입력하는 것을 피하기 위해서 값은 레지스트리에 저장될 수 있다. 예(670)는 매개변수 값의 정의를 생략한다.
도 7은 응용 프로그램이 클라이언트 컴퓨터 상에서 시작될 때 바람직한 실시에서 호출되는 로직을 기술한다. 사용자가 애플리케이션 실행을 요구할 때, 프로세스는 블록(700)에서 시작되어 클라이언트 머신(요소(710)에서 표시된 바와 같이)에서 행해진다. 사용자가 애플리케이션을 요구하는 방법은 본 발명의 일부를 구성하지 않는다. 사용자는 애플리케이션(등록파일내에서 확인된 표시 아이콘(620)과 같은)을 표시하는 아이콘을 클릭하고, 팝업(pop-up) 또는 풀다운(pull-down) 목록으로부터 애플리케이션 식별자(표시명(615)과 같은)를 선택하고, 타이머동작기반(timer-driven)의 목록을 이용하여 애플리케이션을 호출한다. 애플리케이션에 대한 적절한 동작시 환경을 구성하고, 그 환경내에서 애플리케이션 실행을 개시하는 프로세스가 블록(715)에서 시작된다. 예시된 바와 같이, 사용자는 동작시 환경이 어떻게 동작하는지에 대해서 거의 또는 전혀 알 필요가 없다. 블록(715)은 요구된 애플리케이션과 관련된 등록파일을 개방하고, 이러한 애플리케이션은 도 6a, 6B와 관련하여 기술된 정보를 포함한다. 플랫폼고유의 로직은 등록파일로부터의 환경 데이터를 처리하기 위해서 블록(720, 725)에서 호출될 것이다. 예를 들어, classdir 엔트리(625)는 클래스경로 변수에 첨가될 수 있고, 작업 디렉토리는 엔트리(635)로부터의 정보를 이용하여 설정될 수 있다. 모든 종속성이 설치되는 것을 확인하기 위해, 블록(730)은 종속성 목록(655)을 검사한다. 만약, 검사하지 않는 경우에는 도 5의 설치 프로세스가 호출될 것이다. 설치된 그러한 종속성에 대하여, 도 7의 반복호출이 732에 보는 바와 같이 실행되고, 종속성을 사용하여 적절한 정보가 설정된다. 모든 종속성정보가 처리될 때, 제어가 블록(735)으로 이동한다. 애플리케이션 등록파일의 현재 동작시간 엔트리(645)가 추출되고, 그 값이 동작시간에 대한 등록파일을 검색하는데 사용된다. 다음에, 블록(740)은 동작시간 레지스트리의 정보를 사용하고, 환경변수에 대하여 적절한 설정값을 사용한다.
블록(745)에서는, 플랫폼 종속(platform-dependent)의 JNI(Java Native Interface)가 호출된다. 당해 분야에서 공지된 대로, JNI는 자바 애플리케이션이 C 또는 C++과 같은 다른 언어로 작성된 코드의 본래 라이브러리를 호출할 수 있도록 사용되는 표준화된 가상머신독립(virtual machine independent) 인터페이스이다. 적절한 환경변수와 애플리케이션 매개변수가 이러한 호출에 전해지고, 블록(750)은 환경변수의 설정을 완성하고, 응용 프로그램과 함께 시스템 프로세스를 시작한다. 이어서, 도 7의 프로세스는 종료되고, 프로그램은 정상적으로 실행된다. 지금까지 살펴본 대로, 본 발명의 참신한 기법은 적절한 동작시간이 애플리케이션에 사용될 수 있도록 하고, 이것은 실행을 위하여 각각의 다른 애플리케이션이 선택됨에 따라 동작시간을 동적으로 변경시키는 것을 포함한다.
애플리케이션에 대한 동작시 환경은 본 발명을 이용하여 도 8에 기술된 로직에 따라 쉽게 바꿀 수 있다. 블록(800)에서는 사용자 입력이 그래픽 사용자 인터페이스(Graphic User Interface; GUI), 명령라인(command line) 등으로부터 입력되어 등록파일내의 정보를 변경시킬 것을 요구한다.(마찬가지로, 시스템 관리자가 정보를 하나 또는 그 이상의 클라이언트 머신상에서 갱신하도록 할 수 있는 수단이 제공될 수 있다. 예를 들어, 새로운 동작시 환경이 다운로드 되고 있다면, 시스템 관리자는 이러한 새로운 동작시간을 사용하도록 모든 클라이언트 등록파일들을 갱신할 수 있다. 이러한 방법은 최종 사용자에 필요한 동작시간 정보량을 더 감소시키는데 유용하다. 망위치로부터 클라이언트 머신까지 정보를 다운로드 하는 방법은 당해 기술분야에서는 공지된 것이고, 도 8의 로직을 호출하는데 이용될 것이다.) 만약, 사용자요구가 레지스트리내에 있는 현재의 동작시간 엔트리(645)를 갱신하는 것이라면, 블록(805)은 새로운 동작시간 식별자를 사용자로부터 받아들일 것이다. 선택적으로, 이러한 식별자의 입증이 수행될 수 있다. 만약 사용자요구가 저장된 애플리케이션 매개변수(655)를 계속 변경하는 것이라면, 블록(810)은 새로운 매개변수 값들을 받아들일 것이다. 선택적으로, 매개변수 값의 수와 타입이 적절한지를 확인하기 위해, 애플리케이션을 검사함으로써 매개변수 값들은 입증될 수 있다. 만약, 사용자가 종속성 정보(650)를 변경 또는 첨가할 것을 요구한다면, 블록(815)은 새로운 정보를 받아들이게 된다. 선택적으로, 종속성 식별자의 저장된 목록은 목록의 첨가, 삭제, 변경을 확인하는 수단과 함께 사용자에게 제시될 수 있다. 사용자가 변경된 레지스트리 정보를 입력하고, 어떤 임의의 입증이 수행되면, 블록(820)은 이러한 애플리케이션에 대한 저장된 레지스트리 정보를 갱신한다. 다음에 이러한 애플리케이션이 시작되면, 도 7에 따라서 실행환경을 구성시에 수정된 정보가 이용될 수 있다. 따라서, 응용 프로그램이 다른 동작시 환경을 사용하도록 변경하는 것은 오늘날의 공지기술에 대비해 크게 단순화된다.
지금까지 본 발명의 바람직한 실시예가 기술되었지만, 부가적으로 변경과 수정이 당해 기술분야의 통상의 기술을 가진 자에 의해 가능하다. 따라서, 다음에 부가되는 청구항들은 바람직한 실시예와 본 발명의 사상과 범위 내에서 그러한 변경과 수정을 포함하는 것으로 해석되어야 할 것이다.
본 발명은 애플릿이 동작환경으로서 브라우저를 더 이상 사용하지 않게 함으로써, 애플릿 코드를 브라우저 내의 JVM 레벨과 동기시켜야만 하는 단점들과 복수의 파일 아카이브 형식을 지원할 필요성들은 피할 수 있다. Jobbi내의 각각의 애플리케이션은 속성파일을 가지고 있으며, 속성파일내의 정보는 애플리케이션의 요구사항을 기술한다. 이러한 속성정보를 이용하여, 각 응용 프로그램은 그것의 종속성을 규정한다. 다수의 동작시 환경은 클라이언트 머신상에서 존재할 수 있고, 여기서 각 동작시간의 유일한 복사본은 그것을 필요로 하는 응용 프로그램에서 접근 가능하다. 속성파일내의 정보를 사용하여, 특정 애플리케이션에 요구되는 동작시 환경으로 동적으로 변경할 수 있다. 이것은 사용자로부터 조금 또는 아무런 입력 없이도 실현될 수 있다. 가장 최근에 발표된 브라우저 또는 운영체계 플랫폼 동작시 환경내에서, JVM 레벨의 변화하는 목표를 따라가기 위해서, 애플리케이션 개발자가 애플리케이션을 갱신, 재컴파일, 재검사하는 수고를 제거함으로써, 종래의 JVM 레벨은 새로운 레벨만큼이나 동작시 사용을 위해서 쉽게 접근 가능해진다.

Claims (23)

  1. a) 자바 애플리케이션에 대한 다수의 속성들을 정의하는 서브 프로세스와, - 상기 속성들은 상기 애플리케이션을 실행하는 데 필요한 상기 애플리케이션, 0 또는 그 이상의 확장자들과 상기 애플리케이션을 실행하는 데 필요한 동작시 환경을 기술함 -
    b) 상기 애플리케이션의 식별과 함께 상기 정의된 속성들을 저장하는 서브 프로세스
    를 포함하는, 통신망과 접속할 수 있는 컴퓨터 환경내에서 자바 환경의 관리용이성과 유용성을 향상시키는, 상기 환경내의 컴퓨터 시스템으로 읽을 수 있는 컴퓨터 독출 가능 코드.
  2. 제1항에 있어서, 상기 저장된 속성들을 이용하여 클라이언트 머신상에 상기 애플리케이션을 설치하는 서브 프로세스를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터로 독출 가능 코드.
  3. 제2항에 있어서, 상기 애플리케이션을 설치하기 위한 상기 서브 프로세스는
    a) 상기 종속성들의 위치를 확인하기 위하여 상기 속성들을 분해하는 서브 프로세스와,
    b) 상기 종속성들의 각각이 상기 클라이언트 머신상에 이미 설치되어 있는지를 결정하는 서브 프로세스와,
    c) 상기의 결정 프로세스가 부정적인 결과를 얻을 때, 상기의 위치확인된 종속성을 검색하고 설치하는 서브 프로세스
    를 포함하는 상기 애플리케이션의 하나 또는 그 이상의 종속성들을 설치하는 서브 프로세스와, - 상기 종속성들은 상기 요구되는 확장자들과 상기 요구되는 동작시 환경을 포함함 -
    상기 클라이언트 머신상에 상기 애플리케이션에 대한 자바 아카이브 파일을 설치하는 서브 프로세스
    를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  4. 제3항에 있어서, 하나 또는 그 이상의 종속성들을 설치하는 상기 서브 프로세스의 동작에 앞서 상기 애플리케이션에 대한 상기 저장된 속성들의 최신 버전을 검색하는 서브 프로세스를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  5. 제3항에 있어서, 하나 또는 그 이상의 종속성들을 설치하기 위한 상기 서브 프로세스가 검색과 설치를 위하여 상기 서브 프로세스에 의해 사용되는 위치를 동적으로 검색하는 서브 프로세스를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  6. 제3항에 있어서, 상기 속성들에 대응하는 상기 클라이언트 머신상에서 등록파일을 생성하는 서브 프로세스를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  7. 제6항에 있어서,
    a) 선택된 애플리케이션을 상기 클라이언트 머신상에서 실행하는 요구를 수신하는 서브 프로세스와,
    b) 대응하는 등록파일을 이용하여 상기 선택된 애플리케이션에 대한 적절한 동작시 환경을 구성하는 서브 프로세스와,
    c) 상기 구성된 환경에서 상기 선택된 애플리케이션의 실행을 시작하는 서브 프로세스
    를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  8. 제7항에 있어서, 상기 서브 프로세스는
    a) 상기 애플리케이션의 현재 종속성들을 결정하기 위하여 상기 대응하는 등록파일을 읽어내는 서브 프로세스와, - 상기 현재 종속성들은 상기 애플리케이션에 대하여 현재 요구되는 확장자들과 현재의 동작시 환경을 포함함 -
    b) 상기 선택된 애플리케이션의 상기 현재 종속성들의 각각이 설치되는 것을 확인하는 서브 프로세스와,
    c) 상기 현재 동작시 환경에 대한 적절한 환경 변수들을 설정하는 서브 프로세스와,
    d) 상기 현재 요구되는 확장자들에 대한 적절한 환경 변수들을 설정하는 서브 프로세스
    를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  9. 제8항에 있어서, 상기 대응하는 등록파일을 이용하여 상기 선택된 애플리케이션의 하나 또는 그 이상의 매개변수들을 설정하는 서브 프로세스를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  10. 제6항에 있어서,
    a) 상기 등록파일내의 상기 현재 동작시 환경을 갱신하는 서브 프로세스와,
    b) 상기 등록파일내의 상기 현재 요구되는 확장자들을 갱신하는 서브 프로세스
    를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  11. 제9항에 있어서, 상기 등록파일내의 상기 패러미터들을 갱신하는 서브 프로세스를 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 컴퓨터 독출 가능 코드.
  12. a) 자바 애플리케이션에 대한 다수의 속성들을 정의하는 수단과, - 상기 속성들은 상기 애플리케이션을 실행하는 데 필요한 상기 애플리케이션, 0 또는 그 이상의 확장자들과 상기 애플리케이션을 실행하는 데 필요한 동작시 환경을 기술함 -
    b) 상기 애플리케이션의 식별과 함께 상기 정의된 속성들을 저장하는 수단
    을 포함하는, 통신망과 접속할 수 있는 컴퓨터 환경내에서 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  13. 제12항에 있어서, 상기 저장된 속성들을 이용하여 클라이언트 머신상에 상기 애플리케이션을 설치하는 수단을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  14. 제13항에 있어서, 상기 애플리케이션을 설치하기 위한 상기 수단은
    a) 상기 종속성들의 위치를 확인하기 위하여 상기 속성들을 분해하는 수단과,
    b) 상기 종속성들의 각각이 상기 클라이언트 머신상에 이미 설치되어 있는지를 결정하는 수단과,
    c) 상기의 결정수단이 부정적인 결과를 얻을 때, 상기의 위치확인된 종속성을 검색하고 설치하는 수단
    을 포함하는 상기 애플리케이션의 하나 또는 그 이상의 종속성들을 설치하는 수단과, - 상기 종속성들은 상기 요구되는 확장자들과 상기 요구되는 동작시 환경을 포함함 -
    상기 클라이언트 머신상에 상기 애플리케이션에 대한 자바 아카이브 파일을 설치하는 수단
    을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  15. 제14항에 있어서, 하나 또는 그 이상의 종속성들을 설치하는 상기 수단의 동작에 앞서 상기 애플리케이션에 대한 상기 저장된 속성들의 최신버전을 검색하는 수단을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  16. 제14항에 있어서, 하나 또는 그 이상의 종속성들을 설치하기 위한 상기 수단이 검색과 설치를 위하여 상기 수단에 사용되는 위치를 동적으로 검색하는 수단을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  17. 제14항에 있어서, 상기 속성들에 대응하는 상기 클라이언트 머신상에서 등록파일을 생성하는 수단을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  18. 제17항에 있어서,
    a) 선택된 애플리케이션을 상기 클라이언트 머신상에서 실행하는 요구를 수신하는 수단과,
    b) 대응하는 등록파일을 이용하여 상기 선택된 애플리케이션에 대한 적절한 동작시 환경을 구성하는 수단과,
    c) 상기 구성된 환경에서 상기 선택된 애플리케이션의 실행을 시작하는 수단
    을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  19. 제18항에 있어서, 상기 수단은
    a) 상기 애플리케이션의 현재 종속성들을 결정하기 위하여 상기 대응하는 등록파일을 읽어내는 수단과, - 상기 현재 종속성들은 상기 애플리케이션에 대하여 현재 요구되는 확장자들과 현재의 동작시 환경을 포함함 -
    b) 상기 선택된 애플리케이션의 상기 현재 종속성들의 각각이 설치되는 것을 확인하는 수단과,
    c) 상기 현재 동작시 환경에 대한 적절한 환경 변수들을 설정하는 수단과,
    d) 상기 현재 요구되는 확장자들에 대한 적절한 환경 변수들을 설정하는 수단
    을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  20. 제19항에 있어서, 상기 대응하는 등록파일을 이용하여 상기 선택된 애플리케이션의 하나 또는 그 이상의 매개변수들을 설정하는 수단을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  21. 제17항에 있어서,
    a) 상기 등록파일내의 상기 현재 동작시 환경을 갱신하는 수단과,
    b) 상기 등록파일내의 상기 현재 요구되는 확장자들을 갱신하는 수단
    을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  22. 제20항에 있어서, 상기 등록파일내의 상기 패러미터들을 갱신하는 수단을 포함하는, 자바 환경의 관리용이성과 유용성을 향상시키는 시스템.
  23. a) 자바 애플리케이션에 대한 다수의 속성들을 정의하는 단계와, - 상기 속성들은 상기 애플리케이션을 실행하는 데 필요한 상기 애플리케이션, 0 또는 그 이상의 확장자들과 상기 애플리케이션을 실행하는 데 필요한 동작시 환경을 기술함 -
    b) 상기 애플리케이션의 식별과 함께 상기 정의된 속성들을 저장하는 단계
    를 포함하는, 통신망과 접속할 수 있는 컴퓨터 환경내에서 자바 환경의 관리용이성과 유용성을 향상시키는 방법.
KR10-2000-0020931A 1999-04-27 2000-04-20 Java 환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법 KR100397589B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/300,041 US6571389B1 (en) 1999-04-27 1999-04-27 System and method for improving the manageability and usability of a Java environment
US09/300,041 1999-04-27

Publications (2)

Publication Number Publication Date
KR20010006997A true KR20010006997A (ko) 2001-01-26
KR100397589B1 KR100397589B1 (ko) 2003-09-13

Family

ID=23157441

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0020931A KR100397589B1 (ko) 1999-04-27 2000-04-20 Java 환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법

Country Status (5)

Country Link
US (1) US6571389B1 (ko)
EP (1) EP1049005A3 (ko)
JP (1) JP4215373B2 (ko)
KR (1) KR100397589B1 (ko)
CN (1) CN1153138C (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100653179B1 (ko) * 2004-12-17 2006-12-04 한국전자통신연구원 플랫폼 동적 업그레이드 기능을 가지는 무선통신단말기 및그 방법
KR101039954B1 (ko) * 2008-09-12 2011-06-09 주식회사 웰비아닷컴 동적실행코드를 이용한 엑티브 웹브라우징 시스템 및 서비스 제공 방법
US8776051B2 (en) 2006-02-23 2014-07-08 Samsung Electronics Co., Ltd. Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738806B1 (en) * 1999-06-14 2004-05-18 Wind River International, Ltd. Method and system of deploying an application between computers
US7200651B1 (en) * 1999-07-02 2007-04-03 Cisco Technology, Inc. Dynamic configuration and up-dating of integrated distributed applications
US6813778B1 (en) * 1999-08-16 2004-11-02 General Instruments Corporation Method and system for downloading and managing the enablement of a list of code objects
US6983315B1 (en) * 2000-01-18 2006-01-03 Wrq, Inc. Applet embedded cross-platform caching
US7284064B1 (en) 2000-03-21 2007-10-16 Intel Corporation Method and apparatus to determine broadcast content and scheduling in a broadcast system
US7131122B1 (en) * 2000-08-24 2006-10-31 International Business Machines Corporation Apparatus, system and method for detecting old version of an applet in a client brower's JVM
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
US7140011B2 (en) * 2000-12-12 2006-11-21 Intel Corporation Dynamically loading program code over a push-based network
US6769118B2 (en) * 2000-12-19 2004-07-27 International Business Machines Corporation Dynamic, policy based management of administrative procedures within a distributed computing environment
JP2002215411A (ja) * 2001-01-19 2002-08-02 Hitachi Ltd Javaアプリケーション実行装置
AU2002254289B2 (en) * 2001-03-19 2006-12-07 Qualcomm Incorporated Dynamically downloading and executing system services on a wireless device
US7730468B1 (en) * 2001-03-26 2010-06-01 Trowbridge Sean E System and method providing on-demand generation of specialized executables
US20020144265A1 (en) * 2001-03-29 2002-10-03 Connelly Jay H. System and method for merging streaming and stored content information in an electronic program guide
US20020144269A1 (en) * 2001-03-30 2002-10-03 Connelly Jay H. Apparatus and method for a dynamic electronic program guide enabling billing broadcast services per EPG line item
US7185352B2 (en) * 2001-05-11 2007-02-27 Intel Corporation Method and apparatus for combining broadcast schedules and content on a digital broadcast-enabled client platform
US7328455B2 (en) * 2001-06-28 2008-02-05 Intel Corporation Apparatus and method for enabling secure content decryption within a set-top box
US7363569B2 (en) * 2001-06-29 2008-04-22 Intel Corporation Correcting for data losses with feedback and response
EP1288757A1 (de) * 2001-08-07 2003-03-05 Siemens Aktiengesellschaft Verfahren und Prozessleitsystem zum Betrieb einer technischen Anlage
US20030046683A1 (en) * 2001-08-28 2003-03-06 Jutzi Curtis E. Server-side preference prediction based on customer billing information to generate a broadcast schedule
US7047456B2 (en) * 2001-08-28 2006-05-16 Intel Corporation Error correction for regional and dynamic factors in communications
US6854112B2 (en) * 2001-08-29 2005-02-08 International Business Machines Corporation System and method for the automatic installation and configuration of an operating system
US7231653B2 (en) 2001-09-24 2007-06-12 Intel Corporation Method for delivering transport stream data
US8943540B2 (en) 2001-09-28 2015-01-27 Intel Corporation Method and apparatus to provide a personalized channel
US20030093508A1 (en) * 2001-10-18 2003-05-15 Seiko Epson Corporation System for installing and launching network applications
JP2003173246A (ja) * 2001-12-05 2003-06-20 Ricoh Co Ltd デバイス情報収集方法、プログラム、サーバ装置及び記憶媒体
AU2002351415A1 (en) * 2001-12-28 2003-07-24 Postx Corporation System and method for applet caching
US20030135605A1 (en) * 2002-01-11 2003-07-17 Ramesh Pendakur User rating feedback loop to modify virtual channel content and/or schedules
US20030135857A1 (en) * 2002-01-11 2003-07-17 Ramesh Pendakur Content discovery in a digital broadcast data service
US20030182403A1 (en) * 2002-01-15 2003-09-25 De Bonet Jeremy S. System and method for program configuration
US7165099B2 (en) 2002-03-15 2007-01-16 Qualcomm Inc. Dynamically downloading and executing system services on a wireless device
US9009694B2 (en) * 2002-05-22 2015-04-14 Oracle America, Inc. Pre-verification and sequencing of patches
US7823148B2 (en) * 2002-05-22 2010-10-26 Oracle America, Inc. System and method for performing patch installation via a graphical user interface
US20040003018A1 (en) * 2002-06-26 2004-01-01 Pentkovski Vladimir M. Method and system for efficient handlings of serial and parallel java operations
JP2006511100A (ja) * 2002-09-23 2006-03-30 テレフオンアクチーボラゲット エル エム エリクソン(パブル) プラグイン・ソフトウエアを用いて移動体プラットフォームの機能を拡張するための方法及びシステム
US20040088397A1 (en) * 2002-11-05 2004-05-06 Sidley Austin Brown & Wood Llp. System and method for management of software applications
US7165241B2 (en) * 2002-11-26 2007-01-16 Sun Microsystems, Inc. Mechanism for testing execution of applets with plug-ins and applications
US7149752B2 (en) * 2002-12-03 2006-12-12 Jp Morgan Chase Bank Method for simplifying databinding in application programs
US7139559B2 (en) * 2002-12-09 2006-11-21 Qualcomm Inc. System and method for handshaking between wireless devices and servers
US7089340B2 (en) 2002-12-31 2006-08-08 Intel Corporation Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives
US8032439B2 (en) * 2003-01-07 2011-10-04 Jpmorgan Chase Bank, N.A. System and method for process scheduling
US7401156B2 (en) * 2003-02-03 2008-07-15 Jp Morgan Chase Bank Method using control interface to suspend software network environment running on network devices for loading and executing another software network environment
US7475408B2 (en) 2003-02-27 2009-01-06 Microsoft Corporation Hosting an application in one of a plurality of execution environments
US7430743B2 (en) * 2003-02-27 2008-09-30 Microsoft Corporation System and method for hosting an application in one of a plurality of execution environments
US7379998B2 (en) * 2003-03-31 2008-05-27 Jp Morgan Chase Bank System and method for multi-platform queue queries
US7814073B2 (en) * 2003-05-02 2010-10-12 Jp Morgan Chase Bank Utility for identifying differences between two Java objects
EP1475722A1 (de) * 2003-05-06 2004-11-10 Rudi Warttmann Drucksteuersystem
US20040230602A1 (en) * 2003-05-14 2004-11-18 Andrew Doddington System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system
US7366722B2 (en) * 2003-05-15 2008-04-29 Jp Morgan Chase Bank System and method for specifying application services and distributing them across multiple processors using XML
US8095659B2 (en) 2003-05-16 2012-01-10 Jp Morgan Chase Bank Service interface
CA2539460C (en) * 2003-09-17 2012-09-25 Research In Motion Limited System and method for dynamic version management of applications
CA2539465C (en) 2003-09-17 2012-12-04 Research In Motion Limited System and method for management of mutating applications
US7735078B1 (en) 2003-10-30 2010-06-08 Oracle America, Inc. System and method for software patching for cross-platform products
US8930944B2 (en) * 2003-11-18 2015-01-06 Microsoft Corporation Application model that integrates the web experience with the traditional client application experience
US20050144174A1 (en) * 2003-12-31 2005-06-30 Leonid Pesenson Framework for providing remote processing of a graphical user interface
US20050222990A1 (en) * 2004-04-06 2005-10-06 Milne Kenneth T Methods and systems for using script files to obtain, format and disseminate database information
AU2005234798B2 (en) * 2004-04-26 2009-01-08 Jp Morgan Chase Bank System and method for routing messages
US7454748B2 (en) * 2004-07-27 2008-11-18 Nokia Corporation System and method for specifying virtual machines
US20060031827A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation System, apparatus and method of assisting with software product update installations
JP2006077151A (ja) * 2004-09-10 2006-03-23 Fuji Photo Film Co Ltd 液晶組成物および液晶素子
JP4717426B2 (ja) * 2004-12-07 2011-07-06 キヤノン株式会社 情報処理装置及びその方法
WO2006067841A1 (ja) * 2004-12-22 2006-06-29 Fujitsu Limited 仮想マシン管理プログラムおよび仮想マシン管理方法
DE102005008796A1 (de) * 2005-02-25 2006-08-31 Siemens Ag Mobiles Endgerät für eine Mehrzahl von Applikationen, die verschiedene virtuelle Maschinen voraussetzen und Verfahren zum Aufrufen einer Mehrzahl von Applikationen
US20070061794A1 (en) * 2005-09-13 2007-03-15 Mausolf Jeffry R Method and apparatus for classpath optimization in a Java runtime environment
US20070067426A1 (en) * 2005-09-22 2007-03-22 Sun Microsystems, Inc. Computer implemented methods for transferring files from a development environment to target mobile devices
US7941797B2 (en) * 2005-10-27 2011-05-10 International Business Machines Corporation Dynamically providing native libraries and their dependencies
US7861238B2 (en) * 2005-12-19 2010-12-28 Seiko Epson Corporation Configuration tool and method of updating an archive file property relating to at least one point-of-sale peripheral
US8495613B2 (en) * 2005-12-22 2013-07-23 Microsoft Corporation Program execution service windows
JP2007193435A (ja) * 2006-01-17 2007-08-02 Matsushita Electric Ind Co Ltd 情報処理端末、プログラム
US20070174824A1 (en) * 2006-01-23 2007-07-26 Microsoft Corporation Techniques for generating and executing browser-hosted applications
US7610172B2 (en) * 2006-06-16 2009-10-27 Jpmorgan Chase Bank, N.A. Method and system for monitoring non-occurring events
JP2009543233A (ja) * 2006-07-06 2009-12-03 アコリ ネットワークス,インコーポレイテッド アプリケーションシステムの負荷管理
US20080027945A1 (en) 2006-07-28 2008-01-31 Nichols Paul H Methods, systems and computer program products for downloading a Java application based on identification of supported classes
WO2008028989A1 (en) * 2006-09-07 2008-03-13 Nokia Corporation Managing information relating to secure module applications
US20080115109A1 (en) * 2006-11-13 2008-05-15 Bostick James E Enhanced Hover Help For Software Debuggers
US20080141225A1 (en) * 2006-12-06 2008-06-12 Bostick James E Method for migrating files
EP2111597B1 (en) * 2007-01-31 2017-07-19 Nokia Technologies Oy Managing applications related to secure modules
US9977721B2 (en) 2007-12-20 2018-05-22 Netapp, Inc. Evaluating and predicting computer system performance using kneepoint analysis
US20090249311A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation Sharing a native module of compiled code using an abstraction module of interpreted code in a virtual machine environment
CN101426032B (zh) * 2008-11-28 2011-04-13 华为终端有限公司 安装Java应用的终端及其安装Java应用的方法
JP5682996B2 (ja) 2010-02-04 2015-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation クライアントプログラム、端末、サーバ装置、サーバプログラム、システムおよび方法
US20130030568A1 (en) * 2010-04-23 2013-01-31 Samsung Heavy Ind. Co., Ltd. Robot system control method and a device therefor
JP5936103B2 (ja) 2011-10-04 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
US8863126B2 (en) * 2011-12-29 2014-10-14 Oracle International Corporation Java virtual machine embedded in a native mobile application
CN103955423B (zh) * 2013-12-25 2017-01-11 中软信息系统工程有限公司 一种国产jvm的测试评估方法
US9928087B2 (en) * 2014-07-09 2018-03-27 International Business Machines Corporation State-preserving reversible configuration change
US20160170739A1 (en) * 2014-12-15 2016-06-16 Dimitar Kapashikov Alter application behaviour during runtime
CN105468526B (zh) * 2015-11-27 2018-01-12 合肥通用机械研究院 家用和类似用途电器软件评估黑盒测试系统
CN105446882B (zh) * 2015-11-27 2017-11-07 合肥通用机械研究院 家用和类似用途电器软件评估黑盒测试系统的测试方法
CN107844302B (zh) * 2017-10-18 2020-12-11 上海瀚之友信息技术服务有限公司 一种基于虚拟机的生产环境模拟系统
US11126540B2 (en) 2019-06-13 2021-09-21 Paypal, Inc. Big data application lifecycle management
CN111782300B (zh) * 2020-07-08 2022-02-08 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764992A (en) * 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US5732275A (en) * 1996-01-11 1998-03-24 Apple Computer, Inc. Method and apparatus for managing and automatically updating software programs
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US5752042A (en) * 1996-06-07 1998-05-12 International Business Machines Corporation Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer
US6260078B1 (en) * 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US6009274A (en) * 1996-12-13 1999-12-28 3Com Corporation Method and apparatus for automatically updating software components on end systems over a network
US6456974B1 (en) * 1997-01-06 2002-09-24 Texas Instruments Incorporated System and method for adding speech recognition capabilities to java
GB2321981B (en) * 1997-02-06 2002-01-09 Ibm Hosted machine code installation
US5995756A (en) * 1997-02-14 1999-11-30 Inprise Corporation System for internet-based delivery of computer applications
US6014702A (en) * 1997-06-04 2000-01-11 International Business Machines Corporation Host information access via distributed programmed objects
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6353926B1 (en) * 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6357019B1 (en) * 1999-01-29 2002-03-12 International Business Machines Corporation Method and apparatus for employing network loadable debugging agents, capable of first failure support on retail versions of software products

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100653179B1 (ko) * 2004-12-17 2006-12-04 한국전자통신연구원 플랫폼 동적 업그레이드 기능을 가지는 무선통신단말기 및그 방법
US8776051B2 (en) 2006-02-23 2014-07-08 Samsung Electronics Co., Ltd. Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same
KR101039954B1 (ko) * 2008-09-12 2011-06-09 주식회사 웰비아닷컴 동적실행코드를 이용한 엑티브 웹브라우징 시스템 및 서비스 제공 방법

Also Published As

Publication number Publication date
JP4215373B2 (ja) 2009-01-28
KR100397589B1 (ko) 2003-09-13
EP1049005A3 (en) 2005-01-26
JP2000353078A (ja) 2000-12-19
CN1153138C (zh) 2004-06-09
CN1271893A (zh) 2000-11-01
US6571389B1 (en) 2003-05-27
EP1049005A2 (en) 2000-11-02

Similar Documents

Publication Publication Date Title
KR100397589B1 (ko) Java 환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법
US7694277B2 (en) Cross version customization of design environment
US6954930B2 (en) Remote validation of installation input data
US7206824B2 (en) Technique for configuring network deliverable pluggable components for deployment
US8291375B2 (en) Attribute-based component programming system and methodology for object-oriented languages
US6298481B1 (en) System for modifying the functionality of compiled computer code at run-time
US7155381B2 (en) Module for developing wireless device applications using an integrated emulator
US5978585A (en) Development system with improved methods for recompiling dependent code modules
US6944846B2 (en) Algorithm for localization of a JAVA application using reflection API and a custom class loader
TW459202B (en) Transparent loading of resources from read-only memory for an application program
US20020188941A1 (en) Efficient installation of software packages
EP1333374B1 (en) Dynamic generation of language localized and self-verified Java classes using XML descriptions and static initializers
US20040153830A1 (en) Method and system for object level software testing
US7131111B2 (en) Development of manifest for java embedded server bundle
EP0822488A2 (en) Object-oriented system, method and article of manufacture for a client-server application enabler system
EP0827074A2 (en) A system, method and article of manufacture for a distributed computer system framework
US20030236657A1 (en) Method of developing wireless device applications using an integrated emulator and an IDE
EP1204919A1 (en) Introspective editor system, program, and method for software translation
US20080141219A1 (en) Multiple inheritance facility for java script language
EP1403764A1 (en) Method and computer system for dynamic data type enrichment
Köster FEATFLOW in a Windows environment
Lee . NET Compact Framework Pocket Guide
Irwin et al. Re-engineering of the computer-aided prototyping system for portability
Takagiwa et al. Sash 2.1
Van Canneyt et al. Free Pascal: Users’ manual

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

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee