CacioWeb – The Java Deployment Solution of the future

In this post, I would like to give an overview of what CacioWeb is, what we plan to do with it in the near future, and how you can participate.

What is it now?

CacioWeb is way to deploy Java Swing applications on a server, which allows it to ‘run’ on many clients. Infact, it actually runs on the server, but only does drawing, event handling, windowing, etc on the client. On the client side, it only requires a HTML5 capable browser (it goes in turbo mode on websocket enabled browsers). The solution is somewhat comparable to a VNC based solution, but at the same time different in some ways. Most importantly, it hooks directly into the graphics stack of Java. Drawing and windowing commands are sent directly from the Java graphics stack to the client’s JavaScript engine. Java applications deployed using CacioWeb run on a wide variety of systems, including such systems that don’t have (or can’t have) Java or a suitable plugin installed, like Android phones and Apple products. Deploy Once – Run Anywhere. This core engine is open source and part of the Caciocavallo project, which is an OpenJDK project to enable easy porting of Java’s graphics stack to new and exciting platforms. It has been implemented by the famous Clemens Eisserer as a Google Summer of Code project. Find a running demo here. (If it’s down, it has probably been DOSed, the server is really not very powerful, being a shared server.)

What are we planning for the future?

There are several features that we plan to implement and offer as a commercial product through LadyBug:

  • Most importantly, we are implementing a web frontend for easy deployment and configuration of Java Swing applications to the CacioWeb nodes. This could be accomplished simply by uploading an executable JAR file containing the application to the server. This management service should also offer a way for automated deployments using common build tools like Ant or Maven.
  • Another great feature we have in mind is a clustering service. It would be possible to host many CacioWeb nodes on each server, or even host several servers with several nodes each. The clustering service would distribute incoming sessions according to configurable rules. This will have significant advantages 1. load can be balanced across several nodes. 2. if one nodes goes down, sessions would be directed to other available nodes, thus increasing failover. 3. if you configure one session per node, you achieve maximum stability, if one user crashes one JVM, it will not take down other users. 4. If necessary, new nodes can easily be added by registering in the node manager. In short, this will greatly extend stability and scalability of CacioWeb.
  • We will provide access to the client’s filesystem using standard Java APIs. Normally, when the application is running on the server, using would naturally access the server’s filesystem (which would be restricted by a SecurityManager anyway). We would like to redirect this to the client filesystem. This would most likely access a sandboxed directory on the client only, up to whatever the client JavaScript implementation provides us.
  • We are working to provide client side printing support using the standard Java printing APIs.
  • Last but not least, the whole CacioWeb application will ship as a standard .ear file, ready to be deployed on any J2EE compatible server.

How do we get there?

The above features are currently not yet implemented. We are currently working on implementing the features, but currently don’t have the funding to do so in a timely manner. In LadyBug, we decided to not go after venture capital. Instead, we would like to try out some guerilla tactics to get going. The idea is this: If you (as a company or invididual) think a solution like outlined above would be a great thing to have, and would be interested in purchasing a license for, please contact us and tell us what would be your intended usage scenario. We would basically offer to buy a share of the development of such a product. Based on the feedback, i.e. number of interested parties, we would find out a price for such a share, and if we end up at a reasonable price and get enough support, we would start work on it. In return for the support, we would of course provide a license for the product once it’s done, within a timeframe of maximum 6 months, plus the chance to directly participate in the actual development, e.g. you could provide us the application that you intend to run for testing, etc. Please let us know what you think.


9 Responses to CacioWeb – The Java Deployment Solution of the future

  1. Christiaan says:

    Great concept, it brings Swing to the cloud!

  2. Andy says:

    Where is the source code?

  3. hata says:

    Where is the home page of this project

  4. Roman Kennke says:

    hata: we don’t have a real project homepage yet. The only thing so far is this:

  5. Pingback: The State of Java: Community, Part 1 – JUG-AFRICA | Programmer Home

  6. Akash says:

    Hey it’s great, only if I knew how to go about with a basic deployment? Any layman instructions or a tutorial around…..I wanted to set up cacioweb for myself.

  7. Pingback: Quick Cacio-Web howto « Roman Kennke's Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: