I have a theory about what really sells a language -- that is, for those developers who are lucky enough to choose the paradigm they work in. My theory -- completely unscientific, of course -- is that developers base their decisions on two simple factors:
In Java's early days, the applet drew developers to the emerging language. When I read about Java in a magazine article in 1996, I was interested, but it was not until I saw my first applet that I became hooked on the idea -- the coolness factor clearly at work.
Since then, other client-side Web technologies have grown popular -- without completely replacing Java in the browser -- and consequently, developers now choose a language for what's-in-it-for-me reasons. As the demand increases for Java developers, salaries continue to head skyward.
Eventually the coolness factor cooled, as did general excitement for the language, until Java 2 Micro Edition (J2ME) came along.
If you believe industry analysts, who sometimes rival movie critics in their accuracy, embedded computer usage will grow by enormous percentages over the next three to five years. Mobile phones and PDAs are just the tip of the iceberg. Home networking, wearable computers, and more hover in our near future. What better platform to power the applications on those new devices than Java?
All the reasons for using Java on the desktop and server apply to smaller machines as well, and the most important reason, of course, is platform independence. With the possible exception of Palm, no single operating system rules the world of embedded devices at the moment, at least not compared to the desktop world. Some argue that portability is not an issue for embedded devices; speed and stability take precedence. While it may not be essential to operating system or hardware manufacturers -- who, after all, want more products for their systems than are available for their competitors -- I believe portability remains a concern for developers. The more market you have, the more money you can make.
So what will be the first killer applications for cutting-edge mobile phones that sport color screens and broadband Internet connectivity? The answer: games. What sort of games? Answering that question exposes a slight inadequacy with J2ME: as opposed to the original Java killer app, the applet, it's difficult to demonstrate J2ME's potential and thus difficult to demonstrate J2ME's coolness.