I see, you had a good idea to test these two modes on both systems. I think then I have a possible explanation for the difference.
P2D (like P3D) mode is handled purely by Processing, which manipulates directly the pixels in the buffer, then use AWT only to display the result.
Java2D, on the other hand, is entirely managed by Java/the JVM. And I know that in recents versions of Java (starting with Java 5, but greatly improved in lastest versions of Java 6), it can use the native graphic pipeline/accelerator.
For example, in Windows, it uses DirectX, and you can set options like sun.java2d.d3d or sun.java2d.d3dtexbpp.
I don't know if they made such effort on Linux...
I found back an article:
http://download.oracle.com/javase/1.5.0/docs/guide/2d/new_features.html
Ah, and another showing various options:
http://download.oracle.com/javase/1.5.0/docs/guide/2d/flags.html
I used a nice little demo named JGears. Not the Web framework, seems to be a JOGL demo.
It was mentioned on
http://acuriousanimal.blogspot.com/2007/04/ubuntu-edgy-ati-driver-and-java2d.html which, already at the time, mention speed issues with Java2D.
Ah, I found back the jar file (and project):
http://trac-hg.assembla.com/jgears/ It can be a convenient tool to test the switches.
I kept the tests I did on my old computer (using a GeForce4 MX 440...):
> java -jar JGears.jar
Size: 512x512, 100 frames in 4250 ms = 23,529 FPS
> java -Dsun.java2d.opengl=false -Dsun.java2d.d3d=false -jar JGears.jar
Size: 512x512, 100 frames in 4172 ms = 23,969 FPS
> java -Dsun.java2d.opengl=false -Dsun.java2d.d3d=false -Dsun.java2d.noddraw=true -jar JGears.jar
Size: 512x512, 100 frames in 4172 ms = 23,969 FPS
> java -Dsun.java2d.opengl=true -jar JGears.jar
Size: 512x512, 100 frames in 3031 ms = 32,992 FPS
> java -Dsun.java2d.opengl=True -jar JGears.jar
OpenGL pipeline enabled for default config on screen 0
Size: 512x512, 100 frames in 2781 ms = 35,958 FPS
> java -Dsun.java2d.d3d=True -jar JGears.jar
Direct3D pipeline enabled on screen 0
Size: 512x512, 100 frames in 109297 ms = 0,915 FPS
> java -Dsun.java2d.d3d=True -Dsun.java2d.translaccel=true -jar JGears.jar
Direct3D pipeline enabled on screen 0
Size: 512x512, 100 frames in 88079 ms = 1,135 FPS
> java -Dsun.java2d.d3d=True -Dsun.java2d.translaccel=true -Dsun.java2d.d3dtexbpp=16 -jar JGears.jar
Direct3D pipeline enabled on screen 0
Size: 512x512, 100 frames in 82078 ms = 1,218 FPS
> java -Dsun.java2d.d3d=True -Dsun.java2d.d3dtexbpp=16 -jar JGears.jar
Direct3D pipeline enabled on screen 0
Size: 512x512, 100 frames in 71953 ms = 1,390 FPS
Size: 512x512, 100 frames in 9062 ms = 11,035 FPS <-- Deactivate anti-aliasing
Size: 512x512, 100 frames in 875 ms = 114,286 FPS <-- Deactivate translucent textured path
Size: 512x512, 100 frames in 688 ms = 145,349 FPS
> java -Dsun.java2d.opengl=True -jar JGears.jar
OpenGL pipeline enabled for default config on screen 0
Size: 512x512, 100 frames in 2828 ms = 35,361 FPS
Size: 512x512, 100 frames in 875 ms = 114,286 FPS <-- Deactivate anti-aliasing
Size: 512x512, 100 frames in 703 ms = 142,248 FPS <-- Deactivate translucent textured path
Size: 512x512, 100 frames in 672 ms = 148,810 FPS
It shows some combinations of such switches.
Hope that helps.