Java versus ActiveX
The marketing war is on, but which offers the better technology?
The debate of whether ActiveX or Java is the way to develop Internet solutions is a misunderstanding of the terms and the technologies they represent. Rather than one or the other, the two actually intertwine in a complementary role (at least for Windows users). Before you embark on your development project, take the time to understand where each technology fits and what each requires of you.
The battle lines are drawn and combat is being waged on many fronts. The problem for us innocent bystanders is picking our way through the marketing barrage in an attempt to find the Internet programming technology best suited for our own (and our users') needs. But before we can pick the best programming axe we need to understand the stakes in the larger marketing war.
In the spring of 1995, before Microsoft began to comprehend the Internet's implications, Sun Microsystems released and announced (yes, in that order) the Java programming language. Microsoft responded with a half-hearted repositioning of its OLE (Object Linking and Embedding) controls (known as OCXes) as the ideal platform to develop client/server applications. On the defensive for the first time in its existence, Microsoft recognized it had to control the battlefield. Microsoft created the brand ActiveX to represent the generic term for distributed client/server objects on the Internet. While technology is an issue, Microsoft sees terminology as the battle to be won. Whoever owns the terms, according to Microsoft's marketing chiefs, owns the market.
JavaSoft, the Sun Microsystems company responsible for Java, recognize this too. JavaSoft is protecting Java through the trademark process and aggressive enforcement of its rights in this area. In an open letter to the Internet community, JavaSoft president Alan Baratz presented the same reasoning that Microsoft has for wanting to own the general term and for also controlling the implied quality the term represents. JavaSoft intends to limit the use of Java to describe only those solutions that meet its licensing standards -- to provide "assurance that the application will run across all platforms or that the platform is compatible with the (Java) technology."
So where does all this marketing leave you? For starters, most analysts and users believe the market will embrace what both companies provide, for better or worse. Sun created the market. The move by Microsoft this spring to license Java is doing two key things for its strategy: It placates Windows users and developers by assuring Microsoft products will run the de facto Internet programming standard Java, and it allows Microsoft to try and place Java technology in the role of an ActiveX component technology. With Windows developers committing to both technologies, the decision on which platform to adopt becomes motivated by non-technological factors.
To compare the two technologies, it helps to understand what really defines ActiveX. The term is intended to brand an entire line of Windows technology. The technology can exist within the framework of an Internet browser or a standalone Windows application. Existing programs and technologies can be considered ActiveX-capable based on some of the key technology foundations of ActiveX, like OLE controls now marketed as ActiveX Controls.
So extensive is this framework of technologies, hundreds of developers jumped on board when ActiveX was announced in March 1996. Many of these companies, like Metrowerks which is co-developing with Microsoft an ActiveX and Java capability for the Macintosh through the Microsoft Internet Explorer, are planning to build software using Java and ActiveX components. NCompass Labs worked with Microsoft to co-develop an ActiveX plug-in for the Windows version of Netscape's Navigator, allowing the browser to run ActiveX components.
Microsoft concedes that Java is a powerful procedural programming language. Microsoft agrees with Sun's Eric Schmidt, chief technology officer, who describes Java as a "C plus-plus-minus-minus" language, encompassing the best of C++ without the overhead. Further insight into the minds of Microsoft reveals that it sees Java as "an awesome tool for creating server applications." A white paper on the integration of Java and COM (Component Object Model), on which the OLE technology has been built, expresses Microsoft's belief in leveraging the Java programmer base and the inherent compatibility between Java and COM to build a robust market for ActiveX technologies. This white paper is available at http://www.microsoft.com/visualc/jakarta/whitep/JavaCOM1.htm. It is short, to the point, and worth the quick visit to better understand Microsoft's position here.
From a Windows developer's perspective, what is Java up against? Today, Java competes with Microsoft Visual C++ and Visual Basic, Borland Delphi, and any other programming resource capable of producing platform-specific code that can call ActiveX components. Microsoft has delivered its Java development environment Visual J++, to add to the development tools list. Visual J++ promises a single toolkit to develop Java and ActiveX-based applications.
At the recent WWLive event presented by Microsoft in July, the chief technology officer for Starwave commented that the Microsoft Java virtual machine is the fastest implementation in the industry today. This assertion is bolstered by the CaffieneMark benchmark results that Pendragon Software has compiled from hundreds of users on the Internet. This benchmark currently shows that the Microsoft Java VM outperforms Netscape by nearly two to one across almost all categories.
Microsoft has promised that this virtual machine, which supports the Internet Explorer browser, will be ported to the Macintosh and Unix platforms before the end of this year. Bristol Technology and Mainsoft Corp. have been working with Microsoft for a number of years to create compatible APIs on various Unix platforms, laying the groundwork for ActiveX components for Unix. Metrowerks is leading the charge to provide this functionality on the Macintosh platform, where Metrowerks commands a 90 percent marketshare among Macintosh developers.
Not to be left out, Windows 3.x will receive a number of Internet Explorer enhancements, though not the complete set in the 32-bit operating systems. It should be noted that at present no one delivers a Java solution in the Windows 3.x environment, although it is expected that Netscape will have the beta for this platform in September.
The strength of Java comes from the cross-platform support it provides. In the present form, applets are capable of running on any Java-capable browser on any operating system supported by that browser technology. ActiveX, on the other hand, is strongly tied to Windows at the present because of the reliance on the Visual Basic environment. The porting of Internet Explorer to non-Windows platforms hints at a movement by Microsoft to support Visual Basic on these non-Windows machines. If Microsoft does create Visual Basic Script support on these platforms, Jeff Morgenthal, Program Manager, Information Highway Initiative at DH Brown Associates, predicts that VBScript will become the dominate language of the Internet. Morgenthal sees weaknesses in the VBScript and Visual Basic environment that places Java on top for enterprise wide solutions. He concedes, however, that the majority of the market will go with the Microsoft solution because it will meet their lower-level needs and can be developed by newer programmers just entering the market.
One of Java's strengths is support of the Java Virtual Machine (JVM) on virtually every operating system. The JVM is, in effect, an interpreter that converts Java applet code into something the local operating system and hardware can understand. It is this approach that has led to the positive and negative forecasts for the technology. The good news is the ability of the programmer to develop applications without regard to the target operating system. But, Microsoft says, this power comes at the expense of performance. It's here that Microsoft attempts to gain a toehold.
Microsoft argues that ActiveX programming languages and development tools are variants on the compiled languages scores of Windows developers know and love today. The number of experienced Windows programmers using any of the programming languages capable of invoking ActiveX controls far outweighs the ranks of Java-capable programmers.
But ruling out Java for reasons of compiled code across platforms isn't fair today, since Java development tools are available for Windows, Macintosh, OS/2, and Unix platforms. IBM, Symantec, Microsoft, Sun, and many others are making sure Java will be supported on the widest range of systems possible.
Building on COM
The entire software industry recognizes the intense need to truly deliver COM objects and technologies to release the power of all the computer systems in the market today. Microsoft has been attempting to sway the industry toward the OLE model as the foundation for this move, in part by building ActiveX Controls on a COM foundation. The Object Management Group and Component Integration Laboratories OpenDoc industry standard has gained ground as a key competing technology in creating interoperability and management of complex document objects. At the JavaOne developers conference in May, IBM announced Arabica, a Java Beans-based tool, to integrate OpenDoc with Java and provide the connectivity between Internet applications and the enterprise.
However, the real power of Java and the competing technology comes from the future potential to develop complete applications. Java is developing into a complete language that provides developers with the ability to build enterprisewide solutions from the ground up. But as a newcomer to the party, there are some inherent problems in this stage of the game. Many applications already exist in well-established programming languages. What is the incentive for a developer to port an application to Java when it is easier to evolve the program to the Internet? Microsoft is betting that developers will migrate instead of port.
By building on COM, Microsoft has placed ActiveX at the heart of being open and accessible to the world. Consequently, this made major applications open to reuse in the Internet environment. For example, Lotus will ship a new version of Mobile Web Information Manager, which promises to be totally integrated with the Internet and will incorporate ActiveX technology in addition to Lotus Internet technologies. As other technologies follow, like Lotus components for Notes which provide key spreadsheet and other functions, developers will have a wide range of choices for objects to fulfill specific functional needs. Writing many modules from the ground up will only be done for the more specialized functions required of applications and for companies that will offer new generic Java applets and ActiveX objects.
Part of the advantage of Java over ActiveX today is the size of the objects. Because Microsoft has built its foundation on the old OLE architecture, it suffers from large components that must exist on the client machine or be downloaded. Many strategies have been devised to reduce this overhead, but none yet approach the level Java offers today. Just like Java though, once a control is downloaded, it remains available to all other controls that require it, providing the lightening fast response that a locally-run program provides. Again, Morgenthal believes Microsoft can gain a leg up on Java if it implements these controls using DCOM (Distributed Common Object Model), which Microsoft has not indicated it will do as part of its near-term plans for the Internet.
Is it in the construction?
Perhaps the last major question is whether the construction of applets versus objects and ActiveX versus Java applications offers any distinct advantage over each other. Again, there are no truly defining characteristics here.
From a purely technical point of view, the creation of Java applets is very similar to the creation of ActiveX Controls. Both are capable of creating small-code modules for download to the client. Another factor to consider is the ability of Java code to call ActiveX Controls, since they appear as COM objects to Java. Microsoft is ensuring that this is a two-way street by showing Java applets as ActiveX Controls within the Microsoft Java VM. This part of the Microsoft strategy makes it more likely that Java programmers will look for and incorporate ActiveX Controls into their projects.
This open ability to construct ActiveX Controls in the language of your choice enhances the position that Microsoft has created a more open system. With three basic environments from which you can develop new controls, key decisions must be made to control the size of the code. Standard OLE development can be done in C++ with the Microsoft Foundation Classes, an approach that can yield code and support DLL library files that easily exceed one megabyte -- not the best choice for downloading the first time but is great after that. The ActiveX development kit provides very small code, but requires greater expertise with OLE COM and the ActiveX control architecture. The last choice, the ActiveX template library, is a step up from the second choice, giving you the benefit of OLE control code in the template.
How about client/server?
With the pending release of the Java IDL (Interface Definition Language) and Java RMI (Remote Method Invocation) the development of sophisticated client/server applications is not far behind. This technology opens the door to keeping significant code functions back on the server -- having Java code on the client performs only the necessary functions to interface the user to the core of the application. Enterprise-level applications using Java may become a reality with this development.
But Microsoft can claim to offer the same functionality within the ActiveX framework. With the release of NT 4.0 and support for DCOM, ActiveX controls will enter the same level of advantage Java brings to the market. The ActiveX Server technologies are going through beta this fall and show the potential to create powerful client/server solutions within the framework of the Internet.
One other development from Microsoft, code-named Nashville, is the Internet Explorer 4.0 product. It is more than a browser. This technology extends the entire framework of Internet controls and display controls to the operating system and into application development. With plans to port this technology to other platforms, organizations will have the ability to create standard client interfaces for applications across all operating systems and to allow for customization at a user level through the familiar HTML framework.
And the winner is
It's still too early to tell. The sure bet is that both sides offer strong technology platforms. Where JavaSoft has gained the required support to keep the technology around, in spite of performance or security concerns, or the need to train programmers in a new language, Microsoft continues to lumber in and win marketshare by brute force.
In overall standings, Microsoft's approach provides a stronger link to current technologies and the resource pool of programmers on the market today. There are also more experts in C++ than Java. Seeing Java developers add ActiveX to their stable enhances Microsoft's position and the belief that its approach is sound.
But the most important aspect in this war is the recognition Java is battling on the level of a language and development tool, while Microsoft wages the battle a level above. This indicates Microsoft has a strategy for the entire project, not just for individual programs.
This technology frontier is changing so rapidly -- even a lapse of a few months puts you behind the knowledge curve. Take some time to visit the Java site at http://www.javasoft.com and the ActiveX site at http://www.microsoft.com/IntDev/inttech/. First, settle into developing on the platform you have the most expertise. But no matter what you do, the line will be crossed at some point, and you will end up developing in one or the other for some aspect of your project.
About the author
Robert E. Lee is a technology consultant, speaker, columnist, and author who has been in the computer industry for 20 years. He specializes in networking, Internet strategies, systems analysis and design activities, and has participated in the Windows NT and Internet betas since the start of those products. Reach Robert at firstname.lastname@example.org.
If you have technical problems with this magazine, contact email@example.com