• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!


What is a Cloud Application

This version was saved 14 years, 11 months ago View current version     Page history
Saved by Charles Jolley
on June 25, 2009 at 12:16:10 pm

People ask me sometimes what makes SproutCore different from all the other JavaScript libraries out there.  I usually respond that its one of the only frameworks designed for Cloud Apps, not Web Apps.  Let me explain.


Behold the Web App


Traditional web applications are designed to run on a server.  Both the app business logic and user data lives "in the cloud".  Sure you may move some of these bits temporarily to the web browser via Ajax, but for the most part the heavy lifting is done in the cloud.



From this point of view, tools like GWT actually make a lot of sense.  You spend most of your time thinking about what's happening in the server.  It's both annoying and difficult to switch over and think about styling HTML and hacking JavaScript on the client.  


Using Java for both sides allows you to think more abstractly about your business logic and let the client take care of itself.  Logical.


The drawback here is that all of your important business logic potentially happens many thousands of miles away from your user.  This necessarily limits your ability to provide rich interaction, immediate feedback, or to work offline.  


Even apps like Gmail, which are blazingly fast for web apps, have a generally slower pace than something like a native Outlook client because of these limitations of the web. 


And Also the Desktop


Traditional desktop applications, on the other hand, work completely the opposite way.  In many desktop apps, there is no cloud.  All of your application data and business logic lives on the client.



This is the world in which Cocoa, .Net, Java Swing and the various desktop frameworks were written.  Everything is local.  Always there.  You can provide rich interaction, immediate feedback, and, of course, working while on an airplane is no problem.


Of course, the desktop approach has a lot of drawbacks.  It's not very portable for one.  Also, in a world where connectedness and the communication are central to just about everything, it takes a lot of code to build a great desktop app that works well with a cloud-based service.


If the Web App and a Desktop App Had a Baby...


Now enter the Cloud Application.  Cloud apps blend parts of the web and desktop worlds to create something new.  Like the web app, your data lives in the cloud.  Like the desktop app, your business logic downloads to the web browser and lives there instead.



With this approach you really get the best of both worlds.  Your app is easily accessible to anyone with a web browser.  It's really easy and natural to write cloud-centric tools.  


Yet at the same time, all of your interaction happens right there next to the client.  Although you can't entirely hide the fact that you are running over the Internet, most of the time you can easily provide rich interactions and immediate feedback.


With this design, of course, it is also easy to cache the user's data locally, enabling full offline mode without any kind of hackery.


One other benefit of this model is that it means you can make your server much smaller and simpler.  Mostly your server needs to process data efficiently and return results as quickly as possible.  As with any service exposed to the internet, you need to also make sure your server is secure - authenticating requests and validating data.  But the overall task is much simpler.  And best of all, better suited to the kinds of things server frameworks are naturally good at. 


Cloud apps clearly offer a superior user experience to traditional web apps.  They have largely only become feasible for broad internet use in the last few years though, which is why I think you'll see a lot more of them coming along soon.


Back to SproutCore


Cloud applications are a great approach to building a modern application on the web.  However, if you wanted to build an app like this starting with just a browser, you'd have some problems.  It's a lot of work.  And the techniques you need to use to scale a browser-based app to the level of a cloud app are not well known.

Typical JavaScript libraries such as jQuery and Prototype are really useful as utility libraries, but they don't provide much of anything in the way of application-level management, such as complex data bindings, schema models or controllers.


So this is why we created SproutCore.  SproutCore has some features you won't find anywhere else usually because they don't make sense outside of a cloud application.  For example, we spent a lot of time writing our own custom scroll view (instead of just using overflow:auto in CSS) as well as a CollectionView that can render a list of items on the screen piece by piece instead of simply generating a bunch of LI elements.


Traditional web developers often first discover this and balk.  "Why don't you just let the browser handle this?" they ask.  The simple answer is that for a web page, the browser works great.  But it doesn't scale.  And cloud apps need to scale.  We have sample SproutCore apps that can render a list 200,000 items long.  You can't do that without these crazy features we've added to the framework.


Comments (0)

You don't have permission to comment on this page.