Non-Java 3D Approaches
The basic framework for a particle system is fairly standard, and variations only appear when we decide on a particle's attributes and how they change over time. Ideas for these can be gained by looking at implementations in other languages.
Almost every games programming book seems to have a particle system example. For instance, OpenGL Game Programming (Muska and Lipman/Premier-Trade) by Kevin Hawkins and Dave Astle implements a snow storm effect, which can be easily translated from C++ to Java.
A popular particle system API created by David McAllister is downloadable at http://www.cs.unc.edu/~davemc/Particle/. Its C++ source code is available, as well as excellent documentation. It uses the interesting notions of actions and action lists. Actions are low-level operations for modifying particles, including gravity, bouncing, orbiting, swirling, heading toward a point, matching velocity with another particle, and avoiding other particles. Action lists are groups of actions which together make more complex effects. Many of the actions employ Euler's integration method, which underpins the workings of the parabolas in my examples. The API has been ported to various Unixes, Windows operating systems, and to parallel machines. The API would make an excellent model for a Java 3D-based package.
Most graphics software, such as Maya and 3DS, have particle system animation packages that can be used for testing effects.
The two papers that introduced particle systems are ...