It used to be that “cross-platform” meant making a program that could be run on Windows, Macs, and Linux PCs. To create a program that worked on all three platforms, you could write it in Java, or maybe Python or C depending on what the program needed to do. That’s not really the case anymore.
First there were smart-phones. In that case you could still fall back on Java ME for some phones, but not all. Certainly not Blackberrys or iPhones. Then came the iPad and the other tablet platforms. There is really no single language platform for all these desktops and mobile platforms.
But I still want to run versions of the same application on my iPad and my Windows and Linux desktops. And it can be done — look at the ubiquitous Evernote for example. I don’t know any details of their implementation, but I’m sure it’s a pain in the butt for them to maintain so many versions of their application across so many platforms.
But what is a small developer, like myself, to do? Learning all of the platforms well enough to write competent applications in a finite amount of time just doesn’t seem feasible.
It would be a bit ironic if the proliferation of delivery platforms was the catalyst that drove development to a web platform.