- - PR -
.NETで作られたアプリの起動のオーバーヘッドってどうなんでしょうか?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-03-24 20:28
みなさま色々とありがとうございます。
いまさらになってですみませんが、今回の質問の意図なんですが、質問を通して以下のようなことを学びたいと思っていました。 ・JVMとCLRのちがい ・特にプロセスの起動のところの仕組み ・JVMとCLRどっちが早いとかいうのはケースバイケースで水掛け論になるのでそこは置いておく(こういう仕組みだからこういう局面でCLRは有利などの情報は歓迎) 問題解決がゴールではないのでなんか締りの無い議論に付き合わせてしまって申し訳ありませんが、皆さんに色々情報をいただけて感謝しております。 JVMと.NETアプリの場合のローディングの仕組みの差異はなんとなく理解できたつもりです。ユーザー作成のMyAppを起動する場合には、 JVMの場合・・・JVMの起動ありきでパラメタとしてMyApp.jarがロードされる 1.java.exeがロードされ、起動される 2.java中間コードをJVMがロードして解釈しながら実行 CLRの場合・・・CLRはMyApp.exeから呼ばれてロードされる 1.MyApp.exeがロードされる そのときにCLRがらみの必要なDLLもロードされる 2.MSILをCLRがロードして解釈しながら実行 こんな感じなのですね。似て非なるものというのがちょっと理解できました。 .NETのexeファイルはMSIL+CLRとやり取りをするバイトコードという構成なのかな、とイメージしました。(間違っていたらツッコんでいただければ・・・) #こあらさんに紹介いただいたページは大変に理解の助けになりました。 | ||||||||
|
投稿日時: 2008-03-24 23:24
受け取り方次第でしょうけど、根本的な原理はそれほど大きく違いません。
違いますね。位置づけとしては MSIL≒Java バイトコードです。 なので、.NET における .exe は ・JVM 起動、JVM に対する .jar の読み込み&実行を指示するためのネイティブコード ・アプリケーション固有のバイトコード(=.NET の場合は MSIL) を含むことになります。 [ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2008-03-25 00:15 ] | ||||||||
|
投稿日時: 2008-03-25 12:08
ありがとうございます。
私の書き方が間違ってましたね。。。
この部分ですが「CLRとやり取りをするバイトコード」→「CLRとやり取りするネイティブコード」でした。
はい、大体そんなイメージをしていました。 |