1997: The Year Java answers the questions

A look at Java success factors


Summary 
A year has past since the Java language was released to the public. On January 16th, 1996, Sun Microsystems released the Java Language Specification. Since then, Java has received almost as much hype as the O.J. Simpson trial. So the question is, where does Java want to go tomorrow? 

This article ponders the changes Java must undergo to ensure a long and prosperous future. The efforts of key industry players such as Microsoft, Javasoft and IBM are examined, paying attention to how their work impacts Java's future. Possibly more interesting are the exciting software and hardware innovations occuring because of Java and these will be explored. Readers will be given a set of developments to look for, as well advice on how to plan for the changes which are in Java's future. 

 
By Dave Orchard 
Java was first shown to the web in early 1995 via the HotJava browser. The language was then released in early 1996. And now, Java has reached it's second version, Java 1.1. The hype has been incredible. Every developer has to have "real-world Java" on their resume it seems. 

The hype has not been empty.  Behind it has been an amazing amount of delivered run-times, components and tools. Java 1.0 has been incorporated into or available on every major Operating system, ranging from Desktops to workstations to mainframes. And soon, the original dream of Java, embedded systems, will have Java. Indeed, with Java in consumer electronics, the circle will be complete. Development environments from all the usual suspects - Symantec, Borland, Microsoft, IBM - and even others are now stable and released. Indeed, Java to Native compilers for most processors will be available soon. 

It was never the goal of Javasoft to have Java and it's class libraries do everything. Indeed, some people - such as yours truly - believe that Arthur Van Hoff's "Just say No" attitude has been sorely missed at Javasoft. To extend the built-in libraries, many class libraries are being built, from windowing additions from Netscape, Microsoft and others - more on these critical libraries later - to cross iindustry frameworks such as the San Fransisco project at IBM. 

The old adage about shovel vendors making more money than gold-diggers is holding true for Java. Seems everybody - yours truly again - is a contributing author to a Java book or columnist to a magazine. Eventually though, applications will provide the bulk of the Java revenue stream. For now, small and mid-size Java applets and applications are the norm, and few people are paying for them. Corel's WordPerfect for Java springs to mind when thinking of large Java based applications, but there certainly isn't a plethora yet. 

JavaSoft

Javasoft controls Java specifications. They are currently the de-facto and de-jure standards body for Java. Due to Java coming in the various components - the language, virtual machine and class libraries - there is a possibility of Java following the C standard into disintegration. The original C dream was "Write once, run on any Unix"... Sound familiar? 

Sun, as a Unix vendor, has learned it's lesson well. Javasoft has introduced the "Pure Java" initiative which is to ensure 100% compatibility between 3rd party VMs and class libraries. A Java component, virtual machine or class library vendor submits to a suite of tests at a Pure Java lab. Assuming successful completion, the Pure Java logo is granted. "Pure Java Inside" anyone? 

Speaking of standards, Javasoft will eventually release portions of Java to a standards body. A preliminary ISO meeting was held without much progress. My prediction is that the Java language specification will be released to a standards body in 1997, with some of the 1.1 class libraries in 1998. Javasoft believes that a few releases of Java must be completed before the slowness of standardization can allowed. 

Language changes have large effects on the Virtual Machine (VM) and Compiler. When the language changes, by adding new types such as the new void type in 1.1 or inner classes, the old virtual machines and compilers break. This is a major weakness in the Java rollout. 

The dream of "Write once, run anywhere" does not hold if developers have to create versions for 8 different virtual machines. Current VMs such as Navigator and Explorer use Java 1.02. New Java 1.1 data type features will not work on current software. Developers are left in a quandry. In November, I suggested to Eric Schmidtt, Sun CTO, that there was probably only room for 1 or 2 changes to the virtual machine. He agreed and said that I was probably being generous with the numbers. If there are more VMs after 1.1, the Java market will be fragmented considerably.  Let's hope that 1.1 is the final VM. 

Java 1.1 Class libraries 
Javasoft also introduced many new class libraries in Java 1.1, as well as expanding existing libraries. Class libraries are divided into Core APIs and Extension APIs. Licensees - including Microsoft - are required to incorporate core APIs 6 months after First Customer Ship (FCS). Most of the new Class libraries belong to core APIs. These include: Java Database Connection (JDBC), Class library signing, Remote Method Invocation (RMI), Internationalization, and Beans - including the new Event model, introspection and persistence. These APIs have been covered in great detail in many trade journals and books. Suffice to say, these are fundamentally great additions which give Java a level of functionality required for large-scale enterprise deployment. 

IIOP, Not! 
On the down side, a major piece of functionality should have been included in Java 1.1. All distributed object fiends out there will know of what I speak, that is support for the Internet Inter-Orb Protocol (IIOP). 

I'll try to give the world's fastest IIOP explanation now. The Object Management Group has defined a standard for how objects can interact across machine boundaries. The standard is called Common Object Request Broker Architecture (CORBA). This defines how a piece of software - called an Object Request Broker - exposes local objects for use by ORBs on other machines or process spaces. The protocol the ORBs use for communication is IIOP. To expose an object to an ORB, or use an object, the interface to the object is defined using the Interface Definition Language. 

On the surface, this will seem very similar to RMI and Microsoft's DCOM. However, CORBA is far more technically powerful. Developers will be able to easily make their objects transactional, concurrent, persistent, etc. by mixing-in vendor supplied libraries.  Readers are advised to read one of Dan Harkey and Robert Orfali's classic client/server and distributed object books for more detailed analysis. 

The net of this is that IIOP has been "decoupled" from Java 1.1. There are Java based ORBs available from Visigenics and Iona software, but the ORB must be downloaded to the client browser or bundled with the Java application. Life would have been so much simpler if Javasoft, Iona and Visigenics could have agreed to the Java to IDL binding in time for Java 1.1. 

Tools 

Javasoft also makes tools such as the free command-line Javasoft Developers Kit 1.1 and graphical Java Workshop and Bean Developer Kit. It appears that Javasoft is not committing serious resources to the tool efforts. Rather, they are relying upon 3rd parties, such as Symantec, Microsoft, Borland, IBM, etc., to develop tools. This is a double edged sword. It frees Javasoft to expand the language, but it also allows for a Development Environment provider to add proprietary extensions to the language. cough. 

What's Next from Javasoft  

The next major release of Java, Java 2.0, will be occur mid to late 97. Although details are sketchy, the release 2.0 can be summarized as bringing Java up to the level of a regular operating system. The changes include: Drag and Drop, AWT changes, 2D graphics format with Adobe, 3-D extensions with Liquid Reality.  Asynchronous I/O to some streams was added in 1.1, but not all - such as random access file based I/O. Full buffering should be added, no word yet.  For now, you'll have to use 3rd party solutions, such as Nick Zhang's JavaWorld tip 

Outside of the Java 2.0 changes, various other APIs and services are in the works. A Java Transaction Service in proposal. This is crucial for Java to compete with ActiveX's transaction server, Viper, at an enterprise server level.  

Name and Directory services will be added as well.  Now that millions of people are on the web, we need common standards for how to find poeple's addresses and information.

Web server extensions called "servlets" will allow Java byte codes to be uploaded to a Web server. This is among much work to add a mobile agent infrastructure to the Web. Mobile Java agents, combined with Database connectivity at a server, provides for some very interesting market possiblities. 

To manage all those embedded systems and consumer electronics which incorporate Java, a Management API is in the proposal stages. Finally, an Electronic Commerce Framework involving digital wallets, payment, and smart cards will be released. 

Netscape 

Netscape's Navigator has been a driving force behind the acceptance of Java. Netscape has extended the standard class libraries with the Internet Foundation Classes. IFC was the primary reason that Netscape purchased NetCode. IFC has not been adopted as a standard in the industry due to developer concerns about lock-in to a non-Javasoft windowing environment. In the spirit of openness, Netscape provides source code for the IFC.  The window toolkit war brewing between Microsoft and Netscape is a major Java issue. 

Communicator 4.0 will have a number of very interesting features such as IIOP support, but from a Java perspective, the two key interesting areas are a new security model and support for portions of Java 1.1. The new security model will allow for the user to open up the VM sandbox. This change is crucial to allow Java applets a more suitable execution environment than the extremes of no access to local services to signed equals full access. This should provide a powerful competitive edge over Communicator's competitor. Likewise, hopefully Netscape will support most of Java 1.1 to provide user's with another reason to not use their built-in browser. 

If Netscape and Microsoft do not support significant portions of Java 1.1, such as Beans, RMI or JDBC, this could lead to a certain fragmentation or delay in the Java standard. 

Microsoft 

Microsoft has thrown considerable weight behind Java and the Internet. Sun, Netscape, etc. touted Java and the Internet as Microsoft Killer, and the consumate businessman in Redmond listened. Microsoft now can prevent the automatic acceptance of Netscape and Javasoft initiatives, ranging from style sheets to Java Windowing classes. Microsoft's philosophy is that developer's will always choose performance on a particular platform over reach of multiple platforms.  Thus, they are optimizing Java for the Windows platform. 

"Microsoft is going to create Microsoft Java and Microsoft Windows-specific VMs [virtual machines], and JavaSoft has to confront that reality and make it OK for all Java users and build bridges between those different implementations," said Stan Dolberg, director of software strategies at Forrester Research. 

Microsoft is "extending" Java with additions to the class libraries in the form of Application Foundation Classes, and the Virtual machine to allow COM/DCOM/ActiveX connectivity.  On the subject of ActiveX connectivity, the next release of the MSVM should support Java Beans and bi-directional links to ActiveX.  An application which uses the MSVM and written in Java will expose Beans as ActiveX controls, and will be able to act as a container for ActiveX controls.  Imagine your app nestled inside Word or Excel. 

Indeed, Microsoft is now giving away the Microsoft Virtual Machine as a plug-in for Netscape. Further, developers will be able to bundle the MSVM in their applications.  Microsoft simply requests that they are notified by the developer. 

Microsoft has stated that, with the exception of the Java Native Interface, they will support all the Java 1.1 language features.  If they had decided to create their own inner classes, reflection, data types, etc., then developers would have been forced to stay with Java 1.02. 

Parts of Java 1.1 - RMI, code-signing, JAR files, Native method interfaces - compete with Microsoft standards. A very interesting issue is whether MS will support all of Java 1.1. They may support Java 1.1 by offering features in doubt as a downloadable and installable component, separate from Windows and IE. Or they may not offer the features at all. 

By innovating on Java separately from Javasoft and Netscape, Microsoft is forcing developers to choose which vision they support.  In all fairness to Microsoft, they believe that they have hit the market earlier and with better implementations of some features and Javasoft and Netscape. 

Probably, like the hopelessly fragmented HTML standard, developers will have to support both.  Some of the things developers may have to do:  On the development side, Visual J++ is a solid and popular contender in the Java development arena. A key J++ differentiator is the ability to use and produce ActiveX controls from the Java environment. In fact, Java makes creating ActiveX controls somewhat bearable. Now if only there were great libraries for integration with ActiveX containers. It looks like Java will replace C++ as the prefered language for ActiveX controls. 

Microsoft has become a large player in the Internet and Java markets. Microsoft is competing with Javasoft for the future of Java. If they own the browser market for PCs, Macs and Unix, then developers may code to Microsoft standards such as AFC and ActiveX. And if they make it easy by providing integration of features via J++ development environment, MS may have the industry standard Java solution. 

However, all is not lost for developers and users.  The worse case scenario for platform independence is that Java is optimized for the Windows platform.  Considering that Windows is by far the largest installed OS, that means that a majority of users will be satisfied.  Now I know, platform independence is the holy grail.  However, the version 1.1 VM and most of 1.1 will be available on all platforms.  So we may not have complete platform independence, but it's a heck of a lot better than C++. 

IBM 

In the age of Co-opetition, another large computing corporation has entered the arena. Big Blue has a massive focus on Java and Network Computing. IBM, including it's subsidiary Lotus, have thousands of developers currently working on Java projects. IBM has many Java credentials to it's credit, such as first Windows 3.1 VM implementation, first VM integrated in an OS - OS/2 Warp 4, and the first Bean compliant authoring tool in Applet Author. In fact, a Java VM is now available for every IBM platfrom, ranging from OS/2 to AIX, AS/400 and MVS. IBM has also opened up it's applications as well, with Java libraries for CICS, MQ, DB/2 and Notes. 

IBM's approach has been to work with Javasoft to extend the Java environment..  A key participant in Java 1.1, much of Beans, Security, Localization, and the language changes came from IBM, Lotus or Taligent. 

On the development side, the Visual Age for Java development environment is entering Beta stages. IBM continues to roll out useful components via the alphaworks site.  The San Fransisco project, a Java framework for financial applications, will start deployment this year. 

Lotus is also leading the charge on the application front with an extensive suite of Java components, called Kona.  The Domino, nee Notes, server will be accessible via IIOP, LDAP and Java class libraries in the next major release. 

IBM is flexing is $75 Billion sales muscle to fund many Java initiatives: the Java Venture fund with Kleiner Perkins Caufield Byers, the 100% Pure Java Initiative, the JavaOne conferences, and the Java World Education tour. 

You can see how Big Blue is very focused and committed to making Java the best possible environment for users and developers.  And now the marketing machine is stepping up delivery of Java to the channel partners. 
 
Other Companies 

Established companies, as well as new companies are embracing and extending Java in radical and different ways. There are many other Development Environments available, from Symantec, Borland, Metrowerks, Marimba, RogueWave and Asymetrix. 

Three tier architecture builders are needed for enterprise connectivity.  The ability to abstract the business logic from the presentation and data storage provides for great flexibility in deployment.  Look for framework builders and frameworks in vertical markets to emerge.  We're seeing that with Visgenic, Iona, WebLogic, BulletProof and a plethora of others 

Many developers are not familiar with Kleiner Perkins Caufield Byers, the venture capital firm for Netscape and a few interesting others - America Online, 3DO, Electronic Arts, Excite, Intuit, Lotus, Macromedia, Sun, Symantec, Verisign, Verifone, Visio. They have joined with IBM in the Java venture fund. The first recipient was Marimba, whom all Java enthusiasts are familiar with. Look for the KPCB keiretsu to work closely with IBM in funding and delivering Java applications. 


Hardware 

The Java VM has been ported to almost all PC, server hardware platforms and operating systems.  But the real dream of Java, embedded systems and consumer electronics, will shine in '97.  Sun will be releasing Java chips, which are currently low-end chips designed to run Java natively. 

On the embedded side, controllers and intelligent phones are poised to hit the market.  Nokia and Nortel will be releasing desktop or cellular phones which run Java.  Users will be able to update a personal organizer from their phone, using the same application they do on their PC.  The information will be updated on a server, allowing other users to interact with the schedule or other aspects.  Voila, same application, yet mobile distributed computing. 

Also gaining press and momentum are network computers.  IBM, Oracle, Sun and even Wintel have announced slimmed down computers without the hassles of a full PC.  Remember, all of the aforementioned companies sell server hardware or server software.  Dumbed down PCs equals bigger servers.  Perhaps the day of Big Iron is back? 

The network computer is enabled by Java.  The "Write once, run anywhere" mantra is crucial for deployment of applications on widely varied hardware platforms.  We'll see tremendous growth in the non PC computing market.  The continuance of Moore's law may lead to this being the year that Xerox PARC's vision of many CPUs per person comes to fruition 

Inflection points 

What are the key decision points which developers, users and leaders need to look for to base their decisions? 
These are some of the key questions which developers may need to answer 

What portions of Java 1.1 will be supported in Netscape Communicator 4 and Microsoft Internet Explorer 4?  
What will the two competing security models look like?  
Will AFC and/or IFC provide a large enough functionality enhancement that developer's will target a particular browser? 
These will determine what developers can utilize for applet delivery. 

Will Beans be interoperable with ActiveX? 
Assuming yes, then object nirvana could almost be here 

Will questions about the Java licensing agreement reach litigation? 
It's in nobody's interest for a protracted legal battle over the Java licensing agreement to happen.  If this very unfortunate incident happens, look for some serious mudslinging and confusion in the market.  Java would suffer a tremendous black eye.  It's too late for the momentum to stop, but development would certainly slow. 

Will the Pure Java initiative prevent the Java market from fragmenting? 
Will the embedded systems market and network computer market expand enough in 97 to affect Java DEs?  
Each developer needs to make a platform independence versus reach.  If there are enough non-pc platforms available, Java developers will choose platform independence. 


Directions 

Here's where I'm forced to be a futurist for 15 minutes, so I'll try to summarize the Java '97 directions. 

I believe standardization will happen for parts of Java, probably the Java 1.1 Language spec handed over to ISO in late 97. 
The class libraries and VM will wait, perhaps '98 or later. 

The IIOP/DCOM/RMI and Java Beans/ActiveX wars will not be as large an issue as some pundits claim.  Clay Ryder of Zona Research,"[Comparing Java to ActiveX] is comparing apples and oranges. Java is a language that can be used inside ActiveX and work with ActiveX," Ryder said. "The real question is whether Java Beans is going to articulate a position superior to Microsoft's when Microsoft controls 80 percent of the desktops." 

Developers will build Java objects, then run them through an "IIOPizer" and "DCOMizer".  Visigenics caffeine creates IIOP interfaces for Java,  and Javasoft's ActiveX bridge does the same for DCOM/ActiveX.  As a developer, you should be able to use whatever local or remote components you wish, and tie them together using whichever builder you prefer.  Look for an explosion of controls and components. 

The windowing toolkits battle may also be a non-starter.  If Netscape swallowed their pride and adopted Microsoft's AFC set, developers would have a clear choice.  This is somewhat unlikely.  In fact, I'd venture that Netscape may try to install their IFC classes into the Explorer/Nashville environment.  It will end up coming down to who ends up deploying more libraries, and who blinks first. Further, if Java applications, rather than applets, become common, then the choice of toolkits does not tie a developer or user to a particular browser or development environment 

To continue the client-side discussion, browsers will be opening up the Java security sandbox.  Granting partial or full access to system resources on a call or library basis promises to greatly extend the reach of Java within the context of a browser. 

1997 will be the year of the Java applications.  Among the leaders will be Java based games and entertainment sites.  Applications will be delivered and installed independently of a web browser - say via CastaNet. 

To the flip-side of clients, server use of Java promises to be very exciting.  Java and database connectivity, Java to native compilers, Java to legacy system integration and much more will happen in 97.  Every server application vendor will be opening up their system, and application builders will use it. 

"Server-side Java that leverages the power of corporate networks is going to play a larger role as companies begin to overcome some of the performance limitations of Java," said Daryl Plummer, a research director at the Gartner Group.. "I think it will be a big trend by the end of the year. Server-side Java is the key to this whole picture." 

Most compiler and IDE companies have been very quiet about any Java to Native compilers.  These make great sense for server side Java applications.  I'm guessing that every compiler vendor and server hardware vendor has plans for native compilers.  This may offend many purists, but generally server code doesn't migrate from server to server. 

On the connectivity side, streaming applications and data, aka push media, will probably become the most hyped part of the Web.  We'll sit back a bit from our pull media and surf the channels which are pushed to us.  But because the channels are digital, we can interact with them.  This will allow webcasters to personalize at a fine grain the streams which we receive.  Indeed, perhaps each channel of behaviour or data will be customized to our personal needs and preferences.  Stay tuned (argh) for more on Push media. 


Recommendations 

So what's a poor developer to do?  As usual, it all depends upon your target audience and their requirements.  Firstly, use Java.  To many readers of this 'zine, that may be obvious.  However, many large corporations are still hesitant about deployment of Java. They need to be informed about the benefits.  Java is a good, stable environment for developing applications, beit local or distributed.  It provides significant improvement in developer productivity - numbers range from 2 to 4 times.  The code produced is of much higher quality. 

Since you're all developing Java code anyways, there are some specific recommendationsr: 
  1. Client code should be 1.02 VM compliant - using Interim Java Beans - until Java Beans is accepted by a large enough portion of your audience.
  2. Server-side code should migrate to Java 1.1 very quickly.  You'll be able to connect to legacy stores, databases and Web servers.
  3. For small to mid-size applets and applications, use only Javasoft extensions as they have the widest deployment.
  4. Be very careful about which class libraries and VM extensions you use.  Beware the temptation to lose platform independence.  Err on the side of reach rather than specialization as platform dependence is a slippery slope.
  5. Evangelize Java like crazy.  It's here, stable and can be used in virtually every development scenario.
Conclusions 

Java is continuing to progress at an enormous rate.  1997 promises to be the transition year from small applications and applets to enterprise level adoption.  The year will be chaotic, and developers may need to make tough choices.  In the long term, competition will create a better Java for all of us. 

About the author 

Dave Orchard is a technical architect at IBM's Pacific Development Centre, located in Vancouver Canada, where he is currently building Java based distance learning solutions.  In his spare time, he does extensive public speaking, writing and teaching.  Further information about Dave's activities can be found at http://www.pacificspirit.com/daveshome.html 

Resources  JavaSoft  Microsoft 
IBM  JavaWorld Articles