Why is it possible to programm non-programmable xBee?

Hi, i am new at xBee but i wonder why people can programm xBee with an Arduino?

what i understand is that one can programm the programmable version of xBee with a debugger and CodeWarrior.

But i found in the internet, that people can programm all xBees with Adurino and this api(Java) http://code.google.com/p/xbee-api/ . Is that right? Is it also possible to programm a bootloader in Java?

So what is the diference between a programmable and a non programmable xBee? I acctually want to programm in C with the freescale stack.

A non programmable module is one in which the module acts as a cable replacement between two or more devices in a network and you use the radios existing firmware for that functionality.

A Programmable XBee module is on that adds a 2nd processor to the board to allow you to write and upload an application that you have written that wold perform the function of an external processor. Think of it as the same thing as using a external processor and connecting it to the radios UART pins. The only difference is that instead of specifying a external processor, ordering it and adding it to your device, the processor is already on the XBee module. thus reducing one component.