Buffered images are slow; in fact I was able to draw 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.
// 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