Java 7、Java 8、Java 11、Java 12の新元号対応アップデートが4月16日に登場予定。オラクルが発表
オラクルは、4月1日に発表される予定の新元号に対応するためのJavaのアップデートを、Java 7、Java 8、Java 11(LTS)、Java 12を対象に4月16日にリリースされる予定であることを明らかにしました(日本時間では4月17日になると思われます)。
「A new (Japanese) era for Java! | Oracle Java Platform Group, Product Management Blog」から引用します。
After the new era name is released, with the next update release (planned for April 16, 2019), all supported JDK releases: 7, 8, 11 LTS, and 12 will be updated to handle the new era.
新元号の発表後、次のアップデートリリースにおいて(2019年4月16日に予定)、次のすべてのJDKリリース、7、8、11 LTS、12は、新元号を扱うためにアップデートされる。
Javaには、日付関連のjava.util.Calendarクラスと、Java 8以降に追加されたData and Time APIなどで元号を扱うことができます。
下記はjava.util.Calendarクラスを用いた場合のサンプルです。新元号対応のアップデート後は、最後のコメントの部分の「元号」に新元号が入ることになります。また、新元号の「1年」が「元年」になっていることも分かります。
(追記:「元年」表記については「元年表記にはjava.text.DateFormatのFULLスタイルやDate and Time APIのDateTimeFormatterBuilderを使います。参考記事」と、ブックマークでコメントをいただきました)
import java.util.*;
import java.text.*;
new SimpleDateFormat("GGGGy 年M ⽉d ⽇",
Locale.forLanguageTag("ja-JP-u-ca-japanese")).
format(new Calendar.Builder().
setDate(2019, Calendar.MAY, 1).build().getTime());
//before the update: 平成31 年5 ⽉1 ⽇,
//after the update: 元号元年5 ⽉1 ⽇
Java 8以降使えるData and Time APIを用いた場合のサンプルが以下。これも「元号」のところに新元号が入ります。
import java.time.chrono.*;
import java.time.format.*;
import java.time.temporal.*;
DateTimeFormatter.ofPattern("GGGGy 年M ⽉d ⽇").
withChronology(JapaneseChronology.INSTANCE).
withLocale(Locale.JAPAN).
format(JapaneseDate.of(2020, 2, 1));
// => “元号2 年2 ⽉1 ⽇”
いずれも新元号から西暦への変換も行えるようになります。
もちろん、Javaが新元号に対応したからといって自動的にアプリケーションが新元号に対応するとはかぎらないので、アプリケーションのコードもあらためて見直す必要があるでしょう。
オラクル以外から提供されているJavaを利用している場合にも、新元号への対応は同様に行われるはずですが、アップデートがいつどのように配布されるかはベンダの体制に依存しますので、それぞれの配布元に確認するようにしてください。
関連記事
Unicodeも新元号が発表され次第、キャラクタが追加されます。これもJavaの新元号対応に反映されることになります。
あわせて読みたい
テスト作業も、画面キャプチャによるエビデンス取得も自動化してくれて、Jenkinsとの連動も可能。Web、デスクトップ、モバイルに対応するテスト自動化ツール[PR]
≪前の記事
Istio 1.1がリリース。大規模メッシュにも対応する性能とスケーラビリティの向上など