What’s the buzz (word)? Tell me what’s happening?
«The computer industry is the only industry that is more fashion-driven than women’s fashion» – Larry Ellison, CEO of Oracle likes to say. And you can’t but agree when year from year you see that some promising technologies don’t fulfill promises and consign to history; they are forced out from the pages of IT journals and blogs by other even more promising ones. In this season Software as a Service, Cloud computing, Rich Internet Applications (RIA), and Web 2.0 (I need to mention that the last term is going out of date) are of current interest. The meaning of all these mysteries words generally comes to the fact that main part of the application is executed on the server side and the end user gets access to all necessary functionality via the internet browser.
What the hell, excuse my French, do we need all those RIAs, SaaS and other WebTwo’s for? Are we doing badly without them? Aren’t normal desktop apps more convenient and efficient; don’t they fulfill the same functions much better without being dependant on internet connection? And in general, isn’t it a regress to the mainframes epoch with powerful servers and weak terminals? Absolutely, but I should accept that up-to-date applications have some disadvantages that became extremely evident since the broadband access to Internet is available virtually everywhere. And here are some of them.
Lack of mobility.
A good while ago I used only one computer that took all free space on my not very small table. Weight, size and price of this wonderful machine with CRT display (which weight was about 16 kg) indisposed me even to any idea of mobility of such devices and of getting the second computer. Now, except the desktop computer in the office, full-rate laptop and light netbook for journeys I use notebook of my wife, and sometimes Internet café services (as I don’t take even a netbook for my journeys). In case of classic software, besides financial expenses (to get licenses for each computer) and time required for software installation I have to take into account inability to install necessary software on third party computers. There is no such limitation for internet applications; you can just enter URL in the address bar and viola – you can start working.
Necessity of software installation.
If you use computer not only as a typewriter, then you know how much time it takes to install the required software. Guess what prevents me from upgrade to Windows 7. Price? Compatibility problem? Crazy love to all bugs of Windows Vista? Very cold. I am just lazy and don’t want to send two days for re-installation and setup of all applications I got used to.<
And it is good if you know for sure what software you need for work. And what if you need to find a program for the task you have never faced before? Besides the common doubts about safety of the downloaded software, the process find-download-install-don’t like-uninstall for dozens of alternatives will take huge amount of time. If it goes to installation and evaluation of server-client software, such as CRM, installation and setup can take several days. Moreover, un-installation isn’t always correct, lots of artifacts such as un-removed register nodes, execution modules in system folders and other garbage; it doesn’t influence well on the system speed and reliability. The last problem can be solved by virtual machine, but how many users know about availability of such a useful thing, I am not talking about its everyday use. Yea, virtual machines – not every user can download\install\uninstall.
Internet apps are launched in one click directly in the browser and don’t require installation\un-installation. And work in the browser sandbox extremely decreases penetration of the dangerous software on the computer. As a result, office employee, for example, marketing manager can evaluate and start using necessary applications without any technical knowledge and system administrator. It seems to me that on-line CRM systems such as SalesForce are so successful due to this fact.
Price
Though it isn’t connected directly to the technical peculiarities of desktop and internet applications, traditionally different licensing models are used for them. When desktop software is licensed once (or till a new version release, but if you are satisfied with the features of the current version, then no one can make you purchase updates), internet applications usually use pay-as-you-go principle, i.e. subscription basis. Eventually it’s not always cheap, but the opportunity not to pay the whole sum at once is extremely attractive for business, as it helps reduce risks and decrease startup expenses.
Back to the future?
Ok, let’s suggest that internet application is still a useful thing and not a modern passion. But why do we need a special RIA platform since there is a wonderful AJAX technology able to create equally as wonderful applications?
It’s known that a “screw choked with a hummer goes stronger then a nail tightened up with a screwdriver”. Development of applications based on HTML (deciphered as Hyper Text Markup Language) reminds choking of those screws with hummer and is used instead of special tools designed for this purpose. HTML (repeat it again, deciphered as Hyper Text Markup Language)is called HTML (I repeat for the third time and promise for the last, acronym is deciphered as Hyper Text Markup Language) because it was created to represent text information and is a good tool to weave the web of connected texts and not to design applications. If not, it would be called XAML – Extensible Application Markup Language. And JavaScript, aka Jscript, aka ECMAScript is called a script because it is designed to write short scenarios to diversify text documents by adding some interactivity. And I can’t but admit that it is a splendid script language and that is why it can’t be used to develop sophisticated applications. Of course, there are awesome AJAX apps; in the same very manner choked screws are stronger, I checked. Problems start when the designed model should be broken down and installed in a new location.
Oh yeah, sure, I forgot about HTML 5 that is designated to solve the aforesaid problems. Though, HTML 5 features a lot of helpful innovations, it is a good old HTML (as you remember, Hyper Text Markup Language – sorry, couldn’t help but repeat it once again) and is still designed to represent texts, but not to develop applications.
Every time I face with AJAX technology, I feel like déjà vu. Sometime in old times when operating systems were single-tasking and DOS was the most popular, developers spent much of their time to struggle against the system and as developers like to say “construct various bicycles ”, but not to solve user problems.
I’ll give only one sample. As the use of graphic mode was connected to the loss of performance, necessity to include video drivers into the application and as a result to bonk solve problem of compatibility of different video card types, most application vendors used a curious technique; the short of it was emulation of graphics in text mode through dynamic drawing of bitmapped fonts. In spite the fact that implementation of this method isn’t a trivial problem and the ability to display graphics in this mode is quite limited (only two colors can be displayed instead of each symbol; and font size can’t be eternally expanded), some developers demonstrated quite impressive results including smooth pixel by pixel moves of a mouse (heaven knows I don’t lie – saw it by myself). It hardly reminds me tries of up-to-date web-developers to provide dynamic graphics through assembling an image out of square pictures. At DOS time every application included all possible drivers and libraries; every more or less complicated app had its own window system with own ideology. Every vendor should think about compatibility with various devices. Today developers of AJAX sites spend a lot of time to provide compatibility with all browsers and every time they design original user interfaces instead of using a unified approach to GUI engineering as it is in common among desktop developers. I can give a lot of similar parallels.
If you suggest that history is cyclic and a common sense wins, then what will happen with internet applications? Let’s continue making parallels. In due time, DOS was replaced by multitasking environments that were only DOS add-ins (for example, Windows 3.x that was a base for the whole Windows OS line-up). Besides the multitasking itself, new OS included a unified user interface and improved API making it possible to abstract away from certain hardware. At the moment HTML add-ins such as Flash and Silverlight are developed; they make shy tries to get rid of browser (Adobe AIR and Silverlight Out-of-browser mode).
In the way Windows guarantee correct code execution regardless of hardware, the use of the mentioned technologies guarantee that application will work in the same way in all browsers and under all systems. In the way Windows include standardized libraries designed for work with graphics, the mentioned platforms provide rich abilities to output vector graphics, video and sound. So, future of internet applications is in standardized, cross-platform environment originally designed having in view loading applications from the net.
Silver(light) at the end of the tunnel.
Today there are three technologies claiming to be the platform for RIA. They are Flash, Silverlight and JavaFX. And I think parallels end here, as opposed to the market of desktop applications working according to the principle “winner takes it all”, that technologies can peacefully coexist and evolve in parallel. As for me, I think Silverlight is the most promising platform because:
This is .NET Framework(very-very small)
Silverlight is engineered on the base of cutdown version of .Net providing excellent performance, rich class library and support for modern programming languages such as C#. 5 million .Net developers learning RIA world won’t give up without fight LINQ, lambda expressions and other pleasant things making their lives simpler.
Separation of user interface visual representation and application logic
Vendors of GUI frameworks always wanted to separate logic from representation, but no one could do it as well as Microsoft did in the library used in Silverlight. This is done due to the combination of system of styles, templates and powerful mechanism of data binding and also the ability to concurrently work on one and the same project for developers and interface designers.
Developer tools
When you develop Silverlight applications you can use the same developer tools used in “older” Windows apps: Visual Studio for coding and Expression Blend for interface design. These tools are known by all .Net developers and it is certainly one of the best in its class as it provides all abilities required to develop and debug both client and server sides of internet applications.
Summary
It’s obvious that Rich Internet Application is one of the most promising trends of modern software development industry. The main thing in chase of trends is not to forget that not all applications worth making internet ones.