"Disclaimer though is that I was one of the Java guys and I had completely bought into the notion of 'write once, run anywhere'. Making that true turned out to be impossible for a number of reasons, not the least of which that the underlying OS providers were hostile to the idea."
The company I work for uses Java and targets Windows, AIX, HP-UX, AS/400, and Linux. We have remarkably few portability problems with our Java code. It all "just works", as advertised.
I'd be curious to know where all your Java portability problems stem from. The UI (Swing)?
In any case, I do share some concern and skepticism that web apps will rule the roost. At least one company, Microsoft, would seem motivated to make sure web apps cannot completely replace desktop apps, and thus will always subtly cripple IE, the dominant web browser.
So if you run a Java program, under the JRE-xx you will get the maximum possible portability. I was the Director of Systems at FreeGate (an internet Appliance company) and we decided to do our 'UI' in Java, in the browser. (feeling it would give us wide reach) but at that time in particular (1996 - 2000) there was a lot of churn in the browser market and point releases of the browser could change significant behaviors.
Today that is less of an issue as pretty much everyone has punted on supplying their own version of Java for the browser and instead relying on the Snoracle version. However the UI compatibility is tied up inside the support for CSS and/or HTMLx where x is 4, 4.1, or 5 even.
Mobile apps for say Android which use their toolkit, and written in Java of course, are reasonably compatible across Android devices. However challenges with Honeycomb seem to have highlighted what happens when you change around some base assumptions. Even the migration from Android 1.6 and 2.0 was fraught with issues around new capabilities (and diverse capabilities) between handsets.
Configuration Management is a Hard Problem (tm) on any system and people see the Windows eco-system or the MacOS eco-system and feel like they should be able to do that cross-platform. I agree that if that problem gets solved in a meaningful way it will forever change the way we interact with our machines, but I don't think browsers are the great hope for cross platform compatibility.
@ChuckMcM - "Disclaimer though is that I was one of the Java guys and I had completely bought into the notion of 'write once, run anywhere'. Making that true turned out to be impossible for a number of reasons, not the least of which that the underlying OS providers were hostile to the idea."
"Configuration Management is a Hard Problem (tm) on any system and people see the Windows eco-system or the MacOS eco-system and feel like they should be able to do that cross-platform."
---
I'll just pipe in here real quick as cross-platform Java apps are core to the open source / middleware product I'm releasing called TyphonRT this summer. It's something I've personally worked on for many years well before Android's emergence. Fragmentation is difficult to solve alone across the variety of OS and device differentiation in the Android ecosystem without even considering cross-platform compatibility with the J2SE.
TyphonRT is one such effort though and is built with a scalable configuration system via a component architecture. Major engineering of the client SDK / runtime will hopefully wrap up by the end of June with a closed beta for those interested w/ public launch end of summer / Q3.
To support distribution across the Android ecosystem and desktop configurations part of TyphonRT is a PaaS system such as when a TyphonRT app is installed it will download any OS or device specific modifications / alternate components to "patch" or provide a stable middleware layer in attempt to keep that write once / run anywhere promise or get as close as possible.
Of note I'll also be dumping over 10 years of solid Java real time app / game dev knowledge too through an expanding tutorial series w/ lots of code examples styled in a similar manner to Khan Academy.
Ok not to hijack this thread, but the work I am doing as an indie / startup is relevant to this discussion. This kind of solution with the current landscape surrounding Java is only going to come from the open source / indie area.
Sounds kind of like Marimba on steroids. I like the notion of it running on Android 1.6, if I could drive the price down for a 1.6 capable module to sub $25-$35 I think I've got an enterprise use for it :-)
From my experience, Java applets are slow. The loading time to load the actual JVM is a pain. Because of that I haven't installed Java in many years. If I come to a site that asks me to install Java, I just go to another site. There's your portability problem.
It may be hard to count. I change my user agent on my phone so that I don't get the mobile version if websites. With current phone resolutions I prefer to see the full page and zoom than have an often crappy mobile specific site that shows me less and makes me click more.
I wonder where does Firefox for Android falls under, Firefox or mobile browsers? Although I don't know if it's significant, but when I last checked AppBrain, Firefox for Android had over 250,000 downloads.
The company I work for uses Java and targets Windows, AIX, HP-UX, AS/400, and Linux. We have remarkably few portability problems with our Java code. It all "just works", as advertised.
I'd be curious to know where all your Java portability problems stem from. The UI (Swing)?
In any case, I do share some concern and skepticism that web apps will rule the roost. At least one company, Microsoft, would seem motivated to make sure web apps cannot completely replace desktop apps, and thus will always subtly cripple IE, the dominant web browser.