There is an interesting discussion happening on the LinkedIn “Internet of Things” group right now, in response to the InfoWorld article a few days ago titled “Oracle hitches Java to ‘Internet of things’“.
The discussion touches on some interesting details on why Java may or may not be a good choice for embedded. Besides the fact that Java is already proven to be one of the most widely deployed embedded technologies (“10 billion and Counting …”) I think the discussion misses a key point: The coming disruptive shift in the embedded industry.
Change Driven by Smart Devices
The embedded industry as a whole, and the embedded software industry in particular, are on the cusp of a disruptive shift in the way products and services are built and delivered, and how they interact with the rest of the world. This is driven by the explosion of smart, connected devices and the resulting need for security, interoperability, scalability, and faster time-to-market - requirements that are core to the value of the Internet of Things (IoT) space.
To understand why Java is a key technology for the embedded space, it is instructive to look at the mobile phone industry of about 10 years ago. The mobile industry was defined mostly by proprietary technologies, specialized hard- and software, lack of interoperability, and any number of other complexities. Bringing products and services to market in this fragmented environment was costly, time consuming, and didn’t scale – stifling the entire ecosystem and limiting participation to a few companies with deep enough pockets to take the risk.
Embedded Devices == Smart Phones?
Enter the first smart phones. These phones were much more than just devices. They provided a (relatively) open software platform with a consistent set of functionality across a range of devices, simple development, deployment, and monetization models, and ready-made integration with back-end services.
With this new model, the ecosystem equation changed completely. Now, instead of wasting time reinventing the wheel to enter a particular technology island, companies and developers were free to innovate on top of these platforms with a low barrier of entry but large scale opportunities. Almost immediately, we saw an explosion of new and innovative features, software, services, and even entirely new business models, benefiting an entire new ecosystem of those willing to make the shift.
Embedded Needs a New Software Paradigm
The similarities to todays embedded ecosystem are striking. Of course, the embedded markets are more varied and specialized in their needs compared to mobile. But fundamentally, the embedded industry has many of the same problems the mobile industry had 10 years ago. Embedded must move beyond the current fragmented and complex approach of building basic product functionality and towards a platform model that enables a shift upstack, to increase value in application software, business logic, services, and data. This is a key prerequisite to scale up and deliver new products and services for smart, connected devices.
The embedded software running on these devices will become much more challenging: It needs to be more flexible, robust, and secure than in the past while meeting ever tighter budget and time-to-market constraints. Successfully implementing such software requires the industry to embrace modern software paradigms, including productive, robust, and standardized programming languages, APIs, and tools, cross-platform execution environments, security design, high levels of pre-tested integration, software reuse and scalability, standards compliance, interoperability, and out-of-the-box integration with back-end services.
Top Technical Reasons for Java in Embedded
By design, Java already meets many of the above requirements. Over the years Java technology has been continuously optimized for embedded, and is being used across industries from smart cards, to industrial control units, robotics, eHealth devices, smart meters, consumer electronics, gateways, networking equipment, imaging systems, and much more.
Why you should consider Java for embedded solutions:
- Addresses key challenges of traditional embedded development by decoupling software logic from underlying platform (board/device, chipset, peripherals, OS, native code, libraries)
- Virtual Machine concept enables feature-rich, scalable, and robust cross-platform/multi-architecture application platform and promotes software reuse
- Simple and productive software development and deployment model (language, APIs, tools, reuse) reduces cost and time-to-market
- Single end-to-end development paradigm from client devices to back-end systems (where Java already is the de-facto standard)
- Enables flexibility and product extensibility through software services and in-field software delivery, updates, and management
- Highly-functional, deployment-ready runtimes reduce integration, testing, and support costs of final solution
- Open, standards-based technology, interoperable with many industry standards
- Enables leveraging large Java ecosystem of expertise, innovations, products, tools, code, and partners
An example of a successful embedded Java product is Oracle Java ME Embedded, which provides an optimized, robust, and complete Java runtime for resource-constrained devices as small as 130 KB RAM and 350 KB ROM/Flash - and which has already been adopted by the four top chipset and wireless module manufacturers.
In the End, The Value is in the Data
Increasingly, a successful embedded solution doesn’t end with the device. The real value of embedded is in the data, and more importantly, in the business information that can be extracted from that data. A client software platform is only as good as the integration into the enterprise it enables. That is why Oracle is not only driving Java Embedded software into devices, but also puts strategic focus on the Oracle Internet of Things Platform in order to enable customers and partners to build enterprise-class end-to-end solutions that deliver business value for IoT deployments.
For more information on why you should consider Java in embedded, please see the webinars, white papers, research reports, and more available throughout my blog.