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:

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.

We lost complete interest in Merapi when we saw it decided to go with GPL3 license.

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.

Could you elaborate on your concerns about the license? It's licensed under LGPL3 not GPL3.. meaning, all you have to do is include our source (or link back to it). This does not require your source to be open or free.

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.