アマゾンで注文しようと思ったらすでに在庫が切れてて、紀伊国屋でまだあったことに気づいたので今回は紀伊国屋のネット通販を利用して購入しました。
ただし下のリンクはアマゾンです
Amazon.co.jp: Java仮想マシン仕様 (The Java series): 本: ティム リンドホルム,フランク イェリン,Tim Lindholm,Frank Yellin,村上 雅章
この本のすごいところは、javacがソースから仮想マシンで実行されるバイトコードをどのように記述しているかを解説しています。その他にも命令セットのニーモニックとオペコードの表記を一つずつ解説していてかなり詳細にVMの仕様を書いています。
この本はVMを自分で作る人だけでなく、Javaでコードの最適化を行おうとしている人にも向いていると思います。(例としてC言語で言えば逆コンパイルして、ニーモニックに変換したコードとにらめっこする時に役に立つと思います。)
まだ詳しくは調べていませんが、大抵の場合JavaはバイトコードをJITコンパイラでネイティブコードに直せる部分では速度低下はあまり見られませんが、インタプリタで実行される部分も発生するため処理速度が落ちるようです。つまりなるべくネイティブコードで実行されれば(C言語と比べて)速度の低下を防ぐことができるみたいです。
速度向上に繋がる部分はまだ押さえていませんが、練れる場所はまだありそうです。
ただし下のリンクはアマゾンです
Amazon.co.jp: Java仮想マシン仕様 (The Java series): 本: ティム リンドホルム,フランク イェリン,Tim Lindholm,Frank Yellin,村上 雅章
この本のすごいところは、javacがソースから仮想マシンで実行されるバイトコードをどのように記述しているかを解説しています。その他にも命令セットのニーモニックとオペコードの表記を一つずつ解説していてかなり詳細にVMの仕様を書いています。
この本はVMを自分で作る人だけでなく、Javaでコードの最適化を行おうとしている人にも向いていると思います。(例としてC言語で言えば逆コンパイルして、ニーモニックに変換したコードとにらめっこする時に役に立つと思います。)
まだ詳しくは調べていませんが、大抵の場合JavaはバイトコードをJITコンパイラでネイティブコードに直せる部分では速度低下はあまり見られませんが、インタプリタで実行される部分も発生するため処理速度が落ちるようです。つまりなるべくネイティブコードで実行されれば(C言語と比べて)速度の低下を防ぐことができるみたいです。
速度向上に繋がる部分はまだ押さえていませんが、練れる場所はまだありそうです。