@Tonytib, thanks for the links to elua and LuaJIT..I'll check them out! But concerning Java in the embedded space & in particular in non-MMU microcontrollers:
I'm a big fan of any new programming language that makes development easier but at what cost ?
Let's assume that I can develop an Embedded Project in C on a $1 Cortex-m0+ microcontroller with 64KB Flash and 8KB of RAM. Developing the same project in Java is likely to require a Cortex-M3/M4 clocked at twice the speed and with 5-10 times the memory footprint; increasing the overall cost of the microcontroller to $4-5;not to mention increase power requirements. Furthermore the more powerful micro may require additional supporting circuitry which will further increase cost per unit .
Are these significant increases in cost per unit and reduction in power efficiency worth the easier development & time to market advantage that comes with using Java? Maybe it is in some cases but definitely not in all cases.
Not to mention that I've yet to see free Java dev tools for microcontrollers....Free & open-source C/C++ dev tools for microcontrollers have been around for a long time.
Yup, I still have 2 TINI's hiding somewhere. Some Java-oriented MCUs and SOMs are still available, although the similar systems running .NET MicroFramework appear to be more popular, at least in the hobby/maker world.
If you're going the full-blown MPU route, Android is another attractive option if you're going to be using a touch screen.
If you're looking for a dynamic, compact language, there's eLua (can fit in 64K SRAM, 256K flash) and LuaJIT (which is much faster than Python), both of which play well with C.
Many attempts at using Java in the embedded space have been made. Two that come to mind are the TINI Java Simms (late 90s) and the Javelin Stamp. Yet Java has thus far failed to grab significant market share in the embedded space due to its largely memory footprint and slower speed. With microcontrollers becoming more powerful and embedd more memory, this will become less of a problem.
Furthermore with the advent of the low cost Microprocessors such as the Raspberry Pi's BCM2835 & Ti's Sitara Cortex-A8s, one could easily use full blown Linux in their embedded projects. With Linux, not only can you use Java to implement your next embedded project, you could use Perl, Python, Basic, Bash, Pascal, Fortran & even Cobol!
Personally I prefer using C/C++ for microcontrollers. On Microprocessors running Linux, a combination of C/C++ & Linux system programming libraries & QT5 enables me to do pretty much all that I need, to get my next internet of things project going.
Thanks for the information. I have a few questions and sorry that I could not go through the information you have provided..,I will go through taking some time,
The Java ME Embedded version that you have mentioned here is not a RTOS...right? Is there any plan for a RTOS and if yes, by when?
Good to see that Java ME Embedded needs 192KB RAM and 1MB ROM as we get some high=end microcontrollers now a days with sufficiently enough internal memory, but I guess for a RTOS the memory requirement should be much lower than this. Any plans?
On the desktop, Java and .NET are roughly comparable (and are good frameworks overall). One of the best features of both is the ability to use different languages (such as Scala, Groovy, and F#) that target the runtime and can interop with Java/C#/etc code -- but I doubt that ability will make it to J2ME or the .NET Micro Framework (used in the Gadgeteer and Netduinos).
Thanx for the info. 1MB ROM is still very big 9in my book). Any way you can get it down to 256KB or below? A feature 'slim' version perhaps? For many high volume apps the 1MB size can be just too costly...