InfoQ

News

SunとApacheの不調和によりJava 7発表に暗雲

作者 Charles Humble , 翻訳者 ガーナー 淳子 投稿日 2009年4月12日 午後11時2分

コミュニティ
Java
トピック
プログラミング ,
JCP Standards
タグ
Java SE ,
JCP

原文(投稿日:2009/3/31)へのリンク

Sun Microsystems社のMark Reinhold氏はOpenJDKのウェブサイト上に、承認済み仕様(サイト)のリストと共にJDK 7の最新スケジュール(サイト)を公表した。現在のビルドは新しいGarbage First Garbage CollectorやI/O APIを含んだマイルストーン2である(JSR 203)。5月のJavaOneカンファレンスに間に合うことが期待されているマイルストーン3では、invokedynamicバイトコード命令を介した動的型付け言語のため仮想マシンサポートを追加する(JSR 292)。Java 7で計画されている注目すべきものはそのほか、OpenJDKでのJava 6 update 10(6u10)の転送ポート(マイルストーン4をターゲットにしている)、この秋に予想されているマイルストーン5、そしてJSR 294とProject Jigsawを通したモジュール化の標準化についての新たな試みなどがある。現在のロードマップにないもので目立つのは、新しいDate and Time API(JSR 310)、Beans Validation(JSR 303)、Beans Binding(JSR 295)である

 小さな言語変更の構想であるProject Coin(サイト)も数多くの提案を行い、Joseph Darcy氏は彼のブログ(ブログ)で、Java 7への6つの有力な導入候補を強調している。

  1. 自動リソース管理。ARMブロックが、1つ以上のリソースがそのステートメントに限定されることを宣言するtryステートメントの形をとるもので、Joshua Bloch氏が提案している。ステートメントがコンプリートすると、正常であろうが突然であろうが、その全てのリソースが自動的にクローズする。これにより、実際問題としてエラーを起こしがちなことが知られている手動によるリソースのクローズをする必要がなくなる。Bloch氏によると、JDKのクローズ・メソッド使用の3分の2が誤って実装されている。
  2. Elvisおよびその他のnull安全な演算子。もともとの提唱はNeal Gafter氏のもので、そこからStephen Colebourne氏が提案した。これはNullPointerExceptionsの一般的な問題の一部を解決することを目的にしており、オブジェクト上でのnullチェック省略を可能とする。
  3. 例外処理の改善。Neal Gafter氏が提案しており、この提案には、複数の例外タイプと再スローされた例外のチェックを処理するcatchブロックが含まれている。
  4. ジェネリック・インスタンス生成のためのタイプ推測の改善。Jeremy Manson氏が提案。この提案では、クラス・インスタンス生成式のための限定タイプ推測の追加に取り組んでいる。例えば、記述する代わりにMapを使う。
  5. 可変引数メソッド呼び出しの簡素化。Bob Lee氏の提案で、これはメソッドが可変引数をnon-reifiableな配列型と結びつける際に発行される警告に対するコンパイラ変更である。この変更により、警告はコール・サイトからメソッドへ移動される。
  6. switchステートメントでの文字列。Joseph Darcy氏の提案では、switchステートメントでの文字列のサポートが追加されている。

Sun社のJava 7向けJDKは、その実装は依然として一部のクローズド・ソース・コンポーネントに左右されるが、初めてOpenJDKをベースとしたものになる。またJSRなしでの開発件数の増加と、それが完成した際に標準となることに伴い、Sun社がJava製品を開発する方法においても変化が起こり続けている。Project Jigsaw、JavaFX、そしてJava SE 7は全てこのように開発されたものである。Mark Reinhold氏はこのことについて以下のように説明している(サイト)

「JDK 7プロジェクトはJava SE 7 Platform Specificationが行き着く可能性がある(あるいはないかもしれない)もののプロトタイプを作り出しています。SE 7 Platform JSRが提起されると、仮想マシン・レベルのものや実装特有のものを除きJDK 7で開発中の仕様がその中に含まれるよう提案されるでしょう。」

トランスペアレントな仕様のセットを伴うOpenJDKプロジェクトとJava 7のスケジュールの組み合わせは、以前の言語改定で遭遇したどのプロセスよりも極めてオープンなものだが、ApacheのStephen Colebourne氏はこの変更についてひどく懸念(サイト)しており、Java 7の公式な仕様があろうはずもなく、それどころかSun社のJDK実装のみであろうと唱えている。

「私が出会う全ての証拠は、Java SEはもはやオープン・スタンダードではなく次回リリースはJava 7ではなくJDK 7である、というものです。これは、Javaのエコ・システムに関心がある全ての人々にとって重要になってくる事柄です。

 

結局、Sun社がオープン・スタンダードではないJava SE作成をうまくやり遂げることができるならば、Java EEやServlets、あるいはJMSもそうならないわけはないでしょう。今こそ堂々と意見を述べ、私達のオープン・スタンダードを取り戻すよう要求するときです!」

追加の投稿 (サイト)でColebourne氏はJCPエグゼクティブ・コミッティのミーティングメモを用いて彼の主張を裏付けており、プロセス変更の理由は、ApacheがそのHarmonyプロジェクトのために求めたJava Compatibility Kit(JCK)のライセンス規約の変更をめぐるSun社とApacheの長期的な論争に結び付けられるとしている。

「…2008年9月の会合から、Harmony論争が解決するまでJava SE 7 JSRを成立させることはできないとSun社が感じている明らかな証拠(ただし客観的な確証ではない)があります。また2008年4月と、Java SE 7プラットフォームJSRが「即時」から「直ちに行われるプランではない」に変更されSun社の焦点がJSRではなくOpen JDK使用にあると明らかになった2008年6月では、傾向に違いがあることを指摘できます。」

Neil Bartlett氏はColebourne氏の議論を支持している。Project JigsawではなくOSGi使用の理由として保留になっているSun社の買収の噂を用い、JSRが支持していないSun主導のいかなる構想も、Sun社が買収されるその瞬間に葬られる可能性があると論じている(サイト)

「Sun社が来年のこの時期までに現在の形態で存在しているとは考えにくいでしょう。丸ごとIBM社に吸収されるか、半分に分かれてHP社とOracle社とで分配されるか、あるいは他に噂されている結果のどれかになるかにかかわらず、JigsawをサポートするというSun社の約束は全く役に立ちません。Jigsawは全ての買収候補の商業的ニーズの対極にあるので、これは特にそうなのです。IBM社がJavaを手に入れれば、彼らはJigsawを消し去るであろうことは私が保証します。Oracle社も同様です。JigsawをJSRの外で、そして既存の業界標準に対抗して構築することにより、Sun社はその顧客を相当な商業的リスクにさらしてきたのです。」

Sun社の議論が継続している一方で全てのJSRに反対票を投じるApacheの戦略は、他のJCPメンバからは限定的な支持しか得られていないので、これまでのところ実際にはJava開発に影響を与えていない。これはおそらく他のJSRは同じライセンス規約から影響を受けないためだ。しかし、Java SE 7は直に影響を受けるだろう。Apacheの策によりSun社はJava 7の開発方法を変えたというColebourne氏の推測が正しければ、これらの戦略および両者ともに妥協しないことが組み合わさり、JavaとJCPに甚大な被害を与え始めるだろう。

特集コンテンツ一覧

Scala+Liftによる超実用開発

オブジェクト指向と関数型の機能をすべて提供し、さらにRubyに代表される動的言語の柔軟性と静的型付け言語の信頼性をも兼ね備え、JavaVMの上で開発実行できる新時代の言語がScalaだ。Scalaとその上で使える強力なWebフレームワークLiftを用いた実システム開発が世界的に広がっているが、今回は日本での実システム開発の事例とScala採用の理由をインタビュー+プレゼン形式で語ってもらう。

マネージャ 2.0: スクラムでのマネージャの役割

スクラムはマネージャの役割を定義しない。この記事ではPete Deemer氏がスクラムが果たす役割や選択肢について考察する。この考察にはマネージャの役割の再定義やマネージャをスクラムマスタに任命することも含む。

学習の科学: 脳にとって最善のアプローチ

ある意味、私たちはみんな先生です。ところが、プロの教育者だけがこの分野のトレーニングを受けています。この記事では神経細胞からの教えとそのアジャイルソフトウェア開発などへの適用方法について説明します。

GroovyServ —高速起動Groovy—

GroovyServは、筆者が所属しているNTTソフトウェア株式会社において、Apache License, Version 2.0に基づき開発・公開しているオープンソースソフトウェアです。GroovyServの基本的なアイデアの説明に始まり、実際の効果を示した上で、導入方法と簡単な使い方、応用例などについても説明します。最後に、適用条件と制約について言及します。

GroovyServ —高速起動Groovy—

GroovyServは、筆者が所属しているNTTソフトウェア株式会社において、Apache License, Version 2.0に基づき開発・公開しているオープンソースソフトウェアです。本記事ではGroovyServを紹介します。GroovyServの基本的なアイデアの説明に始まり、実際の効果を示した上で、導入方法と簡単な使い方、応用例などについても説明します。

丸山不二夫氏が語る― Android ”Cloud to Device Messaging Framework” 概要

Android2.2 Froyoで導入された”Cloud to Device Messaging (C2DM) Framework”は、Androidの利用スタイルに大きな変化をもたらす可能性があります。そこで、日本Androidの会 丸山不二夫会長による、「C2DMの概要」についての講演の模様を紹介します。

アジャイルの限界

アジャイルのスイート・スポットの外はアジャイルの手法を適用するするのはコストがかかり障壁もある。このような障害物はアジャイルの適用そのものの適用を妨げるものではないが、アジャイル実践のコストを増大させる。

マルチタスクで仕事は遅くなる

Juggling Balls

個人がマルチタスクで仕事をした場合、非効率で遅くなることは今ではよく知られている。Roger Brown氏は同じ問題を抱える厄介なチームで明示する。