Java 2 Platform/SDK, Standard Edition, version 1.4

Sun Microsystems, Inc.JavaSoft部門Java 2 SDK, Standard Edition, version 1.4と同Platformを公開しました。久しぶりのメジャーバージョンアップです。

このバージョンにおける主な追加および変更点は以下の通りです。(一部私の主観が入っています。同じ内容を別の場所で見かけた方もいらっしゃるかもしれませんが、それを書いたのも私です。

  • XML処理の標準搭載。
  • 新しい入出力パッケージjava.nio導入。
  • セキュリティ機能の強化と標準搭載(JCEやJavaSSEなど)。
  • Java 2Dの機能拡張とハードウェアアクセラレーション対応。
  • Image I/O Frameworkの導入。
  • 新しい印刷サービスAPIの導入。
  • AWTが新しいフォーカスアーキテクチャに置き換わった。またホイールマウスのサポートが追加された。Solarisでの64bit対応。
  • SwingにもAWTと同様のフォーカスアーキテクチャを導入。いくつかの機能拡張が行われた。
  • Swingにおけるドラッグ&ドロップのアプリケーション間転送のサポート。
  • ロギングAPIの導入。
  • Java Web Startによる自動ダウンロード&実行。
  • JavaBeans コンポーネントの長期持続性。
  • JDBCが2.0から3.0へバージョンアップ。
  • アサーション機能の導入。
  • Preferences APIによるユーザーの設定と構成データの管理機能の追加。
  • Java仮想マシンが拡張され、エラー処理機構、並列ガーベジコレクタ、ガーベジコレクションイベントのログ記録等の機能追加。
  • パフォーマンスの向上。
  • IPv6 を含むネットワークサポート。
  • シリアライズ関係の変更および拡張。
  • Java Naming and Directory Interface(JNDI)の導入。
  • Unicode 3.0のサポート。
  • タイ語とヒンディー語をサポート。
  • 正規表現の標準サポート。
  • リフレクション機能の高速化。
  • java.nioの導入に伴うJNIの拡張。
  • その他いろいろと..。

各Java専門雑誌でこのあたりは取り上げられると思いますので、ここではJava 2 Platform, Micro Editionの開発環境としてJava 2 SDK, Standard Edition, version 1.4(J2SDK1.4)を使用した場合の注意点をまとめたいと思います。

まず、J2ME Wireless SDK for the DoJa APIs(J2MEWSDK4DOJA)がインストールできるかどうかですが、J2SDK1.4ではインストールできません。(並存してJava 2 SDK, Standard Edition, version 1.3(J2SDK1.3)をいれていればインストール可能ですが、その場合はインストーラがJ2SDK1.3検出して、そちらを使用するのでJ2MEWSDK4DOJAとJ2SDK1.4を組み合わせた場合の不具合は一切発生しません。)

それでもインストールできないとお話にならないので、J2SDK1.4のみの環境へ無理やりインストールしてみました。インストールするためのレジストリファイルをリスト1に示します。(このファイルはWindows2000へのインストールでCドライブに全てをインストールすることを前提としています。他の環境はこのリストを参考にして別途作成する必要があります。特にWindows98/98Se/Meの場合。)

リスト1 : インストールするためのレジストリファイル
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.3]
“JavaHome”=”C:\\j2sdk1.4.0”
“MicroVersion”=”0”

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.3.0]
“JavaHome”=”C:\\j2sdk1.4.0”
“MicroVersion”=”0”

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.3.0]
“JavaHome”=”C:\\Program Files\\Java\\j2re1.4.0”
“UseJava2IExplorer”=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.3]
“JavaHome”=”C:\\Program Files\\Java\\j2re1.4.0”
“MicroVersion”=”0”
“RuntimeLib”=”C:\\Program Files\\Java\\j2re1.4.0\\bin\\client\\jvm.dll”

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.3.0]
“JavaHome”=”C:\\Program Files\\Java\\j2re1.4.0”
“MicroVersion”=”0”
“RuntimeLib”=”C:\\Program Files\\Java\\j2re1.4.0\\bin\\client\\jvm.dll”

このレジストリ変更はJ2SDK1.4に対してJ2SDK1.3のエントリを追加して、J2SDK1.3を偽装するためのものです。この様にすることでインストールすることはできますが、他に悪影響を与える可能性もあります。

このようにインストールしたJ2MEWSDK4DOJAを起動したウインドウを図1に示します。これに対してJ2SDK1.3でインストールした場合のウインドウを図2に示します。このように結構異なる表示になっていることがわかります。

図1 : J2SDK1.4で起動した場合
J2SDK1.4で起動した場合の図
図2 : J2SDK1.3で起動した場合
J2SDK1.3で起動した場合

見た目の差のほかに、メニューから編集→設定を選ぶと表示される「エミュレータ設定」のダイアログでは若干障害が発生します。見た目はまったく普通なのですが、「デバイス指定」および「Network Access」を選択するコンボボックスで設定を変更すると、テキストボックスに入力ができなくなります。再度ダイアログを表示すれば入力できるので、コンボボックスによる設定で一度確定してから、再度テキストボックスに入力を行えば、設定を行えないわけではありませんが、やはり面倒は面倒です。また、ビルドを行うと「注: sun.tools.javac.Main は推奨されません。」というメッセージが出たりもします。(これはおそらくこのクラスでコンパイラを起動しない方がいい、ということでしょう。)

その他の動作は問題ないようです。あまりお勧めしませんし、多少の障害があるものの使用できる、といった感じでしょうか。

また、javadocも新しくなったので試してみたのですが、-bootclasspathオプションを指定すると正常にClassのドキュメントを生成できない不具合があるようです。クラスの構造を認識する際にリフレクトするようですが、この際に-bootclasspathの指定と自分自身の実行環境のbootclasspathがごっちゃになって、落ちているようです。落ちる際にはリスト2のようなメッセージが出ます。

リスト2 : javadocがクラッシュした際のメッセージ
javadoc: doclet クラス com.sun.tools.doclets.standard.Standard では、メソッド start は例外 java.lang.reflect.InvocationTargetException をスローしました。
com.sun.tools.javac.v8.code.Symbol$CompletionFailure: ファイル java\io\Serializable.class が見つかりません。
at com.sun.tools.javac.v8.code.ClassReader.fillIn(ClassReader.java:1020)
at com.sun.tools.javac.v8.code.ClassReader.complete(ClassReader.java:977)
at com.sun.tools.javac.v8.code.Symbol.complete(Symbol.java:375)
at com.sun.tools.javac.v8.code.Symbol$ClassSymbol.complete(Symbol.java:697)
at com.sun.tools.javac.v8.code.Symbol$ClassSymbol.flags(Symbol.java:594)
at com.sun.tools.javac.v8.code.Type$ClassType.isSubType(Type.java:1073)
at com.sun.tools.javadoc.ClassDocImpl.isSerializable(ClassDocImpl.java:848)
at com.sun.tools.doclets.standard.HtmlStandardWriter.generateTagInfo(HtmlStandardWriter.java:1486)
at com.sun.tools.doclets.standard.ClassWriter.generateClassFile(ClassWriter.java:234)
at com.sun.tools.doclets.standard.ClassWriter.generate(ClassWriter.java:95)
at com.sun.tools.doclets.standard.Standard.generateClassCycle(Standard.java:245)
at com.sun.tools.doclets.standard.Standard.generateClassFiles(Standard.java:200)
at com.sun.tools.doclets.standard.Standard.startGeneration(Standard.java:166)
at com.sun.tools.doclets.standard.Standard.start(Standard.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:196)
at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:95)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:288)
at com.sun.tools.javadoc.Start.begin(Start.java:114)
at com.sun.tools.javadoc.Main.execute(Main.java:44)
at com.sun.tools.javadoc.Main.main(Main.java:34)
エラー 1 個

このような状態のため、私としてはメイン環境をJ2SDK1.4に切り替えるにはまだまだ時間がかかりそうです。次のメンテナンスリリースが出たらまた試してみようかと思っています。

なお、J2ME Wireless Toolkit 1.0.3およびKJX作成ツールはJ2SDK1.4で動作しました。J2MEWSDK4DOJAのインストールには必要だった偽装を行うこともなくJ2ME Wireless Toolkit 1.0.3のインストールは可能です。この際、J2SDK1.3とJ2SDK1.4の両方をインストールしている環境ではインストーラがJ2SDK1.4を検出してインストールを行いました。KJX作成ツールは残念ながらJ2SDK1.4ではプリベリファイを行う時点で処理に失敗します。このためJ2SDK1.4でezplus対応アプリを作成することはできません。
iアプリをまったく作成する必要がなく、J2ME用のjavadoc生成を必要としないユーザーは完全に移行しようと思えばできるかもしれません。そうでなければJ2SDK1.3とJ2SDK1.4を並存させるか、J2SDK1.3に留まるというのも手です。やはりいろいろと不具合が出る可能性が否定できないので、J2MEによる開発を行う場合は主力環境をJ2SDK1.4に切り替えるのは当分避けた方がよいでしょう。いずれにしても自身が使っている他のJava対応ソフトウェアの動向を見据えつつ、慎重な判断が必要なことは確かだといえるでしょう。

以上はあくまでもちょっと実験した程度で書いていますので、参考にする場合は自身で追試を必ず行うべきです。鵜呑みにしないでください。やはり抜けてました…。はう。


KJX作成ツールが動作しないということをアップ後に確認したので2時間後に書き換えて再アップしました。訂正部分は訂正部分、追記部分は追記部分という装飾で記述しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です