Java Applet 開発用の環境を用意してみる

SOFTWARE REPORT


Java Applet

久しぶりに Java Applet でも作成しようと思って、開発環境の準備に入ったのですけど…。

すっかり利用していなかったとはいえ Microsoft 社の Visual Studio .NET 2005 を持っていて、たしかそこに Microsoft Visual J# というものがあったので、それが使えるかどうか調べてみました。とりあえず Visual Studio .NET を起動して Java Applet 作成用のプロジェクトが無いか調べてみたところ、どうやらないようです。

MSDN Library で調べてみれば、Visual J# は .NET Framework 用のアプリケーションを作成するためにのみ設計された言語であって、JavaApplet の作成には利用できないとのことでした。

 

となると、Visual Studio 6.0 の頃に付属していた Visual J++ 6.0 辺りになるのかとも思ったのですけど…、その頃の Java にはあまり良い印象がなかったのでした。というのも、動かない。

Java の構文自体にはすごく興味が沸いたのですけど、でも ”当時は” クロスプラットフォームとは理想論ばかりで、組み方が悪かったのかも知れないですけどほとんどまともに動いてはくれなかったのでした。それでも工夫していろいろと挑戦したりはしていたものですけどいつの間にやら忘れ去ってしまった、そんな思い出があったのでした。

なので、その頃に使ってみていた Visual J++ 6.0 も、JBuilder 3 も、使う気にはなれませんでした。

 

あれから数年の月日が経って、いまや Java Applet っていろいろなところで利用されていますよね。

今ならもしかして、Netscape だと動かないだの、Internet Explorer だと動かないだの、そういう心配をすることなく手軽に作ってアップして、そんな風に使えたりするのかな…。その辺りは少しばかり楽しみです。

 

Java 開発環境について調べてみる

ともあれ今時の Java 開発環境も判らなくなっていたので、Applet を作成するにはどうしたら良いのか、その辺りが載っている本を書店様にて探してみることにしました。

探してみると、真っ先に目に留まったのが SOFTBANK さまにて販売されている "やさしい Java (著:高橋麻奈)" という本でした。

 

他にもたくさんの本が並べられている辺りに Java の有力さが伺える感じでしたけど、その中からなぜこの本を選んだかというと、単純に以前に目をつけていたからなのでした。

以前と言っても数年前、Applet を作ろうとしていたかどうかは忘れましたけど、でも何かのきっかけでもう一度 Java を用いてプログラミングをしてみようと思ったことがあったのでした。そのときにいろいろ探して、良い本だなーって思っていたのがこの本でした。

 

内容は、Java Applet を作ろうというようなものではなくて、純粋に Java 言語に関する本です。

Java そのものの仕組みから始まって、基本的なプログラミングの仕方、使用できる変数の型とその細かい使い方、Java で利用できる条件分岐や制御構文、クラス宣言、配列などなど、プログラミング言語としての Java を自在に駆使するために必要な内容が、とてもわかりやすく紹介されているのでした。

もちろん、Java の機能の一つの Java Applet に関する記載もあります。

ただし Java Applet については最後にほんの少ししか取り上げられていないので、注意が必要ですけど。でも Applet を組む上で必要な基本事項はすごく少ないページの中にもしっかり網羅されていると思うので、プログラミングを組むという、その勝手を知っている人ならば、むしろ余計なところが無くて良い感じです。

逆に言語を問わず今までプログラミングを経験したことのない人が、Applet を作成したいという希望でこの本に手を伸ばすのはあまりお勧めできないかもしれないです。もっともそういう人は、この本を書店でぱらぱらとでもめくってもらえれば、自然と棚に戻すと思いますけど。

 

なんだかんだ言いましたけど、情報は他の本には無いくらい、しっかりと揃っているのでお勧めです。

プログラミングの発想が備わっていないうちは、他の Java Applet の入門書などを参考にしてそれで組み方を学んで…。でもそれだけではすぐに必ず行き詰まってしまうはず。そんなときに、次に、そして最後に、欲しくなるのが、この本なんじゃないかなって思うのでした。

ともあれ一度、Lesson 16 の Java アプレットの項に、ぜひぜひ目を通してみてください。それを見て Java Applet が作れそうだと思えたならば、絶対にこの本が初心のうちも上達してからも、これから先のプログラミングで大いに役に立つと思います。

 

… えっと、

そんな本の中に、Java プログラミングを行う上で必要となる環境についても触れられていました。

現時点 2005/06/19 では、Sun Microsystems 社のサイトから無償で提供されている JDK (Java 2 SDK) というものをダウンロードしてきて利用するというのが一般的みたいですね。JDK (Java Development Kit) の他にも、Java を実行するために必要な "Java 仮想マシン" と呼ばれる実行環境 (RE) もありますけど、開発に必要なのはこの JDK の方です。

JDK をもっと使いやすくするツールも各社から販売されているようですけど、今回はそれは気にせず、JDK をダウンロードして利用してみようと思います。

 

Java 2 SDK Standard Edition をインストールする

JDK は Sun Developer Connection - Java Developer Connection にてダウンロードすることが出来ます。

素直に探そうとすると Java Runtime Environment (Java 仮想マシン) しか見つからないのですけど、Java による開発を行う場合は J2SE (Java 2 SDK Standard Edition) を入手する必要がありますので、まずはそのページへ移動します。

現時点 2005/06/20 では Java 2 Platform Standard Edition 5.0 が公開されているようでした。

 

J2SE サイトのダウンロードページから J2SE 5.0 のページへ移動して、そこで "J2SE Development Kit (JDK)" をダウンロードします。

無償で提供されている開発環境 "NetBeans IDE" もバンドルされているパッケージもありましたけど、それに含まれる JDK は Update 2 なのに対して最新の JDK は Update 3 なので、今回は素直に JDK のみをダウンロードしてみることにしました。

 

J2SE Development Kit 5.0 Update 3 の Windows Offline Installation (jdk-1_5_0_03-windows-i586-p.exe) をダウンロードしたら、それを実行して JDK のインストールを行います。

あとはインストールウィザードの指示に従って進めて行けば、特に難しいことなくインストールが完了します。途中で 2 回ほどインストールするプログラムの機能を選択する画面が現れますけど、最初が "JDK (開発ツール)" で、次が "JRE (実行環境)" のもののようでした。

これで Java Applet の開発環境を準備することができました。

 

開発環境を調整する

JDK にて Java プログラムを開発する場合はコマンドプロンプトを使って Java コンパイラを呼び出す必要があるのですけど、単純にインストールしただけだと少し勝手が悪いです。

たとえば "C:\Program Files\Java\jdk1.5.0_03" へ JDK をインストールした場合、たとえば test.java というファイルをコンパイルする際には基本的に次のようにしないといけなくなります。

C:\Program Files\Java\jdk1.5.0_03\javac test.java

毎回このようにするのは大変なので、JDK をインストールした場所を登録しておくと便利です。

【マイコンピュータ】 の 【プロパティ】 から ”システムのプロパティ” ダイアログを表示して、【詳細設定】 タグにある 【環境変数】 ボタンを押します。そして "PATH" 環境変数を編集します。ユーザー環境変数とシステム環境変数との違いは、前者がそのユーザのみに影響する値で、後者が全てのユーザに影響する値です。

既に設定されている値は消さないように注意して、最後にセミコロン ( ; ) を打った後、続けて JDK をインストールした場所の最後に "\bin" をつけた文字列 ( C:\Program Files\Java\jdk1.5.0_03\bin ) を追記してあげれば完了です。

 

こうすることで、次のように簡単に Java コンパイラを呼び出すことが出来るようになりました。

javac test.java

 

Mac OS X 10.4 で Java Applet が動かない…

さっそく JDK 5.0 にて簡単な Java Applet を作成してみました。Java Applet の paint() メソッド内でちょっとした描画を行うだけのアプレットだったのですけど…。

Windows XP で動かしている分にはなんら問題なかったのですけど、ふと Apple 社の Mac mini に標準で組み込まれていた Mac OS X 10.4 にインストールした Internet Explorer 5.2 にて確認してみたところ、次のようなエラーが出てしまって、表示することが出来ませんでした。

java.lang.UnsupportedClassVersionError.TESTAPPLET (Unsupported major.minor version 48.0)

とりあえず読み取れる事は、作成したアプレット (TESTAPPLET.class) はサポートされていないバージョンだということですね。

 

きっと、ダウンロードした JDK のバージョンが最新だったため、Mac OS X 10.4 に搭載されている Java 仮想マシンで動作させる事が出来ないということなのでしょう。なんだか数年前とほとんど何も変わっていないですね…。

あの頃は特に発展途上中だったからなおさら、古い Java 仮想マシンでは出来ないことが多かったり、だからといって新しい仮想マシンだとほとんどの環境で動かなかったり。仮想マシンといえど大切な土台なのだから、そんなに頻繁に差し替えないといけない事態は避けて欲しいと、当時よく思ったものでした。

素直に Mac OS X 10.4 の方の Java 仮想マシンをアップグレードすれば良いのかもしれないですけど、それでは OS こそ問わないといえど、いかなる環境でも動くとはいい難い。Mac OS X 版は詳しく調べていないですけど、なにやらインストール作業も手間がかかるみたいですし…。

 

そんなこんなで、どうしたものかと思っていたら、JDK の Java コンパイラは以前のバージョンにも配慮した設計になっているのだとか。新しいコンパイラでわざわざ古いコードを生成しないといけないというのも、なんだかもったいない感じですけど…。

ともあれ -target オプションを使ってやることで、指定したバージョンの Java 仮想マシンを想定したコードを生成してくれるとのことでした。JDK 5 でサポートしている Java 仮想マシンのバージョンは、ざっと調べてみた限りでは次の通りのようです。

-target 1.5 JavaVM 1.5 (JDK 5)
-target 1.4 JavaVM 1.4 (JDK 1.4)
-target 1.3 JavaVM 1.3 (JDK 1.3)
-target 1.2 JavaVM 1.2

JDK 5.0 に付属している javac コンパイラは標準で -target 1.5 が指定されているようなものです。

 

ここを -target 1.4 とでもしてとりあえず MacOS X にて動作するかを試してみようと思ったところ…、次のようなエラーが出てしまってコンパイルを行うことが出来ませんでした。

javac: ターゲットリリース 1.4 がディフォルトのソースリリース 1.5 と競合しています。

最初は意味合いが良く判らなかったのですけど、よくよく調べてみると javac には -source というオプションもあるようでした。

それでソースの互換性を指定するようなのですけど、それの初期設定では 1.5 となっているために 1.5 のソースからは 1.4 のプログラムを作る事はできないと、そんな感じのメッセージになっているようです。

この二つのオプションの説明が JDK 5 の javac を実行したときに表示されるメッセージの中に書かれていたので、意味があるかは別として、一応書き出しておきますね。

-source <release> 指定されたりリースとソースの互換性を保つ
-target <release> 特定の VM バージョン用のクラスファイルを生成する

改めて -target 1.4 と -target 1.4 の両方のオプションをつけて javac を実行してみたところ、今度はエラーが表示されることなく無事にコンパイル作業が完了しました。

これで Mac OS X でも動くかな…と思ったのですけど、相変わらず "java.lang.UnsupportedClassVersionError" エラーにて実行することは出来ませんでした。ならばと、バージョン指定を 1.3 に、1.2 にとやってみたのですけど改善されることもなく…。

 

よく判らないながらも、とりあえず JDK 1.4.2 をダウンロードしてみることにしました。とりあえずひとつ前のバージョンでやってみようということで…。

インストールして JDK 1.4.2 の javac を用いてコンパイルを行ってみると、次のようなエラーが発生しました。

TESTAPPLET.java:88: TESTCLASS_A にアクセスできません。

クラスファイル .\TESTCLASS_A は不正です。

クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。

削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。

これは、JDK 5 でコンパイルした "TESTCLASS_A.class" ファイルが残っていたために、それを内部で使用していた "TESTAPPLET.class" をコンパイルする際に未来のバージョンのファイルを組み込もうとしたのが原因でしょう。

指示にもあるように、いったん全ての "*.class" ファイルを削除してコンパイルしなおしてみたところ、エラーなくコンパイル作業は終了となりました。

そして Mac OS X にてこの Java Applet を表示させてみたところ、今度はみごと正常に表示されました。Windows では見えていた描画途中の経過が、Macintosh では描画処理が終わるまで見えないところに、OS が異なるという事実を少し感じつつ…。

 

JDK 5 の -target はいったいなんだったんでしょう。1.4 指定にしてもぜんぜん JavaVM 1.4 用にならなかったということになりますよね。そもそも、最新の JDK でコンパイルしても、プログラムの中で最新の機能を使っているかどうかで、必要最小限のバージョンチェックでもしてくれれば、動いてもらうことにさほど気を遣わなくて良くなるので、楽なんだろうなとは思うのですけど。

この感じだと、多くの環境で動いてもらうために、よほど機能に困らない限りは古めのバージョンの JDK を使ったほうが良いかもしれないですね。少なくとも自分は、当分の間は JDK 1.4.2 を使って行こうと思います。実行環境は最新の JRE 5.0 を使いつつ…。

 

ともあれ昔のように、Netscape だと 1 分以上待たされるとか、別の環境で実行してみたらメソッドが無いと怒られるとか、古いバージョンでは出来ないことが多いとか、そういうことはさすがになくなっているようなので、最新版を使いたいという気持ちを我慢できれば、けっこう問題なく Java プログラミングで遊べそうな気がしました。