Sun has posted the actual the Hotspot virtual machine software for Windows 95, 98, and NT (not Solaris). This is the VM only, and does not include the class library, so you need to install it on top of an existing JDK 1.2 distribution, but it is a relatively quick 1.6MB download. It will run both server and client (GUI AWT) code, but is optimized for server (non-GUI) programs. This release is incompatible with the Java Plug-In and the QuickTime support in the Java Media Framework. It also doesn't work with old-style native methods (as opposed to JNI based native methods).
Sun is claiming their decision not to move forward with the PAS process in ISO (A decision I support, though for different reasons than Sun's) is because of recent changes to the ISO process that requires Sun to turn over maintenanace of the standard to the ISO. However, several people within JTC1 SC22, the ISO group responsible for programming language standards, have confirmed that this policy is nothing new, and that nothing has changed in this regard since Sun first started the PAS process. Microsoft has specifically denied Sun's allegations that Microsoft spent millions of dollars to chamge the rules of the process. (I think Sun is confusing the money Microsoft spent campaigning against approval of Sun's PAS submitter status a couple of years ago with some fictitious effort to change the rules.)
In related news, Ken Urquhart, manager of Java standardization at Sun, has given indications that JavaSoft president Alan Baratz's statements may not be the whole story. Sun may yet try to submit Java to the ISO through a non-JTC1 SC22 group like the ECMA. Nonetheless, however they do it, they're having obvious problems letting go of control.
Informix has released a new type 4 (pure Java) JDBC 2.0 driver. Java 1.2 is required, as is filling out the usual pointless form so Informix can spam you. Whatever happened to simple, anonymous ftp?
I've posted the first batch of errata for Java I/O.
With one exception (the
PrintableInputStream class in Chapter 6)
these are all pretty minor typos.
According to JavaSoft president Alan Baratz, Sun will not make Java an ISO standard. Apparently Sun is upset that, after months of hemming and hawing, the ISO decided not to rubber stamp Sun's submissions. In particular Sun is annoyed that the ISO wanted to control future modifications of the Java specification. IT Week has more details.
In my opinion, this is a good thing. The ISO now has the option to go forward and standardize Java (sans the trademarked name) at a more deliberate pace and with full and equal participation by all interested parties. This would be the same process used to standardize C, C++, Fortran, and other computer languages. It's a slow and painstaking process, but it works. Whether the ISO will do this without Sun's participation remains to be seen.
Sun is likely, however, to look for another standards body they can control. The ECMA is a likely candidate. I urge any standards body not to simply rubber stamp what Sun submits, but to force Sun to participate in a truly open process with participation by all interested parties. After all, the purpose of standards is not to anoint one proprietary technology as good and true, but to allow competing organizations like Microsoft, Sun, Hewlett Packard, Tower Technology, and Transvirtual to work together for the good of all their customers.
Greg Guerin's released MacBinary Toolkit for Java under the Artistic License. MacBinary is a transfer protocol intended to preserve a Mac file's: data fork, resource fork, catalog-info (creator, file-type, Finder flags, etc.) and so forth.
IBM's alphaWorks has released several new and updated products including:
Complexnumber class and true multidimensional array classes for
Complexand all of the primitive Java numeric types.
A few more are noted on Cafe con Leche today.
Sun is now saying that HotSpot for Windows and Solaris will be free for download. (They previously planned to charge for it.) However, despite a lot of vapor indicating otherwise, it is not yet (10:35 A.M. EDT, 4/27/1999) available to the general public.
Sun's posted version 0.86 of the Java Sound API and implementation for Solaris, Windows NT, Windows 95, and Windows 98 on the Java Developer Connection (registration required) with support for audio mixing, audio capture, MIDI sequencing and MIDI synthesis. This release adds better capture support and assorted bug fixes.
Paul Philion's posted a Macintosh version of the Java Servlet Development Kit 2.1 designed to work with MRJ 2.1.1 and the 2.1 SDK.
I found several Web sites that let me take screen shots of an applet making queries against a database. Thank to all who responded! Now I'm looking for two more things and I can finish this chapter:
Any suggestions? If so, please drop me a line with the URL.
I was a little surprised to see that in the last couple of days I've gotten two notes about proposals for major extensions to Java that received little or no press. Yet these didn't seem to get much attention elsewhere. I did a little digging and discovered that there are fifteen proposals for equally large changes to Java already in the works. Some of these changes seem like good ideas (a new preferences API). Some are probably very bad ideas (a Sun-controlled standard XML API) and some are of interest only to niche markets (a telephone switching API).There are currently five open Java Specification Requests (JSRs):
Twelve of the fifteen JSRs were submitted by Sun.
If it seems a little strange that all of this work is going on behind closed doors without significant public input or awareness of its existence, that's the Java Community Process at work. The JCP is Sun's new procedure for adding to Java with input from its major commercial partners. The "Community" is comprised of companies who are willing to pay Sun $2000-$5000 a year to belong, as well as Sun's Java commercial licensees who pay even more to license the JDK source code. This is very much a gated community designed to keep out the riff-raff like you and me and let Sun run things the way it sees fit. The process works like this:
To me this makes it pretty clear, that this process is not an open one. If you're still not convinced, ask yourself these questions:
When you actually read the fine print, what the Java Community Process says is that Sun agrees to let other companies contribute their time, money, and knowledge to help Sun do what it wants to do anyway. That may be intelligent business, but it's not an open, community based process for developing standards.
Sun has submitted a Java Specification Request (JSR) to add generic types (templates to C++ programmers) to Java. Comments are due by 9:00 a.m. (PDT) Monday, May 17, 1999.
I've updated the notes for Week 13, Printing, Cut, Copy, and Paste, and Future Directions of my Intro to Java programming class.
Borland's announced (but not shipped) JBuilder3. Current vapor schedule is that it will be available for Windows in May; on Solaris by December, and on Linux sometime after that. I'll believe it when I see it. There's supposed to be a whole batch of new features, though there's no word yet on whether or not the new release will fix some of the basic problems that rendered previous releases unusable. (Longtime readers of Cafe au Lait may recall that I couldn't even install JBuilder2 on my NT box without the installer hanging.).
Edward J. Zander, Sun's chief operating officer (COO), is taking over the position of president from Scott McNealy, who remains CEO and chairman. Zander also retains his position as COO. This probably won't change anything in terms of the day to day management at Sun. It looks like mostly a reshuffling of corporate nameplates.
If anybody knows of a Web site with a Java applet that allows unknown users connecting from the Internet to make SQL queries against a database, please drop me a line with the URL. I need a picture of something like that for my next book. The user queries could be generated through some GUI rather than raw SQL, but I do need the queries to go through an applet rather than a CGI and an HTML page. For instance, an applet that let you page through the records of a database one by one, or used some sort of data aware grid control would be nice. This doesn't absolutely have to be an applet; an application would work too, but it's simply easier to get a screen shot of an applet. I'm also looking for applets or applications that query multiple shopping sites to find the lowest price on an item like a book or a CD.
For the same book I'm thinking about distributed applications like distributed.net's efforts to crack RC5 and DES and setiathome's search for intelligent life in the universe. Both of these projects restrict their source code because they're worried about false negatives or positives being submitted by malicious users. (False negatives are actually a much bigger problem than false positives, because it's easy to check each purported positive with a known, good copy of the search program.) I'm trying to imagine a cryptographic protocol that would solve this, possibly using some sort of digital signature algorithm; i.e. one that could verify that a result was submitted by a particular binary implementation of the search program, and not a hacked binary version that was lying about what it had and had not found. Is anyone aware of any research in this area?
Sun's released version 1.0 of JavaHelp, a Swing based system for providing Help capabilities to Java programs. It requires Java 1.1 or later.
Sun has submitted a Java Specification Request (JSR) for an Image I/O Framework Specification. Comments are due by April 30. According to John Zimmerman of Sun:
In previous early access releases of the Java Advanced Imaging API, classes and interfaces have been supplied to allow the construction of image file I/O classes and image codecs, along with a number of example classes which are capable of reading and writing some common image file formats. These classes and interfaces have been provided with the warning that these they might change or be decommitted in future releases.
In the beta release of Java Advanced Imaging (now available for download at the Java Developer Connection web site), it has been decided to promote the image file I/O and codec classes and interfaces to a regular part of the JAI specification and, further, to extend these facilities so that they are usable by Java 2 platform programmers in general who are not otherwise using Java Advanced Imaging.
It is planned to release the final Java Advanced Imaging 1.0 specification and implementation in the summer of 1999. However, in order to obtain maximum feedback, the image I/O part of the specification will remain open for public review for an extended period of time after the 1.0 release. Therefore, programmers should expect that there will be changes in the current image I/O specification as a result of public comments. It is planned to finalize the image I/O part of the Java Advanced Imaging specification in October, 1999, subject to feedback received during the review process. Early access implementations of the image I/O specification will be made available.
Sun's posted an early access release of the Java Look and Feel Design Guidelines.
The Java Apache Project has released the open source Element Construction Set 1.0a1, a Java API for generating elements for various markup languages including HTML 4.0 and XML.
IBM's alphaWorks has released the Thread Bean Suite for multithreading applications using visual builder tools.
Apple's posted version 1.1 of the Apple Public Source License (APSL). This version makes the termination clauses a little clearer as to what it does and does not affect. Furthermore the clauses that discriminated against citizens of Libya, Iraq and other U.S. embargoed countries have been removed. Finally, though you only have to post notice of your modifications at a specified Apple URL if that URL is in fact available. Thus the license does not terminate in the event Apple goes out of business or reorganizes its Web site. This license still isn't perfect (there should be no termination clause at all) and it is significantly more restrictive than the license under which Apple got most of the stuff it's releasing under APSL, but it is getting better.
The first reader review of Java I/O has been posted on amazon.com. I've reproduced it below.
Apple's posted beta 7 of QuickTime for Java.
Patrick Beard's posted the 21st release of JShell, his Unix-like command line shell for Java programs.
IBM's alphaWorks has released two drag and drop JavaBeans (one for dragging and one for dropping).AlphaWorks has also updated several products including
Sun's posted a beta of the Java Advanced Imaging API (JAI) 1.0 for working with two dimensional bitmapped images (e.g. Photoshop type operations) on the Java Developer's Connection (registration required). A draft of the JAI programmers' guide is also available.
Sun's posted the first early access copy of version 1.3 of the Java Telephony API specification.
Gerard Ziemski released version 2.0.0 of his Mac port of GL4Java, a shared library that lets Java applications access OpenGL, to work with both Mesa and Apple OpenGL library.
Does anyone know an example of a Java application that connects to multiple book, CD, or other kinds of stores, searches for a particular item at the sites, and returns with a list of the various prices, preferably sorted? I would like a screen shot of such a program for my next O'Reilly book. If you know of one, please drop me an email. Note that I am not interested in a program where all the work is done on the server, and clients are only presented with HTML such as on c|net's shopper.com though that is the basic functionality I'm looking for. I tried searching at Gamelan, but their search engine seems to be broken lately.
Sun's posted version 2 of the Java Virtual Machine Specification. It's available both on paper and on Sun's Web site.
Sun's posted version 0.5 of the Java Media Framework (JMF) 2.0 specification. Version 2.0 of JMF will add support for audio and video capture, pluggable codecs, file saving, RTP broadcast and media data filters.
Sun's released version EA2b of the Java Wallet with assorted bug fixes for Solaris. (The Windows binary is unchanged.) This is available to registered members of the Java Developer Connection.
Sun is commencing work on the a Java Management Extensions API for network management. Participants include Bull, IBM, Powerware, Tibco and Xylan. According to the press release, "The Java Management extensions API will allow for standardized management of network resources written in the Java language including applications, services, and devices." I wonder if this will finally produce Java support for raw IP, NetBEUI, AppleTalk, IPX or other non-TCP/UDP protocols?
IBM's released their own version of the JDK 1.1.7 for Windows, which they're claiming is faster than other Windows Java environments.
IBM's alphaWorks has released the first version of their Math Library for Java, a library of fast math subroutines for Java. According to IBM:
This package includes a library of twelve, fast math function subroutines, written in the (standard) C programming language. Its main feature is the rounding mode of the functions. Each of the routines produces results that are always exactly equal to the accurate, infinite precision values of the corresponding functions, rounded to the nearest/even machine number. The importance of this is that all routines written for the same function with this standard are bit by bit compatible, even if the details of the algorithms differ. This enables, in a most natural way, to achieve the Java objective of 'develop once and run everywhere'.
The routines were produced for the IEEE 754 standard 'double' format, assuming round to the nearest rounding mode for the 'double' data type. The library is portable (provided the arithmetic and 'double' format are right!) and was tested on IBM RS/6000, IBM PC (Pentium) and SUN SPARC computers.
Questions 1. No. Of basis data types available is Java is .... a) 5 b) 3 c) 2 d) 0 2. Multiple inheritance in Java Program is implemented by a) interfaces b) Classes c) Packages d) user defined classes 3. What is the result of the following statements a) 12 >> 2; b) 10 <<1; c) 16 & 16;
If this is part of a test you're giving, drop me an email and I'll tell you which one of your students is trying to fool me into doing their homework for them. (I've had people send me their homework before, but this was the most blatant attempt I've ever seen. The student actually sent me the entire exam, and asked me to answer all the questions ASAP. If a student really has to cheat, I'd at least like to see them put out a little effort. :-) )
Sun's posted a list of Proposed Clarifications to Java 2 Platform API Specifications (i.e. the javadoc documentation for the class library). These will be incorporated into version 1.2.2 of the JDK. Comments are solicited until May 8.
These are changes to the documentation only, not to the
class library itself. I looked over the proposed changes
java.io, and those at least seemed reasonable
and fairly minor; for instance, declaring that a method could throw
NullPointerException, changing a version number,
or fixing a minor error.
If anything I think they didn't go far enough
in addressing some common areas of confusion
about those classes.
Sun's posted several new releases of various versions of the Java Development Kit (JDK, aka Java2 SDK) and Java Runtime Environment (JRE) to fix the recently discovered security hole. These include
If you're confused about what's what, the JDK includes a compiler and other development tools while the JRE only includes the runtime. The production releases add a just-in-time compiler, better threading, more efficient garbage collection, and other improvements over the reference implementations. 1.1.x releases support Java 1.1. 1.2.x releases support Java 1.2 (aka Java2).
John Wilson noted that Sun is still trying to use its license agreement to prevent people from benchmarking the software. Clause 2 states that "You may not publish or provide the results of any benchmark or comparison tests run on Software to any third party without the prior written consent of Sun." This is in distinct contrast to Sun's earlier promise to take that language out.
Let me repeat what I first stated here on December 10, 1998:
Sun is now claiming that the benchmark restriction in the JDK 1.2 license was a mistake, and that it should have been removed between the beta and the release version. Furthermore, they say they'll take it out soon. Nonetheless, I still claim that it should never have been in there in the first place, and that Sun's lawyers are congenitally over-aggressive in asserting rights they don't actually have.
I'd like to point out to any software companies who'll listen that license agreements of any kind are not required to publish and sell software. Normal, everyday copyright law provides fully adequate protection. I'd also like to point out to consumers that, with the notable exception of open source licenses like the GPL, the primary purpose of license agreements is to attempt to take away rights you would otherwise have.
Sun's also released version 1.2.1 of the Java Plugin for Windows with support for Java 1.2. This is now bundled with version 1.2.1 of the JRE for Windows.
Sun's also posted beta versions of the Java Plug-In 1.1.2 and 1.2 for Netscape on Solaris
Finally, Sun has officially released version 1.2 of the Java Cryptography Extension. There have been no API changes since the FCS release, which I'm really happy about because it means that Chapter 10 of Java I/O, Cryptographic Streams, is still accurate and up to date. As usual, this is only available in the U.S. and Canada, though various third party implementations are available worldwide.
Eric S. Raymond's posted version 4.1.0 of the Jargon file. I remember I first met Eric probably eight years ago now when he was selling the New Hacker's Dictionary out of the back of his car at the Trenton Computer Fair.
Be sure to scroll down to read my essay on "Why I Like Writing for O'Reilly".
Open source capitalists Cygnus Solutions have released libgcj, the runtime library for gcj, the Java front end to the egcs C++ compiler. This is a preliminary release that does not yet support the AWT.
Apple's posted Mac OS Runtime for Java 2.1.1 (Debug), a debugging version of MRJ 2.1.1 with MacsBug symbols and source code line numbers compiled in. This is slower than the normal MRJ and should be run without the JITC, so it's definitely for development and debugging use only.
Microsoft's posted the Microsoft Software Development Kit (SDK) for Java 3.2 as well as Build 3177 of the Microsoft Virtual Machine for X86 and Alpha. This release fixes assorted bugs.
A third party Swing MacOS Look and Feel for Swing 1.1.1 beta2 is now available. This differs from the standard Mac MacOS Look and Feel in being appearance manager savvy, putting the JMenuBar on top of the screen instead of the frame, and a working JFileChooser
The W3C's released version 2.0.2 of their reference Web server, Jigsaw. This release provides a new administration user interface written with Swing, digest authentication, an HTTP extension framework, and supports version 2.1 of the Java Servlet API.
IBM's alphaWorks has released VisualTestCoverage, a tool for determining testing adequacy for Java programs written in VisualAge for Java (which is required).
Sun's posted the second beta of Swing 1.1.1 on the Java Developer Connection (registration required).
Patrick Beard's released an updated version of the Java Communications API for Macintosh Runtime for Java 2.1. This release fixes a few bugs and expands the X10 functionality.
Jacob is a GPL'd object database and development environment partially written in Java. Version 0.35 is now available.
Sun's posted the first minor update of Java 2, JDK 1.2.1 (aka Java 2 SDK, Standard Edition, v 1.2.1) for Windows and Solaris. This release fixes the recently uncovered security bug in the JDK.
Patrick Beard's released an updated version of the Java Communications API for
Macintosh Runtime for Java 2.1.
X10.java, a very simple X10 controller using the
API. You can download it from:
X10 is a protocol used for controlling smart appliances and the like over a serial connection.
Version 1.0 of Jake, a free alternative GUI front end to the javac compiler, is now available. Currently it's only been tested on the Mac where it's most necessary).