J++(Java++)という言語を聞いたことがある人は、今ではかなり少ないかもしれません。
J++は、かつてMicrosoftが提供していたJava互換言語で、Windows向け開発を強く意識した拡張が施されていました。しかし現在、J++は完全に廃止され、歴史の中の存在になっています。
この記事では、J++がなぜ登場し、なぜ廃止されたのかを技術的・思想的な観点から考察してみます。
J++とは何だったのか
J++は1990年代後半、Microsoftが提供していたJavaベースのプログラミング言語です。
特徴としては、
- Java構文をベースにしている
- Windows API に強く結びついた拡張
- Visual J++ というIDEとセットで提供
といった点が挙げられます。
当時のMicrosoftは、Windows向けアプリケーション開発を強く推進しており、J++もその流れの中で生まれました。
Javaとの決定的な違い
J++はJavaを名乗ってはいましたが、純粋なJavaではありませんでした。
MicrosoftはJ++に対して、
- 独自のクラスライブラリ
- Windows専用APIへの直接アクセス
- 標準Java仕様に含まれない拡張
を積極的に追加していきました。
その結果、J++で書かれたコードは、
- Windows以外では動かない
- 標準Javaとは互換性がない
という状態になっていきます。
これは、Javaが本来掲げていた「Write Once, Run Anywhere」という思想と正面から衝突するものでした。
なぜMicrosoftは独自拡張をしたのか
当時のMicrosoftの立場から見れば、理由は理解できます。
- Windowsの優位性を保ちたい
- クロスプラットフォームよりもWindows最適化を重視
- 既存のWindows開発者を取り込みたい
純粋なJavaをそのまま採用すると、Windowsが特別でなくなってしまいます。
そこでMicrosoftは、Javaの文法を使いながら、実態はWindows専用言語として使えるJ++を作りました。
Sunとの対立と訴訟
この独自路線は、当然ながらJavaの開発元であるSun Microsystemsとの対立を生みます。
Sunは、
- J++はJava仕様に準拠していない
- Java互換を名乗るのは問題がある
としてMicrosoftを提訴しました。
結果としてMicrosoftは、
- Java互換を名乗れなくなる
- Java標準から逸脱した実装の是正を求められる
という立場に追い込まれます。
この時点で、J++の将来はほぼ決まっていました。
技術的に見たJ++の限界
訴訟問題だけでなく、技術的にもJ++は厳しい立場にありました。
- Windows専用であることによる将来性の欠如
- Java標準との乖離による学習コスト
- 他環境への移植性の低さ
開発者にとって、
- Javaとして学んだ知識が他で使えない
- J++に特化するとロックインされる
というリスクが大きくなっていきました。
J++廃止後に何が生まれたか
J++の廃止後、Microsoftは新たな方向へ舵を切ります。
それが、
- C#
- .NET Framework
です。
C#は、
- Javaに近い文法
- Windowsとの高い親和性
- 言語仕様を自社で完全にコントロールできる
という特徴を持ち、J++でやりたかったことを、より健全な形で実現しました。
言い換えれば、
J++はC#と.NETへの過渡期の存在だったとも言えます。
J++が残した教訓
J++の歴史から見えてくる教訓は明確です。
- 標準を名乗るなら標準に従う必要がある
- 独自拡張は短期的には便利でも、長期的には孤立する
- 言語の思想とプラットフォーム戦略は切り離せない
J++は技術的に失敗したというより、思想と戦略の衝突によって消えていった言語でした。
まとめ
J++は、
- Javaの皮をかぶったWindows専用言語だった
- Javaの思想と正面から衝突した
- 法的・技術的に継続不可能になった
- 結果としてC#と.NETへと進化した
という流れで廃止されました。
J++を知ることは、言語設計やプラットフォーム戦略を考える上で、今でも十分に意味のある題材だと思います。