That time developing cross-platform code has been not only a shiny perspective, but a common user requirement, and getting one's Windows applications running on Wine was a cool feature.
When I've had the time to look into the core of a free multi-platform programming language framework written in ANSI C (like PHP or Python), I've realized the dimensions of the human resource investment and dedication necessary to develop and maintain such products, which predestinates them to be an oligopoly in terms of market structure.
Between 2005 and 2008 it was still a good decision to invest in multi-platfom applications - that time the libraries based on managed code were not mature enough for serving efficiently a considerable list of market demands, typically coming from domains where the business processes have been changing rapidly.
In the meanwhile the spread of multicore processors and broadband Internet services have made possible the spread of new programming patterns focused on better server response times and more responsive user interfaces with rich, internationalized content - multiple challenges asking for refactoring classic libraries.
During the previous decade the hardware industry has evolved more rapidly than the software for the new technologies, that's why mobile operating systems like Symbian or now Android could achieve so large popularity - it has been necessary to put something on the new hardware to get it working and doing sellings.
Due to the continuous diversification of processors and hardware architectures an increasing number of software companies have started choosing Java or .NET for their long-term projects.
For a small or medium software company doing cross-platform coding is not a financially feasible option anymore, and the managed code is employed between others for execution speed improvements.
The development efforts invested in .NET and targeting parallel and asynchronous programming led to a solid foundation for business-critical apps doable within the limitations of a concrete triangle of budget, time and quality.
.NET is my world, with Java I'm not familiar enough to write about its recent evolution.