With an exploding number of devices for IoT and cloud computing, development with Java is becoming more attractive than ever. Java technologies for the ARM32 platform are a valuable piece of that puzzle.
Kevin J Lee, Sr. Director, Marketing and Product Management
Recently I was on an Uber coming back from the airport. My driver was a friendly millennial. As we drove down 101, he began sharing his experiences of driving for Uber and how most car services we recognize today will be taken over by autonomous vehicles in the very near future. Then he revealed some cool things about what he does when he’s not behind the wheel. Apparently, the young man used to be a developer from a defunct start-up and turned into a hacker. He described how his little device is able to decrypt and access virtually any digital media contents on the cloud. Curious, I asked him about his little device. Excitedly he said “on a Raspberry Pi…”
Expanding Market Share
ARM has expanded its market share beyond the mobile and into embedded and IoT with its low power consumption and competitive price to compute ratio. It’s evident that ARM is now a mainstream embedded processor architecture. According to Linley Group, ARM has more than 77 percent of the licensed embedded processor market today and it has dominated the tablet and smartphone space. Now, it is expanding across consumer IoT markets and rapidly penetrating into the industrial IoT space where traditional x86, MIPS, and PowerPC processors have enjoyed a stable position for many years. According to ARM, it is looking to hit a compound annual growth rate of 5 percent in networking and 10 percent across all mobile, home, enterprise, and embedded segments by next year. In fact, major chipmakers are actively replacing legacy SoCs with ARM cores on their product roadmap (Figure 1).
ARM Processor Architecture. Cortex A15 is based on 32-bit ARMv7 and Cortex A57 is based on ARMv8 supporting both 32-bit and 64-bit.
When ARM released its 64-bit ARMv8 with 32bit support, the mobile sector gobbled them up as soon as chip makers delivered them to the market. Now with devices like Raspberry Pi 3 (with 64-bit Cortex-A53) adoption of ARM has further increased—not only by the maker community but also by OEMs looking to take advantage of fast performance at an extremely competitive price. Sooner than expected by many, a revolutionary Pi Zero, 32-bit ARMv6 based SoC can be purchased for $5, is adding to the already huge ARM momentum. With its tiny form factor, Pi Zero consumes extremely low power, as low as 80mA. Yet it is fast and maintains binary compatibility with previous generations.
Java for Embedded & IoT
Java continues to be the most popular programming language. The latest TIOBE Index ranks Java as the #1 for the programming community. For the hardcore embedded community, C is still considered to be the most widely used programming language. However, interest and adoption of Java have been steadily growing since last year due to the plethora of platforms requiring portability across IoT and Cloud systems (Figure 2).
TIOBE Programming Community Index. This is a measure of popularity of programming languages, created and maintained by the TIOBE Company based in Eindhoven, the Netherlands.
Java has been used in embedded devices since the 90s with Java ME CLDC (Micro Edition Connected Limited Device Configuration) used as a dominant platform for feature phones. Then Java ME CDC (Micro Edition Connected Device Configuration) and PBP (Personal Basis Profile) became a standard for Blu-ray disk players and cable television set-top boxes. Java SE began driving many embedded computers in the industrial setting and expanded into communications equipment and industrial printing.
Today Java SE is running on healthcare devices, network and storage appliances, gateways, automatic teller machines (ATMs), kiosks, imaging, and multi-function printers. With the advent of IoT, there is a blurring line between traditional embedded and enterprises. As many enterprises look to take advantage of IoT, there is a desire and natural tendency to expand proven technologies used in the enterprises to integrate with new IoT services. Justifiably companies are looking for ways to maximize existing investments to enable IoT initiatives. One of the common questions I hear from customers is “How much of our existing services can be pushed down to the edges without having to develop new applications and invest in new a platform?”
For those that have been running Java, extending existing capabilities is less challenging. Besides, Cloud is what makes IoT possible today. IoT and Cloud are inseparable and a significant portion of the cloud computing platforms are Java-based. The third component that is critical for success is open source (Figure 3).
Sample images of embedded devices running Java SE. Java SE is used across industrial manufacturing, healthcare, networking, imaging, and printing.
Open Source Java & Zulu Embedded
A large portion of today’s technological innovations come from the open source community, Eclipse and Apache projects being good examples. For Java, OpenJDK is where open source Java has originated from. OpenJDK is the basis for Java SE’s Reference Implementation and the way the Java Spec is defined. Java SE is developed and maintained in the open under the OpenJDK projects. Companies such as Oracle, IBM, RedHat and Azul take the code in OpenJDK and use it to build JDKs. For example the Oracle JDK of a given version [e.g. 8u77] is based on the OpenJDK source code of the same version, but carries different license terms. Hence, OpenJDK, Oracle Java, and Zulu are based on an identical project source. Zulu uses this common source base and the OpenJDK license to build 100 percent open source software, redistributable versions.
Zulu Embedded is a certified build of OpenJDK for the embedded space. It supports both headful and headless modes. It also offers compact profiles of Java 8 for resource constrained devices in addition to Java 6 and 7. Java 8 Compact Profiles allow you to run Java in devices with a memory as low as 12mb. As far as operating systems are concerned, Zulu Embedded has been tested with most flavors of Linux, MacOS, as well as Windows 10 IoT Core. For ARM32, compared to other comparable JVMs, Zulu Embedded provides unsurpassed performance with its JIT (Just-In-Time) compiler (Figure 4).
Zulu Embedded Architecture. Zulu Embedded is available Java 8 Compact Profiles, Java 7, and 6.
Recently Azul Systems released Java APIs for accessing device peripherals. APIs are available on Windows 10 IoT and Linux as part of the Zulu Device APIs. Device APIs deliver optional Java extensions to the base Zulu Embedded JRE for enabling software control over device I/Os and their peripherals. It covers following peripheral access:
- General Purpose Input/Output (GPIO).
- Inter-Integrated Circuit Bus (I2C).
- Serial Peripheral Interface.
For IoT services and gateway use cases, Zulu Embedded has been tested to work with all major OSGi implementations, including Eclipse and ProSyst. Zulu Embedded has been available for x86 for some time and the near term plan for Zulu Embedded includes JRE and JDK for ARM32, which includes supporting ARMv6 and v7 architecture as well as 32bit mode for ARMv8.
No Commercial License
One of the biggest advantages of Zulu Embedded is that there is no commercial license, as it is based on open source. Until now, there were very few options in finding a suitable Java SE runtime for ARM32 other than Oracle. Oracle Java is a great product, but as all embedded developers know, Oracle’s Binary Code License limits usage and distribution of Java outside of general purpose computing. Zulu Embedded is taking those licensing costs and field-of-use restrictions off the table. In short, a production-quality build of OpenJDK for ARM32 is what many developers want. Zulu Embedded can enable all embedded developers to move full-speed ahead with Java on ARM without being shackled by restrictive license and distribution terms.
In summary, one of the strongest benefits of Java is that it is based on open standards, which translates to consistency and reliability. There is far less fragmentation with Java than other development option. Some may argue Java is getting old and too rigid. But, that is not the case. Java 9 is on the horizon and there are continued innovations brewing in the IoT space using Java. For those looking to try Java to develop next generation embedded and IoT solutions, Zulu Embedded provides a solid foundation. Zulu Embedded for ARM32 is currently available through the Zulu Embedded ARM32 Early Access Program.