“little brother” runs in two language VM’s on the Raspberry PI. The first, Pharo, I’ve discussed at some length. The second I haven’t, partly because it’s better known, but partly because the use case has become clearer during development. It is the Java VM, specifically used with OSGi in the form of Eclipse Kura.
While Pharo Smalltalk is very good for analytic programs, Java is the best language for integration, since there is more code to integrate written in it, and a vast number of available integration tools and technologies.
The addition of Apache Synapse provides both a communications facility for interoperability and a means of throttling distributed queries in the event the Raspberry is too busy to handle the query request immediately. It also provides a means by which the other language VM, Pharo, can send data via StOMP and have the data cleaned and stored separately from the private data in Pharo. The included complex event processor in Synapse aids analysis by breaking down complex events via a rules-based engine.
Kura provides an environment where the distributed query module can run locally, lowering the requirements on the cloud based microcontainer by performing preliminary result filtering in the device.
Pharo and Kura support about the same number of Raspberry sensors and other devices, but the supported sets are not the same, hence more sensors and devices can be supported by the two containers than by either alone, without the need to write a lot of low-level drivers.
The number of analytic tools written in Java, and specifically in Eclipse based OSGi (such as DEVS, Carrot2, GAMA, Capella etc.), provides remote civil engineers with specific competencies in specialized problem areas who may use those tools, or may have written their own tools in Java, with the ability to assist the local engineer to analyze cleaned data on the device. The combination of CM events and Eclipse Aether allows the Kura container to pull such code from public or private Nexus repositories
Vert.x also provides a means for writing additional services for the platform in whatever language the developer or engineer prefers, and making those services discoverable. Apache River extends registration and discoverability over the full network and incorporates security to provide access without the need to make every service public.
A loosely coupled network of Synapse-based identity servers allows SSO style interoperability between public and private identity servers.
A secure chat service, accessible from either Smalltalk or Java, including standalone clients and SWT plugins that can run in Eclipse or IdeaJ, allows a local engineer to chat with remote civil or software engineers to figure out how to analyze a specific event pattern or what code needs to be written to do so. The service uses 4-way handshaking that allows near-equivalent security to a pre-shared key system, without the need to pre-share a key with the resulting difficulties in distributing keys. The protocol used by the service will also be available within Synapse, providing an additional secure data transmission method.
Other Java/Eclipse based technologies used include:
· Net4j to efficiently synchronize individual device CDO repositories with a device aggregator repository in the situation where multiple devices monitor a single entity (for instance a bridge or apartment building)
· UMMISCO GAMA, an Eclipse based infrastructure modeling tool
· Capella, an Eclipse based device modeling tool to reconfigure the Raspberry PI and/or add new features to the device
· DEVS 3.0, an Eclipse-based toolkit for modeling problem patterns; Carrot2, an Eclipse-based topic clustering facility to cluster relevant online documentation
· Concierge, a small-footprint OSGi container suitable for the distributed query engine in the cloud microcontainers
· IBM Data Studio, an Eclipse-based data modeling tool that works with the virtual table construction utilized by the distributed query engine to filter and return only relevant results
· MSF4J, an OSGi based microservices framework for short lived services, providing an average startup time 1/10th of the equivalent SpringBoot service
· WSO2 IS, a Synapse-based identity server providing credentials via Apache River, allowing the creation of an unlimited number of loosely coupled, distributed or federated identity servers rather than a single identity server, providing both low resource requirements for individual identity server services and the option of federating private and public identity services