Category Archives: javascript

jQuery usage soars as Adobe Flash shows slight decline

A press release from .appendTo, a company which offers jQuery-based services and training, states that “jQuery Overtakes Flash on World’s Top Websites”. I found it a curious claim insofar as jQuery is not really an alternative to Flash, though there is some limited set of graphical effects for which I guess you could use either.

I took a look at the source data from httparchive.org – note that the data at this link changes regularly. I compared the most recent stats, from August 15 2011, to the oldest available, November 15 2010, an interval of nine months. The data is based on the most visited sites based on various lists and seems to amount to between 15,000 and 20,000 URLs.

In November 2010, jQuery was found on 39% of the sites, whereas Flash was on 49%. In August 2011, the stats show jQuery on 48% of sites with Flash on 47%, hence the press release.

Other figures that caught my eye: in web servers, Microsoft IIS has moved from 21% to 20%, apache from 51% to 49%, nginx from 11% to 13%.

Google analytics is the most commonly found script, moving from 61% to 63% of these sites. The amount of data Google receives on internet traffic is remarkable.

The real story here is the ascendancy of jQuery rather than the decline of Flash. If you want your website to work on Apple’s mobile devices as well as on desktop PCs, then Flash is not an option.

Adobe does not make money from the Flash runtime, which is free. It makes money from design tools and server-side services, among other things. Although it is good for Adobe if everyone uses its Flash client, it can still succeed in an HTML 5 world.

Flash has other roles too. Adobe AIR uses the Flash runtime on desktop PCs and some smartphones, and an iOS compiler lets you build Flash apps for Apple’s iPhone and iPad.

There is also some evidence that Adobe is tilting its efforts a little more towards HTML, with products including the preview of Edge which is a motion and interaction design tool for HTML5, CSS and JavaScript.

Microsoft partners with Joyent to bring node.js server-side JavaScript to Windows

Microsoft will port node.js to Windows in partnership with Joyent. This will work on Windows Azure as well as other versions of Windows back to Server 2003.

But can you not already run node.js on Windows? This is possible using Cygwin and instructions are here. Cygwin makes Windows more like Linux by providing familiar Linux tools and a Linux API layer. Cygwin is a great tool, though it can be an awkward dependency, but a true Windows port should be higher performance and more robust, particularly as the intention is to use the IOCP API. See here for an explanation of IOCP:

With IOCP, you don’t need to supply a completion function, wait on an event handle to signal, or poll the status of the overlapped operation. Once you create the IOCP and add your overlapped socket handle to the IOCP, you can start the overlapped operation by using any of the I/O APIs mentioned above (except recv, recvfrom, send, or sendto). You will have your worker thread block on GetQueuedCompletionStatus API waiting for an I/O completion packet. When an overlapped I/O completes, an I/O completion packet arrives at the IOCP and GetQueuedCompletionStatus returns.

IOCP is the Windows NT Operating System support for writing a scalable, high throughput server using very simple threading and blocking code on overlapped I/O operations. Thus there can be a significant performance advantage of using overlapped socket I/O with Windows NT IOCPs.

I was impressed by node.js when I saw it presented by author Ryan Dahl at a pre-Dreamforce event last year. Since then it has become better known. This is an interesting move, particularly in the context of an greater focus on JavaScript in the forthcoming version of Windows known as Windows 8. End to end JavaScript for your next-generation real time networking applications?

Considering Windows 8 as an HTML platform

Amongst all the fuss about whether Microsoft is deprecating Silverlight or even client-side .NET, it is easy to lose sight of the other angle on this. What are the implications of Microsoft embracing HTML and JavaScript as a new first-class Windows development platform? Here’s the quote again:

Today, we also talked a bit about how developers will build apps for the new system. Windows 8 apps use the power of HTML5, tapping into the native capabilities of Windows using standard JavaScript and HTML to deliver new kinds of experiences. These new Windows 8 apps are full-screen and touch-optimized, and they easily integrate with the capabilities of the new Windows user interface.

When Microsoft introduced IE9 with hardware-accelerated graphics, support for some key parts of HTML 5, and a new fast JavaScript engine, it was not only trying to recover ground in the browser wars. It also had in mind a new application runtime for Windows, for desktop as well as for web applications.

In order to achieve this, we can expect more hooks between the browser engine and the local operating system. There is potential security risk, but Microsoft of all companies will be sensitive to this and I would expect it to get the security right. The further implication is that some parts of a Windows HTML application will be Windows-specific. It is an “Embrace and extend” strategy, as I noted in this Register article back in September last year when former Silverlight product manager Scott Barnes broke the story of how the Windows team at Microsoft was favouring HTML and JavaScript above .NET.

The rationale for this is two-fold. First, I’m guessing that Microsoft thinks it will work better. Although .NET client apps are now commonplace, especially for custom business applications, problems like slow start-up and heavy memory requirements never really went away, though I would argue that in Silverlight they are almost eliminated.

Second, HTML and JavaScript is a universal programming platform. With the new model, any developer who can code a web page can also code a Windows app. Corporate VP Michael Angiulo said at Computex in Taipei:

Windows 8’s new application platform … is based on HTML 5, JavaScript and CSS, the most widely understood programming languages of all time. These languages form the backbone of the web, so that on day 1 when Windows 8 ships hundreds of millions of developers will already know how to build great apps for Windows 8.

These are both compelling arguments. Nevertheless, there are several reasons why making Windows an HTML platform might not be the instant hit that Microsoft will be hoping for. Here are a few:

  • Microsoft’s Visual Studio is .NET oriented. It does have a web design tool, Expression Web, which is OK but still falls short compared to Adobe Dreamweaver. Web designers tend to use Dreamweaver anyway, thanks to Mac compatibility and integration with other Adobe tools. Even Dreamweaver is not great as an application development tool, as opposed to a web design tool. Tooling is a problem, and it is fair to say that whatever goodies Microsoft comes up with in this area will likely be a step back compared to what it already has for C# or C++.
  • Standards are a mixed blessing if you are trying to sell an operating system. If Microsoft does such a good job of standards support that the same apps run with minor tweaks on an iPad and on Android, users may do just that. If Microsoft encumbers the standards with too many proprietary extensions, the universality of the platform is lost.
  • Windows plus HTML and JavaScript sounds a lot like Palm/HP WebOS, which has gained favourable reviews but has yet to take off in terms of sales. Otherwise, Palm would not have been taken over by HP.
  • The question of whether HTML and JavaScript will really take over app development is open. I certainly hear voices saying so. I interviewed Nitobi’s president André Charland, in charge of PhoneGap, and he makes a good case. On the other hand, App development today is still dominated by platform-specific development, Objective C for Apple iOS and Java on Dalvik, the Google Android virtual machine.
  • The standard in HTML/JavaScript app platforms is not Microsoft’s Internet Explorer, but WebKit, as used in iOS and in Google Android and Chrome. Microsoft did great work in standards support in IE9, but so far it has not stopped its browser share decline. Worldwide figures from StatCounter show Internet Explorer in continuing slow decline overall, and Chrome still growing and set to overtake Firefox in a year or so.

In other words, there is little evidence that embracing HTML and JavaScript as an app platform will ensure success for Windows 8.

That said, other factors count for more. Developers will go where their customers are, and if Microsoft turns out a version of Windows that wins substantial market share in the emerging tablet market as well as on traditional notebooks, the new platform will be a hit.

The risk though is that the market will continue to perceive Windows as an OS for desktop and laptop, and look to iOS or Android for mobile and touch devices. The dual personality of Windows 8 may count against it, if it means devices that are compromised by having to support both user interface models.

Infragistics: upbeat on Windows Phone but also building for Apple iOS, Google Android

I spoke to Dean Guida, CEO and co-founder of Infragistics, at TechEd in Atlanta earlier this week. Infragistics makes components, mainly for Windows but now beginning to support non-Windows clients. There is a set of jQuery controls in preparation, and “Our roadmaps are also going to deliver native on Android and iPhone,” Guida told me. “We have a lot of software companies that use our tools in their commercial apps, and a lot of enterprises, and we feel that we need to do it,” though he adds, “we feel that the best and the smartest business solution is to go mobile web.”

image

Infragistics has a focus on data visualization, and Guida showed me some great-looking components that show animated charts, with a huge range of customisation options, and including geo-spatial and timeline controls.

I was intrigued to find Guida more upbeat about Windows Phone than most commentators, though I make allowance for the fact that his company has a component suite for the platform. “More than half of our customers told us that they’re either building or they will build for Windows Phone in the next 12 months,” he told me.

His view, which I share, is that they key advantage of Windows Phone is to Microsoft-platform enterprises rather than to consumers. “It’s so easy to extend their knowledge of Silverlight and extend apps, that they’ll be able to extend the data and the access to information this way. I think that’s going to be a beachhead for Microsoft.”

Of course Microsoft has marketed Windows Phone to consumers so far, and has told businesses they should continue to use Windows Mobile 6.5, clearly a dead-end. It may be easier when the company is able to move on from this mixed messaging and get behind Windows Phone as a business mobile platform.

Continuing a contrarian theme, Guida is also positive about Windows Presentation Foundation (WPF). “It’s huge, especially in the financial markets. They’ve made big bets on it. They’ve built a lot of their trading apps and a lot of their internal apps on it. We’ve been telling Microsoft this for years,” he says.

The problem I guess is that while WPF/Silverlight makes sense for data visualisation for internal apps where you control the platform, for broad reach apps that are visible to the rest of us, Adobe Flash or some other approach is a better fit.

It is understandable that companies like Infragistics are keen to talk up the Microsoft platform. Their business depends on it. It is true that Infragistics is now experimenting with other platforms like Apple iOS and Google Android, but historically developers on non-Microsoft platforms have not formed a strong component market.

“They don’t get it as much as Microsoft developers,” says Guida. “We used to have a ton of Java components. I was at the second JavaOne conference. We built some of the first AWT components, JavaBeans, Swing components. There’s a lot more pain developing for these platforms than on the Microsoft platform, Microsoft has done a great job with the tooling. Why have that pain? I think there is a distinction between the Microsoft and the non-Microsoft developer, that they have a higher tolerance for, pain’s probably not the right word, but a higher tolerance for taking longer to get stuff done. I can only believe that over time maturity will happen. It’s really about satisfying a business need or a consumer need. These platforms are different, but if we go in and give them the tools, why not? We’re really just this year starting to get there.”

It is a brave hope; but looking at the Infragistics site, there are currently no Java controls on offer, and even the 2008 NetAdvantage for JavaServer Faces (JSF) seems to have disappeared. If the Microsoft client platform does decline, the future will be challenging.

Dreamweaver CS5.5 PhoneGap apps: performance issues on Android

This is a follow-on from my earlier post about building a simple PhoneGap app using Adobe Dreamweaver CS5.5. I built it on Windows targeting Android. I liked the development experience up to the point of trying the app: it looks great, but performance is terrible. That is, you tap a button and there is a perceptible pause before the app responds. It is worse in the emulator than on my HTC Desire, but still poor.

I had thought it was a configuration setting – though Dreamweaver makes it rather hard to access the build settings – but I am now wondering if jQuery mobile plus PhoneGap is just too demanding for most Android devices out there right now. Admittedly my Desire is a year or so old now. See this thread for example:

JQuery Mobile on Android is definitely slow. (Tested A2 and A3Pre on Samsung Galaxy S, HTC Desire, ZTE Blade (edit: 2.2 Froyo) – with PhoneGap, stock browser, Opera Mobile)

Something has to be done. The experience is low quality.

It is worth noting that PhoneGap is not yet a version 1.0 release – I was told it may be done by July. Further, you do not have to use jQuery Mobile with it in Dreamweaver; it just happens to provide a great set of user interface widgets. It may be better on Apple iOS; I have not tried that yet.

Nevertheless, this looks like a significant issue if you planning to dive in and deliver Android apps using the tools in the new Dreamweaver.

Google on innovation – or should that be copying?

Patrick Copeland, Google Director of Engineering, gave the keynote at QCon London this morning. His theme was innovation: how it works at Google and elsewhere.

I was expecting some background on Google’s famous 20% time, where employees spent up to one day a week on something not in their job description, but I don’t think Copeland even mentioned it. In fact, he almost argued against it. There is no shortage of bright ideas, he said, and Google has over 100,000 of them in a database; but what matters is not idea, but innovators who have the ability to take a good idea and make it into a product.

He added that whatever “it” may be, building the right “it” is more important than building “it” right. If what you build is the wrong thing, it will not succeed, whereas the right idea will sometimes succeed despite poor implementation. Twitter and its well-known fail whale comes to mind.

Google’s record on innovation is mixed. You can make a long list of Google projects that have failed, from Lively – a kind of Second Life clone – to Google Wave. “You want to fast fail when things aren’t working” said Copeland, making the best of it.

On the other hand, Copeland mentioned GMail as a positive example. I would quibble a bit with this: was GMail innovation, or simply Hotmail done right?

Copeland also mentioned two other examples. The Chrome browser, he said, had two goals: to streamline the user interface so less screen space was wasted, and to have a fast JavaScript engine to show off Google apps. He also observed that rival browsers have copied both ideas; and it is true that Microsoft’s Internet Explorer 9, which will be released on March 14, happens to have both these features.

What about Android? Copeland said that the Android strategy vs Apple is similar to that of the clone PCs vs IBM in the eighties. He tried to make a point of innovation here, observing that IBM could not compete with innovation from many independent vendors, but this seems to me a stretch. The point about the clone PCs was that they were kind-of the same as the IBM PC but cheaper and faster. It was more about copying than about innovating. I think you can see this playing out with Apple vs Android to some extent, in that there are customers who will end up with an Android smartphone or tablet because it is kind-of the same as an iPhone or iPad but cheaper or with better specifications.

On the other hand, Apple is doing a better job at differentiation than IBM achieved with its PC; and technically iPhone apps do not run on Android so the parallel is far from exact. Many of the same apps are available for both iPhone and Android, so from user’s perspective there is some similarity.

The quick summary then: most innovations fail, and you need innovators rather than simply bright idea. The implication is that successful innovation happens when you have a company with lots of money to spend on projects that will likely fail, and that has a culture which attracts innovators. Google ticks both boxes.

Incidentally, when I asked how Google identifies its innovators Copeland said that you do not need to. They make a nuisance of themselves, so if you have them, you know.

Appcelerator releases Titanium Mobile 1.6

Appcelerator has released Titanium Mobile 1.6, an update to its cross-platform app framework for Apple iOS and Google Android.

The update adds 26 features for Android and 9 features for iOS. The Facebook API has been completely redone, keeping up-to-date with the latest Facebook API. There is beta support for the Android NDK – native code development.

Android 1.6 is now deprecated and will not be supported in future releases.

While not a big release in itself, Titanium Mobile 1.6 is require for using forthcoming Titanium+Plus modules, libraries which add support for features such as barcode reading and PayPal payments.

There is no sign yet of Aptana integration, following the acquisition of this JavaScript IDE in January.

Updating to the 1.6 SDK was delightfully easy on Windows. Just open Titanium Developer and click the prompt.

image

IE9 in Windows Phone will be good for cross-platform JavaScript and HTML5 apps

Microsoft CEO Steve Ballmer, accompanied by Nokia’s Stephen Elop, showed coming updates for Windows Phone 7 at a Mobile World Congress keynote last night.

A minor update due in early March will add copy and paste, and CDMA support is also coming in the first half of 2011.

The more interesting update is planned for the second half of 2011 – I’m guessing late this year – and will have multi-tasking for 3rd party apps, as well as a mobile version of Internet Explorer 9. We were told that this will feature the same HTML 5 standards support and hardware acceleration as in the desktop version.

Windows Phone VP Joe Belfiore showed the fish demo running on Windows Phone with IE9 alongside Safari on the iPhone. The iPhone fish jerk slowly across the screen.

image 

Note that Apple will likely have a new iPhone out before mobile IE9 is ready, which may well equal or exceed IE9’s graphics performance.

Nevertheless, this is interesting for developers since it means that the fast “Chakra” JavaScript runtime will be available on the device. HTML and JavaScript is one route to cross-platform mobile applications.

Silverlight on Windows Phone includes a WebBrowser control which has access to isolated storage. This means you could write most of your app in cross-platform JavaScript and HTML, but wrap it in Silverlight for access to native phone features.

It is a shame though that Microsoft does not include the Sqlite local database engine found in WebKit-based mobile browsers. Sqlite is in the public domain so this may be an example of the “not invented here” syndrome. Microsoft does not even have SQL Compact Edition in Windows Phone 7, though it would not surprise me if this also appears in the autumn update. Full details are being held back until the Mix conference in April.

Although it has not been stated, it would make sense for this update to be used in the first Windows Phones from Nokia. On Sunday evening, Nokia stated its desire to deliver a Windows Phone device before the end of the year.

Mobl: a new language for mobile applications, with Eclipse integration

It has gradually dawned on me that, contrary to first appearances, the Apple iPhone and iPad do come with a capable application runtime for those who would rather not tangle with Objective C; and one on which you can run applications without the hassle of negotiating the App Store. This runtime is the WebKit-based browser and JavaScript engine. This is for web apps of course; but as noted in my look at NS App Studio last week, you can blur the boundaries between web and local by creating a local shortcut and designing your app to work offline. Here is the Apple documentation, which notes:

Offline application support is available in iOS 2.1 and later and in Safari 4.0 and later

So you can do offline. There is also a local database, based on SQLite, documented by Apple here – putting iOS ahead of Windows Phone 7, which has no built-in relational database for Silverlight applications. Another plus is that other WebKit-based mobile browsers should work as well, including the one in Android devices.

It is possible to create application frameworks that wrap these features into a single development platform that compiles to JavaScript, HTML and CSS. PhoneGap is one example, and NS App Studio another; but today Reddit alerted me to another, Mobl, which has a modern feel and benefits from Eclipse integration. It is also free and open source, and with the right community momentum looks like it could be interesting.

Mobl is a statically-typed language with a syntax similar to Javascript – there is a guide and language reference here. The goal is to create a complete DSL (Domain Specific Language) for mobile development, which according to the web site:

Integrates all aspects of a mobile web application into a single language: data modeling, user interfaces, application logic, styling and web services.

The main author is Zef Hemel, from the Delft University of Technology in the Netherlands. Mobl makes use of Stratego/XT, which is a language and toolset for program transformation, and SDF  (Modular Syntax Definition Formalism), a language for defining syntax.

Mobl includes data modelling which handles object persistence and a concise language for defining user interfaces. AJAX support is built-in and there is integrated support for RESTful web services and for JSON (JavaScript Object Notation). The Eclipse add-in includes syntax highlighting, inline error reporting, code completion, and reference resolving.

All rather impressive for a project that has just burst onto the scene. I installed the Eclipse add-on and enjoyed its simple license:

image

“This software is distributed in the hope that it will be useful.” – though I have not found time yet to try creating an application.

There is more information on the nicely-designed website and blog and in the Google Group.

Update: thanks to @FransBouma for the link to the Mobl guide.

Appcelerator acquires Aptana

Appcelerator, a company whose main product is a cross-platform desktop and mobile toolkit called Titanium, has acquired Aptana, whose Aptana Studio 2 is probably the best IDE for JavaScript application development, and which also supports Ruby on Rails, PHP, Python, and Adobe AIR.

It makes sense, in that Titanium uses JavaScript as the primary language for the application logic and UI.

image

Appcelerator is already doing well from the current surge of interest in mobile apps, offering an obvious solution to developers endeavouring to support both Apple iOS and Google Android with a single code base. Aptana looks a good acquisition; but the news may not be so welcome to those who rely on Aptana Studio for Adobe AIR; I imagine Appcelerator may see this as a competing platform. Then again, most AIR developers use the Flash IDE or Flash Builder so it is unlikely to have a huge impact even if AIR support is dropped (I do not know what the plans are in this respect).

The server-side technologies like PHP and Ruby are a better fit, since many mobile apps have a server component.

Update: in the webcast about the acquisition, Appcelerator CEO Jeff Haynie said “There’s quite a few questions around Aptana as it relates to Adobe and ColdFusion; I don’t think we can say anything about that.”

The company is expecting to release a joint Aptana Studio/Appcelerator Titanium beta in March 2011. The initial release will not include a visual designer, though this is planned for some future release.