Over the last 2 months, we have launched 3 apps on our portal:
- Main Line: a virtual PBX or a main number of any business
- Conference: a convenient way to setup conference call
- Fax: online fax system for business
As we launch more apps on Hoiio Platform over the next few weeks, we want to make sure our users will experience the highest quality of apps.
Today, we have completed testing a new version of Conference app that’s much faster, and more reliable than ever before. To understand how we achieved this, let’s take a look at how Hoiio has evolved on web application development.
Google Web Toolkit (GWT)
We have been using GWT in most of our products, from the user portal to our internal admin dashboard. We have built arrays of custom components that can be reused in any GWT project, making GWT the framework that every web project would start with in Hoiio. Our Apps are no exception. We started developing our apps using GWT and reused a number of major components to speed up the development process. However, we started to feel long in the tooth when feature creep sets in. We also felt the sluggishness of GWT. And as GWT is improved, some of our components and plugins were less relevant in new projects. In light of this, our new Conference app marks our first release without GWT.
Spring + jQuery
GWT tightly couples the server side and client side, which means any changes on the client side technology results in a complete rewrite of our app; adopting jQuery and Spring makes client and server side loosely coupled. This means if we, for some reasons, want to adopt another technology in server side, we can easily modify the server side’s code, expose the same sets of APIs to client side, and that’s it.
The second problem is managing events for DOM elements. In fact, we already experienced the frustration on binding events to the spaghetti code mess that we had created at earlier time. For example, the first version of Conference app has around 15 events, 4 different types of data objects that interact with each other, and many DOM elements that depend on each other in certain ways like CSS effects. We feel that without a proper structure, we will soon face a lot of issues while maintaining our app.
BackboneJS, HandlebarsJS and RequireJS
The fact: Speed comparison
We measure the speed of our app to demonstrate the performance gain we have achieved. Test machine is in Vietnam, server is in US. Same app is used during testing
First request (no cache) takes 13.6 seconds to complete.
Second request (with cache) takes 2 seconds to complete.
Using BackboneJS + RequireJS
First request (no cache) takes 3.6 second to complete.
Second request (with cache) takes 1 seconds to complete.
The results say it all. BackboneJS and RequireJS beat GWT in every ways: 4x faster without cache and 2x with cache.
Coming soon. For all apps.
We are committed to deliver quality apps. That’s why at Hoiio, we never stop to research the latest technologies that helps to create the best user experience. Conference app is now ready to deploy, and we are starting to make all other apps faster. Stay tuned.