I've always been fascinated by Conway's Game of Life.
There are a number of really good implementations. I couldn't find much in Java with source, so wrote my own. It's not brilliant, but it's good enough.
You can supply the name of a Life pattern on the command line and it will be loaded (if it's reasonably small - the board is too small for many). A good selection of Life patterns is available from http://www.ibiblio.org/lifepatterns/.
I learnt a little along the way. The initial version had each cell as an Object. Simply tracking all these little swing panels was a major performance hit. So the current version just has a panel with the cells drawn in a single pass with Java2D, and that's much quicker.
Other formats: Source on GitHub | SVR4 Package