このセクションでは、次のトピックについて説明します。
ここでは、Java Media Framework (JMF) の単一の JAR ファイルを Java 拡張機能として配備する場合の、実際に動作する完全な例を示します。この例では、SimplePlayerApplet.java
と jmf.jar
を使って .avi
メディアファイルを再生します。この例では、raw インストール方法を使って s_my_jmf.jar
というファイルをインストールします。これは、jmf.jar
を再パッケージ化して署名したものです。通常、他の JAR ファイルも JMF とともにインストールされますが、SimplePlayerApplet.java
に必要なのは jmf.jar
の機能だけです。
簡単にするために、この例では次のように仮定しています。
C:\j2sdk1.4.0
に 1.4 JDK がインストールされているC:\plugin\keystores
ディレクトリに設定されているthawte.p12
storepass
と keypass
はどちらも mypass
Sun Microsystems Inc.'s Thawte Consulting cc ID
」この場合、インストールプログラムはありません。必要な JAR ファイル jmf.jar
をダウンロードし、<jre_location>/lib/ext
にコピーするだけで済みます。Plug-in と JRE の拡張機能機構の連携によって、インストール処理 (ファイルのダウンロードとコピー) が行われます。
jmf.jar
を取得するには、クロスプラットフォームインストール用の zip ファイル jmf-2_1_1a-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 ファイルを作成し、独自のマニフェストファイルを作成します。作成したマニフェストファイルに 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
にあるファイルと新しいマニフェストファイル jmf_manifest
を JAR ファイルにまとめるために、cd
を使って workspace1
ディレクトリに移動し、JDK の jar
ツールを次のように使用します。
C:\plugin\extensions\workspace1>C:\j2sdk1.4.0\bin\jar cmf jmf_manifest my_jmf.jar *.class codecLib com javax jmapps
codecLib
、com
、javax
および jmapps
は、*.class
と同様に JAR ファイルにまとめる必要があるサブディレクトリです。
この例では、jarsigner
ツールを使って新しい 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
を作成できます。
C:\plugin\extensions\workspace1>C:\j2sdk1.4.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:\j2sdk1.4.0\bin\jarsigner -verify s_my_jmf.jar
これで、raw インストール用の正しい manifest.mf
ファイルを持つ署名付き JAR ファイルが完成しました。
次に、アプレットの JAR ファイルを作成する必要があります。
このアプレットは単一のファイル SimplePlayerApplet.class
で構成されており、メディアファイルの再生に使用されます。アプレットのソースコードを見るには、ここをクリックしてください。ここでは、アプレットのマニフェストファイルを作成して applet_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
上記のマニフェストは、拡張機能 JAR ファイル s_my_jmf.jar
が java.sun.com
Web サーバの http://java.sun.com/products/plugin/extensions/examples/jmf
からダウンロードできることを示しています。
SimplePlayerApplet.class
と applet_manifest
が C:\plugin\workspace2
にある場合は、次のコマンドを使ってアプレットとマニフェストを JAR ファイルにまとめることができます。
C:\plugin\extensions\workspace2>C:\j2sdk1.4.0\bin\jar cmf applet_manifest my_SimplePlayerApplet.jar *.class
ここでも、jarsigner
を使用して JAR ファイルに署名します。
C:\plugin\extensions\workspace2>C:\j2sdk1.4.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:\j2sdk1.4.0\bin\jarsigner -verify s_my_SimplePlayerApplet.jar
これで、署名付きのアプレット JAR ファイル s_my_SimplePlayerApplet.jar
が完成しました。そのマニフェストに含まれている情報によって、必要な拡張機能 JAR ファイル s_my_jmf.jar
が <jre_location>/lib/ext
に存在しないか古いバージョンである場合は、インストールがトリガされます。
次に、アプレットの 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
は、従来のアプレット形式を使用します。SimplePlayerApplet-2.html
は、OBJECT
および EMBED
タグについて変換された形式です。OBJECT
タグには動的バージョン管理 (clasdid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
)、Plug-in 1.4.2 の EMBED
タグには type="application/x-java-applet;jpi-version=1.4"
が指定されます。
2 つの形式は次のとおりです。
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>
SimplePlayerApplet-2.html
<html>
<head>
<title>SimplePlayerApplet</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<OBJECT
classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = "http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"
WIDTH = 320 HEIGHT = 300 >
<PARAM NAME = CODE VALUE = "SimplePlayerApplet.class" >
<PARAM NAME = ARCHIVE VALUE = "s_my_SimplePlayerApplet.jar" >
<PARAM NAME = "type" VALUE = "application/x-java-applet;version=1.4">
<PARAM NAME = "scriptable" VALUE = "false">
<PARAM NAME = "file" VALUE="0720crt1.avi">
<COMMENT>
<EMBED
type = "application/x-java-applet;version=1.4"
CODE = "SimplePlayerApplet.class"
ARCHIVE = "s_my_SimplePlayerApplet.jar"
WIDTH = 320
HEIGHT = 300
file ="0720crt1.avi"
scriptable = false
pluginspage = "http://java.sun.com/products/plugin/index.html#download">
<NOEMBED>
</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
<!--
<APPLET CODE = "SimplePlayerApplet.class" ARCHIVE = "s_my_SimplePlayerApplet.jar" WIDTH = 320 HEIGHT = 300>
<PARAM NAME = "file" VALUE="0720crt1.avi">
</APPLET>
-->
<!--"END_CONVERTED_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
SimplePlayerApplet-2.htm
次のどちらかのボタンを押して設定をテストできます。
ブラウザに URL を指定すると、まずアプレット JAR ファイルがダウンロードされ、キャッシュされます。拡張機能がインストールされていない場合は、「The applet requires the installation of optional package "javax.media.s_my_jmf"
from http://java.sun.com/products/plugin/extensions/examples/jmf/s_my_jmf.jar
」という Java Security Warning ダイアログが表示されます。[Grant this session]、[Deny]、または [Grant Always] を選択できます。インストールのアクセス権を付与すると、拡張機能が <jre_location>/lib/ext
にインストールされ、アプレットが実行されます。