Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Oracle per-employee Java pricing causes concern (infoworld.com)
50 points by msolujic on Jan 29, 2023 | hide | past | favorite | 70 comments



Full list: https://sdkman.io/jdks

By the way, highly recommend SDKman as a handy tool to install and manage different Java installs on your machine.


I wonder what happened with the Eclipse OpenJ9 project: https://www.eclipse.org/openj9/

It has build instructions on the site, but not pre-built binaries for download. In the site that you linked, however, it says that Semeru does use it under the hood.

I actually recall it being one of the options from AdoptOpenJDK instead of HotSpot: https://adoptopenjdk.net/releases.html?variant=openjdk8&jvmV...

But the Temurin releases from Adoptium no longer have that option, which is curious: https://adoptium.net/temurin/archive/

Oh well, it seemed like a cool project, like an attempt at adapting JDK for cloud workloads and smaller services, without going as far as GraalVM.


"AdoptOpenJDK up until now was producing OpenJDK binaries with both Hotspot and OpenJ9 VM's. With Adopt's move to Eclipse, legal restrictions prevent the new Eclipse Adoptium group from producing/releasing OpenJ9 based binaries. As a result, IBM will be producing OpenJ9 based binaries in 2 flavours, Open and Certified, both under the family name IBM Semeru Runtimes. Essentially the same binaries, released under different licenses."

Source: https://github.com/docker-library/official-images/pull/10666...


OpenJ9 has pre-built binaries through IBM Semeru Runtimes at https://developer.ibm.com/languages/java/semeru-runtimes/dow...

Also available on DockerHub at docker.io/ibm-semeru-runtimes: https://hub.docker.com/_/ibm-semeru-runtimes


I'm using openj9 in my personal project, if you're interested here's my dockerfile: https://github.com/openartcoded/backend/blob/main/Dockerfile

Also they don't provide binaries because of an agreement with oracle to have access to some validation tools if I remember correctly, thus you need to use IBM semeru


OpenJ9 already did PGO, JIT cache and AOT compilation years before GraalVM, as it is based on IBM's commercial JVM implementations for their platforms and used to be the JVM for WebSphere (before Liberty rewrite).

I guess it is a pity if they decide to no longer invest on it.


Been using Eclipse Temurin for a while, works as a perfect drop-in replacement anywhere the JRE used to be needed.


Always review Oracle license changes closely.

At Atlassian in 2008, I noticed that they had acquired a company called Coherence which made a distributed cache for the JVM. Confluence used it heavily for its clustered edition, but the original license allowed us to distribute (in inactive form) for free but pay the license fee only when we sold clustered.

Hidden in the license agreement, it said we’d have to pay for every copy _downloaded_ - the implication was this would include 100% of trials downloaded AND any customer who built confluence from source (all paying customers had source code access).

Fast forward - a mad month where we ripped that shit out for about 6 to 8 supported back versions.


What did you replace Coherence with?

Did you feel the loss of it much, or did it turn out you could/should have gotten rid of it earlier?


I think our caching needs were abstracted out, most confluences servers used escache and confluence clusters used coherence.


Oracle is a lawyer company not a software company. This is the peril of purchasing your software from lawyers.


This is only for the commercial version, just like one has various paying models for the other Java vendors.

Some companies like to have someone to refer to when their production server goes down instead of online forums.

Business as usual for the open source version, which 80% of the paid development, top of the game GC and JIT compiler, language improvements are anyway done by Oracle, with IBM/Red-Hat, Azul, SAP, Microsoft, Alibaba as main contributors besides Oracle.

> Users of OpenJDK builds from Oracle and users of free Oracle JDK builds are not impacted by the Java SE Universal Subscription


This is somewhat misleading given the history of java and oracles aggressive nature

This applies to java runetime client from Oracle. Which to most users is "java".

If something requires java most people used to be directed to install javase not openjdk

Today if any user of the business downloaded java se from Oracle it triggers and aggressive and often threatening sales process from Oracle

Given that Java SE was Java to most people I think it gives a false impression to say "This is only for the commercial version" even if technically correct


This is why many companies (including both my current job and pay employer) block the oracle download pages internally.


> This applies to java runetime client from Oracle. Which to most users is "java

You are late by a few years. There is no JRE anymore, you are supposed to either use a JDK (e.g. for development) or bundle a small, optimized version of the JDK specifically for your app (see jlink, jpackage for more information).


That is good for new development, but if you are doing new development i have to wonder about your sanity if you are choosing java in the first place.

I mainly support java apps that have not been developed in decades


> i have to wonder about your sanity if you are choosing java in the first place

On what basis do you say that?


Google and other search engines can (silencely) put OpenJDKs above javase in the result and we can advocate educators and textbook writers to recommend openjdk (at least point out the difference between the both JDKs) when teaching java to others


Sun used to charge for legacy JDKs and support as well.

The Java runtime (JRE) is dead since Java 9, you are supposed to create a custom one with jlink.


Well tell that to all the legacy enterprise gear I have to support from network switches, lpt printer servers, storage appliance's, etc


That is what Oracle is doing by asking for lots of green paper, time to move on or pay to keep using legacy stuff.


This is the second time in as many days that I've seen Microsoft listed as a contributor to Java, but my Google-fu doesn't turn up anything other than announcements that they are building a JVM, and a paper from 1999 about inefficiency in bytecode which led the to opposite of helping Java.

A question in good faith, what has Microsoft done recently to contribute to Java?


Microsoft is proud to have contributed the Windows on Arm port in 2020 as well as having made major contributions to the macOS M1 port.

https://www.microsoft.com/openjdk


Adding a link with slightly more details than a marketing one-liner, but thats interesting.

https://www.i-programmer.info/news/80-java/13854-microsoft-p...


Besides sibling comment, they are now a OpenJDK vendor since they bought jClarity.

https://devblogs.microsoft.com/java/


So their contributions to the JDK involve buying up someone else and making some proprietary extensions?

Have any of these changes made it upstream or adopted by anyone else?

[Edit] Sister comment points to Java on Arm contributions that Microsoft has done.

There is also JClarity tooling that has been Open Sourced. I would have to take a further look to confirm that this is the case rather than Open to Abandon that some organisations do. Which is still better than leave closed and abandon.


Yes, some of it lands on OpenJDK proper, just like every other JVM vendor or commercial Linux distribution for that matter.


I really love the economics behind Java and how Java is being run as a business that's also a core infrastructure. -- I'm saying this, sounding like a naive fanboy, in the hope that someone will point out the facts that I've missed, or the errors in my thinking.

The way I think about it, Java basically runs on a tax that's being levvied on bigcorps being bigcorps. It's not even really a strict commercial/noncommercial distinction, or an arbitrary line being drawn on any metric like profit, revenue, headcount, etc. It's managers covering their asses. It's compliance considerations that only become relevant when you have lawyers running the show. ...otherwise, I don't understand why anyone would ever pay for commercial Java support contracts.

Let's say you actually are a huge corporation, but you're more enlightened than a typical bigcorp. You might look at those millions that you're giving to Oracle and think to yourself: Hey, this is enough money to enable me to pay a whole department of programmers to look after my interests in the Java ecosystem in a more direct way than Oracle would if I gave that money to them... So, then: Why not do that? Java's open source nature and the OpenJDK process presumably allows you to do that. (Or am I missing something here?)

And at the end of the day, that tax on bigcorps ends up funding Java as an open source effort, with value trickling down to all those other Java users like hobbyists, private individuals, academics, startups (regardless of size and profitability) etc. who can't or won't pay for a piece of infrastructure like that.

This is markedly different from other commercial programming language ecosystems. Take Borland/Embarcadero for example, where they expect you to pay a rather steep price if you're using their tools, regardless of whether you can afford them.

Or take Microsoft, for example, where their whole programming language and tooling ecosystem only exists to support their platform serfdom, and they're giving a very rough deal to their developer-serfs. With Java, you as a developer are actually either the paying customer or an important business partner to Oracle who helps them get to paying customers. Not so with Microsoft. They can take paying customers for granted. They don't get more money if more Windows software gets sold to those same customers. (Don't know how much money they make through commissions on sales of Windows software through the Microsoft store, but I'm willing to bet it's dwarfed in comparison to what they make on Windows licensing). So they engage in trivial innovation, giving a face lift to their platform every few years, coming out with one half-baked GUI toolkit after another, which never reach maturity before being abandoned. That's a horrible developer experience, and horrible economics for their developer-serfs.

Another way that things can go wrong, but don't with Java: Where Java takes from the rich and gives to the poor, many other open source efforts have the problem that they end up taking from the poor and giving to the rich. -- See the debate about elastic search where you have a small open-core startup building something, and then Amazon coming along and charging customers for their repackaged version of the product, without passing any of those proceeds along to the creators of the software.

To make things even better: Take what I've written above and substitute "Open JDK consortium" for Oracle, because saying "Oracle" was actually an oversimplification. It's not a single monopolist at the center of all this, but if you don't like Oracle, you can get your support contract from other commercial (e.g. IBM) or non-commercial (e.g. Eclipse foundation) players.

What's not to like?


JDK 19 and JDK 17 binaries are free to use in production and free to redistribute, at no cost, under the Oracle No-Fee Terms and Conditions [1].

This license change concerns people who have a subscription service with Oracle.

[1] https://www.oracle.com/uk/java/technologies/downloads/#java1...


Oracle being Oracle - nothing to see here.


This seems a slow death in the long term to me.

1. Customers that balk at this cost will switch to other cheaper/free vendors.

2. Oracle imposes even more onerous costs to maintain revenue.

and repeat.

At some point either Oracle gives up, or they attempt to extract revenue from vendors as well. The latter will probably result in a some kind of fork.


The customer base is very large companies who find having someone to sue reassuring and are likely to be institutionally incapable of running their own fork of java. Seems fine to me.


Well there is also the fact that the openjdk codebase is huge and so even though it is quite well written and documented fixing a bug in the jdk (and especially a bug in hotspot) isn't easy. Although tbh i have no idea how the quality of support is with Oracle.


I worked for one business that had structured their company structure to reduce the costs of some revenue and employee count licenses. I doubt any one would bother for Java, but still if you need to lower costs, then just put your java division in a separate company.


tl;dr: Oracle now is going to charge you *per employee*, NOT per employee actually using Oracle Java SE (employee = full-time and part-time employees and agents, consultants, and contractors). Frankly I don't even know how that's legal but based on how many lawyers Oracle has, assume it is.


I would imagine it’s legal because you can charge however you want for most products. No-one is forced to buy it though, and the best solution to predatory pricing is not to buy the product.


Yep. And which is better for the customer can vary on the circumstances. I worked for a company that licensed its software both ways (depending on the customer), although as a disclaimer I was a software eng, not in sales.

One thing I'll caution: it's a mistake to think the per-user rate would necessarily be the same in both cases. The business tries to price its software based on value added. IIRC, in the rare cases that we offered customers the choice of pricing method, the final price was (estimated) to be roughly the same, with the per-user rate being the variable...

Disclaimer: I haven't read the original article and I don't have any opinion on what Oracle's doing in this specific case as a result.


It'll take a small amount of HR wrangling for the bigger customers to restructure their businesses to place the Java Developers in their own company that pays this license.


This is not about development unless 100% of that development is server side only with zero Java clients of any type

Even then I would not put it past oracle to make the claim all users of the company that accesses the server app needs a license


Serious question - do people still use Java to build client side anything?


Pure trash


Questions:

1. What are the implications for the open source or cleanroom JVMs?

2. What are the implications for JVM-based languages like Kotlin, Scala, Clojure, Groovy, etc.?

Speculation:

Even though, it doesn't apply to the OpenJDK, it still sends a signal that the JVM licensing/pricing terms may change in the future. Unlike other corporations developing PLs/runtimes, Oracle does derive their income from this activity.

It make sense to avoid potential licensing/prcing changes by migrating to the JVM to modern and/or less resource-hungry PLs.

This process already started in the Big Data infra space with projects like ScyllaDB and RedPanda.


OpenJDKs are totally free still aren't they? This is only for the Oracle flavour.


Actually, Oracle JDK are free for anyone. This only concerns people who have a Java SE Universal subscription.


Indeed, this doesn't affect most folks


This only for Oracle JDK. Oracle provides support for old versions of JDKs. So enterprises who have not updated their old software targeting old versions of JDK need to buy this support.

Cost of that support contract is going up.


Yeah Oracle has them in a bind as long as the cost to replace the java codebase is more expensive than what Oracle charges they will keep paying. Most of these are probably my guess old banking and accounting systems. I wonder if any US or other countries different departments pay for it as they could take years to move away from it. Oracle I feel is the company that behaves like a gangster as most of their tactics are similar.


This is just for Oracle's implementation of the JVM which has features and enterprise support capabilities that other implementations don't.

No company has or is ever forced to use it. And no one is going to replace their Java codebase because of this. They will simply swap for a different JVM like many of us did years ago.


At a certain point, Oracle can safely assume that everything that still hasn't migrated to a modern language will never migrate to a modern language


Which modern language, Go stuck in early 1990's language design, or Rust that still doesn't have a comparable Web story at enterprise level?

Kotlin that leeches on Java infrastructure for its existence? And papa Google is yet to fully rewrite Android in Kotlin/Native?

C# is an alternative, provided there is an implementation for the desired OS platform. Meadow is the only presence in Embedded without the capabilities from PTC, Aicas and microEJ.

...


Every language new or old will have cons. However, when the perceived con is financial (yes, I realize that OpenJDK isn’t affected, but as evident in the comments many people still don’t know that, and they will never know given all the choices); you’re going to lose a lot of future users.

The part I find interesting is how Java is slowly becoming like COBOL all due to a combination of bad marketing and terrible messaging, and a flawed monetization scheme that was obviously rushed with little thought for the long term.


> flawed monetization scheme

At this point it rather looks more like a "protection tax" than a flawed monetization scheme.


C# seems the obvious choice to me. One can probably compile Java to C# - it might be in the category of regex then fix compiler errors, so economically reasonable to do. Probably similar library coverage for the two ecosystems by now.

That lets one replace the dependency on Oracle, whose reputation is invariant, with Microsoft, who are known to be nice people who won't blow up your world to increase their profits.

Plus the legal team who liked contracts with Oracle can replace them with contracts with Microsoft. The developers who like Java are fairly likely to like C#, what with it being very nearly the same language.

[in case the subtext is somehow missed, I believe this will punt the problem down the road until Microsoft do something similarly expensive to you]


Microsoft is hardly much different, and contrary to Sun/Oracle once upon a time the gatekeeped .NET features behind different support levels on Visual Studio, like contracts, nowadays gone because obviously the adoption wasn't that great.

There are also some tooling features like code coverage, live testing or byte code rewriting tooling that require Visual Studio Enterprise licenses.

IKVM and J# were two ways of running Java code on .NET.


c++ for high level and C for lower level and library building.

bonus : you don't have to learn a new language every decade.


That ship has sailed in 2000…

Plus the winds are changing in security liability.


C++? You have to learn a new language every three years, with an argument for continually as the compilers update out of sync with each other


I'd say that at this point the problem isn't the language anymore which became perfectly fine but the culture of the devs using it...


That culture is the same regardless of the language.

The famous Design Patterns book is for enterprise projects based on Smalltalk and C++.

CORBA and DCOM were a thing a few years before Java was invented.

And so forth.


Not really no, you can't just ignore the culture context of languages.

Ruby projects are going to have a better testing coverage and culture in average than Python projects whereas in reality both languages could do the same.

Java overengineer culture is still present despite being non-existent in other languages like Go whereas in theory it could exist in both.

Nowadays you can do anything with any language, in practice the culture often goes in the way


Ruby is hardly a thing in enterprise computing, and until AI craziness, the only thing that Python mattered for enterprise shops was system administration instead of dealing with a mess of shell scripts and Perl.

Go culture has brought us YAML spaghetting and kubernetes madness at enterprise level.


There's a very large world outside the "entreprisy" companies you are used to let's say...


There is, however the subject here is enterprise culture, so lets not move goalposts.


I don't, I see the java type enterprise culture itself as a downside.


Modern language like what exactly.

Many of the features in modern Scala and Java don't exist in other languages.


Many of the features in modern Scala and Java don't exist in other languages.

I would appreciate if you could name them but I would understand if you didn’t have them handy to name. It’s unreasonable to expect you to know them off the top of your head.


more features != better

it just makes a language impossible to learn and use effectively

need a reasonable amount of useful features


At a certain point what used to be customer turnover becomes business turnover as businesses fail and newer ones succeed.


> What are the implications for the open source or cleanroom JVMs?

Nothing and nothing. Usual FUD posting about something that doesn’t matter to almost anyone.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: