dotNET

最近ではマイクロソフトから提供されているdotNETと呼ばれるフレームワークを利用したプログラミングが結構はやっているようで、マイクロソフト自身も力を入れているようである。公式のページを見ても結局のところ何を目指すのか良くわからんただ膨大なだけのフレームワークに見えるが、結局は以下の三つを提供するものだ。

  • 仮想機械(VirtualMachine)
  • 仮想機械用の実行符号を出力するコンパイラ
  • 仮想機械上で様々な機能を提供するライブラリ

で、これだけを見るとJavaでいいじゃんと思うわけだが、いくつかの資料を見る限りJavaに比べて以下のような利点が強調されている。

  • ネイティブコードとのシームレスな連携(既存のソフトウェア資産の流用?)
  • 使用出来るプログラミング言語が多様
  • セキュリティーポリシーの指定に自由度が高い

しかしながらこれらの利点はまやかしが含まれている。

  • ネイティブコードの利用を簡単にしてしまうと結局はアプリケーション全体がネイティブコードに依存しやすくなってしまう、また現状ではdotNETフレームワークを使える環境はかなり限られていることがそれに拍車をかけることになっている
  • 実際はJVMに変換できるプログラミング言語はかなり多く、dotNETJavaより優位なわけではない
  • セキュリティーポリシーをアプリケーション開発者にゆだねることによって堅牢性が危うくなる可能性がある

これだけをもってdotNETよりもJavaが優れているという気はなく、結局は使い分けの問題になるだけだとは思うが、単純にブームにのって安易にdotNETを採用するべきではない。(少なくとも新規案件ならともかく既存のプロジェクトを移行するのはばかばかしい)ま、私としてはいろんなランタイムライブラリを導入して容量を圧迫するのは勘弁して欲しいと思う。