I would like to start to play with Arduino.

I've read that C and C++ are the official languages but I've also found other way to communicate using [Python](http://www.arduino.cc/playground/Interfacing/Python) or [Java](http://www.arduino.cc/playground/Interfacing/Java) for example.

Which programming languages are supported to program Arduino?  

Are there any limitations using Python or Java?