Ruby on Rails style productivity in Java!

The Java Play Framework is a great framework for quickly creating REST ful Java web applications. It removes all the Java EE boiler-plate code and makes the development very fast and efficient.

Most of our projects here right now are built using the Play framework, and we are seeing an strong increase in productivity and how quickly we turn around changes to the products we are creating.

Some of the things we value the most are:

  • Simple framework, and easy to integrated with client frameworks such as jQuery to built really compelling and interactive web applications.
  • We can tap into the vast amount of open-source Java libraries out there, so we can quickly prototype build, and add new features quickly. Some of the recent things we built, we added a fully fault tolerant, distributed Event Driven aspects to one application in 2 hours. In another application we added support for PDF reports in 1 hour!
  • It has always been possible to create scalable fault-tolerant applications in Java, with Play! we are doing it in model that we can scale to what we call web-scale software (millions and millions of users), this is not automatic with any framework, but we find it fairly easy to do so.
  • We don’t have to give up skills in Java or the benefits of a compiled language, while Play! makes it easy to test instant changes (with some smart real-time bytecode replacement in development mode).
  • We get the superior Java performance of the JVM with Jit compiling (yes it is screaming fast, those who say otherwise have not really developed any real apps in Java! There is a reason many of NASA’s and other computation intensive programs are built in java today), and none of the Python, Ruby or other platform woes of deployment issues, tied to compiling to different hardware architectures (try Python on Solaris for example…) – the JVM is really abundant and works well (and behave the same) on most platforms .

Here’s a great video that shows just how easy the Play! Framework is to get started with:

A web app in 10 minutes using Play framework from zenexity on Vimeo.

From the BootstrapWorks blog.

Apple to Open Source it’s Java for OS X

Today Apple and Oracle announced that Apple is Open Sourcing it’s Java implementation for OS X and join the OpenJDK project. Read Apple’s press release here.

This is great news for everybody that develop Java or use Java based applications on the Mac, it means that the JVM will be much more in sync on OS X, both in terms of functionality and release schedule.

From the BootstrapWorks blog.

Real-time web browser apps

We believe we are seeing an emerging real-time economy, that is demanding real-time web applications. The best way to build these applications is a fairly proven concept of what is called Event Driven Architecture, and works fairly well in traditional server and client computer environments.

But due to the nature of the HTTP protocol, Javascript and HTML standard, creating a distributed Event Driven Architecture that is seamlessly integrated with a web-browser client-side has a number of challenges.

Recently we started building a generic solution to solve this, and come around some of the common problems that arise.

Background

Right now in more than one application that we are building at this time, we have a need to provide a web-based user interface that is as responsive as a native app of events on the server-side. Many applications solve this with polling, but that has two major drawbacks:

  1. It’s not really real-time, as there is a polling intervall (lower intervalls will make this go away).
  2. It’s very wasteful on resources, both on the server side, networks and the client web browser, as the constant polling creates new requests and round-trips to the server even if there is no new events. Trying to mitigate no 1, will just increase the overhead.

So what can we do to get around this?

We started developing a Remote Messaging framework that consists of a Java back-end (running in our favourite web framework Play!), and a Javascript client framework, that allows Javascript code to subscribe to message (or event) queues in a real-time pub-sub model.

Early tests have worked very well for us, and is not dependent on HTML 5 WebSockets, here is a short example of how the code might look like on the client and server side.

Client-side code can pretty much do this:

RemoteMessagingFramework.subscribe( ‘tweet-xxxx’, function(msg) { … } );

On the server-side, a back-end job listening (and filtering) the Twitter real-time feed might do:

Message msg = new Message( payloadObject );

RemoteMessagingFramework.publish( “tweet-xxxx”, msg );

And that is it!

When the server publish a message, the client will receive and the provided event-handler function (in client-side Javascript) in the browser will be called to process the msg in real-time.

Status of the project

The framework is in it’s infancy and fairly basic, and still needs more testing, bug fixing, and work, but it looks promising, we are hoping to get this to a mature level to be included in our current projects, and the if we reach appropriate critical mass and stability we will do our best to open-source the framework. No promises yet though!

We will also look further into how we can build a HTML 5 agnostic solution, that falls-back to older browsers, but will use HTML 5 and Web Sockets if available. Other options that we might explore is integrating this to a Messaging Queuing back-end (JMS).

Thoughts, ideas? Would you be interested in the framework and use it for your applications? What typical applications would you be interested in building using this?

From the BootstrapWorks blog.

Launching BootstrapWorks!

We are very happy to announce that today BootstrapWorks is being launched.

BootstrapWorks is a technology and software development lab, that offer world-class software development resources to BootstrapLabs and it’s companies and to some external clients outside the group. BootstrapWorks is part of the BootstrapLabs group.

BootstrapWorks has primary focus in mobile solutions and in building back-end scalable solutions that power millions and millions of daily users.  Read some more about BootstrapWorks on our website, where we will add more information and blog posts as we go on the different projects we are working on. We are heavy on building production level code that can be iteratively refined during the life-cycle of a product or solution. We work mostly and prefer Java and frameworks and technologies such as the Play Framework and scalable databases such as SimpleDB or Apache Cassandra, but we have experience in Python/PHP, Objective-C and use those technologies were applicable.

If you are building a web-scale business and need help building that back-end system, don’t hesitate to contact us!

From the BootstrapWorks blog.