Tuesday, July 01, 2008

The Coming Together of Web and Desktop Apps

Today Frank Ohlhorst did a review of Servoy for eWeek's Channel Insider. It was really a nice review - and it got me thinking (rare, I know)... in the future how far will the line blur between web and desktop applications?

I think for the short term - there's a lot of noise about where vendors *think* it should go. The market and the press has been announcing new paradigms and competing announcements for the-same-but-different tools to try to get developers to adopt their "new" platform.

There is so much confusion and noise out there about all the new technologies that I think we're getting away from the real question - what are real life developers doing to create real life applications (both web and desktop) that real users actually use?

I think there are as many answers out there as there are individual developers. Some are still using the "old school" 4GL products (Access, Alpha 5, FileMaker, FoxPro, Magic, Oracle Forms, PowerBuilder, Progress, etc.) and some are using 3GL languages and products (Basic, C, C++, C#, Cobol, Delphi, Java, .NET, RealBasic, VB, etc.) - because that's what they know and are comfortable with (or it's been dictated to them that they use those tools).

Some have turned to the "new" platform as a service (PaaS) offerings or virtual (100% cloud-based) offerings like Bungee, CogHead, Gears, Force.com, QuickBase, etc. opting for both the development and deployment models to be 100% online.

Yet others are jumping on the connected/disconnected (and "Rich Internet Application" - RIA) bandwagon with AIR, Gears, Flex/Flash, OpenLaszlo, and Silverlight.

Not to mention the mobile platforms that are coming out with their own flavors of operating systems (Android, iPhone, Symbian, etc.) that also may or may not have their own particular languages (Objective C, Xcode, etc.).

Ummmm.... yeah. And the list goes on and on and on and on. I personally think it will get even more "muddy" before it gets more clear. You can bet that there are zealots for each of the various approaches and tools and platforms. There are an equal number of detractors as well.

Everyone's got an opinion. But is anyone getting any work done?

I mean, it's all well and good to take a look at all the various technologies that are coming out - they're all trying to do the same thing: help developers develop stuff that end users will find engaging so that they be more productive - and actually get stuff done.

In my book - any tool that will allow you to reach that objective is the best tool to use.

It's not a one-size-fits-all world - and there will never be a one-size-fits-all language, tool, protocol or way of doing business.

Having said that - it's been my experience that end users, project stakeholders, CIO's and CEO's don't really give a rat's ass what the technology is - as long as it meets the business goals, and comes in on-time and on-budget.

And, in my opinion, THAT'S the problem. These tools are so complex, there is so much code to write, there are so many protocols to support, end user's expectations of how applications are "supposed" to behave are changing so rapidly - it's really difficult to find a tool that will help you be both productive ("get the job done") and easy-to-use ("get the job done on time") and flexible ("meet ever-changing business goals") - it's enough to drive developers nuts.

Couple that with the end-user requirements of a rich browser application, and/or a client/server application and/or a disconnected application that synchronizes, and now the water is even more murky.

Let's not even go down the road of the changing business climate of offering software as a service (SaaS) and the nacient platform as a service (PaaS) initiatives to put stuff in the "cloud" while at the same time coupled with ISV business model of selling on premises licenses...

It's for those reasons that I really like Frank's article on Servoy. Servoy is a tool that will give you the best of all worlds: standards-based, JavaScript/Java power, easy Eclipse-based RAD design - but it also is flexible enough to be extensible (Java), and allow you to sell it as an on premises solution, a SaaS solution (in the cloud with or without PaaS) - deploy as client/server and/or browser (100% HTML/CSS) and/or "headless" client (for use by web services, other Java applications or JSP) - while at the same time doing it ALL from ONE code base.

For my money - that's the best application to use. One that allows you to leverage what you know and handles all the code that's behind the scenes. Who wants to code things like connection pooling, data broadcasting, manage client state, write 1,000,00 SQL queries, etc.?

The part that developers need to develop is less about infrastructure and more about the "inside of the window." It's like an iceberg - 80% of the typical application's code is below the water line: the end user never sees it. They only see the 20% of the code on top.

If you can concentrate on the 20% of the functionality that the user interacts with - and have the other 80% handled for you automatically (but still have the flexibility to monkey with it if you want/have to) - you can finally be productive and actually DELIVER a secure client/server/web/offline application on time and on budget that end users will actually use.

Now that's bringing the desktop and web applications together in a way that makes sense.

No comments:

Web Analytics