- PR -

Java VMの動作原理を教えてください

1
投稿者投稿内容
ジン
会議室デビュー日: 2002/06/10
投稿数: 5
投稿日時: 2002-06-10 01:54
Java VMの動作原理を教えてください。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-06-10 02:25
バイトコードを JVM が解釈して実行します。動作原理は実装依存。
ゲームマシンエミュレータとかと同じです。
この説明でわからなければ以下の本を参照。

http://www.oreilly.co.jp/BOOK/jvm/
http://www.amazon.co.jp/exec/obidos/ASIN/489471356X/qid=1023643550/sr=1-1/ref=sr_1_2_1/250-2503137-2741807

[ メッセージ編集済み 編集者: しょむ 編集日時 2002-06-10 02:29 ]

[ メッセージ編集済み 編集者: しょむ 編集日時 2002-06-10 02:29 ]
ジン
会議室デビュー日: 2002/06/10
投稿数: 5
投稿日時: 2002-06-11 05:59
ありがとうございました。
できれば、実装にどのように依存するのかおしえていただけますか?
Dee
常連さん
会議室デビュー日: 2002/03/05
投稿数: 28
投稿日時: 2002-06-11 08:49
下のほうの本は英語版ならWebに載ってますね(まったく同じ?)
http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html

あと、VMに関する資料は
http://www.ingrid.org/java/vm/
などを参考にしてください(膨大ですが)

実装依存ですが、いろいろな部分で効いてくるのではないでしょうか?
基本的なところではBigEndianやLittleEndianやら、一番大事なメモリ管理ももちろんですね

実装依存という言葉で語るならば、JavaVMの仕様書を満たしていれば、どんな方式で実装してもかまわないので、実現方法はすべて実装依存と呼べるのかも
#なんて禅問答は置いておいて・・・
JavaでJavaVMを実装する、というプロジェクトがありましたので(URL失念)それなどは参考になるかと思います
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-06-11 09:13
> 実装にどのように依存するのかおしえていただけますか?

仕様書を満たしていればJVMなので、どのJVMも動作は同じ。(なはず。現実では違ったりするけど

実装方法によっては速度も実行じ必要メモリ要領も違ったりする。

ArmのJazelleやSunのPicoJavaみたいにソフトウェアではなくハードウェア実装もあり。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-06-11 09:27
「JVM」は、Sun のいう JVM spec に従って動作するもの、です。
Sun JDK と IBM JDK は実装や実現方法が違うかもしれない。
Java class code を native で動かせるチップだとまた実現方法が違うかもしれない。
ちうことです。

あなたの質問は「HTMLブラウザの動作原理を教えてください」と同じようなものです。
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2002-06-11 10:43
とりあえず
http://www-6.ibm.com/jp/developerworks/java/jalape-vm-index-j.html
を読みましょう.

すぐには分からないと思いますけどね.一朝一夕に
JavaVMを理解しようと考えること自体おこがましい.

>> 実装にどのように依存するのかおしえていただけますか?
仕様書を読めば分かるとおり.
簡単に言えばセマンティクスは規定するが実装は規定しない.
#多分厳密には違うが.

これは多分TRON譲り.ちなみにCPUでも似たようなもの.

>仕様書を満たしていればJVMなので、どのJVMも動作は同じ。
>(なはず。現実では違ったりするけど
仕様書で規定されている部分については満たすことが
求められます.逆に規定されていない部分については
異なることも許されます.またスケジューリングのように
最初から決まってないものもあるわけです.

だから,プログラマーはたとえばある特定のスケジューリング法,
特定の実装依存のコードを書いてはいけません.それは本質的には
バグです.ただバグがあったからと言って,必ず毎回そのBUGが表面化
するとは限らないというだけです.これも当たり前といえば当たり前
ですがね.
ジン
会議室デビュー日: 2002/06/10
投稿数: 5
投稿日時: 2002-06-11 19:42
いろいろなご意見ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)