Dealing with Client/Server

Issues in Purchasing and Implementation

The Reality of Java at Microsoft

The Internet may prove to be the computer industry's "big tent," with enough room for everyone--even Microsoft.

By Sally Atkins

Microsoft was late to the Internet. But like a driver steering a car into a skid to correct its course, Bill Gates announced on Pearl Harbor Day 1995 that Microsoft would recast its entire software strategy to Net-enable every desktop and application.

ActiveX is the umbrella term for Microsoft's Internet applications development environment. It consists of two kinds of technologies: those which Microsoft had in the wings on Dec. 7, 1995, when Gates recast his strategy for the Net; and licensed technologies such as Java. Microsoft needs Java for the portability it affords outside of Windows environments, the credibility it lends to Microsoft's open systems story, and the "sandbox" security model (explained below), which Microsoft did not have in its digital signature-based security model for ActiveX.

Microsoft had the Component Object Model (COM), which defines how applets interact with one another, in the wings. And Visual C++, formerly just a Windows development tool, has been repositioned as the Microsoft language for creating applets for the Net. So today ActiveX implies Java plus COM and Visual C++. These core technologies have gone into the Java-based development environment Microsoft calls Visual J++.

If you are working out or rethinking your Internet development strategy, chances are you are looking at the benefits and drawbacks of integrating ActiveX from Microsoft with Java in the broader multiplatform sense. You may find that each technology has its place in your work. There will be times when you need to launch Windows applications from Java or when you want to use Java to perform network services with a Windows client front end. This will call for the use of both ActiveX and Java. Knowing when to use one or the other, or both, will make a difference in your success rate.

Anyone planning on integrating Java with Windows might wonder about Microsoft's commitment to Java and how well the rest of its Internet strategy can be integrated with more traditional open systems technologies. Java is, after all, a creation of Sun Microsystems.

For now, Microsoft is playing catch-up and is truly offering integration with Windows through ActiveX. After all, nobody else will do this for Microsoft. If the power shifts back into its camp, watch that space; its motives may become less altruistic once it holds the lead.

Microsoft has given ActiveX to The Open Group consortium to oversee development of a standard. When asked what he hoped to accomplish by doing this, Bill Gates said, "We don't plan to tell the Unix vendors what to do on their platforms." Implied in the tone of Gates' comment (I was in the room when he said this) was a desire to control Internet technologies for Windows by participating in and steering The Open Group. And Microsoft has not clarified whether it will follow the extensions to Java that Sun will provide. This may be another case of forked technology between competing vendors (shades of OS/2).

Zig or Zag

Microsoft's Java development environment fits within the overall ActiveX concept. It includes Visual J++ as well as the Java Virtual Machine (JVM), which is included with Explorer 3.0 and runs Java applets. The JVM is also known as the Java runtime environment. Microsoft and Sun each have a JVM; Microsoft's is included with Explorer 3.0 and will be bundled with Windows 95 and NT. The JVM includes base classes, a just-in-time compiler, debug interfaces, an execution engine, a byte-code verifier and a loader.

Your first decision points might be portability and security. Is this a cross-platform or Windows-only application? A major benefit of ActiveX in general is that Windows developers can use Windows development tools to write ActiveX controls. This can be a drawback if you are not developing for an all-Windows environment. ActiveX (minus Java) is platform-dependent; that is, an ActiveX component for one platform must be ported to each target platform. Java code, on the other hand, is platform-independent, so the same Java code can be executed on different operating systems.

Next comes the security issue. Java runs in a "sandbox": a small, temporary, partitioned storage area of the user's computer. ActiveX applets follow a different model called Windows Trust Verification Service; digital signatures are used to verify the author of the code. This is more complicated than the Java model, because it requires some client activity and database checking. Still, each has its place. You may want to use verification with Java for intranet applications, which adds another level of security to the sandbox method. Or if you are inside a corporate firewall, you may not need the sandbox approach and opt for ActiveX, assuming that all parties within the firewall can be trusted. Otherwise, every applet will have to be registered with every user.

Develop Both Sets of Skills

When refining your strategies, keep in mind a few historical precedents. Microsoft has never embraced anything from a Unix vendor. Its policy has never been to license technology it could buy or build itself instead. Remember Cairo? It did not make use of readily available open technologies such as Andrew File System, the distributed file system developed by Transarc/IBM for the Distributed Computing Environment (DCE). Andrew was blessed by the Open Software Foundation and X/Open (now joined in The Open Group).

Had the Internet been a consideration when Cairo was designed, we might have a more Internet-ready Microsoft development environment today. Why would the king of the proprietary fat client suddenly adopt an open systems, cross-platform technology such as Java? The answer is that Java gives Microsoft much-needed applet portability and security. And in the event that Java really is the future, Microsoft is there, too.

Microsoft's strategy, called "embrace and extend," is to use Java to maintain its status as the vendor of choice for Windows developers and to become the vendor of choice for Java developers. Microsoft licensed Java when it became apparent that not doing so would delay getting into the Internet game.

Giving ActiveX to the standards community is a leap of faith. Microsoft hopes it can maintain control of its Internet Development Environment as it steers the whole standards community into its skid. If the Fortune 500 IT user community and open systems vendors keep their R&D departments focused on The Open Group, it may be possible to help Microsoft see where it makes sense to license technologies and where it makes sense to adopt Microsoft-centric solutions.

Nonetheless, as before, you will need to know how to integrate Microsoft technologies with the rest of the truly open Internet development landscape. ActiveX is the key. Now may be the time to revive your membership in open standards groups and join the Microsoft developer's network, too. Embrace, integrate, extend and stay neutral.

Sally Atkins is an IT consultant based in Boston. She can be reached at