A simple approach is outlined in
this paper. It's not perfectly realistic, but it's relatively simple to implement, and looks pretty good.
It's an emergent system, so the complex global behaviour arises automagically from simple local interactions - this means you don't have to have any physics knowledge, or indeed much maths (vectors is about it, there isn't even any trigonometry).
Someone around here has already done a java implementation of that (
http://www.java-gaming.org/forums/index.php?topic=399.0 ) although I'm not sure if it's still avaliable.
On the other hand doing your own implementation isn't as hard as it looks, the math is much simpler than most physics methods and it requires much less tinkering to get stable. Definately recommended for 2d physics.
Edit: Ha, obviously I type too slowly.

Bleb you should put that physics stuff back online, it was quite cool.