There is currently an interesting discussion happening on the LinkedIn “Internet of Things (IoT)” group. It was triggered by the analyst reports I posted a little while back.
The discussion can be found here. Because the “IoT” group is moderated you need to sign up to view the discussion, so I am copying my reply below as well.
Post to the LinkedIn “Internet of Things (IoT)“:
(Disclosure: I am the product manager for Oracle’s small embedded Java products, so my view is probably somewhat biased ;-):
Thanks for an interesting discussion. It highlights the underlying issue in the embedded space: The fact that the industry is fragmented by a diverse mix of technologies that makes delivering embedded solutions much harder than is should be.
It’s not just about choosing a language or a chip architecture. To build an embedded device, you need to integrate hardware components, operating systems, drivers, tools, libraries, security aspects, and more. And increasingly, embedded solutions must be connected and integrated with other systems. So now you need to think about connectivity, protocols, encryption, authentication, data formats, and such. And you’re still not done: What about monitoring and managing these devices out in the field? You need to be able to maintain these devices and update the software to fix issues and add functionality without impacting the integrity of the system. And finally, if you then want to re-use your solution for a different use case and a different set of hardware – do you have to port, integrate, and test everything again?
I think it’s clear that this mode of operation is unsustainable. Yes, you can build all this today using traditional embedded technologies, but it is way too difficult. The important thing to realize is that many embedded use cases must solve a common set of problems as outlined above. The embedded industry will migrate away from individual point solutions towards standards and platforms that address these shared infrastructure requirements. Which then allows developers to add their value on top and deliver solutions quickly and cost effective. This is not unique to the embedded industry but it is a typical pattern of IT evolution.
So when you’re evaluating Java for the embedded space, it’s important to look at it not as just a language, but as a technology platform and ecosystem. Java not only addresses many pain points in embedded development (platform-independence, rich language and feature-set, great tools, scalability) but also gives you a robust and manageable application platform, security framework, connectivity, a wide range of protocols, 3rd party components, and easy integration with back-end systems (most of which are also Java-based). In fact, it is the only technology platform today which is in a position to provide all this.
A few words about Java on the device side:
Not sure if you have been following embedded Java lately – it’s not your father’s Java anymore. You can run feature-rich Java stacks from low-cost micro-controllers with as little as 128 KB RAM all the way up to high-end embedded systems. There is increasing integration with many advanced platform features, as well as out-of-the box support for security, manageability, and back-end connectivity.
Since Oracle announced it’s new focus and strategic vision on embedded Java at JavaOne in September we’re seeing a huge amount of interest in the industry. Oracle has delivered new products and an updated embedded Java roadmap, partners like Cinterion and Qualcomm have announced products, and there is much more to come.
— Terrence Barr