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:
-
Web sites will have to have classes separate, in a JAR file, and in
a CAB file
-
Provide Microsoft and Javasoft code signing
-
Use Java Native Interface and Run-time Native Interface
-
Make server objects visible via RMI, CORBA and/or DCOM
-
Use Netscape's and Microsoft's security capability model.
-
Use both or neither foundation classes.
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:
-
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.
-
Server-side code should migrate to Java 1.1 very quickly. You'll
be able to connect to legacy stores, databases and Web servers.
-
For small to mid-size applets and applications, use only Javasoft extensions
as they have the widest deployment.
-
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.
-
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