If you want some sense what you can get out of a physics engine in Java, see http://www.jbox2d.org/v2demos/
and flip through the demos - there are demos with body counts ranging from one or two all the way up to hundreds and hundreds. The "proxy count" stat roughly correlates to the number of bodies (it's actually the number of shapes, of which there may be more than one per body).
Those demos use JBox2d, which is not entirely optimized, and it also is slowed down quite a bit by the use of Processing's software renderer to draw everything, so you could probably squeeze a bit more out of an engine in practice.
That said, a physics engine with a good broadphase (JBox2d has a pretty good one) can happily simulate in the neighborhood of a thousand bodies without too much difficulty, as long as they are not piling up on each other. What slows an engine down is large islands of touching bodies that need to be iterated over as a group to solve interpenetration constraints - the pyramid, circles, and domino tower demos at the above link are examples of worst cases.
BTW, polygons in Box2d (and JBox2d by extension) are pretty fast, I wouldn't worry too much about that. Triangles are actually sort of a worst case, as a triangle shatter will likely cause a lot more pieces to be generated than a polygonal one, and triangles are just handled as a special case of polygon.
In any case, I doubt if 100 bodies would be a difficult to handle for most engines. Phys2d and JBox2d are based on the "same" engine (Phys2d came from an early Box2d, JBox2d is a port of the newer one), so speed should be similar - any algorithmic improvements made in the newer Box2d are likely made up for by the fact that Phys2d has had more time to get optimized and stable.