One of the most frequent questions I get is whether to build games in Java or Flash. It's a debate that's been going for some time. The early entrants into the casual games biz opted for Java, which overall was a better language for quality game development. Back then, Flash was pretty terrible for game development.
Since then, Flash has improved significantly with the most recent version Flash 10 offering improved 3D support (whether it's any good for 3D games, you'll have to tell me, I haven't played with it yet).
I think Flash is the clear winner, and I'm not the only one. Sharendipity, a company that's spend over a year building a game creation tools platform for user-created games recently announced that they're abandoning the Java for Flash. It's a significant move that's requiring them to port over 60,000 lines of code.
Here's their reasoning (from their blog):
Daniel James, CEO of Three Rings, has been advocating the move to Flash for years now. He estimated that Puzzle Pirates, his company's Java-based casual MMO, while successful, suffered from an extremely low conversion mainly because it was in Java.
Up front, I’ll say that the reason we are moving to Flash is because of Java’s adoption rates. It is not, in fact, because of the language itself but because of Java’s deployment model. We suspect that we lose somewhere between thirty and fifty percent of users due simply to the fact that we are in Java.
This isn’t pure speculation, but backed up by a significant amount of internal data. There are also other game companies that have experienced the same thing.
Fact is, Flash has ~95% penetration among Internet users. If want people to play your game, Flash is the only option.
BTW, if you're interested the technical aspects of moving from Java to Flash, Sharendipity is doing a series of blog posts on their experience. Check it out here.