JavaOne:セッション参加レポート

文:Terry Lynn 翻訳校正:石橋啓一郎
2008-05-19 08:00:00
  • このエントリーをはてなブックマークに追加

 このブログでは、私が5月第2週に参加したJavaOneで学んだことをレポートしていく。

TS-6623 より効果的なJava

 私の夫Adrian Bridgwaterのブログで細かく説明したセッションに続き、より効果的なJava開発者になるためのヒントを得られるというセッションに参加することにした。

 このセッションでは、自分のJavaのコードをより効果的なものにする、いくつかの優れた方法を学んだ。まず、私はビットフィールドではなくEnumを使うことの利点を知った。私は元々CとC++の開発者だったため、EnumやEnumMapの代わりにビットフィールド(long[]、long[][]など)を使うのを好んでいた。しかし、これには次のような難点があることに気づいていなかった。

1.ビットフィールドには名前空間が結びついていないため、型について安全でない。
2.ビットフィールドは64ビット以上を扱えない。
3.ビットフィールドに対して繰り返し処理を行うのは、トリッキーなロジックになってしまう。
4.ビットフィールドは理解しにくくなりがちで、他の開発者がコードを管理するのが難しくなる。

 Enum、JumboEnumSets、EnumMapsなどを使っても、ビットフィールドを使う古いスタイルの場合と性能は変わらず、上記の問題はすべて避けられる。

 また、このセッションはジェネリクスを使う際のヒントもくれた。私はジェネリクスの定義にあまり経験がなかったので、これはよかった。ここでは、PECS(Producer Extends Consumer Super、producerを指したい時にはextendsを、consumerを指したい時にはsuperを使う)という便利な暗記法を学んだ。これで、いつ「extends」を使い、いつ「super」を使うかを簡単に覚えることができる。

 最後に、このセッションでは適切な場合には「遅延初期化(lazy initialization)」を行うことを勧めていた。「遅延初期化」とは、実際に値が必要になるまでオブジェクトの初期化を行わないというものだ。性能を向上させたかったり、循環初期化を避けたいと思う場合には、このヒントを参考にすべきだ。私はそうする。

- - - - - -

TS-5581 今後のJavaプログラミング言語の変更内容

 学習を進めながら、さらに進んで「Javaプログラミング言語の変更内容」のセッションに出席するのがいいだろうと考えた。このセッションは、プログラミング言語の進化のプロセスについての洞察を与えてくれると同時に、今後追加される可能性のある新機能をほのめかすものだった。

 このセッションでは、まずアプリケーションと言語の違いが明らかにされた。大きな違いは、アプリケーションには多くの機能があるが、言語は機能が少なく純粋で単純だということだ。また、言語の設計にとって創造性は有害になり得る。

 言語の純粋さを維持するためには、3つの条件に従う必要がある。その3つの条件とは次のようなものだ。

1.過去を尊重する -- 新機能の追加、修正、削除が過去の機能を損なってはならない。
2.未来を尊重する -- 構文に余地を残さなくてはならない。
3.モデルを尊重する -- オブジェクト指向(クラス)、インターフェース(抽象化)、アクター(IPC)に関するモデルを維持する必要がある。

 このセッションでは、これらの純粋さを維持するための条件に続き、言語の進化の原則が説明された。この原則とは次のようなものだ。

1.言語の進化は、高級言語を指向すべきである。
2.言語の進化は、コードのきれいさを指向すべきである。-- 書き手ではなく読み手のためのコードだ。
3.言語の進化は、静的な型を使うことを指向すべきである。-- これはコードの確かさを増す。
4.言語の進化は、言語は廃止される可能性のあるAPIよりも広く普及していることを認識すべきである。

 最後にこのセッションでは、参加者の期待に応えて、いくつかのJavaプログラミング言語に取り入れられる可能性のある新機能についての説明があった。これらの機能の一部には、アノテーション、複数のcatch文、安全な再throw、そしてパッケージ、アクセスコントロール、インターフェースの面でのモジュール性に対する取り組みなどが含まれる。

 モジュール性に関する新しい機能として、新しい予約語が組み込まれそうだ。この新しい予約語は"module"で、これはSE7でリリースされる予定だ。「module」を使うことによって、開発者は一番上のパッケージレベルでモジュールを作ることができる。非常に刺激的な話だ。

この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ

  • 新着記事
  • 特集
  • ブログ