Mainsoft(サイト・英語)は最近「Mainsoft for Java EE(サイト・英語)(これまでVisual Mainwinと呼ばれていたもの)」のバージョン2.0をリリースするとともに、興味深いホワイトペーパー(PDFファイル・英語)を公開した。それによると、「Mainsoft for JavaEE」でクロスコンパイルされてJava EEで動作する.NETベースのアプリケーションは、様々な分野で元の .NETベースのアプリケーションより良い性能を発揮したと報告している。InfoQは詳細を知るためにMainsoftのCEOであるYaacov Cohen氏(サイト・英語)に話を伺った。
まずCohen氏に、どのように「Mainsoft for Java EE」が動作するのかを説明してもらった。
.NETフレームワークコンパイラが生成するMicrosoft Intermediate Language(MSIL)コードを、クロスコンパイルエンジンがクロスコンパイルしてJavaバイトコードを生成します。.Netフレームワーク実行環境のJavaベースでの実装は、アプリケーションを実行するクラスをサポートします。そして、わが社のVisual Studioエクステンションを使うことによって、開発者はJava Enterprise Editionプラットフォームでウェブおよびサーバーアプリケーションのコーディング、コンパイル、デプロイ、デバッグを行うことまでできるのです。
コードはバイトコードレベルでクロスコンパイルされるので、ソース変換は必要ない。つまり、Visual Studio .NETは移植されたアプリケーションにとって依然として唯一の開発環境のままである。MainsoftはASP.NET、ADO.NET、WebサービスAPIなどの.NETフレームワークの大部分をJavaに再実装してきたが、「Mainsoft for Java EE」はWebおよびサーバーアプリケーションに対象を絞っているため、Windows Formsのようなコンポーネントはいまだに実装されていない、ということもわかった。
Mainsoftのホワイトペーパー(PDFファイル・英語)には、ある会社が「Mainsoft for Java EE」を使用して既存の.NetベースのWindowsアプリケーションをJava EEベースのLinuxアプリケーションに移植した事例研究が紹介されているが、InfoQはこのような内容を見つけた。
- 移植されたJava EEアプリケーションはIBM WebSphere、BEA WebLogicそしてApache Tomcat上で動作した。
- 移植されたJava EEアプリケーションはWindows、LinuxそしてAIX上でテストされた。
- 同一のハードウェアのもとで、移植されたJava EEアプリケーション(WebSphere上で実行)の動作状況は次の通りである。
- 一秒あたりのリクエスト処理数(RPS)は、もとの.NETアプリケーションと比較して8%多かった。
- RPSはほぼ直線で増加し、CPUスケーラビリティに優れていた。
- テストされたすべてのユーザーロードにおいて、レスポンスタイムが少なくとも4%速かった。
- 負荷が高い状態において、一秒あたりのリクエスト処理数(RPS)は少なくとも5%多かった。
Javaが.Netより速い理由について、ホワイトペーパーで示したかったのは、サーバーアプリケーションは性能上の不利益を被ることなく移植できるということだと、Cohen氏は慎重に指摘した。
マイクロソフトの .NETフレームワークがIIS及びWindowsの強みを活用した方法と同じように、我が社のオープンソース.NET実装をWebSphereの構造的な強みに合うようにチューニングすることで同等の性能を提供しています。性能検証のために、テストを行う各OSおよびハードウェア構成に合ったガーベージコレクションアルゴリズム、ページサイズおよびヒープサイズを設定しました。ライブラリと共に公開したいくつかのシナリオにおいて、IBM Java仮想マシンを最適化しなければならないこともわかりました。WebSphere Application Server 6.1のリリースにおいてこれらの点は変更されており、様々な方法で入手することができます。
最近、数多くの会社が自社製品をオープンソース化しているなかで(サンのJDK、テラコッタのDSO、そしてアドビのFlex SDKなど)、InfoQはCohen氏にMainsoftは後を追うつもりかどうか伺った。それに対し、氏は次のように答えた。
クロスプラットフォーム .NETは大規模なプロジェクトであり、Novellに次いで、MainsoftはMonoオープンソースプロジェクト(サイト・英語)の最も大きなコントリビューターです。我が社は、.NETフレームワークのすべてのアセンブリをMonoと共有しています。例外は、コアライブラリであるmscorlib.jarですが、これはMainsoftの独自仕様で .NETコアクラスライブラリをJAVA EEに実装したものです。
Mainsoftは、Grasshopperと呼ばれるDeveloper Editionの無料提供(サイト・英語)も行っています。これを利用すれば、単一CPU構成のTomcat上にデプロイすることができます。
原文はこちらです:http://www.infoq.com/news/2007/07/mainsoft
(原文は2007年7月19日にリリースされました)