Java Executive Summary (Preliminary)
Rayme Jernigan
Produced for the RTP Java User's Group
Updated: 1/16/96
Overview and Description
The Java programming language is an object-oriented language which has the familiarity of C++, but it's smaller, simpler, more robust, and more secure. The Java programming language was designed with a "clean sheet of paper." Many features of C and C++ have been omitted because they promote programming errors, are security risks, or add unnecessary complexity to the language. Memory management, for example is automatic; a garbage collection algorithm runs as a low-priority thread in the background. (For more on how the Java Language Differs from C and C++, see http://java.sun.com/progGuide/noMoreC/index.html)
Another difference between Java and C/C++ is that once you develop a Java program, it will run unmodified on any platform... MacOS, Win '95/NT, Solaris, whatever; so long as the Java Virtual Machine, also known as "the runtime," has been ported to that platform.
You can think of the Java runtime as kind of a universal software microprocessor that makes arbitrary platforms and operating systems always look the same to Java programs after they have been compiled into object code... even if the underlying platform's architecture and environment are very different.
The compiled Java program is said to contain "bytecodes" since most of the Java virtual machine opcodes are 8-bits in length. These bytecodes are collectively protected by special built-in security features so they may be passed across an unsecured network, have their integrity verified by the bytecode "verifier," and then be loaded and executed by the "runtime" (in a "Java-aware" web browser, for example).
The unique portability and security of Java has led web browser leader "Netscape" to incorporate the Java runtime and verifier into their World Wide Web browsers.
Soon anyone with releases of Netscape 2.0 or later will be able visit a web site which has Java "applets" on board, and run these applets using their browser platform CPU by just clicking on the screen.
For example, suppose you wanted to download a compressed, tar'ed, zipped, postscript document from somewhere on the web. Currently you would need to make sure that you had the correct version of the latest decompression and conversion utilities, and word processor... all carefully integrated into the correct version of your operating system. But if the needed applets were installed on the web site, the user could just click on the web page document link. The right applet could transparently load and display (for example) the requested document on your "Java-aware" browser-correctly and automatically.
The same principle can be extended to more complex Java software packages. Since Java supports dynamic binding, the data of interest can be loaded up front, and then the rest of the computer program can be cobbled together according to the user's choices "on-the-fly," without re-compiling the whole program. There is no "fragile superclass" problem in Java.
A CAD program may first load the CAD data file, for example, and then dynamically load and apply special visual effects such as rendering, lighting, rotation, and so forth as these features are requested by the user. Other examples may include financial analysis and transaction tools, multi-user games and gaming, virtual worlds, audio-visual "chat," telephony, wireless, Internet "shopping" and auctions. In short, since applets require no "advance purchase" applets are uniquely suited for application domains which may be linked to a web site, and visited spontaneously.
Some of the companies who have a monopoly based on their operating systems or microprocessor architecture may be made uncomfortable by this. Not only might users not care so much what their OSes and CPU are... they might be less interested in buying shrink-wrapped software... at least not as it's currently distributed. The desired capability may be simply available on the web, tied to the content or capability the user is interested in. Just point and click. Why buy the whole Swiss army knife when you only need a toothpick? And the toothpick may be free?
From the user's point of view, however, applets must be either verified as being from a safe source, or contained to prevent them from doing harm to the client platform. This safe-source verification is needed in addition to the bytecode verification currently employed by web browsers.
By default, applets are assumed to be hostile. Ways to know exactly where a particular applet comes from (as you do when you buy shrink-wrapped software) are on the way. But currently, "beta" applets that run on browsers are "contained." They may execute in the browser... they may load files from the server they came from, but that's all. They may not perform any other I/O, save that which takes place with the user... the keyboard and mouse, for example.
In addition to the web-traveling "applets," more conventional stand-alone applications may also be developed in Java. The Java language development team thinks Java will eventually replace C++ in this regard; both in the field, and perhaps as an instruction language for object-oriented programming as well.
A Java "application" (as opposed to an applet) is like any other full-blown shrink-wrap-type application you might install in your system. It does not require a browser or bytecode verification, and it may perform file I/O operations and open sockets on the net. You are presumed to know exactly where it came from... just like ordinary shrink-wrapped software.
A Java application also has the interesting property of being portable, without modification, to any platform which hosts the Java runtime. The "look-and-feel" of the application is consistent with other applications from that platform. Compiled C or C++ "native code" may be linked into stand-alone Java applications as well. (But note that these native code extensions will not be portable).
You may hear Java applications and applets referred to as "alpha," "pre-beta," or "beta." These refer to the version of Java runtime on which they were designed to execute. Beta applications and applets will not run on alpha versions of the runtime unless they are modified, and vice versa.
There were two public alpha releases of the Java programming language that I'm aware of: alpha2 and alpha3. These were followed by the pre-beta release, the 1.0 beta, and the current release-2.0 beta.
Sun froze the programming interface, or "API" beginning with the first beta release. Any Java code written to the Beta API will be compatible with future releases of Java, according to Sun. However, future releases may be improved or extend beyond the beta API. Macromedia and SGI are partnering with Sun to define a interactive "multimedia API" for a future release, for example.
Sun has developed and released its own free Java-aware web browser called "HotJava." HotJava was itself written in Java. It was developed for the alpha releases of the Java runtime. It does not currently work with the Beta code. Java-aware Netscape browsers do, however, and Sun plans a beta release of HotJava early in '96. There are still alpha applets on the web, so the current HotJava browser is still useful. And it does permit more flexibility in browser-local and net data access than does Netscape. But the alpha applets are quickly being replaced by beta versions.
Here are a few of the industry partnerships announced in 1995:
- Sun and Netscape have developed a new, Java-based open scripting language called "JavaScript." It will be aimed at non-programmers who want to create web pages that use Java applets.
- Microsoft has signed a letter of intent to license the Java source from Sun.
- Silicon Graphics and Macromedia will be working with Sun to develop common multimedia APIs and file formats for Java that integrate 3D and interactivity. (SGI is the flag-bearer for VRML.) Sun, Netscape and SGI have mutually endorsed VRML, Java, and JavaScript to promote standards for multimedia, 3D and interactivity on the Internet.
- Adobe has announced that it has licensed Java and that it will integrate Java into both its PageMill authoring tools, and Adobe Acrobat.
- Sybase announced its intention to license the Java technology for use with its databases and commercial tools.
- Oracle is making it's corporate market-directed "PowerBrowser" Java-aware. (http://www.oracle.com). Oracle is also developing a Java-based "Internet terminal." It will come with high-bandwidth I/O such as ATM on-board, and if you use your TV for the monitor, it will cost you around $500.
In addition to Oracle, several companies have announced, or leaked rumors about $200-$1000 Java-aware Internet terminals, AKA "Interterms" or "Internet PCs." Others include Sun (by Toshiba), IBM, and less known companies such as the WebBook Company, and Viewcall Europe Plc. of London.
As a general rule, these Java terminals will tend to have very thin OSes, and little or no local mass storage. Oracle's Larry Ellison was quoted in the December 4th Business Week as saying that he is going to put his 1Mb Java-based OS into the public domain in the Spring. The Internet terminals should begin to appear this Spring and Summer.
- IBM has announced that it has licensed Java, and will port it to OS/2, AIX, Windows 3.1, MVS and OS/400. The team is being lead by Mike Cowlishaw, creator of the REXX programming language. IBM is also incorporating Java into Lotus Notes. See: http://ncc.hursley.ibm.com/javainfo/
- LSI Logic is developing an "Internet on a Chip" (tm) which is reportedly ideal for running Java on Internet terminals and other embedded systems. The chip is based on the MIPS RISC microprocessor design. See: http://www.lsilogic.com/mediakit/unit3_1x.html
Performance
Considerable interest is beginning to develop in increasing the speed of Java. To date, performance (excluding native code) depends mainly on the type of host CPU, and to some extent programming skill.
The first increase on performance may come from Sun itself. Sun has announced that a "Just-In-Time" (JIT) compiler will be available for the runtime early in 1996. The JIT compiler will resolve all symbolic references in the applet just before runtime; currently they are resolved on first use during runtime. This and other optimizations, the Java development team says, will move Java from being about 20-30 times slower than C/C++ native code, to near dead-even. (I should note that in real applications and applets, Java's efficient language design and threading are considered to conceal this difference somewhat.)
There is also a group addressing real-time issues in Java. Many features of Java are designed to be simple and effective for general use, but may not be suitable for the more demanding real-time applications. Sun's "mark and sweep" garbage collection (GC) algorithm is a good example of this.
The Java Virtual Machine specification requires that garbage collection be used for memory management, but does not require that Sun's particular implementation be used. Accordingly, a group has been formed to specify real-time enhancements for GC and also other Java elements, and have released a draft "real-time API." See: http://kickapoo.catd.iastate.edu/index.html
Distributed Processing
Scripting Tools
- Sun and Macromedia are working together to incorporate support for Java applets in "Authorware" and "Director," and define multimedia class libraries for inclusion in future versions of Java. Macromedia also plans to build a new tool for publishing interactive multimedia information on high-bandwidth Internet networks. See: http://www.macromedia.com/Industry/Macro/Press/1995/web.definition.html
- As noted previously, Netscape has announced implementation of the open Java-based scripting language "JavaScript" (formerly "LiveScript"). According to Netscape: "JavaScript is an easy-to-use object scripting language designed for creating live on-line applications that link together objects and resources on both clients and servers. While Java is used by programmers to create new objects and applets, JavaScript is designed for use by HTML page authors and enterprise application developers to dynamically script the behavior of objects running on either the client or the server." See: http://home.netscape.com/newsref/pr/newsrelease67.html
- Metrowerks plans to support JavaScript as a part of it's "CodeWarrior" toolkit called "Wired," due out in May 1996 for "CodeWarrior 9."
RDBMS
- BulletProof Corporation has announced a Java ODBC engine called Mocha(tm). They say that with Mocha a Java applet can quickly retrieve data from any SQL database running on a Web server. BulletProof uses Mocha as part of it's "WallStreetWeb" service which updates quotes, charts and other market data from BulletProof.com's server, but Mocha is available for purchase by Java developers as well. See WallStreetWeb at http://www.bulletproof.com.
- Vincent Engineering is producing a suite of products to enable platform-independent applets to access Oracle V7 servers via a platform-specific gateway product. The gateway implements the Oracle Call Interface (OCI) to Oracle servers. See: http://www.algonet.se/~etoile/p1/index.html
- WebLogic is developing tools for implementing 2 and 3-tier RDBMS architectures with Java. See: http://weblogic.com/
VRML/Multimedia
- "DimensionX" (http://www.dimensionx.com/dnx/java.html) has several
multimedia products, including "Liquid Reality," "Iced Java," and "JAG."
- "Liquid Reality" is a browser for viewing, and a toolkit for creating dynamic, interactive VRML worlds that can be extended with the Java language. Liquid Reality is based upon Iced Java, AKA "Ice 3D," a 3D graphics package for use with Java(tm)-enabled browsers. There are two parts to Iced Java: a C library which implements low-level graphics primitives, and a set of Java(tm) classes which provide a portable interface to the C library.
- "JAG" (formerly known as JAM) is an authoring tool for creating animations in Java. It's a drag and drop tool that lets you create animated scenes with backrounds and soundtracks, sprites with different behaviors, drawn paths, etc.
- Macromedia has released "Shockwave" for their "Director" product. Director is a multimedia authoring environment for Macintosh and Windows. Shockwave for Director has two parts: The Shockwave plug-in for Web browsers like Netscape Navigator 2.0 which allows movies to be played seamlessly within the same window as the browser page, and "Afterburner," which compresses "Director" movies and makes them ready for uploading to an HTTP server, to be accessed by Internet users. The Macintosh Shockwave plug-in is not yet released, pending Netscape's efforts to make the MacOS Netscape browsers "Java-aware." Macromedia says maybe late Jauuary.
- Progressive Networks has an Internet broadcast/receive product called "RealAudio." With version 2.0 and a 28.8 Kbps or faster connection to the Internet, Progressive Networks claims you can get FM (mono) quality sound and music. RealAudio also enables content providers to produce Internet broadcasts, and in a scalable manner. They have provided access to the "Playback Engine API," so third parties may integrate RealAudio with Java to create interactive multimedia applications that include audio. See: http://www.realaudio.com/
Developer's Tools
- If you want to try your hand at writing Java code, the 2.0 Beta Java Developer's Kit (JDK) for Win '95/NT, and Solaris is available free from Sun Microsystems (http://java.sun.com/). The announced release date for Sun's MacOS JDK is early '96. 3rd party Java ports are said to be underway for platform/OSes including NeXTStep, LINUX, and even Amiga.
- More complete commercial Java language interactive development environments are coming soon, or here from Borland, Metroworks, Symantec, Natural Intelligence and Sun itself.
- Natural Intelligence has released "Roaster," which they say is the first interactive development environment for Java, and the first Java development environment of any kind for the MacOS. It includes a runtime environment for testing applets. Runs on the Power Mac under MacOS 7.5; the 680X0 version will follow. Applets only. Requires CD-ROM for installation. See http://www.natural.com/pages/products/roaster/flyer.html
- Symantec has released the "Espresso" graphical development environment for Java. It runs under Windows 95/NT and requires Symantec's C++ 7.2 development environment. Symantec bills Espresso as "the first set of graphical tools for the fast development of Java applets and applications that are used in the creation of dynamic Internet Web pages." Espresso provides a project management system, and editing and browsing tools. Symantec is offering a free Espresso update to owners of Symantec C++ 7.2. See: http://www.symantec.com/lit/dev/espressowp.html
- Borland is developing "Latte," a visual rapid application development (RAD) environment for creating Java applications. Borland says that they're building Latte entirely in Java so that it will run on any platform that supports the Java run-time. They plan to release Latte in stages over the next 18-months. It will feature a visual RAD environment for general purpose application development and Client/Server systems, and an integrated editor, debugger, project manager, and class browser. See: http://www.borland.com/Product/java/javanet.html
- Metroworks expects to ship "Wired," a Java plug-in for Metrowerks' CodeWarrior for Macintosh, on its May 1996 CodeWarrior 9 Gold CD-ROM. Wired will also provide support for the "JavaScript" scripting language. See: http://www.metrowerks.com/news/press/javascript.html
- Sun is working on a "Workshop for Java" for Solaris and Windows. Release date is in the first half of 1996. According to December issue of "SunWorld Online," the Java tools are themselves written entirely in Java and include: "Webster," "JADE," and the "Portfolio Manager."
- Webster is a WYSIWYG HTML editor and browser.
- JADE is the Java Application Development Environment, and includes a debugger and inspector.
- According to Sun, "a (Portfolio Manager) portfolio may be a collection of descriptions, demonstrations, documentation, source code, and other on-line materials. SunSoft's tools will enable designers to create the portfolios, and developers will be able to publish their designs via these portfolios. Web page creators will then be able to open a portfolio, select desired applets, and drag-and-drop the applets directly onto the HTML Web page editor." See: http://www.Sun.COM:80/951201/feature3/feature3.html
- There is a translator which can generate Java bytecodes from Ada '95 source (http://www.inmet.com/java.html). There are persistent rumors of translators for Scheme and Smalltalk as well.
Resources
Newsgroups
- alt.www.hotjava
- comp.lang.java
- triangle.java
The Web
Triangle Java Sites
Applets
Developer's Reference
Tutorials
Training
Books
Articles
Java Press Releases and Other Articles
General Java Indices
Yahoo