Besides the C and C++ programming languages which most software developers use, various programming methods and languages are available for microcontroller programming. For example, the ARM® Cortex®-M microcontrollers can be programmed in Java™, Arduino™, high level graphical programming languages, and other language abstractions. This paper introduces various development environments, interesting features and other aspects such as interoperability with the ARM CMSIS device driver libraries. We will also examine how some of these new technologies help us to address some of the new advanced application areas like M2M, modeling based software development, as well as how some of these solutions enable new users to start learning microcontroller programming.