Here, try drawing with a bufferedimage’s graphics object and then try drawing with a volatile image’s graphics contex. You can draw your own conclusion.
All BufferedImages are “Managed” Images be default. That is they start accelerated. You can draw buffered images onto accelerated surfaces quickly. An accelerated surface is basically a VolatileImage. You cannot draw to a bufferedimage quickly as it is not an accelerated surface.
In pseudo opengl:
BufferedImage = texture
VolatileImage = FBO/render target
Buffered Strategy is backed by a Volatile Image a believe.
So drawing to a texture that is not set up to be drawn to is slow.
BufferedImages support AA/filtering/other such effects. Some are slower then others. Shape/polygon rendering is slower then image bliting.
VolatileImages can be drawn as well but not all operations are “fast”.
All of this also depends on ones drivers as well.
I have done extensive trial and error testing much of this in my Retro project. So my proof behind what I say is not from documentation but experience. Realistically, NO one should be using java2D for anything other then a 4k contest.