Gartner recently forecasted that the Internet of Things is gaining traction in business – specifically, in manufacturing and Industrie 4.0 applications. If you are not, you should be considering new tools in your DevOps strategy.
The IoT is fostering the creation of an entirely new class of devices, such as gateways, that allow for new points of data aggregation and intelligence. Today, gateways are one of the faster growing and developing device categories in the embedded market.
To satisfy the requirements of sophisticated intelligence, faster time-to-market, and over-the-air updates in IoT Edge devices, developers are turning more to the Java language, runtime, and ecosystem. A survey of 800 engineers conducted by VDC Research (sponsored by Oracle) shows an increase in the use of Java in their current project from 12% in 2008 to 27.4% in 2015. Java improves upon C or C++ as a high-level object-oriented language with automatic garbage collection, robust exception handling, built-in threading model, and extensive libraries for doing all the things an IoT Edge device requires. Programming in Java is safer and more reliable by avoiding common coding errors, such as dereferencing stale pointers and trampling memory. The VDC report also shows that for a typical ARM-based project shipping 1M units, using Java would save 40% in software development costs compared to C.
Something traditional Java cannot handle well is real-time. Real-time systems have to guarantee that they will respond to an event or input within a deadline. Most Java programmers have experienced the unexpected delays that can occur when a “stop-the-world” garbage collection cycle runs. Depending on the size of heap memory and the fragmentation of live objects, Garbage Collector (GC) pauses can last hundreds of milliseconds up to several seconds. But GC pauses are just one of the many traditional Java real-time shortcomings. For example, the Just-in-Time (JIT) compiler may delay execution of a critical piece of code. Java thread priority is treated as little more than a hint to the operating system scheduler, which may unpredictably favor low-priority threads over high-priority threads. Worse yet, a priority inversion can occur, blocking a high priority thread from running indefinitely. Add to this the effects of page faults, random preemption by other processes, and the lack of precise timing APIs and you might be convinced that Java could never guarantee a program will ever finish, let alone meet a deadline.
PTC Perc is a real-time development tool chain and virtual machine that addresses all of these real-time execution concerns. The PTC Perc product has been deployed in real-world, real-time systems since 1998 and is used in telecommunications, industrial control, aerospace, automotive, and defense applications. IoT/IIoT is now demanding that embedded real-time systems evolve with new expectations for device connectivity. Rising to meet that demand, PTC Perc is now taking on the Internet of Things as a key technology for edge devices that need to react within milliseconds to critical events.
VDC’s whitepaper titled, “The Real Need for Real-Time Java Gateway Solutions” highlights how IoT has accelerated the evolution of traditional embedded device classes.
According to VDC Research, the need for gateway solutions in IoT are: