I think that Oracle is going in the correct direction. The company has chosen a right partner for the microcontroller/processor platform such as Freescale. As mentioned in this article, size is one of the key factors for IoT space. If the sized down version of embedded Have could be fit with in a couple of KB of the smallest controller, nothing better than that. But security is another important factor. Hope to see some good progress in this domain.
I like Freescale and would think that others should jump on the Java bandwagon. Having a streamlined Java for the smaller devices while allowing for IoT features will be a great enabler for growth in both the market and in applications. Which vendor will be next with Java support, I wonder?
Seems to me that Java carries significant overhead that may not make it a good IoT target. Perhaps I'm dated on this point. Anyone have some data on good MCU implementations and memory size (and needs for dynamic structures)?
Also- the recent posts here on EETimes on IoT have been fairly focused on the need for improved security. Will Java satisfy this requirement? Any efficient security structures already in Java (probably are if $ transactions are being processed all the time). Anyone care to clarify?
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).
We have prototypes running in much smaller configurations; down to 8 kB RAM. However, that is not currently a target configuration for us since we want to offer a platform with a comprehensive feature set in areas such as connectivity, management and security. For more details on these features, see:
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...
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?
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.
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.
@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.