Fifteen years ago there was no iPhone and Android. Web browsers were hot. Netscape market share was over 90% – they didn’t have competition.The situation changed when Microsoft has introduces Internet Explorer (me too, me too). Back in 1998, there was an infamous law suite between Microsoft and Sun Microsystems – the former started quietly introducing their own class libraries to Java breaking the write-once-run-anywhere idea of Sun that back then seemed to be achievable. Sun won that $10B law suite. But as the saying goes, they won the battle but lost the war.
Angry Microsoft refused to include upgrades to JVM that came with Internet Explorer, which seriously hurt applets popularity – the end user couldn’t just open a Web page to see the applet that required, say 1.3 version of JVM. They’d need to first download the proper version of JVM, and only then the applets that were written with the assumption that JVM 1.3 was available would work. The process of downloading the right JVM Plug-in was a multi-step process, and a truck driver from Alabama wouldn’t be able to go through it.
Update. Two days after I published this blog, the news broke that Oracle decided to sue Google for the “wrong use” of Java on Android platform. Does Larry Ellison have short memories? Sun literally killed Java on the desktop because of that old law suit with Microsoft. In the worst case scenario, if Oracle will win this law suit, Google may do the same thing as Apple did on the iOS and ban Java from this very promising Android platform. Given the fact that five years from now large portion of the applications will consist of a mobile device communicating with the cloud, Java will be seriously damaged. Imagine how many top-notch developers can be added to Java and JavaFX engineering teams at Oracle if the money spent on lawyers would be saved? Oracle, please stop!
High penetration of the required runtime environment and the ease of its upgrade are the crucial moments for any Web-based technology. Adobe Flash Player shines in this area today (sorry, Steve). Flash Player is also a virtual machine with a small memory footprint (1.5Mb), and its installation takes under 20 seconds after one button click. For years, the size of the JVM Plug-in was about 16Mb and install was complicated for a non-programmer, and (the rumor has it) – it’s a lot smaller now.
This situation has changed after the release of Java 6 update 10, which includes so called next-generation Java Plug-in. Now applets don’t run in the JVM packaged with the Web browser, but run in a separate JVM launched by the Java Plug-in. The applet still appears in the Web browser’s window, but now it doesn’t depend on the goodwill of the browser vendor to include the latest Plug-in. You can read more about this Java Plug-in at https://jdk6.dev.java.net/plugin2.
The other major change introduced in the next-generation Java Plug-In is ability to launch Java applets directly from JNLP (Java Network Launch Protocol) files, which in the previous releases were used only in Java Web Start technology that allowed local deployment of the applications over the network. As of Java 10.6.10 you can use the JNLP meta descriptors to launch applets too. JNLP support is described in details at http://www.oracle.com/technetwork/java/javase/index-142562.html.
Earlier versions of HTML standard included the tag <applet> to incorporate Java applets into HTML page. But as of HTML 4.01 this tag has been deprecated and you should use the tags <object> for users who like Internet Explorer or <embed> for other Web browsers. But Oracle, the company behind Java, recommends using <applet> for Web pages accessed through the Internet and <object> or <embed> for intranet-based Web sites. The main reason being that Web browser vendors are infamous for being inconsistent of implementing HTML standards, and it’s safer to use tried and true <applet> tag to get predictable look and feel of the Web pages that host Java applets. But intranet is a more controlled environment. You can read about the differences of embedding applets with these tags at http://download.oracle.com/javase/6/docs/technotes/guides/plugin/developer_guide/using_tags.html. When young and old kids (sorry Steve) tell that HTML 5 will change the world, it’s funny.
The deployment options for applets have been extended as of release of Java 6 update 10. To learn all the options of applet deployment in depth, refer to the Oracle document titled “Java Rich Internet Applications Deployment Advice” available at http://download.oracle.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html.
What’s the next step in applet’s evolution? You’ll be creating UI for the Web-based applications with a relatively new language called JavaFX. In a month, I’ll be trying to attend every JavaFX technical session at JavaOne conference to see if it’ll become a real competition to Adobe Flex and Microsoft Silverlight. By the way, anyone heard any noise about Apple not letting JVM on the iPhone? Neither did I. Do you know why?
If you’re not into Java applets, consider attending our Third Annual Enterprise Flex Symposium in New York City. It’s a small event where attendees and presenters will talk turkey about Adobe Flex.