Click to see

Home Tutorials JavaScript Links
Keep an Open Eye ThePhotoFinishes Takethe5th PixofCanada Pix of Toronto Bookraft

theOpenSourcery

The Sidebar:
Cloud Computing

Cloud Computing is about Enterprise applications that have been brought to the Web, often to meet anytime (24/7 availability) and anywhere (global enterprises) requirements. Even 5 years ago such applications were on the bleeding edge because of security, reliability, speed and usability constraints. One by one each of these problems has been addressed, some like speed of operation and GUI usability much more successfully than others.The net result is that even the august IT pundits at Gartner have blessed the Cloud "as no less influential than e-Business".

But Cloud Computing goes beyond Web apps for enterprises and embraces SaaS - Software as a Service where companies large and small outsource key apps to service providers that deliver from the Web. The advantage is lower start-up time plus lower initial and ongoing costs; but at the main disadvantage that users are at the behest of the Cloud Vendor to keep up with the latest in new innovations and performance. Hence there is even more emphasis on the make or buy-decision for a broader segment of IT shops.

The Emergence of Cloud Development

In our first look at Cloud Computing, the major trends that make Cloud Computing attractive to various shops, both small business as well as big organizations, were explored in detail. Cloud Computing is just large scale Web Applications that deliver anytime (24/7 availability) and anywhere (global reach) to all their stakeholders - employees, suppliers, stockholders and customers with GUI ease of use and features that often go beyond what desktop-only apps can deliver .However, the article uncovered some tough trade-offs inherent in Cloud Computing and particularly during cloud development and certain operations.

Cloud Development Risks

Considering that n-tier distributed processing has been going on for nearly 30 years, shouldn't it be stable by now ? Likewise at the core of Cloud development tools and methods are open and largely standardized technologies from W3C and ECMA comprising HTML, CSS, DOM, JavaScript at their client side core; standards-based SOA and Web Services plus ANSI standard SQL databases plus queue/messaging systems on the server side - shouldn't these be stable and relatively risk free by now ?

Again, these assumptions do apply but only to an extent. Yes, many of the problems of n-tier distributed processing were encountered 20-40 years ago with time-sharing and distributed batch processing systems from the 1970's. However, the nature of the solutions changed with technology delivering huge quantum leap changes in memory, speed of transmission and storage capacity. Thus users have seen a million-fold increase in equivalent communication transmission speeds from 1000bps to 1000Mbps. Likewise storage capacity and CPU processing speeds have seen improvements by factors of 1000 to 10,000 in the same period at equivalent if not lower cost per unit. The result is that within the last 5-10 years, wholly new solutions have been found for n-tier distributed processing problems. And those new solutions, because of the complex nature of the beast, are still being optimized and made enterprise 99.99% or better in reliability and security.

The second Cloud Development problem is why open and standard methods would not be more robust than they apparently are. Well the problem here is that software vendors adhere to large caches of proprietary and non-open code for competitive advantage insured by first mover or being the dominant market share holder. The classic example is Microsoft on Web standards. 10 years ago Microsoft trumpeted having the most standards compliant browser in IE. It was and is false. Our test of IE8 versus Google's Chrome browser show that Google did in one beta version what Microsoft has still failed to do in 10 years and 8 versions of the IE browser - achieve old HTML, CSS, and DOM standards. Even after Bill Gates issued a Mea Culpa in 2006 on stopping all innovation on Web features and standards for 5-6 years, Redmond remains largely remiss on Web and Cloud development as it tries to shape Web development towards its proprietary methods. Microsoft's IE Browser and Visual Studio development system are by far the most non-standard and proprietary Web and Cloud development systems. This despite the fact other major players like IBM, Oracle, Sun, Sybase, Tibco, Adobe and others.

However standards evasion has been endemic among many software providers. IBM, Microsoft, Oracle, Sybase and other database vendors have run rings around the ANSI SQL standards such that their databases remain to this day highly proprietary especially in the arena of stored procedures, messaging/remote synchronization as well as basic SQL. Remarkably, it is a software vendor, Sun, that has lead the development of open standards across many major software systems. Yet Sun has been rewarded for its efforts by a condemnation and short sighted exclusion from Linux and other open distributions by a blinkered set of GNU-sense radicals. In addition, proprietary gamesmanship is alive and well. Apple on the iPhone has refused to allow Flash to be used; ditto for Google with Chrome (there is a somewhat complex workaround available here and promises from Google that "real soon now" add-ons like Flash will be allowed in Chrome).

So the contradiction is that despite the fact that much of Cloud Development is based on open and standard software and their frameworks; the gamesmanship by proprietary vendors lead by Microsoft ("we make sure that it always runs best in Windows only") has under cut some of the advantages of using open standards software in Cloud Development. However, Microsoft is not alone. Just look at all the off-standard databases among the major players like IBM, Microsoft, MySQL, Oracle, and Sybase. Or ask developers for all the variations among application servers from Adobe, IBM, Microsoft, Oracle, Tibco and others.

But another somewhat contradictory problem is that Cloud software which is largely open and standards software based, may be offering developers too many choices in a few critical areas. An example is the nearly 3 dozen JavaScript frameworks available to developers. I can name 6 very good frameworks from Adobe, Backbase, Jquery, Mootools, Prototype, and Yahoo-Yui - and I have baely scratched the surface. The result is that this wealth complicates decision-making on what software portfolio and design framework to choose. The same can be said for serverside scripting with ASP, CFML, JSP, PHP, Perl, Python, Ruby among others available and overlapping.

And that is the fourth and probably most taxing problem. Cloud development uses so many basic technologies. Our website covers some of the major ones as you see on the list:

HTML - web page markup is used increasingly in mobiles and desktops offline
CSS - has become pervasive text and page styling language for the Web
JavaScript - still dominates client side scripting languages
PHP - dominates server side scripting versus JSP and proprietary ASP, CFML
Perl - the original server side scripting language retains strong adherents
Python - both server side and client scripting with good speed
XML - pervades all aspects of client and server side software
SQL - dominant database and even semi-structured data access method
Java - strong server side with JSP and JSF; growing on clients with JavaFX
Flash - dominates rich media and new cross platform, offline clients
Web Services - SOA is a major enterprise initiative depending on WS

A typical Cloud project will involve almost everyone of these technologies and usually some other Cloud software such as Apex, ASP, CFML, Laszlo, Ruby on Rails, etc, etc. So this leads to our assessment of Cloud Software.

Cloud Software Languages

Cloud Software development is crucially influenced by what languages are available to developers to deliver systems. Yes, largely open standards for coding for markup, layout, data access and messaging as represented by BPM, CSS, HTML, SQL, XML, and the many SOA/Web Services standards are critical to Cloud and Web development. And there is a whole new set of standards for GUI development coming rushing into play as software vendors as diverse as Adobe, Google, Microsoft and Sun among others rush to get a lead in RAIA race to be the premiere provider of GUI and presentation layer software and development language/framework - see here for some handicapping of who currently leads.

But it is the programming languages that support both client-side and server side Cloud development that are of most interest. Here is an assessment of who is where in that field.

JavaScript- predominately client side but some lingering server side use
TIOBE - ranking of 9th among programming languages for Web coverage
Hotscripts - has 2404 scripts 18% from top(PHP), 4th in books, magazines
OpenSource Benchmark - is 55 times slower on average than best code(C++)
Cross Platform Reach - nearly comparable to the best, Java and PHP
Object Development - OO capable, libraries extend that, version 4 is full OO
IDEs:Activestate, Aptana, Backbase, Bindows, Dreamweaver, JackBe, Eclipse, NetBeans, Nexaweb,Tibco, etc
Recent Developments - AJAX, JSON, REST and E4X have made JavaScript the number one language for client side Cloud Development. New browsers from Firefox, Google, and Opera increase speed of JavaScript engine by multiples. There are almost too many competing libraries and frameworks available now, many open and free for development use. Also the move to JavaScript 4 presents many problems - could be as disruptive as Visual Basic's move to VB.NET. Also JavaScript must a)speed performance and b)deliver standalone, offline operations like Flash/AIR and JavaFX or it will not claim all the market open to it.

Flash- predominately client side but with major server side support services
TIOBE - ranks Flash's ActionScript 15th among programming languages
HotScripts - has 1767 scripts 14% from top(PHP), 8th in books and magazines
OpenSource Benchmarks - no rating for speed, Adobe claims JVM comparable
Cross Platform Reach - Apple, Linux, Windows, Solaris, some mobiles
Object Development - ActionScript 3 is an ECMAScript 4 implementation, full OO
IDEs: Flash, Eclipse/Flex, Laszlo, SwishMax
Recent developments - Flash leads the RAIA-Rich Anywhere Interface Applications with Flash/Flex/AIR combo and the ability to run the same app on the desktop or in a browser, online and offline on so many OS platforms. Also Flash's free player has 98%++ browser penetration. But competitors are starting to fight back- Google's Chrome browser and Apple's iPhone do not support Flash player.And Microsoft Silverlight, Sun's JavaFX compete against Flex/AIR.

Java- is both a client side player with JavaFX and serverside JSP, JSF, JMX, etc.
TIOBE - ranks Java 1st among programming languages for Web coverage
Hotscripts - has 1432 scripts 11% from top(PHP), 2nd in books and magazines
Open Source Benchmarks - is 1.7 times slower than best code from C++
Cross Platform Reach - best of Cloud languages
Object Development - has full OO capabilities from origin
IDEs: Eclipse, JBuilder, JDeveloper, NetBeans, Rational Developer, etc, etc
Recent Developments - Java has become a player again on the client side with JSF and potentially JavaFX with its very fast performance making it a strong RAIA candidate. But there is also the revival of applets. On the server side, Java is a major player with Java Servlets, JSP and a Spring flood of generation/development tools. Web Services/SOA and servers, messaging, plus various aspects of database and semi-stuctured data processing are all Java proficient. Finally, the JVM runs everywhere.
PHP - is the premier server side language for Cloud development
TIOBE - ranks PHP 5th among programming languages
Hotscripts - its 13,008 scripts is tops, PHP is 1st in books and magazines
Open Source Benchmarks - is 25 times slower than best code from C++
Cross Platform Reach - Apple, Linux, Windows, Solaris, Unix and many servers
Object Development - has full OO capabilities since version 5
IDEs: Activestate, Delphi for PHP, Dreamweaver, Eclipse, PHP Designer, Zend Studio and literally dozens more. But PHP IDEs are weak in Visual Screen Layout and Debugging - trailing ASP/VB and JSP/JSF.
Recent Developments - PHP, like JavaScript, has dozens of frameworks and libraries. Many are free and open source. It also has one of the largest stocks of free applications - visit OpenSourceCMS and HotScripts to see hundreds of polished yet free applications. On the downside, PHP has slow operational speed and its OO coding, like C++, can easily be bypassed. Finally Security can be as fragile as JavaScript.
Python- is the second of 3 P's in LAMP, server-side predominance
TIOBE - ranks Python 6th among programming languages
Hotscripts - has 89 Python scripts less than 1% of PHP, 7th in books,magazines
Open Source Benchmarks - is 6-19 times slower than best code from C++
Cross Platform Reach - Apple, Linux, Windows, and some Unix versions
Object Development - has OO capabilities including multiple inheritance
IDEs: Activestate, Eclipse, IDLE, Wingware
Recent Developments - Python is increasing in interest in no small part due to its speed improvements. As well IronPython from Microsoft and JPython linked to Java JVM have broadened interest in Python in new application tasks made more affordable by Python's improved speed of operation. Like JavaScript, Python is also being used as a macro scripting language by vendors like Corel and Oracle. On the downside, Python has hirsute syntax including whitespace balancing act.
Perl - is the original P in LAMP-Linux Apache MySQL Perl; server-side mostly
TIOBE - ranks Perl 7th among programming languages
Hotscripts - has 3998 scripts 31% of PHP's total, 3rd in books and magazines
Open Source Benchmarks - is 24 times slower than best code from C++
Cross Platform Reach - Apple, Linux, Windows, and some Unix versions
Object Development- has a smorgasbord of OO capabilities but see below
IDEs: ActiveState, Aptana, Perl Builder, Perl Express
Recent Developments - Perl is stuck on Parrot, the engine for speedier Perl. The language is into the 4 or 6th year of the transition to a more robust new version from Perl 5 to 6. Meanwhile the old language continues to improve with both features and performance. OO development, like in PHP and C++, can be easily bypassed.
Ruby- server-side with major mindshare with Ruby on Rails development
Orientation: - serverside development
TIOBE - ranks Ruby 11th among programming languages
Hotscripts - has 26 scripts, 6th in books and magazines
Open Source Benchmarks - is 28 to 45 times slower than best code from C++
Cross Platform Reach - Apple, Linux, Windows, Solaris and other platforms
Object Development - has full OO capabilities from origin
IDEs:- Eclipse Rad Rails, Idea, NetBeans,
Recent Developments - is the Smalltalk of Cloud languages with a very strong following especially in scholastic circles; but it also has the Smalltalk curse of slow runtime performance. Big plus is its influence on how Cloud development should be done and its reach onto many embedded devices.
Tiobe Index - is an indicator of the interest in a language as measured by Google references and their changes over time.
Hotscripts - provides rated links to apps written in a number of languages. It also lists magazines and books that are devoted to a language
OpenSource Benchmarks - provide a comprehensive set of nearly two dozen common benchmark programs used to measure the performance of a wide array of languages. Currently Intel C++ sits atop the heap and so it has a rating of 1.0. All other language ranking are averages of the tests divided by the Intel C++ averages. So Java take 1.7 times longer on average on the benchmarks than Intel C++ and so forth.

Now clearly quite a lot of other languages could be featured here but I have biased the list with languages that are decidedly OS cross platform. C# from Microsoft claims to be cross platform; but when you consider how far ahead Windows .NET is of somewhat cross platform Mono version for Linux primarily one can quickly see why it was excluded. In short, Cloud developers are looking for languages that will be able to go wherever the Web goes. And that is fast becoming anywhere these languages run - mobile phones of increasing power, embedded apps, PDAs, mini-notebooks, desktops, massive servers - just about anywhere a CPU can go, so goes the Web.

Also quite a range of specialized languages like Scheme , Smalltalk, LUA, Fortran, D, and others were omitted primarily because they are too specialized or have a relatively small developer community. Finally, the three big languages, C, C++, and Delphi were omitted for the no good reason that they are used primarily for software and classic client server development much more than Web or Cloud development.

What's Right About the Cloud Languages

First, all of the Cloud languages are decidedly cross platform as noted above, that is how they got on the list. All of the languages are Open Source except for Flash. But ever wider portions of Flash , particularly the Flash player or runtime, have become Open Source. All of the languages are OO-Object Oriented. Some of the languages, (JavaScript, Python, Ruby notably) have a reputation for being easy to learn. Most can be run interactively for easy testing of small scripts.

All have a rich development community and hundreds of applications and libraries to support their use. Every one has at least 2-3 IDEs (Integrated Development Environs) that provide a color coded full screen editor with code hints and the ability to launch compiles and loads so the process of development is expedited. In addition, some have Interactive Debuggers that allow users to step through source code to isolate bugs. Finally, a few like JavaScript, Java, Flash and Ruby on Rails - provide Visual Design tools so that the GUI interface and data forms for a program can be designed and developed quickly and efficiently. In sum, development in these Cloud Languages is relatively efficient given a wide range of often free and open source toolkits.

And the breadth and depth of development tools and libraries reflects the overall efficiency and reliability of these languages. Users have come to trust these languages for use in an ever wider range of applications. However as we shall see below there are concerns about the security, performance and future directions of the Cloud languages.

What's Wrong With the Cloud Languages

Given the open and standards based nature of most of the Cloud languages one would hardly expect that there woud be so much divergence - or maybe one would. But divergence there is. So many JavaScript, PHP, Perl and other frameworks. Many overlapping and redundant internally. For example, thers are at least a dozen major Javscript frameworks while PHP has an equivalent number of data access methods. Some with lurking security bugs - PHP and JavaScript have been the targets of very sophisticated hack attacs. And all of the scripting languages have serious performance problems with the notable exception of Java and Flash. Ruby on Rails, for example, would be much more widespread in use if it didn't suffer the Smalltalk disease - terribly slow operation times marring an otherwise very compelling development system.

But there are other problems as well. The IDEs for many of these languages are seriously deficient in three regards. First, the onboard debuggers often will not work in the Web context but must be done in a special local-machine setting that can often hide some tricky real world bugs. Also some routines associated with Web Services and specialized operations like Flash, Silverlight, CORBA or .NET debugging have to cross boundaries that may not be enabled. Ditto for Java and Flash in the .NET context.

The second problem is the lack of a serious Visual Layout Designer for drag and drop development of GUI interfaces, reports and rich output. Now you might ask- "why does a serverside PHP or Perl system need this?" Well because serverside scripts like PHP, Perl, JSP and others generate the screens and reports used on clients screens; so software that helps design those screen quickly are quite helpful. In fact, it has long been shown that drag and drop layout is efficient and effective.

The third problem is that much of existing Cloud software is really for the Web and client-server operation only. Again - what is wrong with that ? Well there are two problems. First, many applications work best if they can switch between online and offline mode of operations. Task completion often requires both offline as well as online work. This is the market that Flex+AIR, Microsoft Silverlight and Java JavaFX are shooting for. But there is a second benefit that accrues to RAIA- Rich Anywhere interface Applications. If you can do the Java trick ("write once, run anywhere") for the presentation layer, then a big barrier to efficient development is removed. Organizations whose apps can be quickly changed and delivered on mobile, desktop, and notebook devices all at once are going to have a comoetitive advantage.

Summary

Cloud Computing is succeeding because much of it derives from Open Source software which removes the opportunity for low-ball and free-until-we-get dominant-market share pricing. Rather quality of features and service are key determinants of who succeeds. But this blessing has also meant that Cloud Computing has a glut of competing languages and tools which inevitably will shake out over the next 3-5 years. So it will be important for developers to identify what will be the leading languages for Cloud Computing.

Consider the leading Cloud Computing/Web development languages to still be in the air. PHP, Perl, Python,Ruby and especially JavaScript all have more security hardening, standards compliance, performance/speed of execution improvements, and/or graduation to full OO frameworks to go through. Java/JavaFx and Flash/ActionScript have lead on making these transitions but still have to gain wider acceptance in the development community for their brand of Cloud Computing +RAIA being offered. And there are a bevy of contenders from Curl through JGroovy to Backbase, Bindows, and Silverlight waiting in the wings to emerge as serious contenders. Stay tuned to theOpenSourcery.com for coverage of these Cloud Computing Contenders and meanwhile take a look at our briefing on Cloud Computing apps and their underlying technologies here.