확장 기능의 버젼 관리 - xrath.com 에서 번역됨

# 옵션 패키지의 버젼 관리

옵션 패키지 문서

> 주: 옵션 패키지는, 지금까지 「표준 확장 기능」또는 단지 「확장 기능」으로서 알려져 왔지만 새로운 명칭입니다.

이 섹션에서는, 다음의 토픽에 대해 설명합니다.

- 개요
- 인스톨형 옵션 패키지로 사용하는 Manifest 속성
- 애플릿의 Jar 파일로 사용하는 Manifest 속성
- Java Plug-in 갱신 규칙
- 옵션 패키지의 다운로드 및 인스톨

## 개요

> JavaTM 2 플랫폼의 버젼 1.3 에서는, Jar 파일의 Manifest 속성이 확장되고 있어 애플릿에 필요한 옵션 패키지의 버젼과 벤더 정보를 지정할 수 있게 되었습니다. Jar 패키지에 의한 애플릿의 Manifest로 지정된 URL 로, Java Plug-in 는, 다음의 경우에 최신 버젼의 옵션 패키지를 다운로드할 수 있습니다.

> - 필요한 옵션 패키지가, Java Runtime Environment 에 인스톨되어 있지 않다
> - 옵션 패키지가 인스톨 되고 있지만, 버젼 번호가 낡다
> - 옵션 패키지가 인스톨 되고 있지만, 지정된 벤더로부터 제공된 것은 아니다

> 여기에서는, 버젼과 벤더 정보를 지정할 경우에 사용하는 Manifest 속성에 대해 설명합니다.

## 인스톨형 옵션 패키지로 사용하는 Manifest 속성

> 다음의 Manifest 파일의 예에는, 옵션 패키지로 사용할 수 있는 속성이 포함됩니다.

> >     Extension-Name: javax.help
> >     Specification-Vendor: Sun Microsystems, Inc
> >     Specification-Version: 1.0
> >     Implementation-Vendor-Id: com.sun
> >     Implementation-Vendor: Sun Microsystems, Inc
> >     Implementation-Version: 1.0

> 이 예에 포함되는 속성에 대해 설명합니다.
> Extension-Name
>   이 속성에는, Jar 파일내에 포함되고 있는 옵션 패키지의 이름을 지정합니다. 이름은, 옵션 패키지를 구성하는 메인 패키지의 이름 등, 고유 식별자가 아니면 안됩니다.
> Specification-Vendor
>   옵션 패키지가 준거하고 있는 스펙을 작성한 벤더를 지정합니다.
> Specification-Version
>   확장 기능이 준거하고 있는 스펙의 버젼 번호를 지정합니다.
> Implementation-Vendor-Id
>   이 속성의 값은, Jar 파일에 포함되는 옵션 패키지의 구현을 작성한 벤더의 고유 식별자입니다.
> Implementation-Vendor
>   이 속성의 값은, 옵션 패키지의 구현을 작성한 벤더의 이름입니다. 이 속성은, 사용자 코멘트등의 목적인 만큼 사용합니다. Java Plug-in 소프트웨어에서는, 옵션 패키지의 벤더를 식별할 경우에는 사용되지 않습니다. 일의의 벤더 식별을 할당할 때는,Implementation-Vendor-Id 속성이 사용됩니다.
> Implementation-Version
>   이 옵션 패키지의 구현에 사용하는 벤더의 버젼 번호를 지정합니다.

> Java 실행 환경에 인스톨 된 각 옵션 패키지는, 이러한 Manifest 속성에 의해 식별됩니다. Java Plug-in 로 옵션 패키지를 필요로 하는 애플릿이 실행되고 있는 경우는, 이러한 속성에 근거해, 인스톨 되고 있는 옵션 패키지가, 애플릿으로 지정되고 있는 벤더와 버젼의 조건을 채우고 있는지 어떤지가 검사됩니다. 애플릿에 이러한 정보를 지정하려면 , 이후에 설명하는 Manifest 속성을 사용합니다. 상기의 Manifest 속성 모든 것을, 옵션 패키지의 Manifest에 포함할 필요가 있는 것에 유의해 주세요. Plug-in 가 검색을 실행해도 옵션 패키지의 Manifest내에 이러한 속성을 모두 검출할 수 없는 경우, 그 옵션 패키지는 애플릿에 적합하지 않는다고 보여집니다.

## 애플릿의 Jar 파일로 사용하는 Manifest 속성

> 다음의 Manifest 파일의 예에는, Jar 파일에 패키지화된 애플릿으로 사용할 수 있는 속성이 포함됩니다. 이 예는, 설명 목적에게만 사용하는 것입니다. 이 예에 나타내는 URL 로 실제의 옵션 패키지를 사용할 수 있는 것은 아닙니다.

> >     Extension-List: javahelp java3d
> >     javahelp-Extension-Name: javax.help
> >     javahelp-Specification-Version: 1.0
> >     javahelp-Implementation-Version: 1.0. 3
> >     javahelp-Implementation-Vendor-Id: com.sun
> >     javahelp-Implementation-URL: http://java.sun.com/products/stdext/javahelp.jar
> >     java3d-Extension-Name: javax. 3d
> >     java3d-Specification-Version: 1.0
> >     java3d-Implementation-Version: 1.2. 1
> >     java3d-Implementation-Vendor-Id: com.sun
> >     java3d-Implementation-URL: http://java.sun.com/products/stdext/java3d.jar

> 이 예에 포함되는 속성에 대해 설명합니다.
> Extension-List
>   애플릿에 필요한 옵션 패키지를 지정합니다. 이 속성으로 지정되고 있는 각 옵션 패키지에서는, 애플릿에 필요한 옵션 패키지의 버젼과 벤더를 지정할 경우에, 추가 속성을 사용할 수 있습니다.
> <extension>-Extension-Name
>   옵션 패키지의 일의의 이름입니다. Java Plug-in 에서는, 인스톨 되고 있는 옵션 패키지의 Manifest의 Extension-Name 속성치라고 비교되어 인스톨 되고 있는 옵션 패키지인가 어떤가가 검사됩니다.
> <extension>-Specification-Version (임의)
>   애플릿에 필요한 옵션 패키지 스펙의 최소 버젼 요건을 지정합니다. Java Plug-in 에서는, 인스톨 되고 있는 옵션 패키지의 Specification-Version 속성치라고 비교되어 최신의 버젼인가 어떤가가 검사됩니다.
> <extension>-Implementation-Version (임의)
>   애플릿에 필요한 구현의 최소 버젼 번호 요건을 지정합니다. Java Plug-in 에서는, 인스톨 되고 있는 옵션 패키지의 Implementation-Version 속성치라고 비교되어 새로운 구현을 다운로드할 필요가 있을지 어떨지가 검사됩니다.
> <extension>-Implementation-Vendor-Id (임의)
>   애플릿에 특정의 벤더의 구현이 필요한 경우는, 이 속성을 사용해 옵션 패키지 구현의 벤더를 식별할 수 있습니다. Java Plug-in 에서는, 인스톨 되고 있는 옵션 패키지의 Implementation-Vendor-Id 속성치라고 비교됩니다.
> <extension>-Implementation-URL
>   필요한 버젼의 옵션 패키지가 인스톨되어 있지 않은 경우에, 최신 버젼의 옵션 패키지의 취득에 사용되는 URL 를 지정합니다.

## Java Plug-in 갱신 규칙

> Java Plug-in 에 의해 애플릿이 로드 되었을 때에, 그 Manifest에 몇개의 옵션 패키지가 지정되고 있는 경우는, 다음의 속성이 검사됩니다.

> - 올바른 Extension-Name 속성치를 가지는 옵션 패키지가 인스톨되어 있지 않은 경우는, 옵션 패키지의 다운로드를 요구하는 prompt를 표시한다
> - 인스톨 되고 있는 옵션 패키지의 Extension-Name 속성의 값이 올바른 경우는, 다음의 속성을 비교한다
>   - 옵션 패키지의 Specification-Version 치가 애플릿의 요건 이상의 경우
>     - Implementation-Vendor-Id 속성이 일치하고 있는 경우
>       - 옵션 패키지의 Implementation-Version 가 애플릿의 Manifest로 지정되고 있는 버젼 이상의 경우는, 아무것도 실시하지 않는 - 적절한 버젼의 옵션 패키지가 벌써 인스톨 되고 있다
>       - 옵션 패키지의 Implementation-Version 가 애플릿의 Manifest로 지정되고 있는 버젼 미만의 경우는, 그 벤더로부터 업그레이드를 다운로드하도록(듯이) 요구하는 prompt를 표시한다
>     - Implementation-Vendor-Id 속성이 일치하지 않는 경우는, 애플릿의 Manifest로 지정되고 있는 벤더의 옵션 패키지를 다운로드하도록(듯이) 요구하는 prompt를 표시한다
>   - 옵션 패키지의 Specification-Version 치가 애플릿의 버젼 요건 미만의 경우
>     - 옵션 패키지의 Implementation-Vendor-Id 가 애플릿의 Manifest로 지정되고 있는 벤더 ID 와 일치하는 경우는, 그 벤더로부터 갱신 끝난 옵션 패키지를 다운로드하도록(듯이) 요구하는 prompt를 표시한다
>     - 옵션 패키지의 Implementation-Vendor-Id 가 애플릿의 Manifest로 지정되고 있는 벤더 ID 와 일치하지 않는 경우는, 애플릿의 Manifest로 지정되고 있는 벤더로부터, 옵션 패키지를 다운로드하도록(듯이) 요구하는 prompt를 표시한다

> 애플릿의 Manifest에 1 개 또는 복수의 옵션 속성이 포함되지 않는 경우, Plug-in 는 옵션 패키지의 Manifest내의 대응하는 임의의 속성치를 적용합니다.

## 옵션 패키지의 다운로드 및 인스톨

> Java Plug-in 를 사용해 옵션 패키지를 다운로드하는 경우는, 다음의 점에 주의해 주세요.

> 옵션 패키지를 다운로드하는 URL 는, 애플릿의 Manifest 속성 <extension>-Implementation-URL 로 지정할 때, 애플릿의 코드 베이스일 필요는 없습니다.

> 다운로드하는 파일은, 모두 DSA 또는 RSA 증명서에 의한 서명이 필요합니다. 서명되어 있지 않은 옵션 패키지는, 인스톨 되지 않습니다. 번들형 옵션 패키지로 간주해져 애플릿의 시큐리티 속성이 공유되어, 애플릿의 클래스 로더에 의해 로드 됩니다.

> Java Plug-in 에서는, 애플릿의 Manifest로 지정되고 있는 URL 로부터 옵션 패키지를 취득할 경우에, 옵션 패키지의 서명이 검증되고 나서, 옵션 패키지의 Manifest의 Main-Class 속성이 검사됩니다. 옵션 패키지의 Manifest 파일에 Main-Class 속성이 포함되지 않은 경우는, Java Plug-in 에 의해 실행 환경의 옵션 패키지의 디렉토리 (JDK 의 `jre/lib/ext` 및 JRE 의 `lib/ext`)에 Jar 파일이 포함됩니다.

> 옵션 패키지의 Jar 파일에는, native code로, 또는 Java 프로그램 언어로 기술된 어플리케이션으로서 독자적인 인스톨러 프로그램이 포함되고 있는 일이 있습니다. 네이티브 라이브러리를 인스톨 하거나 Microsoft Windows 레지스트리에 액세스 하거나 하는 경우는, 독자적인 인스톨러 프로그램이 필요한 일이 있습니다. Java Plug-in 에 의해 옵션 패키지의 Manifest내에 Main-Class 속성이 검출되었을 경우는, Java 언어의 인스톨러로서 기능하는 클래스가 지정되고 있다고 보여 그 클래스의 `main()` 메소드가 불려 갑니다.

> 옵션 패키지의 Manifest에는,Extension-Installation 속성이 지정되고 있는 일도 있습니다. 이 필드의 값은, Java Plug-in 에 의해 옵션 패키지가 인스톨 될 때 사용되는, 네이티브 인스톨 어플리케이션을 가리키고 있습니다.

> <extension>-Implementation-URL 에 의해 지정되는 옵션 패키지의 URL 는, JAR 파일을 지시할 필요가 있습니다. Plug-in 가,. exe 또는 . bin 파일로서 패키지 된 옵션 패키지를 다운로드 및 인스톨 할 것은 없습니다.

> 옵션 패키지안에는, 오레이팅 시스템 마다 다른 Jar 파일내에 패키지 되는 것도 있습니다. 그러한 경우,<extension>-Implementation-URL 속성이, 속성치내에서 `$(os-name)$` 구조를 사용해 처리합니다. 다음에 예를 나타냅니다.

> >     javaExt-Implementation-URL: http://.../stdext/javaExt-$(os-name)$. jar

> 여기서,`$(os-name)$` 는 타겟의 operating system의 이름으로,`os.name` 시스템 프로퍼티에 의해 정의됩니다.

Copyright © 1999 Sun Microsystems, Inc. All Rights Reserved. | Java Software