Java SE 7 は .NET アセンブリの夢を見るのか
Sun JDK/JRE の素朴なクラスローダーの仕組みですと、多数の外部ライブラリに依存した、アプリケーションの配布はつらいと思うことは、確かにしばしばあります。
一方、2009年夏にリリース予定のJava SE 7は、モジュール型の開発/ディプロイメントを可能にする。これらの機能はJSR 294(Improved Modularity Support in the Java Programming Language)やJSR 277(Java Module System)をベースにしたものだ。JSR 277の目標は、JAM(Java Application Modules)フォーマットによるアプリケーション・パッケージングを促すことにある。
Java SE 7をベースとするJDK 7は、OSGi(Open Services Gateway initiative:サービス管理プラットフォーム仕様)に準拠したBundles(バンドル)をサポートする。「Java SE 7用のJavaモジュール・システムとOSGiバンドル間の相互運用性を定義する新仕様が完成した。これにより、OSGiバンドルを使うアプリケーションをJDK 7で作成し、それをそのままJDK 7で実行できるようになる」と、Sunのクライアント・ソフトウェア・グループでチーフ・アーキテクトを務めるダニー・カワード(Danny Coward)氏は説明する。
JAM やら、 OSGi Bundle やらは、 Microsoft の .NET アセンブリに相当するものと考えても良いのですかね。
アセンブリは .NET Framework アプリケーションのビルドブロックであり、配置、バージョン管理、再利用、アクティブ化のスコープの指定、およびセキュリティアクセス許可の基本単位となります。アセンブリは、相互に連携して 1 つの論理的な機能単位を形成するように構築された型やリソースの集合です。
Java は、 機能面で .NET に先行されていると思うことが多いですね。コミュニティ・ベースで仕様を決めている Java と、 Microsoft 1社で仕様を決めている .NET。クロスプラットフォームの Java と、 Windows Only の .NET ということで、色々速度差が出てくるのでしょうが。
とにかく、 OSGi Bundle がサポートされるようになる、ということで、OSGi Framework の仕様書を読んでみたり。
The OSGi(tm) Alliance was founded in March 1999. Its mission is to create open specifications for the network delivery of managed services to local networks and devices. The OSGi organization is the leading standard for next-generation Internet services to homes, cars, mobile phones, desktops, small offices, and other environments.
ネットワーク経由でコードを配布する、というのは、 Java の当初のコンセプトからあったわけですが。
The Java platform was initially developed to address the problems of building software for networked consumer devices. It was designed to support multiple host architectures and to allow secure delivery of software components. To meet these requirements, compiled code had to survive transport across networks, operate on any client, and assure the client that it was safe to run.
A Bit of History (The Java(tm) Virtual Machine Specification Second Edition)
このコンセプトは、当面、忘れた方がいいんじゃないか という気がします。とりあえずは、「より良いクラスローダー」で良いんじゃないでしょうか。
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント