>>42,43
http://en.wikipedia.org/wiki/Java_Card
It's a subset, but the list of absent features is fairly short.
There's no reason to use C for something that is not even close to realtime or in any other way performance-hungry. If anything, using bytecode-compiled language would probably produce smaller code, which is much more important in the circumstances.
Being crossplatform (across different SIM cards and credit chips) helps too, I guess. In fact in this kind of applications you want to be as isolated from hardware as possible (which is unusual for embedded in general), and totally don't want to deal with hardware-specific bugs when you were not sufficiently isolated. Oh, and when there's a possibility to put in additional modules from different manufacturers, you don't ever ever ever want to deal with the bugs that arise from the interaction between them.