So Microsoft has jumped into the rich client market with Sliverlight, which is basically aimed square at Flash and Apollo. There are some interesting demos, but nothing ground breaking. Although I just found this post about it which points out that it has a lot of pretty major shortcomings.
When I saw it the big questions for me were "why can't Java compete in this space", or even "why is Java not already the dominant player in this space"?
Java 1.2 was released in Dec 1998 and was cross platform and network downloadable, supported a UI toolkit, 2D graphics, video and audio, and by 1999 3D graphics. So basically functionality greater than or equal to what is available today with these other tools but with an 8 year head start!
So what went wrong?
Java 1.2 was not widely installed and the download to get it installed was big and slow. This is still the case. Java WebStart and the Java plug-in don't really seem to have made this a better user experience.
This has been successfully addressed with both startup time and memory footprint improved greatly, but at the time Swing had a big problem even redrawing a menu quickly.
From a programming point of view this is probably the biggest issue - Swing doesn't work with JMF, which doesn't work with JOGL. The JMF APIs suck and don't really support the media types that most people deal with. Java2D was never really integrated into Swing, you have to know that the Graphics you are passed in paint can be cast to a Graphics2D, you can't pass a GradientPaint to the fill the background of a component, etc
What to do about it?
F3 shows real promise in providing a Java based option for Rich Clients, but they really need to work on the browser integration and startup experience.
They also need decent tool support which Adobe has in spades and Microsoft is getting into.