Visual J++について
Visual J++(ビジュアル・ジェイ・プラス・プラス)は、1996年に
マイクロソフトによって開発された
Javaの実装の一つです。この言語は、
Javaの基本構文やキーワードをそのまま使用しつつ、特有の拡張機能も含まれていました。Visual J++は、Visual Studio 6.0までのバージョンに含まれ、2004年1月にはその開発が終了しました。Visual Studio .NET以降、この製品の多くの機能は、J#やC#に置き換えられました。
互換性と特徴
Microsoft Visual J++ 6.0では、GUI
ライブラリとしてWindows Foundation Classes (WFC) を利用し、
ActiveXコントロールを使用した
Rapid Application Development (
RAD)が可能でした。また、独自のネイティブインターフェース技術である
Raw Native Interface (
RNI) やJ/Direct、さらに
Java/COM統合に対応していました。しかし、それにより生成されたアプリケーションは、
マイクロソフトの
Java仮想マシン上でしか動かすことができませんでした。
Visual J++は
Java言語仕様に準拠していましたが、
サン・マイクロシステムズの
Java RMIやJNIなど、公式の
Java実装に特有の機能は採用されていません。また、サンでは提供されていない、イベント処理に関連した独自の機能も実装されていました。これにより、J++のアプリケーションは、オペレーティングシステムの機能にアクセスする際の手段が異なり、J/Directというフレームワークを通じてWindowsのAPIを直接使用することが可能となりました。このため、J++アプリはサンの
Javaアプリよりも効率良く外部機能にアクセスできました。
ただし、その結果として、サンのJDKを介さない標準的な
Javaアプリケーションとは互換性が失われたため、J++で作成したアプリはサンの
Javaで動作しない場合がありました。他のオープンソースのJVMである
Kaffeプロジェクトでは、J++アプリをサポートする拡張機能が開発されましたが、広く利用されることはありませんでした。これらのアプリケーションは又、Visual J++で事前にコンパイルされる必要がありました。
Visual J++は
ActiveXをサポートし、WFC(Windows Foundation Classes)はWindowsプラットフォームAPIやDHTMLオブジェクトモデルを統一して提供するクラス
ライブラリでした。これにより、Windows上で
JavaアプリケーションのGUIを構築する際に便利でした。
サン・マイクロシステムズは、当初
Javaを
マイクロソフトにライセンス提供していましたが、後に商標権侵害に関して
マイクロソフトを訴えました。ここで問題となったのは、
Javaブランドの使用に関するサンの規定で、「互換性を求める」ものでした。サンは、
マイクロソフトが意図的に
Javaの規格から逸脱し、その進化を妨げていると主張しました。特に、MSJVM(Microsoft
Java Virtual Machine)がサンのコンプライアンステストに合格しなかったことが大きな要因とされました。
2004年には両社は和解に至り、合意内容では
マイクロソフトは
Javaの機能以上のものをJ++に組み込まないこととなり、J++は
Javaバージョン1.1.4の機能セットで最終化されました。こうして、J++の将来のアップデートは実質的に停止し、
セキュリティホールの修正を除いて新しい機能は導入されなくなりました。
マイクロソフトはその後、2007年末にMSJVMのサポートを完全に終了しました。
Visual J++統合開発環境と後継技術
Visual J++は、J++の
統合開発環境(IDE)でもあり、プログラマーがWin32APIを効果的に使用するための多様なツールを提供しました。このIDEは今では配布されていませんが、当時は
Microsoft Visual Studio製品群の大切な一部とされていました。
Visual J#という後継プログラミング言語も開発され、これは
Javaに似た構文を持ちつつ、
.NET Framework内で動作することを目的としていました。しかし、最終的にはC#が.NETの主要言語となり、
Javaの影響を受けて設計された点でも共通していました。J#を含むVisual Studio 2005が最後のリリースとなりました。
Visual J++の技術は、最終的にはMicrosoft
.NET FrameworkやJ#に取り込まれ、その影響はプログラミング言語の進化に脈々と受け継がれています。