Microsoft Visual J++

Visual J++ (ビジュアル・ジェイ・プラス・プラス) は、 マイクロソフトがかつて開発、販売していたJavaの実装。構文、キーワード、文法規則はJavaと同じだが、独自拡張も含んでいる。1996年に導入され、2004年1月に廃止された。Visual Studio 6.0以前に含まれていた。

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仮想マシンでしか動作しない。

サン・マイクロシステムズのJava仮想マシンで動作するJavaクラスファイルを生成するようにも設定できる。その際はコードエディタの入力補完機能やクラスビューなどの機能は使えるものの、GUIの設計を視覚的に行うことはできない。

J++はJava言語仕様に準拠していたが、マイクロソフトはJavaリモートメソッド呼び出し (Java RMI) やJava Native Interface (JNI) など、サン公式のJava実装の一部の機能をVisual J++に実装していなかった。

また、J++は、イベント処理におけるコールバックとデリゲートなど、サンのJava実装に含まれない独自の拡張機能を実装していた。

さらに、J++アプリケーションは、サンのJDKを使ったJavaアプリケーションのように、基盤となるオペレーティングシステム機能にアクセスする標準の方法に準拠していなかった。マイクロソフトの実装では、オペレーティングシステムにアクセスする際に、J/Directと呼ばれる、J++アプリケーションがJavaのクラスライブラリとAPIを完全に回避するフレームワークが提供された。この仕組みにより、Win32 APIを利用する際にはJ++アプリのほうが元のJavaフレームワークよりも効率的であった。

この機能を使うJ++アプリケーションは、サンのJDKでは実行できなかったが、Kaffeプロジェクトでは、この機能を使うJ++アプリケーションを実行できる拡張機能をオープンソースのJVMで開発した。ただし、これらの拡張機能（マイクロソフトのスポンサーでTransVirtualが実装）は広く使用されていなかった。また、J++アプリケーションをKaffeで実行するには、あらかじめVisual J++でコンパイルが必要だった。 

Visual J++はActiveXをサポートしていた。

WFC 
Windows Foundation Classes (WFC) は、Win32プラットフォームAPIやDHTMLオブジェクトモデルを、統一されたクラスライブラリにカプセル化したものである。WFCは主に、Windows上のJavaアプリケーション用のグラフィカルユーザーインターフェイスを作成するために設計された。

マイクロソフトに対するサンの訴訟 
サン・マイクロシステムズは当初、Javaをマイクロソフトにライセンス供与していたが、後に商標権侵害でマイクロソフトに対する訴訟を開始した。Javaブランドの使用に関するサンの商標ライセンスは、すべての実装が「互換性がある」ことを要求していたためである。

この非互換性は、サンのJavaテクノロジの進歩を遅らせるために、マイクロソフトが意図的に行っていると指摘するものもいた。 

MSJVMがサンのコンプライアンステストに合格しなかったことが、最初の訴訟の大きな要因となった。2004年、これらも含めた一連の未解決になっていたサン/マイクロソフト訴訟は、サンとマイクロソフトの間で和解に達した。 和解の合意内容では、マイクロソフトは、サンがJavaに導入したJ++の機能以上の機能を、J++に組み込めないとした。そしてJ++の機能導入は Javaバージョン1.1.4の機能セットで最終化された。これは事実上J++のこれ以上の進化を殺し、セキュリティホールへの対応を除く更新を終了させた。結果として、マイクロソフトは、MSJVMの配布の停止に同意し、ダウンロードも廃止された。

マイクロソフトは、2007年12月31日にMSJVMに対するセキュリティの問題に対するサポートも含め全サポートを終了した。 

J++のテクノロジは最終的に再利用され、Microsoft .NET FrameworkやJ#言語の一部としてしばらく存続した。

Visual J++統合開発環境 
Visual J++はJ++の統合開発環境 (IDE) の名前でもあり、J++プログラマーがWin32 APIをフル活用するための多くのツールやユーティリティを提供した。

Visual J++は既に配布されていないが、かつてMicrosoft Visual Studio製品ラインの一部だった。Visual Studio 6.0は、J++を含む最後のリリースとなった。

Visual J# 
Visual J#は、構文がJavaに近いマイクロソフトのプログラミング言語であり、.NET FrameworkとVisual Studio .NET製品スイートの一部であり、開発者とプログラマーがJ++（またはJava）から.NET Frameworkに移行できるように設計されていた。

マイクロソフトは後に、.NETプラットフォームでの主要言語としてC#を開発したが、この言語は多くの点でJavaの影響を受けた。.NET Frameworkもまた、Javaと共通する多くの考え方を共有している。JavaバイトコードやJava実行環境と同様に、C#コードは共通中間言語 (CIL) と呼ばれる中間表現の一種にコンパイルされ、.NETの共通言語ランタイム (CLR) と呼ばれる仮想マシン上で実行される。Visual Studio 2005は、J#を含む最後のリリースだった。

脚注

関連項目 
 Microsoft Visual Studio
 J#
 Java

外部リンク 
 Visual J++の製品機能 - エディション別 
 Microsoft Visual J# 
 Microsoft Java Virtual Machine Support 
 マイクロソフトとサンの合意 

Microsoft Visual Studio
コンパイラ
統合開発環境
Java開発ツール
マイクロソフトのプログラミング言語
廃止されたマイクロソフトの開発ツール