JavaOne 2007 が始まりました。
General Keynote で、ANNOUNCING TODAY とされた項目が、Sun Java System Communication Application Server,
OpenJDK, OpenJDK Governance Board, The Fastest Java SE Ever,
JavaFX, JavaFX Scripting, JavaFX Mobile と数多くありました。
JavaFX は F3 と呼ばれていたものとのこと。確かに、JavaOne 2007 の最初のセッション一覧には、"F3" というキーワードがあって、気にはなっていたものでした。まだまだ、実践向きではないと思いますが、気に留めておこうと思います。
これら以外にも、RealTime Java System(RTS) 2.0, Java in Blue Rey, NetBeans6, GlassFish v2.0 も、実際に利用しているパートナーやユーザを壇上に上げて大きく取り上げていました。
それ以降のキーノート、セッションの情報を総合すると、
Java SE 6 の 10大機能は、Web Services, Scripting (JSR223), JDBC, More Desktop API, Monitor and Management, Compiler API, Pluggable Annotation, Desktop deployment, Security とのこと。
また、Java SE 7 は、"Reading is more important than Writing"(書くことより読めることが重要)を意識し、SuperPackage (JSR294), Extension to the Annotation (JSR308), Properties, Control abstraction constructors (Closures), Operator Overloading, JAM (JSR277), Dynamic Component (JSR291), Swing Enhancement (Beans Binding (JSR295), Bean Validation (JSR303), Swing Application Framework (JSR296)), JMX 2.0 (JSR255), Web Service Connector for JMX (JSR262), More New I/O (JSR203) などが候補になっているようです。
SuperPackege (JSR294)は、開発時のモジュール化を促進・改善するものです。従来ある Package では、public クラスが public すぎることが問題になっています。Package の階層関係がないので、public にせざるをえない状況を打開するために、パッケージ(スーパーパッケージを含む)と、その内部のクラスを包含する superPackage を用意し、通常の public は superPackege 内にのみアクセス可能とするもの。superPackage を超えて公開することを別の方法で (export) 指定することで、今の public に相当するアクセスできるようにするものです。
SuperJARs (JSR277) は、デプロイ時のモジュール化を意図してものです。これは、JAM (Java Application Module), Java Module System などとも呼ばれます。現在の JAR による Application のモジュール化及び配布単位とすることが色々な問題が出てきているとのこと。JAM によりバージョン問題、JAR 間の依存関係を含め、デプロイ単位の形式として規定されるようです。
Control abstraction constructors は Closures だけではありません。C# で using を使って、Disposable なインスタンスに対する dispose を適格に行うことができますが、Java では try - catch - finally を適切に書かなければなりませんでした。これを、C# と同じように記述できるようにする (with が例示されていました) ものも、この範疇です。
Operator Overloading は、C++ のように演算子を利用者が多重定義することを許すものかどうかは不明です。どちらかといえば、演算子 '+' が数値加算と文字列連結の二つの動作があるのと同じように、ある特定のクラスに対して、既存の演算子を利用して複数の動作を行うようにすること、および、その仕組みを設けることかもしれません。現時点で、Collections, BigDecimal などが候補になっているようです。たしかに、BigDecimal 同士の四則演算などでは、'+-*/' が使えればうれしいですね。
The Fastest Java SE Ever については、起動時が遅い点をカバーするために、"Hello World" が動作する程度の最低限のクラスだけを最初にロードし (2M程度らしい)、それ以降はバックグラウンドでロードするとかいう JRE をリリースするらしいです。
最後に、Java Puzzlers から、一つ問題だけを ...
[プログラム]
public class Hamlet
public static void main(String args[]) {
Random rnd = new Random();
boolean toBe = rnd.nextBoolean();
Number result = (toBe || !toBe) ? new Integer(3) : new Float(1);
}
}
[実行結果:選択肢]
なお、実際には 8 問でました。たぶん 4 つは合っていたと思います。
ちなみに、今日参加のセッションは、
でした。