Merapi Project Utilizes Java to Expand the Desktop Capabilities of Adobe Air
The Merapi project recently was open sourced. Merapi is a technology that can be used as a messaging bridge between applications that run in the Adobe Flash player or Adobe AIR and applications written in Java. Air's security sandbox allows some common desktop interactions like systray support, file access, etc. However, it does not allow other operations such as access to USB devices or launching of native applications. This is where Merapi comes in by creating a simple messaging framework to allow Flash, Flex and Air applications to communicate Java. Java can then be used to proxy requests and interation with such sources. Sending messages can be done via a simple API:
var message : Message = new Message();
message.data = " Hello from Merapi Flex.";
message.type = "Reply";
Bridge.instance.sendMessage( message );
One of the higher profile uses of the new technology is in the Tesla Model S car:
...Merapi is a revolutionary solution for bridging traditional desktop and Web technologies, closing the gap between what has traditionally been a separation of the two. Merapi's key advantages include:
-- Access to hardware devices: Browser-based technologies (Adobe Flash, Microsoft Silverlight, AJAX) previously did not have native access to hardware other than microphone and Web cam.
-- Access to existing APIs: Merapi makes existing open source and commercial software accessible from the browser or from runtime engines such as Adobe AIR without the need for a server.
-- Improved core performance of an application.
This licensing is the kiss of death per any manner of corporate update of this library.
It's architecture ended up being frustrating anyway. What we wanted was a mini JMS-like message broker sitting on the Java side where multiple AIR apps (and/or other Java processes) could connect as clients (i.e., multiple clients). And that concepts like pub/sub topics would be supported.
Looks like we can take BlazeDS servlet, drop it in to jetty, and embed jetty in the Java app to accomplish exactly that. Then we'll have a much more flexible solution than Merapi. BlazeDS has a basic intrinsic pub/sub messaging capability. It supports a persistent-style of Comet connection to enable message push. So bi-directional messaging can be accomadated.
That said, it's not going to be the solution for every problem. Our goal is to start reaching many platforms in a ubiquitous manner. That leaves out using platform specific technologies to build the framework on. Also, we're looking to keep it very light weight. Blaze + Jetty is just a too heavy for many problems.
Thanks for the feedback.
Re: GPL3 (is actually LGPL3)
As such our company will get behind Merapi as the definitive open source solution for Java and AIR interprocess communication.