First, the nitpick: Processing isn't
quite a subset of Java, it actually both supports full Java syntax (if a tab is named .java, it's processed as a plain old Java file) and adds a few syntax preprocessings of its own apart from wrapping everything into a Java class (one example: numbers don't have to have f at the end to be interpreted as floats).
With that out of the way: it's worth noting that someone put together a Scala version of Processing, which addresses the lack of functional goodness in Java while still using the "normal" Processing library (maybe even the environment?): http://technically.us/spde/About
As an educational tool, you could do a lot worse than introducing people to Java, though, since if they ever plan to work, it's probably what they'll be stuck coding.
And for all its limitations power-wise, I've seen far better (and far more) data visualizations come out of Processing than anywhere else (data viz is probably the #1 use case, since graphic/animation work is made very painless), so they're clearly doing something right...