Archive for 3月, 2014

【祝】Java SE 8 正式リリース

2014 年 3 月 18 日正午 (日本時間 3 月 19 日:午前 4時) 、予定通り Java の開発者待望のJava SE 8 が正式にリリースされました。当日は、多くのメディアでも取り上げられた他、Twitter 上でも非常に多くのお祝いメッセージや期待するメッセージを見受けました。

Publickey :[速報]Java 8が正式公開。ラムダ式、新しい日時API、JavaFX8など。NetBeans 8.0も登場

日経 IT Pro : 2年8カ月ぶりの Javaの新版「Java SE 8」が公開

インターネットコム:Java 8 が一般公開、ラムダ式を採用

マイナビニュース:Java 8が正式リリース – ラムダ式採用、新型導入など大幅強化

インプレス:Oracle、約3年 ぶりとなる「Java SE」のメジャーバージョン「Java SE 8」を正式公開

また、2014 年 3 月 21 日 (金)日本 Java ユーザ・グループ主催の Java SE 8 正式リリースお祝いイベント「祝☆Java 8 Launch」が開催されました。

ここで、私は Java SE 8 がリリースされるまでの歴史や概要を紹介しました。
(お祝いの意味も込めて、今私が持っている Duke 画像を全て使いました。)
その他、5 月に開催する Java のイベントについても紹介しました。今年も JavaDay Tokyo 2014を開催致します。皆様どうぞ楽しみにしてください。

5 月の Java 祭り
5 月 18 日(日) JJUG CCC Spring 2014 場所:ベルサール西新宿
5 月 22 日(木) Java Day Tokyo 2014 場所:品川プリンスホテル
5 月 23 日(金) Java SE 8 & Raspberry Pi ハンズオン 場所:オラクル青山センター
5 月 24 日(土) Java Bike Ride (サイクリング)

最後に、私が本日使用したプレゼン資料の最後に Java SE 8 の主要な機能(Lambda, Date & Time API, JavaFX) 以外の細かな機能変更を 100 ページ程にまとめました。主要機能以外で Java SE 8 でどのような機能が加わったのかをご確認されたい方はご参照頂ければ幸いです。
※ この資料は本イベントでの発表にあわせて急ピッチで作成したため、Lambda, Date & Time API, JavaFX の説明は手を抜いています(主要機能は他の発表者が詳しく説明してくださるので)。また間違いが無いように気をつけたつもりですが、間違いが含まれているかもしれません。もし間違い等を見つけた方は是非、コメント欄にコメントをお寄せいただければ幸いです。

本参考資料が決して全ての変更点ではございません。実際に Java SE 8 で追加された クラスやメソッドの一覧は、高橋 徹さん が昨年末に執筆してくださった、「Java Advent Calendar 2013 11日目 – Java SE 8の新クラス・メソッド一覧」 をご参考にいただけますし、私が調べた所では、上記以外にもオリジナル・ドキュメント自身の since 1.8 の記載漏れで上記にリストされていないクラス等もあります。
ただ、この資料が Java SE 8 で追加された新機能の把握にお役立ち頂ければ幸いです。

Happy Java SE 8 Life !!
そして、JJUG CCC, JavaDay Tokyo でまた宜しくお願いします。

Java SE 8 に Lambda 式や Stream API を導入した背景から、どのように実装すべきかの説明資料。

2014年3月21日 at 2:27 午後 2件のコメント

Java SE 8 で Charset の改良

Java SE 8 の新機能、改善点の一つに Charset の実装の改善があります。
これは charset のサイズを小さくし、エンコード、デコードのパフォーマンスを改善する事を目的としています。

実際、Java SE 7 の charset と Java SE 8 のサイズを比較してみると、下記コマンド実行例のように約 3.7 M ほどあったファイルが、3.1 M までスリム化しています。

追記 (2014 年 3 月 18 日):
山中 淳彦さん から本件に関して追加情報を頂きましたので、その内容を下記に共有いたします。

以降、山中 淳彦さんから頂いた情報:
横からすいません。私も興味があったのでチラッと調べてみました。言及されてる変更はJEP 112: Charset Implementation Improvements[1] で記述されてるもので、具体的な issue としては、JDK-6653797[2]JDK-7183053[3]が挙げられてますね。

前者、
By re-implemen/organize JDK’s charset implementation package
sun.nio.cs to achive the following goals

(1) decrease the size of the charsets.jar by 50% (from current 3.4M to below 1.7M).
(2) ease the maintenance cost (most charset implementation to be generated during
JDK build time from text based mapping tables)
(3) improve the performance (speed up the nio encoding/decoding performance)
(4) replace the current sun.io.* converters with an “adaptor” to re-direct the
sun.io encoding/decoding to nio.charset implementation t finally remove the
burden of maintain sun.io.

によって、十年来の目標だった JDK-4948149[4] での、sun.io.* の機能の sun.nio.cs.* への移管が達成され、やっと sun.io.* が削除されたということだと思われます。

後者は、“Faster new String(bytes, cs/csn) and String.getBytes(cs/csn)”[5]
によると、Java7 で single-byte の new String(bytes, cs/csn) のパフォーマンスが改善されたので、Java8 では、同様の hack が UTF-8 charset 文字にも施され、single byte、multi-byte 文字全てで、new String(bytes, cs/csn)、String.getBytes(cs/csn) のパフォーマンスが改善されたという話のようです。

[1] http://openjdk.java.net/jeps/112
[2] https://bugs.openjdk.java.net/browse/JDK-6653797
[3] https://bugs.openjdk.java.net/browse/JDK-7183053
[4] https://bugs.openjdk.java.net/browse/JDK-4948149
[5] https://blogs.oracle.com/xuemingshen/entry/faster_new_string_bytes_cs

追記2
JDK-7183053に関する変更[1]で、test/sun/nio/cs/StrCodingBenchmarkDB.java[2] が追加されてますが、codereview request for 7183053[3] でその効果が紹介されてました。

 The results of the “non -scientific” benchmark StrCodingBenchmarkDB
 running on client
 and server vm on my linux machine are included in docs_c (client) and
 docs_s(server)
 below.

http://cr.openjdk.java.net/~sherman/7183053/dbcs_c
http://cr.openjdk.java.net/~sherman/7183053/dbcs_s

よくわかってませんが、確かに速くなってるようです。

[1] http://hg.openjdk.java.net/hsx/hotspot-comp/jdk/rev/c76ad79a5a2f
[2] http://cr.openjdk.java.net/~sherman/dbcs_array/webrev/test/sun/nio/cs/StrCodingBenchmarkDB.java.html
[3] http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-July/010806.html

山中 淳彦さんから頂いた情報はここまで……


> ls -l /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/charsets.jar
-rw-rw-r– 1 root wheel 3696271 12 19 12:13 /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/charsets.jar

> ls -l /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk//Contents/Home/jre/lib/charsets.jar
-rw-rw-r– 1 root wheel 3131343 2 2 01:24 /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk//Contents/Home/jre/lib/charsets.jar

実際に jar を展開して比較した所、sun.io.* が全て削除されている事が分かりました。また、その他にも日本語に関連した部分も含め改良が加わっている事が分かりました。比較の内容の詳細を下記にアップしましたのでどうぞご参照ください。

2014年3月17日 at 5:07 午後


Java Champion & Evangelist

Translate

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2014年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

カテゴリー

clustermap

ブログ統計情報

  • 1,288,447 hits

Feeds

アーカイブ