BT

InfoQ ホームページ ニュース Java 8ニュース:新しいアトミックナンバーを含むRC版を公開、モジュール化は外れる

Java 8ニュース:新しいアトミックナンバーを含むRC版を公開、モジュール化は外れる

ブックマーク

原文(投稿日:2014/02/16)へのリンク

Java8の最初のRC版が2月の始めにリリースされた。第1版のb128は2月4日、第2版は1週間後にOpenJDKのメーリングリストで発表された

Java 8 RC2は、新しいComparator APIの重大な不具合を修正している。新しいthenComparing()に不要な型制限があり、不具合報告では次のように報告された。

java.util.Comparatorの以下のメソッドでは、型のUはjava.lang.Comparableを継承しなければなりません。
<U extends Comparable<? super U>> Comparator<T> thenComparing( 
  Function<? super T, ? extends U> keyExtractor, 
  Comparator<? super U> keyComparator);
しかし、keyComparatorは抽出されたkeyオブジェクトを比較するのに使われるため、この制限は不要です。

Java 8 RC2では、Mac OS Xのreadパーミッションの問題も修正されている。Java 8 RC版は、https://jdk8.java.net/download.htmlからダウンロードできる。

JDK 8のバグトラッカーによると、リリースは3月17日の聖パトリック祭の日だ。この記事を執筆している時点で、ドキュメントに関する3つの問題がまだ解決されていない。

もう1つのJava 8に関するニュースとして、Java 8のアトミックナンバーが相当速いことを示す数値を、最近、Drew Stephens氏が公表したことがある。また、Mark Reinhold氏は法律問題を引き合いに出し、モジュール化をJava 8から外すように提案した。

新しいアトミックナンバーの実装

Java 8のラムダ (335) と新しいDateとTimeのAPI (JSR 310) に加えて、マルチスレッドのアプリケーションの特定クラスにとって、とても重要なアトミックナンバーの実装がある。Palamino Labsの主任であるDrew Stephens氏は、最近、LongAdderとDoubleAdderについて追記した

マルチスレッドのアプリケーションのあまり目立たないが、とても重要なクラスは、LongAdderDoubleAdder、アトミックナンバーの実装です。AtomicIntegerAtomicLongは、マルチスレッドで競合が起きたときに、優れたパフォーマンスを提供します。

Intel Xeon E5-2670の8つのコアすべてにアクセスできるm3.2xlarge EC2 インスタンスを使ったベンチマークで、LongAdderとAtomicLongのパフォーマンスの違いを示します。

シングルスレッドでは、新しいLongAdderは3分の1遅くなりますが、スレッドがフィールドを増やそうと争っている場合、LongAdderはその価値を現します。各スレッドはただカウンタを増やそうとしているだけであり、これはもっとも極端な人工的とも言えるベンチマークです。実世界のアプリケーションで見られるよりも、差がはっきり示されていますが、このような共有カウンタは、時々、必要になるでしょう。そのような場合、LongAdderがとても役に立ちます。

Drew氏は、さらにAtomicLongがシングルスレッドでは少し速いことを示している。しかし、スレッドが2つの場合は4倍遅く、スレッド数がコア数と同じ場合は、ほぼ5倍遅くなる。そして、スレッド数が物理コアのCPU数を超えるまで、LongAdderのパフォーマンスは一定であると述べている。

モジュール化は外れる

モジュール化は、Java8で提案されていた機能であり、実行されるアプリケーションでパッケージ化されたJava SEの実装をカスタマイズ可能にする。アプリケーションが使う、コードに依存しない要素は取り除くことができる。このような実装は、家庭電化製品のようなデバイスにJavaを組み込む場合に役に立つだろう。

Mark Reinhold氏は、最近、Java SE 8からモジュール化を外すことを提案した。その原因として、法律的な問題を挙げた。

互換性とフラグメンテーションに対するガードを保護するために、Java SE 8のモジュール化の機能には、TCKライセンスにいくつかの重大な変更が必要です。

私は、これまでかなりの期間、これらの見直しに関して、Oracleの法務部と取り組んできました。その草稿はありますが、今の時点で、残念ながら、専門家グループ、JCP 執行委員会メンバ、その他関心のある人たちが、これらの変更をレビューしたり、コメントしたりする十分な時間がありません。

そのため、Java SE 8からモジュール化を外すように提案します。これは、仕様とTCKルールだけ変更すればよく、RIや実際のTCKテストの変更は必要ありません。

Reinhold氏は、モジュール化はJavaプラットフォームの将来のために重要であり、Java SE 9より前のリリースで追加されるかもしれないと述べた。

Java 8のリリースはもうすぐだ。もっと簡単なdateやクロージャ、より良いコンカレンシ、新しいJavaScriptエンジンまでわずか1カ月だ。あなたはアップグレードするだろうか? アップグレードしないならば、アップグレードしない技術的な問題があるのだろうか?

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

  • ばか

    by Narushima Hironori /

  • スパムの可能性があると認識されました。モデレーターが確認し問題がなければ24時間以内に公開します。その際あなたへの通知は行われませんのでご了承ください。

    新機能のことは分かったから、セキュリティをまずどうにかしなさい。SecurityManager の穴を防ぎ切ることに自信がないのか、Applet も WebStart タイプのアプリケーションもいっぱいダイアログをクリックして、CA に高いカネ払って電子署名しなきゃ動かせないってんじゃ、なんのためのサンドボックスなのか分からない。それができないならとっととクライアントサイド Java は完全に終わったと宣言すべきである。JavaFXなんて無駄なもの作るなこのバカ。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。