If Java2D is fast enough for gaming I’m sure it’s fast enough for notation; it sounds like you are doing something wrong. And though DirectX is supported in Vista, it is not supported outside Microsoft platforms such as Mac, or Linux. And don’t conform to Microsoft’s OS bashing, it’s just plain unfair on everyone else :’(
And you are aware that there is no such thing as 1000FPS, let alone 3000FPS; your monitor has a maximum refresh rate which is usually around 70-80FPS. That figure is no depiction on the performance of either library, and experienced graphics coders often find little (if any difference). When you begin to render full scenes you will most likely find OpenGL outperforming DirectX as Sun appear to have put more effort into it - which is no surprise as DirectX conflicts with their “cross platform” concept.
But nonetheless your implementation seems a little faulted, are you using the appropriate double buffering routines, and accessing the graphics properly … i.e.
// initializing
int offset = 0;
int buffer[] = new int [width*height];
int scansize = width;
MemoryImageSource _source =new MemoryImageSource(width ,height,_buffer,offset,scansize );
_source.setAnimated(true);
_source.setFullBufferUpdates(true);
Image _imageBuffer= Toolkit.getDefaultToolkit().createImage(_source);
// setting pixels
_buffer[x+y*width] = colour;
// updating
_source.newPixels(); // will copy _buffer to _imageBuffer
Buffered images are slow; in fact I was able to draw (shaded) perspective correct texture mapped polygons in software far quicker than I could copy the data to a BufferedImage. And the methods making use of the raster sometimes do not work as the format being used might be byte instead of int.