Java as the Internet of Things platform
On May 23, 2015 Oracle Corporation, Java developers and lots of software development companies all over the world celebrated Java’s 20th birthday. The biggest evolution update took place in March, 2014 when Java developers got released Java SE8 followed by Java Platform, Micro Edition 8 (Java ME 8) with Java Embedded products. The platform is designed to meet the needs of intelligent services on resource constrained devices in the Internet of Things (IoT). The term is used to describe a system where Internet is connected to the real world via ubiquitous sensors and devices. Gartner, Inc. defines it as the network of physical objects that contain embedded technology to sense or interact with their internal state or external environment. The mission of the Internet of Things is to integrate diverse data from physical sensors and the rest of IT in order to enable analytics and anticipate events and other needs. IoT system can deliver a whole view of what is taking place in a particular location at a particular time.
Machine-to-Machine connectivity (M2M) provides benefits both on industrial and everyday scales, incl. reduced waste, lower costs, eliminated losses, simplified storage and analysis of diverse data and a comprehensive insight into it.
IoT targets not only such spheres as agricultural pest control, gas or bomb sniffers, enhanced medical technologies but also rather mundane ones. Just imagine of a refrigerator with a recipe suggestion engine for what is left inside it, or think of your safer and more eco-efficient automobile with telemetry systems. Gartner says 4.9 billion connected things will be in use in 2015 (up 30% from 2014) and will reach 25 billion by 2020. The connected things will be driven mostly by consumer apps, while most of the revenue will be driven by enterprise applications.
Figure 1: Number of Devices in The Internet of Things
Source: BI Intelligence, August 2015
So, how do both the phenomena correlate with each other?
In order to blur out boundaries between virtual and physical things, embedded devices enable seamless interconnectivity, powerful data processing and analysis on the fly as well as adequate responses to processes. To accomplish the mentioned activities successfully, there should be a robust, flexible, and secure software environment. Two decades later after its release in 1995, Java development is ready to be a stronghold for the Internet of Things.
Very few people realize now that Java engineers created Java as a language for embedded computing. Its earliest versions were developed for television set-top interfaces. James Gosling, Java’s father, saw communication between devices as a central strength of Java.
Taking into consideration the exponentially growing number of intelligent devices, interconnectivity and communication at lightning speeds can present challenges. Only the right platform will definitely make a difference.
What exactly makes Java development unique for the Internet of Things?
1. It’s not impossible for Java developers to manage the complexity of IoT but it’s not easy. The match between ingenious devices and software technologies is central to the connected world. Java Micro Edition originally targeted the challenges Java developers face while developing apps for small devices. Java programmers can choose from a variety of configurations, profiles, and optional packages. These are aimed at the needs of embedded devices. Having a large collection of APIs, Java developers need less time for rewriting standard functionality for embedded devices. Since Java development is a very popular thing, Java engineers created libraries many of which are open source and can be integrated into new embedded apps.
2. Java developers optimize Java Embedded products to comply with unique requirements of microcontrollers, sensors, gateways and other embedded devices in healthcare, manufacturing, home automation, etc. You can control these chips, sensors across a variety of technologies with Java as an ideal platform for any device of any size in any location. The trick is that Java programmers have been following write-once-run-anywhere principle from the very beginning. In other words, software development companies write apps once and prototype them on all different hardware platforms. If none of APIs have changed, Java developers port code simply redeploying the existing class or Java archive files.
Thus, challenge of integration and access to data across higher-end systems and platforms as well as on low-cost devices is non-event for Java developers.
3. Embedded devices are tiny things without displays. That’s why it is extremely difficult to detect such errors as buffer over run or memory access violation that can stop an application abruptly. Java developers take advantage of robust application code, which will help the Internet of Things avoid these problems. With object references as implicit pointers, Java object references cannot be manipulated by application code.
4. Java developers don’t have to keep track of object references and explicitly deallocate memory. Memory is allocated by instantiating an object instead of using explicit calls to library functions. Java’s component – the Java Virtual Machine – targets memory management. It mitigates the risks of memory leaks of embedded devices. The Java Virtual Machine also handles concurrency support for apps and provides an ability to create and synchronize different threads of execution.
5. Embedded processors and systems do have differences despite that manufacturers use architectures from the same company. Java engineers eliminate all of them and give embedded systems developers a wide choice of platforms to use. Thus, Java ME Embedded 8 supports ARM11, Linux OS, ARM9, BREW MP, X86, Windows 7. Additionally, Java ME Embedded 8.1 is available as an additional ready-to-run developer preview binary for the Freescale FRDM-K64F device, a resource-constrained, Arduino-pinout compatible micro-controller developer platform based on ARM mbed.
6. Open source is critical for IoT. Java developers have a wide range of free and open source integrated development environments and do not have to look further than the success of the Internet. Due to Java ME Software Development Kit 8, together with plug-ins for the NetBeans IDE, Java developers can write, edit, compile, and package their applications. Java engineers also use Eclipse tools, which results in a robust code and job done more quickly because Java programmers take advantage of automatic code completion, syntax checking, and integrated documentation.
7. Embedded devices have no displays. It adds extra challenges how to compile the code on one machine and deploy it to another one. But not for Java developers who can develop the code in front of their desktop and copy the class files to the target device. The success takes place again due to Java's Virtual Machine.
8. It all goes without saying that due to a community of approx. 9 million software developers, Java developments are everywhere – on desktop, mobile, tablet, PC. Thousands of companies base their businesses on Java. There are countless courses for young Java developers. It seems to be an important factor for choosing a platform for IoT. On the other hand, Java’s stability and care about backwards compatibility are also key advantages.
Of course, Java developers have a lot competition in languages and platforms, and it is not the only programming language. However, it has a good record of service and the Internet of Things will surely make use of hardware-independent, flexible Java language with best-in class tools.
Industries and Technology Areas:
Technology Areas: software development, Java development, IoT