Tales from the Java shops
- By Jack Vaughan
One-hundred-percent purity is something we don't often find in life, so it
is not surprising that a surveyor of the new Java landscape finds plenty of
developers who sprinkle a bit of C++ in their Java server-side code. At this
early stage in the language's life, that is to be expected. Perhaps the only
drawback is that the pragmatic group of developers that mix languages may not
end up as finalist contestants for a "Genuine 100% Pure Java" ribbon from Sun-originator
Sun Microsystems, Mountain View, Calif.
No matter. There is also a good number of developers who have taken the World Wide Web and Java wholly to heart. They maintain that full adherence to Java is both possible and necessary. Whether they are purists or not, few among those we have talked with have encountered insurmountable problems with Java.
Across the board, Java developers are impressed by its object-oriented nature. They are also captivated by its cross-platform promise. Fast-moving mid-sized shops that have specialized in client/server computing, especially, are heeding the Java call.
DCI's George Schussel describes the emerging Internet-standards-based architecture as "browser/server computing." As tools vendors promote Corba and DCOM as middle-layer glue, architectures will resemble traditional distributed object schemes.
While Java users note drawbacks, most cite the language's incredible marketplace momentum as the reason they are confident today's kinks will be ironed out. Java shows promise, it seems, of being standard enough so that Java-written applications will survive future platform shifts, without recourse to emulation technology.
What are kinks to iron out? Here, the kinks are speed of performance, extent of portability, and quality of tools. One might add extent of Java experience, but there seem to be plenty of programmers ready to learn the new language that takes C++ a step further in object-oriented terms, and, at the same time, shields the programmer's application from attachment to any individual computing platform.
In a way, networked Java-based applications look to capitalize on lessons learned by the C++ troops in client/server computing. Thus, we have the Java-based server -- acting as an application server -- situated in the middle tier of a three-tiered computing architecture. This approach was not invented by Java vendors. They hope, however, to take the concept another step ahead.
Languages normally begin their lives in a supplementary manner -- both in specific applications and within the developer community. For example, many developers at one point began to do the bulk of their coding in C but still dropped down to assembler for performance-sensitive system calls. Latter C++ was de rigueur, but C and assembler were still used to get "the last 9 yards" of performance.
Because Java is an interpreted language, it has a certain amount of natural execution overhead. It is also still new. So one would expect designers to use modules of C, C+ or C++ code where they think it is useful. Java purists say writing to C is backsliding. It means writing to a particular operating system and hardware platform, negating Java's cross-platform promise.
Sun leader Scott McNealy tells developers: "You should be careful you don't use C++ [and other non-Java languages]." With boyish grin he likens this to dropping a few drops of poison into an otherwise pure drink of Java. McNealy's desires for Java homogeneity are carried forward by the 100% Pure Java initiative announced in late 1996.
McNealy admits that, with desktop powerhouse Microsoft as a nemesis, his job is to be a "quote machine." Is his statement about poison mere hyperbole? Would Jon Kannegaard, vice president of software products at JavaSoft, allow that an application using any bit of C++ could still be kosher?
"It's not 100% Pure Java," says Kannegaard, echoing the assertions of McNealy and others.
"If you have to use C++, use it. But it's not portable," Kannegaard said,
noting several steps that Sun Microsystems (and its associated SunSoft and JavaSoft
divisions) are taking to make portable Java faster, and C++ obsolete.
Some C crews
Dave Writz, vice president of advanced technology for Milwaukee, Wis.-based system integrator Cornerstone Inc., is among a host of new Java users who employ the language, but who dip into C++ if need be. Writz employs Java on the client side for presentation, and a mix of Java and C++ on his servers. He has encountered no serious compatibility issues in his use of Sun-authored Java virtual machines (VMs) running on Windows NT and Solaris.
some C++ DLLs or shared libraries we call in," Writz said. "We may use some
C++ if there are existing platforms with, for example, business logic we have
to access." Still, Writz is "pretty satisfied overall" with Java. Where he
has had various concerns about performance, Writz, who uses Menlo Park, Calif.-based
NetDynamics Inc.'s application server and tools, has addressed these using
Symantec's JIT compiler technology for Java.
Chris Christian, principal, CRC Business Solutions, Atlanta, helped a client "go live" in July with an Intranet application that lets Web browsers view human resource data as either HTML documents or Java applets. Christian used New York-based Prolific tools and server technology. His firm specializes in Web implementations and data warehousing.
In effect, Christian needed a solution that was not whole-heartedly Java. Some users, he noted, would prefer a non-Java, HTML-based interface. As well, that his Prolifics server used some non-Java code was not an issue. Though the server may use C or C++, this was acceptable if it provided easier access to developers via a high-level programmatic view, he said. Tomorrow, may be different. And platform independence is the reason. "In the future I don't want to put in C routines," said Christian, "I don't want to be tied to a piece of hardware."
"We are using C++ system-level types of functionality," said Sharmila Shahani,
director of product marketing at application server maker Kiva Software, Mountain
View, Calif. "If you need to, for example, hook into CICS, you can do it in
Java, but given its complexity, we actually see more of that being done in C
Hello to JITs
Close ties to hardware have historically meant top performance. Java advocates must take steps to improve performance without tying it to a platform. Therefore, the latest Java developers kits tend to include an up-to-date JIT (Just-In-Time) compiler.
Developers contend that, with the present JITs, Java meets the performance requirements of the market -- that performance is quickly coming up to parity with C.
"We have been able to tune Java to get performance on the order of magnitude of C and C++," said Dave Parker of WebLogic Inc., a San Francisco, Calif. based developer of JDBC drivers and pure-Java servers.
And there is more in store. Tool maker Symantec Crop., Cupertino, Calif. saw virtual machine performance increases of 15 times, based on new JIT technology, as it went to its latest product rev. In some performance measures in some instances, said Symantec's Alan Bannon, director of developer relations, "Our JIT development group has beat [the speed rates gained by the] comparable native compiler group."
Sun and others have taken a cue from Microsoft and have gone to work on producing the best possible virtual machines for Java execution. Sun has gone as far as to enlist IBM in its quest to beef up Java performance. In August, the two announced IBM would volunteer staff to join a Java Porting and Tuning Center located at Sun's JavaSoft division headquarters in Cupertino, Calif. There, IBM and Sun engineers will share their know-how to ensure that Java is as fast as possible. The mission takes on a certain urgency because, as Sun's Chairman and CEO Scott McNealy admits, there has been at least a six- to eight-month lag -- eons in Web years -- between the advent of new JIT-enhanced developer kits and the introduction of Web browsers that can exploit their output. At the time of the porting center announcement, Sun also announced a deal with Netscape to produce a "100% Pure Java" version of the Netscape Navigator in early 1998.
Moves like this would seem to help the Java purists' cause. Still, even if developers insert C or C++ code to gain higher performance today -- and give up some portability -- they still usually feel they will be able to go to pure Java six or 12 months from now, and get fuller portability at that point.
"Java may not be the fastest way but it's more productive," said Eric Reed, leader of technology for system integrator Align Solution Corp. Houston, Texas. Reed is a beta user of Java server tools from start-up SilverStream Software Inc., Burlington, Mass.
Is compatibility complete today? No, said Reed. "I don't buy into 'Java as the Write-Once, Run Anywhere' language, he said, " but it's a long step forward from the predecessors."
"It's largely portable, he continued, " more so than Visual Basic or PowerBuilder."
Portability gains outweigh performance concerns for Joe Golobic, assistant vice president, Munich Reinsurance Co., Toronto, Ontario, Canada. Golobic uses Apptivity tools from Progress Software, Burlington, Mass. "It's all Java," he said of a replacement for a client/server data warehousing system.
"Some developers are using non-pure Java stuff as [a] transition," said Dave Parker of WebLogic, Inc. Java purity is going to be different things for different people, he continued. "For some it is a way to rally around the Java flag. Others say 'If I can't do what I want in Java, I'll do it in C,'" said Parker, "People will [forgo] Java for performance reasons where portability is less important than performance."
While Parker said WebLogic's servers are all written in Java, he noted that the firm was not yet pursuing a "100% Pure Java" classification largely because of the burden involved in writing test suites.
As the term client/server came into disdain it was largely because of problems of deployment and scalability. Java seems to solve the deployment issue in that the browser becomes a universal client and deployment is handled by download, not by an army of net administrators with master disks in hand. In theory, at least, the browser becomes the lingua franca, and there may be less of a requirement for the dreaded corporate-wide hardware upgrade when its time to roll out the app.
In terms of scalability, Java-based computing takes a page from the book of client/server architectures. That is: Using three-tier and n-tier schemes. David Litwack, founder of Powersoft and now CEO of startup SilverStream Software, maintains new client- and server-side Java implementations provide a true integrated three-tier architecture. For tools vendors, he said "that very statement [changes] the nature of things. You're not a tools vendor you're an applications server provider." Note, however, that such set ups may mean that some Java tool vendors will seek to make their money on the runtime, rather than the tools.
At your server
George Schussel, chairman and CEO of Digital Consulting Inc., Andover, Mass., describes the emerging architecture as "browser/server computing." The connecting middleware could comprise Corba or DCOM object technology. In fact, more and more tools vendors are citing Java-enabled Corba in their pitches. Such concepts had been gaining currency in client/server circles in recent years. Thus, with object middleware connecting tiers, the browser/server design crew may be taking up where the client/server crew left off.
While using such advanced methods, Java systems may encounter network bandwidth issues the same as or worse than those that challenged some client/server apps. Clearly, the results are not in yet.
"In client/server we had tons of times when [the application] ran well on one machine and not on another," said one developer. "My roots are in client/server," he said, by way of describing his background. "You sometimes needed serious hardware on the client side." With, Java on the server, the same developer continues, you have greater flexibility. You don't need to send class files down on the client to run." You may, however, be advised to use network protocol analyzers to study and prioritize net traffic patterns.
Thus, server side promises easier scalability. Yet it is still too early to tell if developers may not end up having to throw a lot of expensive server horsepower at processing bandwidth problems.
Regarding performance, WebLogic President Dave Parker says: "The rate limiting function on Java on the server is not Java. The rate limiting function is access to the back-end service (for example, database systems).
The industry surge toward Java tools support is nothing less than astounding. Yet, for tool makers, it is just part of doing business today.
While some are jumping on a bandwagon and others are seeking to unseat Microsoft, most are just responding to customer pressure represented by surveys such as a recent one from Software Productivity Group, Natick, Mass., which shows that "Java support" is tied with "Cost" as the top criteria for Internet/Intranet development tool selection.
The tools take different forms. Included in the early Java offerings are those from traditional mainstream tools and class library leaders such as IBM, Microsoft, Oracle, Powersoft, Sun, Symantec and others. Borland recently joined these ranks with its Jbuilder product.
Emergent Web software specialist houses include Allaire, Apptivity (now part of Progress Software), Bluestone, Haht, Kiva, NetDynamics, Passport, Prolifics, SilverStream, Supercede, Vision Software, and WebLogic.
Among other traditional tool sources making the Java plunge are Centura, Forté, Integrated Computer Solutions, Information Builders Inc., Neuron Data, Passport, Tower, Unify, Visix and others. (For a sampling of such offerings see "Representative listing of Java-related tools".)
Traditional vendors of 4GL tools that had their world turned upside down by
Java, are responding. It is not surprising then that they tout their tools'
high-level design capabilities, honed over considerable time versus the new
Web software that is primarily concerned with connecting a front-end Web browser
to a mid-tier application server to, in turn, a back-end database. Established
tool houses and even some of the new Web tools makers are also beginning to
produce runtimes that are enhanced for multiple server load balancing.
Representative listing of Java-related tools
| Allaire Corp.
|Cold Fusion & Fusion
RAD, Visual development tools
$995/server, Workgroup Edition/Access, FoxPro, dBase; $495/server, Fusion
||Corba, COM, DCOM, ODBC
||Generates 100% Pure
Java client & server-side applications
||$4,995 per developer;
no runtime fee
||Corba IIOP; JDBC; RMI;
||Test only; can use
third party debuggers
| Borland Int'l.
Scotts Valley, Calif.
||100% Pure Java visual
||$299.95; no runtime
| HAHT Software
development system; Visual Basic and Java
||IDE: $1,995 per user;
Distributed Application Server: $7,495 per NT server, $9,995 per Unix Server
| IBM Corp.
|VisualAge for Java
for Java applets, applications
$1,995 Professional Edition: $119
| ICS Inc.
GUI builder for Java
||$3,995 no runtime
New York City
3-tier application development
||$3,950 per developer;
$5,550 to $110,000 for application server
||Corba IIOP; JDBC
| Kiva Software
Mountain View, Calif.
|Kiva Enterprise Server
server. Supports both Java and browser clients
||$995 per developer;
application server pricing starts at $25,000/server
| Magic Software
||Table-driven RAD, Java
generation, application partitioning
$5,500 per user
for Java, C++ integration
||ActiveX; Com; DCom
Menlo Park, Calif. www.netdynamics.com
server and visual RAD; generates Java, HTML, SQL
||$1,295 per developer
seat, Server: $200 per concurrent user
| Neuron Data
Mountain View, Calif.
||Translates C, C++ objects
into Java code
||$895 per developer
| Oracle Corp.
Redwood Shores, Calif.
||Client/server & Web
application development; 100% Pure Java
||Developer Editor: $5,995
||Corba IIOP; DCOM
| Passport Corp.
||4GL enterprise development;
Java client server support
||$8,995; no runtime
third party middleware
| Progress Software
||Java thin client &
Java server application development and deployment server
server license: Starts at $5,000
New York City
system starts at $35,000
| Rational Software
Santa Clara, Calif.
system for Java
||Starts at $2,400; no
||Corba IIOP, JDBC, OMG
||Integrates w/SQA Suite
||Java database application
||$795 per developer
interface builder for Java
||$390 per developer
||Web application platform;
client & server-side Java
license w/10 connected users: $5,995
||JDBC, Corba IIOP, COM,
Mountain View, Calif.
||Corba IIOP; RML; JDBC
||Corba IIOP; JDBC
| Sybase Inc.
||Enterprise Java application
development system with 100% Pure Java components, C++ integration
||Corba IIOP; JDBC
| Symantec Corp.
|Visual Café for Java
||Visual RAD, 100% Pure
Java application development
$299; Database edition: $499
| Tower Technology
of server-side Java applications
license starts at $5,000/server Deployment-only license starts at $500/server
||Works with any 100%
Pure Java middleware
| Unify Corp.
San Jose, Calif.
w/native C/S & Web development; Deployment starts at $25,000
| Visix Software
||Java development environment
for database applications
||Vibe DE: $49.95 Vibe