Java SE 6(Mustang)をソース入手してビルドしているので、JDKの裏側を少しのぞいてみます。いきなりHotSpotでは敷居が高いので、グラフィックス描画の裏側にしてみます。
AWT/Swingでは、アプリケーション側は、paintComponent(Graphics g)メソッドで描画処理を記述します。このとき渡されるGraphicsインスタンスは、sun.java2d.SunGraphics2Dクラスです。このクラスの継承関係は、
java.lang.Object +--- java.awt.Graphics +--- java.awt.Graphics2D +--- sun.java2d.SunGraphics2D
となっています。Graphicsクラスのメソッドはほとんどがabstractとなっており、実装はSunGraphics2Dクラスで定義されています。ここで、
drawLine(int,int,int,int)メソッド
について追ってみます。
SunGraphics2Dの中で、sun.java2d.pipe.ValidatePipeクラスのdrawLineメソッドを呼んでいます。ValidatePipeのdrawLineメソッドから、SunGraphics2DクラスのフィールドdrawpipeのdrawLineメソッドを呼び出しています。フィールドdrawpipeの中身はValidatePaneクラスになっており、ごにょごにょ処理が進むとSurfaceDataクラスのvalidatePipeメソッドの中で描画モードによって使用するShapeを切り替えるようになっています。単純な線(太さ1、座標変換なし)の場合は、LoopPipeクラスが適用されます。
この後、DrawLineクラスのnativeメソッドDrawLineが呼ばれます。
いったんここまで