The debate over Java vs Flash has been going on for some time now.
However as the products evolve the question itself is changing. It used
to be "Which is best?" but these days it's more reasonable to ask "Which
do I need? or want? or prefer?"
Let's begin with a quick recap of the basic features of each:
Java:
- been around forever; available in many forms (script, compiled, etc).
- typically does not require the user to pre-installed a plug-in.
- particularly suited for creating interactive animations and combining
animation with other Web page elements.
- not particularly efficient use of graphic elements (bitmaps, etc).
- applets are typically larger than Flash; longer downloads, longer load
times.
- scalable to any processor-driven platform (computers, cell phones,
appliances, smart cards, etc)
Flash:
- requires a plug-in (designed and produced by Macromedia Inc.); plug-in
must be updated intermittently.
- supports a wider range of graphic elements (GIFs, fonts, etc) and
features (opacity, etc).
- highly efficient use of graphic elements (vector-graphics).
- smaller, more self-contained files than Java; faster downloads, faster
loading.
- supports MP3.
- files will give far more reliable (animation) playback rates between
different machines and browsers.
So, if you're in the comparison game there are a few obvious differences:
- Java is universally available and usable; Flash's usability depends on
the (admittedly broad) propogation of Macromedia's Flash plug-in.
- Flash produces smaller applets that load and download faster.
- Java integrates easily with other web page elements; Flash less so.
- Flash has a definate vector-graphics "look"; Java apps can look like
whatever the designers choose.
- Flash is much more self-contained and easy to deliver as a stand-alone
(albeit plug-in dependent) applet; Java less so.
- Java can be scaled to any platform that has a processor; Flash less so.
One point that's been raised over and over in the Java VS Flash debate is
that Java is "more secure" and therefor better suited to applications like
online games, etc. Although I've discussed this issue with every game
design and development person I've ever met there's never been a concensus
on the issue, nor a lucid description of what exactly the issue is.
Suffice it to say that some of the most successful commercial game systems
have and continue to be Java-based while Flash-based systems are still
struggling.
Before leaving the issue it's worth noting that Flash was not intended to
replace Java, they're designed to work together: Java scripts can activate
and communicate with Flash files; Flash files often use Java to detect web
browser capabilites; Flash typically needs Java programs to open new
browser windows and select display options so that the Flash files will
display as intended.
There you have it: both Java and Flash continue to have their place in the
online world and that's not likely to change in the near future. In fact
as the definition of "online" continues to evolve both Java and Flash are
evolving with it. Java is appearing everywhere these days --any
electronic device you can imagine can run Java apps-- while Flash is
appearing more and more on the Internet every day. Certain areas of the
web --namely movie sites and their preview offerings-- are almost
exclusively Flash driven. The "debate" goes on.