BT

Facilitating the spread of knowledge and innovation in professional software development

Contribute

Topics

Choose your language

InfoQ Homepage News Java 1.0 Turns 25

Java 1.0 Turns 25

This item in japanese

Lire ce contenu en français

Bookmarks

On January 23rd, 1996, Sun Microsystems published a press release announcing the availability of Java 1.0:

Palo Alto, CA - January 23, 1996 - JavaSoft, the newly-formed operating company of Sun Microsystems, Inc., today announced that the Java™ 1.0 programming environment is now available for download at http://java.sun.com. 

"Java's write-once-run-everywhere capability along with its easy accessibility have propelled the software and Internet communities to embrace it as the de facto standard for writing applications for complex networks," said Alan Baratz, JavaSoft's newly appointed president. "We're delighted to invite developers to download Java 1.0 immediately and start building the next killer application."

"Improving Java to create this strong 1.0 general release has been a great achievement for our team," said Ruth Hennigar, general manager of Java language and applications, JavaSoft. "Since our first alpha release to the web in March we have received a lot of developer feedback and have improved functionality and reliability. This release incorporates the components that software developers have told us they need -- the Java Applet Viewer for running and testing applets; the Java Compiler; a prototype debugger and the Java Virtual Machine to run Java-based programs. We've also included class libraries for graphics, audio, animation and networking."

Sun had released alpha versions of Java through 1995, including having its technology available in Netscape Navigator and Mosaic, but the release of the 1.0 version (followed by 1.0.1 and 1.0.2 shortly thereafter) marked the start of a journey which continues to this day. Oracle celebrated Java's 25th birthday of its alpha release last year.

The initial success and widespread availability of the up-and-coming internet helped bring Java to the masses, and the fact that the compiler and libraries were available for free was a big change from the availability of tools at that time. Open-source projects like gcc predated it by a decade, but most operating systems only had commercially available tools for building interactive graphical software. The fact that applets could be written, published to the internet, and then made available to run on a variety of different operating systems was unique at the time.

In the initial press release, Sun Microsystems said that Java 1.0 was available for Solaris, Windows 95 and Windows NT, and a release for macOS was promised by the end of the following year. When Apple and NeXT merged to create macOS, Java was a default install for the operating system, and the Objective-C runtime was bridged to Java to have JavaWebObjects, a Java-ised port of the Objective-C WebObjects stack. (The legacy of the Java WebObjects stack can still be seen today in some WebObjectApplications, or .woa extensions, on some of Apple's sites.) IBM promised to provide ports for OS/2 and Windows 3.1, and has been a Java licensee ever since.

Although Java has evolved over the years, the core of the JVM has maintained stability – to the point where applications compiled with Java 1.0 can still be run on modern JVMs, albeit much faster. The bytecode format has (largely) remained unchanged; instead, the evolution has introduced few bytecodes (e.g. invokedynamic) and additional attribute types (module-info) as time has progressed. Some, like generics, were introduced in a backwards compatible fashion in Java 1.2 requiring no changes, so that they could continue to run on older JVMs.

Sadly, JVMs were often used as a vector for security vulnerabilities and frequent updates to the JVMs in browsers were required to stay safe. As the popularity of other in-browser plugin types (like Flash, which we said goodbye to earlier this month), Java was relegated from the browser to the server, where it grew in popularity with the J2EE platform (now JakartaEE). In-browser technologies continue to be a vector for malware, except this time the JIT that is being targeted is the one executing JavaScript, whose name owes its existence to Java's early release into browsers but is otherwise unrelated.

Java has rarely been out of the top of the programming tables over the intervening period, trading places with C for the top two spots, and with Android's release using the Java source code (if not the name) for powering its Dalvik VM applications, looks set to stay with us for another decade. The continuation of C-like syntax and its adamant following of semi-colon-at-the-end-of-the-line may look dated, but at the time gave C developers an easy transition into the language. Unlike C programs compiled in 1996, Java applications still run -- and significantly faster, thanks to the evolution of 32-bit and then 64-bit JVMs and advanced garbage collectors like Shenandoah and ZGC.

Java's success in the embedded space -- which after all, was originally designed as a set-top-box programming language -- isn't nearly so visible. Although Java is present on Blu-Ray and the JavaCard specification in SIMs and PIN chips, it perhaps didn't set a revolution off in the IoT world. However, embedded Java is lucrative and one of the reasons for the Oracle purchase of Sun Microsystems, who continues to steward the language and the runtime in an open environment to this day, including the release of OpenJDK which brought GPL to the codebase (although Java was freely available, it wasn't open-source until after the acquisition).

Perhaps Java's lasting legacy is not just bringing object-orientation to internet-enabled browsers, but the JVM itself. As both Java (and for that matter, JavaScript) have shown, if you have a language where the runtime is processor agnostic (JVM bytecode, JavaScript source code, WASM) then an execution or translation engine can then execute that code regardless of platform. This, more than anything else, has allowed the hardware to evolve – from 32-bit to 64-bit, from PowerPC to ARM to RISC-V – and still not require any compiled code changes from the original author.

The JVM is no longer used by Java alone, but by other languages built on top of it such as Java-inspired derivatives like Kotlin and Scala, to non-Java languages like JRuby and Jython. Oracle's Truffle and GraalVM projects show how you can build a JVM on top of Java and optimise languages that wouldn't otherwise be able to take advantage of those run-time optimisations. And as Java the language evolves, introducing lightweight threads and records, those changes will move the JVM forward to support more exotic runtimes in the future.

Java and the JVM may be approaching middle-age, but they've got decades of use and improvements still to come.

What was the first version of Java that you used? Let us know in the comments below.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Wow!

    by Cameron Purdy,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    I started programming in Java with JDK version 1.02 in 1996. Never looked back.

    The language shows its age now, but it aged fairly gracefully (with a few glaring exceptions, of course), and the Java team continues to do great work.

  • Long way.....

    by Riaz Muhammad,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    I started using Java 1.2 onwards, started coding by using Ms Windows Notepad :)

  • More than 25 years ago!

    by Ted Young,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    I started using the Java 1.0 alpha and beta. Started teaching it that year to companies like Lucent and Lotus. They're gone, but Java continues on!

  • Java 1.1

    by Javier Paniza,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    I started with Java 1.1 in 1998, with JBuilder, RMI, Swing, etc. working in a police management application. Trying to promote inside my organization object-oriented databases (like POET) and ORMs (like JavaBlend).

  • Started with Java 1.2 in 1998

    by Alan Thompson,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Still love the JVM, via Clojure the past 8 years.

  • Still a great language

    by Fred Scuttle,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    I still have a CD (pre-DVD days) of the 1.0.4 release when the only supported platforms were Windows 95 and Solaris. I ran it on an IBM ThinkPad and a Sun SPARCStation 5. It's hard to convey the "magic" of compiling code on the Windows laptop then ftp'ing the file to the Sun and running it there. Finally a package which delivered on the promise of portability! It's still my language of choice all these years later.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.