August 1998 Java News

Monday, August 31, 1998
The Java Grande Forum is working on high performance numeric computing in Java. And a workshop on Java for High Performance Network Computing is being held Wednesday and Thursday at the University of Southampton in England. If any readers of Cafe au Lait are attending and would like to send in a report about the workshop, I'll be happy to post it.

However, I'm really beginning to wonder if all this effort is worth the fuss. Java isn't a language for high performance numeric computing, and probably never will be. I hang out with a lot of scientists and engineers doing heavy duty numerical computations; and when they ask me about Java, nine times out of ten I tell them to stick with C or Fortran. C and Fortran are excellent languages for numerics, and most issues with those languages can be addressed in revisions like C9X. I just don't see that Java's benefits are strong enough to get anyone working in high performance computing to pay the performance penalty Java exacts.

Furthermore, any changes to make Java more suitable for numerics would likely make it less suited for other uses. For example, consider operator overloading. Numerical modellers really, really want this. And it does indeed make sense for some of their common problems like complex arithmetic and some (not all) kinds of matrix algebra. However, there are probably less than two dozen cases where operator overloading really fits the problem space in an obvious way, where the standard arithmetical operators like +, -, /, and * have clearly defined and well understood meanings. As soon as you've exhausted those cases, you find yourself trying to figure out what some contractor who left your company two years ago meant when he took the remainder of two database records, or something else equally obscure. Numerical analysts may need operator overloading, but it's an absolute disaster for the rest of us who have to maintain non-numerical code.

Java started out as a small, secure, easy-to-use language for embedded systems. It does not need to be and indeed should not and cannot be all things to all people. The quest for the perfect language is pointless, and only leads to abortions like ADA. We need different languages for different jobs. Some of these languages may even sit on top of a Java VM. It would not be unreasonable to design a new Java like language that supports operator overloading and write a compiler for it that compiles to Java byte codes. In fact, several groups are already working on languages like this. And it's even reasonable to design a new VM with stronger support for IEEE 754 features not supported by Java like exceptions and traps. And I know at least one group working on this. But please, if you do design an extended language or VM, don't mess up Java for the rest of us by forcing your extensions into the base specification.

Version 4a of the MkLinux JDK 1.1.6 is now available with assorted bug fixes.

Sun's posted version 0.99 of the JavaBeans Extensible Runtime Containment and Services Protocol (BeanContext) specification and version 0.96 of the Drag and Drop specification. I also noted that Sun has decided to at least postpone the JavaBeans Object Aggregation/Delegation Model. It is no longer part of Glasgow and will not be part of JDK 1.2.

Sunday, August 30, 1998
Sun's proposal for adding widefp and strictfp keywords to Java 1.2 goes some distance toward addressing concerns about Java floating point performance on X86 and PowerPC chips that Jerome Coonen brought up in January, 1997. However, William Kahan, one of the chief architects of the IEEE 754 specification, thinks they don't go far enough.

Saturday, August 29, 1998
The floating point "study" I was looking for was conducted by Jerome Coonen. The basic point of it was that in a compound double expression like

double x = (Math.PI * 7.8) / (3.3 * 0.1);
Java requires all intermediate calculations to be done with exactly 64 bit IEEE 754 doubles. Higher precision doubles like those supported on the X86 and PowerPC chips may be used, but only if they're immediately rounded to 64 bits before being used in further calculations. The alternative is to do all the calculations higher precision, then round the result. In other words, Java requires compilers to do this:

  temp1 = 3.3 * 0.1;
  round temp1 to 64 bits;
  temp2 = Math.PI * 7.8;
  round temp2 to 64 bits;
  x = temp1/temp2;
  round x to 64 bits
instead of this:

  temp1 = 3.3 * 0.1;
  temp2 = Math.PI * 7.8;
  x = temp1/temp2;
  round x to 64 bits

Exactly how that translates into assembly code varies from chip to chip. All the rounding steps can be skipped on a Sparc which never uses more than 64 bits in the first place, but those steps are very necessary on an X86 or a PowerPC. In essence, users of the higher precision X86 and PowerPC chips are limited to the accuracy supported by Sun's Sparc family. Furthermore, X86 and PowerPC chips actually have to spend extra clock cycles rounding their higher precision results to the lower precision values. Sparcs always work in the lower precision mode so they don't have to use these extra cycles.

My main need to get this question answered was to confirm or correct my impression that X86 chips didn't support IEEE 754 before I wrote about it in my next O'Reilly book. It turned out my impression was wrong so it was a good thing I asked. X86 chips do support IEEE 754. In fact, they support it more fully than Sparcs do, though not as well for Java's purposes. Along the way I learned a lot more about floating point arithmetic, and I'll write about some of the other things I learned here soon. Several people responded to my query, but the first response came from Chris Ellis, so he gets a copy of JavaBeans just as soon as he sends me his snail mail address.

Friday, August 28, 1998
A little more than a year ago, I remember Microsoft sponsored a study of Java's floating point performance that concluded that it was optimized for RISC architectures and performed less well than it could on X86 platforms. At the time I wasn't able to find more than a news story or two about it, and could not locate the actual study. Now I find myself in need of it once again. I spent a few hours yesterday hunting around the net for it, and while I did dig up a lot of interesting material about Java floating point arithmetic, I couldn't find the specific thing I was looking for. So if anybody knows either I'd greatly appreciate it if you could drop me a line about it. This isn't interesting enough to qualify as a Question of the Week but I will send a free copy of JavaBeans to the first person who provides enough info for me to track down the actual study.

Judge Ronald Whyte, who is refereeing the legal pissing match between Sun and Microsoft, has appointed retired California state court judge John A. Flaherty as the special master to oversee public release of sealed court documents

In the latest legal sparring, Microsoft is claiming that Sun knew that Microsoft's Java did not pass Sun's tests in May, 1998 when Sun accepted a $3.75 million license payment from Microsoft, and that this invalidates claims of copyright infringement. Furthermore, Microsoft is claiming that their Java passes all mutually agreed to tests, and that Sun changed the tests on them to check for JNI.

Sun's posted the second beta of Swing 1.1 on the Java Developer Connection. Version 1.1 Beta 2 features faster internal-frame dragging, faster keyboard input, a new HSB color chooser, assorted other optimizations, many bug fixes, and a few new APIs including an HTML package with most of HTML 3.2 and assorted improvements with tables and non-English text. This version works with JDK 1.1.

Taylor Computing's JMangle is a free, JFC based Java .class file obfuscator.

Thursday, August 27, 1998
Sun's released version 1.0 of the $99 Java Shared Data Toolkit (JSDT). JSDT allows applications and applets running in different VMs on remote hosts to share access to the same data. This is useful for chat rooms, white boards, and mulit-player networked games for example.

The Standard Performance Evaluation Corp. (SPEC) has released SPECjvm98, a $100 benchmark of Java performance based on eight "real world" tests. It's allegedly less spoofable than CaffeineMarks. The tests include

Baseline performance is 1.0 on an IBM 133 MHz PowerPC 604 with 96 MB of RAM running AIX 4.1.3 and JDK 1.1.4 without a JIT. The current top score is 18.0 on a Sun Ultra 60 Model 1360 with 256 megabytes of RAM and the JDK 1.2 production early access release. However, this is likely to change as other VMs get tested.

Wednesday, August 26, 1998
Kent Beck and Erich Gamma's JUnit is a free Java testing tool that's worth checking out. I'm interested in hearing about any other Java testing tools, especialy free white box tools.

Sun's posted the second early access release of the Java Wallet on the Java Developer Connection. Java Wallet is designed to enable secure electronic commerce transactions. It includes Commerce JavaBeans, the Java Commerce Client, the Smart Card API, and the Secure Sockets Layer (SSL) 3.0 export version. EA2 adds Wallet database, a transaction log, enhanced browser interaction, and a serverized architecture (whatever that means).

Tuesday, August 25, 1998
Symantec, maker of Norton Antivirus, has been hyping the alleged discovery of the first "Java virus", Java.Strange.Brew Net wide reaction has mostly been skeptical, and I have not yet seen any independent confirmation from anyone who doesn't profit by selling anti-virus software.

From what little information Symantec has released, this seems to be a classical computer virus that's transmitted by sharing and running infected applications. (Applets can catch the virus but cannot pass it on when run from inside a web browser.) Long term, however, these sorts of viruses have the possibility to become particularly nasty since they have at least the potential to run and infect across platforms.

Monday, August 24, 1998
One of the rumors heard at SD98 East last week was that the com.sun.java.swing fiasco was a direct result of IBM pressuring Sun. Allegedly IBM has a lot of code that relies on that name, and nobody over there knows how to use Perl to make the updates. (It seems a little implausible, but you never know.) Thus although a recent JavaWorld poll showed that more than three quarters of Java programmers prefer the java.swing package name, in JDK 1.2beta4 Sun reverted to com.sun.java.swing package name originally used in JDK 1.1.

Now Sun is proposing a third solution, javax.swing. Contrary to what Sun says, it's really not hard to maintain source code that compiles to both versions. It's easy to import both java.awt.swing.* and com.sun.java.swing.* with a minimum of help from the class library. However, binary compatibility is a real issue since fully package qualified names are included in the .class files. javax.swing should work better because it can be used in both Java 1.1 and 1.2 provided the right version of Swing is installed. Comments are requested by August 28.

Sunday, August 23, 1998
Sun's posted a draft of the InfoBus 1.1.1 specification for public comment. Version 1.1.1 is supposed to enable better support for InfoBus-aware components and applications in builder tools and better support JavaBeans components that implement the InfoBus API. InfoBus defines an architecture for JavaBeans to exchange structured data such as arrays, tables, and database rows.

IBM's Alphaworks has released version 1.2 of the Skij Scheme interpreter . Skij can be thought of as a scripting language for Java. Version 1.2 of Skij features faster file loading which is also more transparent to the user.

Alphaworks has also posted new releases of their High Performance Compiler for Java, a Java to native executable compiler for AIX, OS/2, and Windows 95/NT; version 12h for Windows NT and AIX and version 12b for OS/2.

Alphaworks has also released a new version of RDF for XML, an implementation in Java of the RDF XML application for describing, categorizing, rating, and searching data. This update corresponds to the latest W3C RDF draft specification and works with alphaworks' XML for Java 1.0.4.

Finally, alphaworks has also updated their IRC Client for Java with various bug fixes.

Saturday, August 22, 1998
Metrowerks, maker of the Macintosh Java IDE Code Warrior and assorted C++ development tools, announced a loss of $2.0 million ($0.15 per share) for the fourth quarter of fiscal year 1998 (ended in July) on revenues of $5.1 million. This compares to a $3.2 million loss on revenues of $6.2 million a year ago. Java was barely mentioned in the statement, though Metrowerks did indicate plans to produce Solaris hosted Java development tools.

Friday, August 21, 1998
I've posted the notes from my two SDExpo 98 East presentations, Java Network Programming Part 1: URLs, URLConnections and CGI and Java Network Programming Part 2: Sockets, Server Sockets and UDP.

Thursday, August 20, 1998
I'm in D.C at SDExpo 98 East right now so things are going to be a little slow here until I get back to New York on Monday. The show seems split about 50-50 between C++ and Java. There's also a lot of interest in UML and OO modelling tools. However Visual Basic, Perl, 4GL's and other non OOP languages are almost completely unrepresented here. If the name weren't trademarked by a different company, the show might be better called Object Expo.

The show is mostly Windows with a smattering of Unix. Aside from my PowerBook, there are no Macs to be seen. They're a lot of smaller development tools vendors here but the large ones (Microsoft, Inprise, Symantec, Metrowerks) are conspicuous by their absence. Microsoft did send a number of employees to attend the conference and give talks though.

There hasn't been anything incredibly interesting here in and of itself though. yet. Jakob Nielsen of the Neilsen-Norman Group gave an interseting key note this morning. On the exhibit floor the KL Group's JProbe looked interesting, but at $499 it seemed vastly overpriced. Even more overpriced was Parasoft's $3000 JTest white box tool for testing Java classes. They had some interesting ideas (though they wouldn't go into too many details about exactly how JTest does what it does), but they didn't seem like anything an enterprising shareware programmer couldn't duplicate in a week or two for a lot less money (hint, hint).

Tuesday, August 18, 1998
Chris Kelly, the inventor of JConfig, is maintaining a the System Properties Repository, e.g. "What's my line.separator?". This page contains a listing of the values of the Java system properties ("os.name", "line.separator", etc.) for various VMs and platforms. This allows you to determine exactly which platform, or which type of platform, your application is running on. Submissions for additional platforms are encouraged.

Bill LaForge has updated coins, his free XML based scheme for serializing Java objects, a whole lot of times since the last time I mentioned it here. The latest release includes support for aggregation and a real cache, but there've been lots of other improvements too over the last several weeks.

cHotEqn is a nifty free component from Stefan Muller that displays TeX-like equations.

Live Software posted the first public preview release of JRun 2.2 (PR 2), a free servlet engine for Mac web servers.

Monday, August 17, 1998
I'll be at SD98 East in D.C. Wednesday through Friday. On Friday I'll be signing copies of Java Network Programming (and any of my other books you care to buy) at the Reiter's Bookstore booth at 12:00 Noon. On Friday afternoon I'll be giving two talks on Java Network Programming. The first at 2:00 P.M. will cover InetAddresses, URLs, and URLConnections. The second at 4:00 P.M. will cover Sockets and ServerSockets.

Chris Kelly released JConfig 1.2, a native class library for Win 95/98/NT, MacOS, and Unix that allows you to work with files, web browsers, processes, file types, and other system-level items in a much more advanced manner than that provided by the standard Java class libraries. For instance, JConfig allows you to list the mounted hard drives, obtain icons for files, launch URLs in the user's Web browser, find applications associated with a given file type or extension, and so forth. The runtime is free. The Java and C++ source code to JConfig may now be licensed.

IBM's alphaworks has released a new version of its RDF for XML software written in Java. This RDF processor builds, queries, and manipulates RDF structures, and it serializes and deserializes them to and from XML forms.

The book covers in the left hand column are an experiment. Let me know if they caues you any problems such as making the page load noticeably slower.

Sunday, August 16, 1998
Netscape 4.0.6 definitely supports Java 1.1 on Windows and Unix and possibly on the Mac (PowerPC only). It also fixes a nasty security bug recently uncovered by the Secure Internet Programming Project an Princeton. The Windows VM is more than a little buggy though, and could not correctly run some of the standard JDK demo applets on my NT system. Furthermore, the Mac installer trashed my hard drive, so I haven't been able to test that version. I'm a little chary of this release overall.

One big problem with this release is that dialog boxes are not backwards compatible with Java 1.0. Java 1.0 applets that use the Dialog class will not run in Netscape 4.0.6. Once again, developers are forced to write different versions of applets for different browsers.

FreeBuilder 0.7.3 has been released. Free Builder is an integrated development environment (IDE) for Java and Pizza applications and applets. It is written entirely in Java and is ment to be a platform and OS independent IDE.

Saturday, August 15, 1998
Netscape has posted Navigator/Communicator 4.0.6 for Mac, Windows, and Unix on their ftp site. The rumor is that this release supports Java 1.1 out of the box! No patches or special developer versions required! I haven't personally confirmed this yet (Damn, these slow modems) but if it's true all I can say is it's about time.

Friday, August 14, 1998
I think I've fixed the time travelling web page problem you may (or may not) have noticed here over the last week. Blame it on a crontab file gone wild.

The mailing list page has been updated.

I've posted answer's for the latest Cafe au Lait Question of the Day below. There'll be a new question on Monday.

Thursday, August 13, 1998
Sun's posted the first early access version of the Java Advanced Imaging API on the Java Developer Connection.

Sun's Java Dynamic Management Kit 3.0 (DMK) is now in semi-private beta. DMK allows developers to create dynamic agents for network, system, application, and service management.

IBM's alphaworks has updated JAX, a Java application packaging tool that reduces the size of a Java application by removing code that isn't used by the application. This release allegedly makes still smaller archives. IBM claims 30%-50% reduction of executable size.

Alphaworks has also updated Install Toolkit for Java, a free Java application for creating installer programs which are themselves Java programs and can install both Java and non-Java programs. This release fixes various bugs and should be more reliable.

Wednesday, August 12, 1998
JavaSoft president Alan Baratz gave the keynote address at the Inprise Developer conference in Denver yesterday. He predicted that the final release of JDK 1.2 would ship in early November, and the first version of HotSpot would appear in February, 1999. The release version of JDK 1.2 will require 30% more RAM than 1.1, but should otherwise perform as well as 1.1.

Sun's released version 1.0 of the Java Message Service (JMS) specification.

Tuesday, August 11, 1998
Jens Alfke reports that the next iteration of Macintosh Runtime for Java, MRJ 2.1ea2 (alpha 1), due out by the end of August, will feature

EarthWeb, owner of developer.com, has filed for a $34.5 million dollar IPO.

IBM's alphaworks has posted a bug fix release, 1.0.4, of their XML for Java validating parser. This does NOT conform to the 19980720 DOM draft.

Monday, August 10, 1998
In the face of increased competition from Linux, Sun is following SCO in making Solaris available to students, faculty, and schools for the cost media and shipping.

The third beta release of JDK 1.1.6 for Linux is now available for X86 and PowerPC.

Sun's released beta 4 of JavaPC to registered members of the Java Developer Connection. JavaPC is a set of software for converting legacy DOS based 486 PCs into Java based network computers. This beta improves configuration options and enhances support for local applications and local file systems.

Sun's also posted beta 4 of the Java Accessibility Utilities 1.2 on the Java Developer Connection. This release requires JDK 1.2beta4.

Cayenne Software's ObjectTeam is an object oriented modeling and design tool for Linux that features a UML class diagram editor, code generation for C++ and Java, and reverse engineering of C++ and Java code. It's free for personal use. Versions are also available for Windows NT, Windows 95, Solaris, AIX, Digital Alpha, and HP-UX, though these are payware. severely crippled demo is available for Windows 95 and NT. I wish I'd known about this before I wrote my latest onIine course (Design Patterns, now in beta testing at Digital Think) and did all the diagrams by hand.

Sunsite Sweden is now mirroring Cafe au Lait.

Sunday, August 9, 1998
Luca Lutterotti's posted a "hacked SwingSet with Mac L&F". Be careful. This is known to have some serious bugs.

Saturday, August 8, 1998

Apple's released the MRJ Input Console that (finally) supports console input (System.in) in Macintosh Runtime for Java (MRJ) 2.0.

Metrowerks has released version 3.1 of the Code Warrior IDE. This version features bug fixes to the IDE and the debugger.

Metrowerks has also released MW Debug 1.7.5a1, an unsupported version of the CodeWarrior Pro 2 debugger that allows debugging of Java code using MRJ versions 2.0, 2.1ea1 (with the debugging patch) and later early-access versions of 2.1. It should not be used with CodeWarrior Pro 3.

Friday, August 7, 1998
Sun's released the first beta implementation of version 1.1 of the Java 3D API for Solaris and Windows to registered members of the Java Developer Connection.

Sun's also posted early access release 2 of JavaHelp 1.0 on the Java Developer Connection. This release works with both Java 1.1 and 1.2 and the Swing 1.1 beta. It also adds support for context-sensitive help, merging, and better full-text search.

Furthermore, Sun's posted a beta of JFC with Swing 1.1, again only on the Java Developer Connection. They've also released the first version of the MacOS Look and Feel for Swing. Hopefully, Apple learned its lesson from the debacle of its suit against Microsoft several years ago, and has gotten over its penchant for attacking companies that imitate its look and feel in court.

Sun's also released a new (July 1998) version of the Beans Development Kit (BDK) 1.0 ons their main web site (not the Java Developer Connection). This release fixes a few bugs and adds support for InfoBus aware beans.

Finally, Sun's posted beta 1 of the Java Communications API (which was preceded by three early access releases) for Solaris and Windows on the Java Developer Connection. This API allows Java applications to talk to the serial and parallel ports.

Programmare in rete con Java cover Jackson Libri has published Java Network Programming in Italian (ISBN 88-256-1440-3, 65,000 lira).

The release dates for Macintosh Runtime for Java have slipped again. According to MacInTouch the new dates are

This means MRJ 2.1 will definitely not be part of MacOS 8.5 this fall.

Jon Meyer of the NYU Media Research Lab is studying how people draw using computers. He's written a simple Java drawing applet to conduct part of the study on the web. If you are interested in being a test subject (and assuming you know how to use simple vector-based drawing programs :-), please visit http://www.cat.nyu.edu/draw and follow the instructions.

Thursday, August 6, 1998
Sun and IBM have announced JavaOS for Business, a thin client, server based OS for terminal like applications such as hotel reservations or retail sales. It doesn't appear to actually be available yet (it seems mainly targeted at hardware OEMs), but it may be bundled with network computers from IBM and Sun in 1999. The information that jumped out at me from the press release was that it will apparently be possible to write pure Java device drivers for this OS. That sounds like a neat trick.

IDG's posted Pushing Web Sites with CDF, Chapter 10 of XML: Extensible Markup Language. Contrary to the credits on that page, this chapter was primarily written by Wanda Jane Phillips of Write Livelihood. amazon.com seems to have the entire book back in stock. Current position in the amazon bestseller list is 4,030.

Wednesday, August 5, 1998
Sun's posted the release version of the Java Smart Card API.

Tuesday, August 4, 1998
Sun's Java Embedded Server has been rechristened Project NanoServer. This is a small footprint server product for use in remote embedded devices. Sun is currently seeking private beta sites.

Monday, August 3, 1998
Sun's posted a new version of the JBUG debugger architecture including a sample debugger on the Java Developer Connection. JDK 1.2 beta 4 is required.

Sunday, August 2, 1998
Sun's posted version 0.99 of the Java 2D API specification and updated demo classes that work with JDK 1.2 beta 4.

Saturday, August 1, 1998
Clemens Lahme has released version 5.16 of JavaNCSS, a source measurement suite for Java, with assorted bug fixes.

You can also read the news from July, June or May if you like.


[ Cafe au Lait | Books | Trade Shows | Links | FAQ | Tutorial | User Groups ]

Copyright 1998 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified August 31, 1998