21 comments

[ 3.2 ms ] story [ 31.0 ms ] thread
> it was used throughout my degree course, right up to the final year module on programming language design where our coursework assignment was to build a Scheme interpreter – in Java.

It sounds good.

(comment deleted)
It was ridiculous. They seriously wanted to rewrite everything in Java, including office and web browsers. It was 10 times worse than the recent “rewrite in Rust” mania and way more unrealistic.
Not that unrealistic. Google Docs is written in Java, for example.
You can understand Java hype in 1997 by understanding it as selling the Java of about 2007, but Java of 1997 couldn't deliver. Both because it was a young language, and had all the problems of a young language like poor library support for just about everything, and because the hardware in 1997 wasn't ready to deliver on the hype. Even in 1997 we weren't really looking for web pages to take 60 seconds to "start up", and that could easily happen for a "Java applet" on a home computer. (Or worse, if trying to load the applet pushed the system into swap. In this era 32MB-64MB would be normal amounts of RAM and the OS, other apps, and the browser have already eaten into that quite a bit before Java is trying to start up.) And then it was fairly likely to crash, either the applet itself, or the whole browser process.

And it was just about shoved down our throat. They paid to get it into schools. They paid for ads on TV that just vaguely said something about Java being good, because they didn't really have anything concrete they could point to yet. They paid to have really bad enterprise software written in it and then jammed into schools just to make sure we had a bad experience, like Rational Rose [1]... my memory may be failing me but I think it was implemented in Java at the time, because it was a Swing app (another Java thing shoved down our throats but not ready for prime time even by the standards of 1997). I was using it as an undergrad student in 1999 or so and I couldn't hardly click on a thing without crashing it. Not the best look for Java, though I'm sure it was not Java qua Java's fault.

Still, it fits the pattern I'm trying to show here of it being grotesquely hyped beyond its actual capabilities.

They shoved enough money at it that they did eventually fix it up, and the hardware caught up into the 200xs so it became a reasonable choice. Java isn't my favorite language and I still try to avoid it, but in 2025 that's just a taste and personal preference, not because I think it's completely useless. But I feel bad for anyone in the 1990s ordered by corporate mandate to write their servers in Java because the ads look cool or because Sun was paying them off. It must have been a nightmare.

In fact, you can understand the entire Dot Com era hype as selling the internet of about 2007 in 1997, or in some cases even 2017. It all happened, but it didn't all happen in the "year or two" that the stock valuations implied.

[1]: https://en.wikipedia.org/wiki/IBM_Rational_Rose

> Hype is about excitement; it’s about the tantalising possibility that if you jump on board at just the right time, you’ll become part of something unprecedented and maybe end up rich and famous along the way. In the late 90s and early 2000s, a lot of people did exactly that – and, yes, many of them used Java along the way, and a fair few of those got rich and famous by getting in right at the beginning, and getting out before anybody realised their idea was never going to work

Did you just look three years into the future and write about the GenAI hype?

I hate "hype" as a word. It's often used without justification to bash something that is new and popular.
The word "hype" is being used in 2 different ways.

definition #1 is about Java features : The original "Java is criminally underhyped" essay by Jackson Roberts is talking about "not over-hyped" in terms of Java's technical capabilities ... such as types and package manager, etc. E.g. Java has types which Javascript/Python do not and typing is a positive thing to help prevent errors -- therefore -- Java is "underhyped". The particular language capability not being used as much as the author thinks it should is the basis for defining what "hype" is.

definition #2 is about Java's marketplace effect: The "overhype" of Java in the 1990s was extrapolating and predicting Java's effect on the whole computing landscape. This type of "hype" is overestimating the benefits of Java and making bold proclamations. Examples:

- Java and JVM's WORA "Write Once Run Anywhere" will kill Microsoft's Evil Empire because it will render Windows irrelevant. (This didn't happen and MS Windows still has 70+% desktop market share today. 30 years later and Microsoft is one of the top 3 tech companies with a $3+ trillion dollar market cap while Sun Microsystems was acquired at a discount by Oracle.)

- Java will make lower level languages with manual memory allocation like C/C++ obsolete because CPUs are getting faster. Let the extra "unused" cpu cycles do automatic garbage collection in Java instead of C programmers manually managing memory with malloc()/free(). (C/C++ is still used today for games, and tight loops of machine learning libs underneath Python.)

- Java plugins will enable "rich" web experiences. (It turns out that Javascript and not Java plugins won the web. Java also didn't win on desktop apps. Javascript+Electron is more prevalent.)

That's the type of overhype that Java failed to deliver.

Same situation with today's AI. Some aspects of AI will absolutely be useful but some are making extravagant extrapolations (i.e. "AI LLM hype") that will not come true.

Java massacred COBOL and Ada. It was “the” web programming language for a while.
I suspect many today don't fuly appreciate the context of Java in the 1990s and how different the outlook was. A lot of what we take for granted now wasn't even imagined and even if it was, it wasn't certain. Java was hyuped on three fronts:

1. Desktop applications;

2. Server applications; and

3. Browser applications.

We had more platforms then. On the desktop front, Mac was in decline but still existed and was strong in certain niches. On the server front, there were many UNIX variants (eg Solaris, HP/UX, Digital Unix, etc). Cross-platform really was a big deal and much more relevant.

We still had desktop apps then. Being able to write a Swing app and run it "everywhere" was a big deal. Otherwise you wre writing things in thing slike Visual Basic (and thus Windows only) or I don't even know what Mac used at the time.

On the server, this was the very early days of Web servers. Netscape still existed and sold Web server software. The most common form of HTTP serving was CGI bin. These had a significant start up cost. There were other solutions like ISAPI/NSAPI. Java brought in servlets, which were persistent between requests. That was massive at the time.

It creates problems too but it's all tradeoffs.

And the last is Web applications. This was the newest area and had the most uncertain future. Java applets were pushed as a big deal and were ultimately displaced by Macromedia (then Adobe) Flash, which itself is now (thankfully) dead and we have Javascript applications. That future was far from certain in the 1990s.

I remember seeing demos of Java applets with animations and Microsoft doing the same thing with a movie player of all things.

Single page applications simply didn't exist yet. If you wanted that, and honestly nobody did, it was a Java applet or maybe a Flash app. The Web was still much more "document" oriented. Server a page, click something, server a page for that and so on.

I still wrote this form of Website in the 2000s and it could be incredibly fast. PHP5+MySQL and a load time sub-30ms. You could barely tell there was a server round trip at all.

So Java still exists but almost entirely in the server space. It's probably fallen away from other platforms like PHP, Python, Node.js, etc. But it absolutely changed the direction of tech. Java has left a lasting legacy.

I would go as far as saying that Java democratized the Internet. Prior to Java, every solution was commercial and proprietary.

I’ve hated Java since the day I first met it. That hatred has only grown as I’ve had to secure and optimize the jvm. If Java died today I would toast its demise and piss on its grave.
Missing from the article — which is funny, considering it's written from the perspective of a university student — is how deliberate Sun’s academic strategy was. In 1998 they launched the "Authorized Academic Java Campus" program, licensing Java tech to universities and setting up official training centers. Even before that, they were offering Java tools free to schools for teaching and research.

Combined with a massive branding push — Sun doubled its ad spend from 1995 to 1997 — Java ended up everywhere in CS education. By the late ’90s, first-year courses using Java weren’t a coincidence; they were the result of a planned, top-down push.

The fact that Java is still a go-to language for many companies, including technically sophisticated FAANGs like Google and Amazon, speaks to its robustness and utility. It’s a great language with staying power.
I will die on the hill that Java is inferior because it doesn’t have native support for unsigned numerics.
Java and the JVM are actually very good. The real problem to me is the Java-enterprise way of thinking which usually involves Spring IoC container with too much magic that makes it really difficult to understand. Get off Spring its a great platform.
I started out as a Java dev. I came in around Java 8, and I loved using the streams API (still do) - trying to stream through everything is just enormous fun. And I loved adding all sorts of Spring magic to make programs do all sorts of fun things. And I loved trying to use all sorts of package private protected stuff to define an intricate architecture, and make complex generic utilities to solve any 2 variations of an implementation.

And then, of course, I woke up and smelled the roses, and realized the mess I was making.

Today some of the most common development tools like pycharm, android studio and dbeaver are java programs. Your java programs will run on the most obscure platforms (aix, as400) as promised on the package. So despite all the hype and sales tactics they must have done something right.
It's not illuminating to make inferences from freemium marketing shadows or feature comparisons, particularly if you want lessons you can apply today.

Follow the money.

Initially it was from VM licenses, from netscape for browsers, Oracle for databases, and Borland for IDE's (Borland also wrote the first JIT). But except for databases, they were non-exclusive, and JavaSoft's free offerings undercut their licensees.

Then IBM cut a 10 year deal while Microsoft's license went to court for trying to add features to get lock in. At this time IBM created a free Eclipse to undercut the IDE market (Borland), with SWT as an alternative to Swing to capture developers for leverage.

But the big money was in enterprise, so J2EE licensing was much more airtight for Oracle, BEA, et al. That was a successful and long-lived franchise that also drove storage and compute revenues.

But people hated the complexity and compute resources and Google and Apple both decided to build rather than buy, so we got Spring, Swift, Go, and the whole native and container ecosystem.

You have to be aggressive and strict in building a monopoly, but you should be gentle and forgiving in maintaining it. Both Microsoft and AWS learned this lesson.

I remember this time well. For hacker types, Java was...not what we were looking for. But it checked a lot of boxes for the type of bland corporate development that makes up the majority of software development.

What Java really offered was allowing companies where software development is a cost-center minimize costs and reliably automate business processes with lower-skilled (and paid) software developers. Reliability is probably the number of one destroyer of value with software, and requires more development time, better developers, and the worst-case threat of downtime.

It "eliminated" most of the things that make software hard by simply getting rid of memory management as a problem. Doubling down on OOP and services everywhere let's companies divide and conquer software in ways that better align with business units. Many runtimes (VMs) had various types of sandboxing which boosted security in a very immature infosec world. Being slow (at the time) wasn't a problem as companies could just buy more hardware and still get the reliability that they needed.

Java has to be looked at as the entire ecosystem, and the TCO for an all Java world is generally lower than with an all C++ or C world, or an all Perl or Python world. Being the new COBOL is also why Java so rapidly took on "enterprise" cruft as a big part of its identity.

If you can get past all of that and are just looking for a nice, batteries included, language to work in, with a great cross-platformm highly performant, VM, Java is a great language. Its added a lot of nicer things in the last few years as its starting to shed a lot of dead weight that accumulated during the worst of the enterprise software ClassFactoryFactory years.

There are reasons it took off so well, and designing around the intended user community is one of them.

It was so hyped by Sun Microsystems that they even called their implementation of GNOME on Solaris the "Java Desktop System", even though there wasn't a single line of Java in it.