torutkのブログ

ソフトウェア・エンジニアのブログ

J2SEおっかけ

最新版のおっかけをしなくなりつつあります。これはまずい。好奇心・新しいものへの興味は技術力の源泉です。時間の無駄というのは単なる言い訳、時間を費やさねば自分の力として身につきませんから。「力の泉を涸らしてはいけない」ということで、いろいろ手を出し続けていきます。

まずはJ2SEから。4月末にJ2SE5.0の新しいUpdateがでています。また、J2SE6.0のプレリリース版も毎週公開されています。

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
https://mustang.dev.java.net/

J2SE 5.0 Tiger

まずは、J2SE 5.0のUpdate3がリリースされています。Update2からの違いもリリースノートを見れば分かります。最近リグレッションバグの修正が目に付くようになっているように思われます。J2SEもかなり規模が大きく複雑になってきているという例証かもしれません。次はスリム化が必要なように思われます。

JS2E 6.0 Mustang

週一回のEary Access版が順調に公開されています。4/28版が出ています。
こちらもSummary of Changesに修正バグや追加機能が載せられています。

  • RFE:Provide additional local calendars in Java(BugID:4609228)

さて、これはどの地域のカレンダーが搭載されたのでしょうか?ちょっと興味深いですね。このBugIDには和暦の要望が多く寄せられていますが、果たして和暦のJDK正式搭載か? 調査結果は追って紹介します。
・・・
クラスjava.util.JapaneseImperialCalendarがrt.jarに含まれています。
java.util.CalendarのgetInstance()を呼び出すときに、適用されるLocaleが以下の条件に合致するとJapaneseImperialCalendarのインスタンスが返却されます。

  • getVariant()が"JP"を返却
  • getCountry()が"JP"を返却
  • getLanguage()が"ja"を返却

うーむ、getVariant()は標準だと何も返さない(空文字列)のようだ・・・。
こんなときは、BeanShellを使って実験

bsh % cal = Calendar.getInstance();
bsh % print(cal);
java.util.GregorianCalendar[time=.....]
bsh % print(Locale.getDefault());
ja_JP
bsh % print(Locale.JAPAN.getVariant());

bsh % myLocale = new Locale("ja", "JP", "JP");
bsh % myCalendar = Calendar.getInstance(myLocale);
bsh % print(myCalendar);
java.util.JapaneseImperialCalendar[time=......]
bsh % print(myCalendar.get(YEAR));
17
bsh % print(myCalendar.get(ERA));
4
bsh %

get(ERA)の戻り値の解釈は、

  • 0 : N/A
  • 1 : Meiji
  • 2 : Taisho
  • 3 : Showa
  • 4 : Heisei

となっています。
年号の切り替えも、日を見てきちんと処理されているようです。例えば1989年の1月7日は昭和扱い、1月8日は平成扱いとなって、get(ERA)とget(YEAR)の戻り値が変わります。

ついでに、日付のフォーマットを行うDateFormatについても見てみましょう。

bsh % import java.text.*;
bsh % df = DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN);
bsh % print(df.format(new Date()));
2005年5月3日
bsh % df = DateFormat.getDateInstance(DateFormat.FULL, myLocale);
bsh % print(df.format(new Date()));
平成0017年5月3日
bsh %

さて、Mustangを入れるときに、TigerやMerlinなどの既存の製品バージョン環境と同居させる際は、JDKのみインストールしてPublic JREは入れないようにするとよいです。ブラウザへのPlug-inやWindows\System32に入るコマンド類はPublic JREに含まれるので、最低限の影響で済ますことができます。

Mustangをインストールするときは、一緒にAPI Documentも入れるとよいでしょう。MustangのAPI Documentは毎週のEary Access版で一緒に公開されています。JAR形式で配布され、インストールは、java -jarコマンドでこのJAR形式ファイルを指定すればインストーラが起動します。