If you're interested, I've made a few particle engines using different techniques (all using LWJGL though). If you search around the forum you can check them out if you want. One of my first ones used all available cores in your computer to update particles and can render 2 million particles at 60 FPS with 95-100% load on my hyperthreaded quad core (8 threads). It's actually RAM bandwidth limited.
Memory accesses are quite expensive indeed. I assume my own demo makes very bad use of cache and memory, many scattered reads and writes.
There are truly amazing particle engines, but in this case it's less the particle management but the drawing which is the bottleneck. I could use BufferedImages and write directly into the buffer like my raytracing demo does, but I wanted to use Java2D functions this time.
At the moment I'm trying to get a feeling what is slow and what is fast, and what are good ways to display graphics with Java if one doesn't want to bundle extra libs.
I have a demo which might look a bit better and might have better frame rate control, but it's hard to guesstimate if this code will adapt well to other machines:
http://www.java-gaming.org/user-generated-content/members/132627/fireworks-r3.jar