Guest post by Gary E. Cato, Director of Software Development, PTC, Inc. and Randy Rorden, Director of Software Development, PTC, Inc.
The Java programming language is the leading technology for development of applications in the enterprise. In January, 2016, TIOBE named Java the top language of 2015 . IEEE Spectrum rates Java at the top of their top 10 programming languages list . The Eclipse IoT Working Group survey in 2015 found Java to be the top language for non-embedded systems.
Over the years, Java has continued to be the dominant language in university Computer Science curricula, providing a flood of new-hire talent. Indeed, in the most recent JavaOne 2015 event, Oracle® touted that at Java’s 20th anniversary, there were over 10 million Java developers world-wide .
The slow rise of Java in the Embedded Market
Given the huge success of Java as a language overall, uptake by embedded and real-time system projects has been less dramatic, despite the media feeding frenzy launched by Sun Microsystems at the Embedded Systems Conferences in the 1998/1999 timeframe. Initial trials and proof-of-concept projects found that Personal Java and later Java 2 Micro Edition offered by Sun and other vendors failed to live up to the hype. Surveys taken at the time indicated that the general perception of Java was that it was too big, too slow, couldn't satisfy real-time constraints or perform low-level operations, and that application start-up time took far too long. One place where Java did take hold was with Google’s Android Operating System and the Dalvik VM, initially targeting smartphone devices.
Real-Time Java Dilemma
Starting in 2001, Sun, together with the Java vendor community, announced new standards focused on hard real-time, (JSR-001: Real-time Specification for Java), and later safety-critical (JSR 302: Safety Critical Java Technology). Products based on these emerging standards were brought to market but were not successful either in winning the hearts-and-minds of the real-time development community or satisfying the deterministic behavior and long uptime requirements that such systems demand. The “all things to all people” RTSJ specification proved to be inappropriate for most real world deeply-embedded or resource constrained applications. JSR 001-based implementations were difficult to use and Java’s productivity and scalability advantages were compromised. Ultimately, the RTSJ-based product originated by Sun was abandoned by Oracle and is no longer available.
Real-Time Java Successes
Despite the early failures of Java in real-time systems, there have been some successes that shouldn’t be overlooked. Bucking the complexity of the RTSJ, the PTC Perc product line of real-time Java solutions was based on the Java Standard Edition specification and implemented patented deterministic garbage collection technology. PTC Perc has been deployed in real-time applications across many markets including Telecommunications, Military/Aerospace, Industrial Automation, Transportation, and Automotive.
Java does appear to be gaining some ground as a percentage of languages used for embedded development over the past several years. VDC indicated in a 2014 report that Java usage grew from 12% to 28% between 2008 and 2013 while C and C++ dominated with 60% and 51% respectively . And there is an emerging new forcing function in the move to Java for embedded and real-time systems: the Internet of Things represents a huge opportunity to vendors and users alike.
Implication to organizational and technical strategies in an IoT world
A fundamental shift is taking place in the strategy for building connected devices. There is a growing need for a tighter relationship between the methodologies for IT infrastructure development (enterprise/desktop oriented) and those for end device development (embedded/real-time applications). There has historically been a chasm between these development domains that needs to be traversed.
Intelligent Gateways, a.k.a. M2M Gateways or IoT Gateways, are the nexus to bridge the IT/embedded systems divide, and the launch-point for implementing a DevOps strategy. Gateways are the access point that connects sensors, actuators, and other end devices to the cloud. This is the place for legacy or new applications to leverage the power of the IoT in providing visibility within the organization to the “Things” they and their customers wish to manage.
The importance of M2M/IoT Gateways and developing careful strategies around them is shown in recent market data showing dramatic growth in their numbers. In October 2015, ABI Research stated, “New market intelligence data from ABI Research predicts that hardware revenues from M2M/IoT gateway devices used in commercial and industrial applications will have double digit growth over the next five years and eventually break US$1 billion in 2021.”
IoT DevOps needs a holistic approach
An integrated DevOps organization should be using common or cooperative tools and methodologies across all domains. Given that Java is the most-used language for enterprise applications, it will be the predominant vehicle for development and execution of IoT applications. The Java language and ecosystem offers an ideal foundation for building IoT gateways that can scale distribution of computing and storage resources and manage them at the edge devices (including IoT Gateways) in the network.
However, as discussed previously, the same Java Enterprise Edition or Java Standard Edition technology used for enterprise applications is not appropriate for many embedded/real-time devices. “Traditional Java” is not wholly applicable to all IoT applications that might need to be deployed in IoT Gateways or end devices. DevOps needs a strategy to support and provide application development for both traditional Java and embedded/real-time Java. Enterprise application developers will need to collaborate with embedded and real-time developers to effectively address all aspects of the distributed IoT environments they seek to create.
The Internet of Things is ushering-in new opportunities and with them many challenges. Companies who are willing to re-think the value of real-time Java will enjoy more availability and better utilization of qualified Java engineering talent, increased commonality between enterprise and cloud infrastructure with IoT gateway implementations, and ultimately reap greater rewards in this brave new world.