완전한 예:Java 확장 기능으로서의 Java Media Framework - xrath.com 에서 번역됨

# 부록 C:완전한 예 — Java 확장 기능으로서의 Java Media Framework 의 배치

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

- 처음에
- 인스톨 하는 JAR 파일을 작성한다
- 애플릿 JAR 파일을 작성한다
- 애플릿의 HTML 를 작성한다
- 예를 테스트한다

### 처음에

여기에서는, Java Media Framework (JMF)의 단일의 JAR 파일을 Java 확장 기능으로서 배치하는 경우의, 실제로 동작하는 완전한 예를 나타냅니다. 이 예에서는,`SimplePlayerApplet.java` 와 `jmf.jar` 를 사용해 `. avi` 미디어 파일을 재생합니다. 이 예에서는, raw 인스톨 방법을 사용해 `s_my_jmf.jar` 라고 하는 파일을 인스톨 합니다. 이것은,`jmf.jar` 를 재패키지화해 서명한 것입니다. 일반적으로, 다른 JAR 파일도 JMF 와 함께 인스톨 됩니다만,`SimplePlayerApplet.java` 에 필요한 것은 `jmf.jar` 의 기능 뿐입니다.

간단하게 하기 위해서, 이 예에서는 다음과 같이 가정하고 있습니다.

- Microsoft Windows 시스템으로 작업하고 있다
- 컴퓨터의 `C:\"Program Files"\Java\jdk1. 6.0` 에 1.6 JDK 가 인스톨 되고 있다
- 서명용의 키스토어가 `C:\plugin\keystores` 디렉토리로 설정되어 있다
- 키스토어의 이름은 `thawte.p12`
- `storepass` 와 `keypass` 는 어느쪽이나 `mypass`
- 키스토어의 별명은 「`Sun Microsystems Inc. 's Thawte Consulting cc ID`」

### 인스톨 하는 JAR 파일을 작성한다

이 경우, 인스톨 프로그램은 없습니다. 필요한 JAR 파일 `jmf.jar` 를 다운로드해,`<jre_location>/lib/ext` 에 카피하는 것만으로 끝납니다. Plug-in 와 JRE 의 확장 기능 기구의 제휴에 의해, 인스톨 처리 (파일의 다운로드와 카피)를 합니다.

`jmf.jar` 를 가져오려면 , 크로스 플랫폼 인스톨용의 zip 파일 `jmf-2_1_1e-alljava.zip` 를 `http://java.sun.com/products/java-media/jmf/2. 1.1/download.html` 로부터 다운로드합니다. `jmf.jar` 는, 다른 JAR 파일과 함께 이 zip 파일에 포함되어 있으므로, 거기로부터 추출할 수 있습니다.

`jmf.jar` 를 취득할 수 있으면(자),`jmf.jar` 자체를 `C:\plugin\extensions\workspace1` 등의 디렉토리에 추출합니다. 여기서,`manifest.mf` 파일에는 불필요한 서명 정보가 포함되어 있으므로,`META-INF` 디렉토리가 존재하는 경우는 이 디렉토리를 삭제합니다.

다음에,`jmf.jar` 에 근거해 새로운 JAR 파일을 작성해, 독자적인 Manifest 파일을 작성합니다. 작성한 Manifest 파일에 jmf_manifest 라는 이름을 붙입니다. 이 파일을,`jar` 툴에의 입력으로서 지정합니다. 이 예로 사용되고 있는 내용은 다음과 같습니다.

> `Extension-Name:javax.media.s_my_jmf
> Specification-Vendor:Sun Microsystems, Inc
> Specification-Version:2. 1
> Implementation-Vendor-Id:com.sun
> Implementation-Vendor:Sun Microsystems, Inc
> Implementation-Version: 2.1. 1`

우선,`jmf.jar` 에 포함되어 있던 파일을 새로운 JAR 파일에 정리해`my_jmf.jar` 라는 이름을 붙입니다. 이 파일에 서명해, 거기에 `s_my_jmf.jar` 라는 이름을 붙입니다.

`workspace1` 에 있는 파일과 새로운 Manifest 파일 `jmf_manifest` 를 JAR 파일에 정리하기 위해서(때문에),`cd` 를 사용해 `workspace1` 디렉토리로 이동해, JDK 의 `jar` 툴을 다음과 같이 사용합니다.

> `C:\plugin\extensions\workspace1>C:\"Program Files"\Java\jdk1. 6.0\bin\jar cmf jmf_manifest my_jmf.jar *. class codecLib com javax jmapps`

`codecLib`,`com`,`javax`, 및 `jmapps` 는,`*. class` 와 같게 JAR 파일에 정리할 필요가 있는 서브 디렉토리입니다.

`thawte.p12` 라고 하는 Thawte 키스토어가 `C:\plugin\keystores` 에 있어,`storepass` 와 `keypass` 의 패스워드는 어느쪽이나 `mypass` 이다고 합니다. 또,`storetype` 는 「`pkcs12`」, 키스토어의 별명은 「`Sun Microsystems Inc. 's Thawte Consulting cc ID`」입니다. 이 경우, 다음의 스텝을 스킵 해,`my_jmf.jar` 의 서명하러 진행되어, 서명 첨부 JAR 파일 `s_my_jmf.jar` 를 작성할 수 있습니다.

다음의 커멘드를 실행해,`thawte.p12` 라고 하는 키스토어를,`storepass` 와 `keypass` 의 패스워드는 어느쪽이나 `mypass`, 키스토어의 별명은 「`Sun Microsystems Inc. 's Thawte Consulting cc ID`」로 작성할 수 있습니다.

> `C:\plugin\keystores>C:\"Program Files"\Java\jdk1. 6.0\bin\keytool -genkey -alias "Sun Microsystems Inc. 's Thawte Consulting cc ID" -keypass mypass -keystore thawte.p12 -storetype pkcs12 -storepass mypass`

`

이 예에서는,`jarsigner` 툴을 사용해 새로운 JAR 파일에 서명합니다. 다음과 같이 사용합니다.

> `C:\plugin\extensions\workspace1>C:\"Program Files"\Java\jdk1. 6.0\bin\jarsigner -keystore C:\plugin\keystores\thawte.p12 -storepass mypass -keypass mypass -storetype "pkcs12" -signedjar s_my_jmf.jar my_jmf.jar "Sun Microsystems Inc. 's Thawte Consulting cc ID"`

이 새로운 서명 첨부 JAR 파일을 다음과 같이 검증할 수 있습니다.

> `C:\plugin\extensions\workspace1>C:\"Program Files"\Java\jdk1. 6.0\bin\jarsigner -verify s_my_jmf.jar`

이것으로, raw 인스톨용의 올바른 `manifest.mf` 파일을 가지는 서명 첨부 JAR 파일이 완성했습니다.

다음에, 애플릿의 JAR 파일을 작성할 필요가 있습니다.

###
애플릿 JAR 파일을 작성한다

이 애플릿은 단일의 파일 `SimplePlayerApplet.class` 로 구성되어 있어 미디어 파일의 재생에 사용됩니다. 애플릿의 원시 코드를 보려면 ,여기를 클릭해 주세요. 여기에서는, 애플릿의 Manifest 파일을 작성해 `applet_manifest` 라는 이름을 붙여 애플릿과 Manifest를 JAR 파일에 정리하고 나서, 거기에 서명합니다.

애플릿 `applet_manifest` 는 다음과 같습니다.

>     Extension-List: s_my_jmf
>     s_my_jmf-Extension-Name: javax.media.s_my_jmf
>     s_my_jmf-Specification-Version: 2.1
>     s_my_jmf-Implementation-Version: 2.1. 1
>     s_my_jmf-Implementation-Vendor-Id: com.sun
>     s_my_jmf-Implementation-URL: http://java.sun.com/products/plugin/extensions/examples/jmf/s_my_jmf.jar

상기의 Manifest는, 확장 기능 JAR 파일 `s_my_jmf.jar` 가 `java.sun.com` Web 서버의 `http://java.sun.com/products/plugin/extensions/examples/jmf` 로부터 다운로드할 수 있는 것을 나타내고 있습니다.

`SimplePlayerApplet.class` 와 `applet_manifest` 가 `C:\plugin\extensions\workspace2` 에 있는 경우는, 다음의 커멘드를 사용해 애플릿과 Manifest를 JAR 파일에 정리할 수가 있습니다.

> `C:\plugin\extensions\workspace2>C:\"Program Files"\Java\jdk1. 6.0\bin\jar cmf applet_manifest my_SimplePlayerApplet.jar *. class`

여기에서도,`jarsigner` 를 사용해 JAR 파일에 서명합니다.

> `C:\plugin\extensions\workspace2>C:\"Program Files"\Java\jdk1. 6.0\bin\jarsigner -keystore C:\plugin\keystores\thawte.p12 -storepass mypass -keypass mypass -storetype "pkcs12" -signedjar s_my_SimplePlayerApplet.jar my_SimplePlayerApplet.jar "Sun Microsystems Inc. 's Thawte Consulting cc ID"`

이 파일을 다음과 같이 검증합니다.

> `C:\plugin\extensions\workspace2>C:\"Program Files"\Java\jdk1. 6.0\bin\jarsigner -verify s_my_SimplePlayerApplet.jar`

이것으로, 서명 첨부의 애플릿 JAR 파일 `s_my_SimplePlayerApplet.jar` 가 완성되었습니다. 그 Manifest에 포함되어 있는 정보에 의해, 필요한 확장 기능 JAR 파일 `s_my_jmf.jar` 가 `<jre_location>/lib/ext` 에 존재하지 않는가 낡은 버젼인 경우는, 인스톨이 트리거됩니다.

다음에, 애플릿의 HTML 를 작성할 필요가 있습니다.

### 애플릿의 HTML 를 작성한다

몇개의 방법을 선택할 수 있습니다. 이 페이지에 액세스 하는 사용자의 시스템에 버젼 1.3. 1_01 이후의 Java Plug-in 가 인스톨 되고 있는 것을 전제로서 종래의 `APPLET` 태그를 사용할 수 있습니다 (종래의 `APPLET` 태그로 애플릿을 기동하려면 , 버젼 1.3. 1_01 이후의 Java Plug-in 가 필요합니다). JDK 의 `bin` 디렉토리에 있는 HTML 컨버터 (`<sdk_location>/bin/HtmlConverter.exe`)를 사용해, 애플릿을 다양한 형식으로 변환할 수도 있습니다. 여기에서는, 다음에 나타내는 종래의 애플릿 형식을 사용합니다.

#### `SimplePlayerApplet-1.html`

>     <html>
>     <head>
>     <title>SimplePlayerApplet</title>
>     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
>     </head>
>     <body bgcolor="#FFFFFF" text="#000000">
>     <applet code="SimplePlayerApplet.class" archive="s_my_SimplePlayerApplet.jar" width=320 height=300>
>     <param name="file" value="0720crt1.avi">
>     </applet>
>     </body>
>     </html>

미디어 파일은 `0720crt1.avi` 입니다.

이 예에서는,`java.sun.com` Web 서버의 `http://java.sun.com/products/plugin/extensions/examples/jmf` 에, 다음의 파일이 놓여져 있습니다.

- `0720crt1.avi`
- `s_my_jmf.jar`
- `s_mySiplePlayerApplet.jar`
- `SimplePlayerApplet-1.html`

### 예를 테스트한다

다음의 버튼을 눌러 설정을 테스트할 수 있습니다.

브라우저에 URL 를 지정하면(자), 우선 애플릿 JAR 파일이 다운로드되어 캐쉬됩니다. 확장 기능이 인스톨되어 있지 않은 경우는, 다음의 「Java Request Download」다이얼로그가 표시됩니다:「The applet requires installation of optional package. Do you want to continue?」. 속행 또는 캔슬하는 옵션이 있습니다. 「OK」버튼을 눌러 인스톨을 속행하는 경우는, 확장 기능 JAR 파일의 「시큐리티 경고」다이얼로그가 표시됩니다. 「실행」버튼을 눌러, 패키지의 인스톨을 속행할 수 있습니다. 확장 기능이 `<jre_location>/lib/ext` 에 인스톨 되어 애플릿이 실행됩니다.

`