Hacker News new | past | comments | ask | show | jobs | submit login
Oracle finally targets Java non-payers six years after plucking Sun (theregister.co.uk)
86 points by avalchev on Dec 16, 2016 | hide | past | favorite | 86 comments

For anyone on Windows willing to switch to OpenJDK, there are builds from

- Azul: http://www.azul.com/downloads/zulu/

- RedHat: https://developers.redhat.com/products/openjdk/overview/

- JetBrains: https://bintray.com/jetbrains/intellij-jdk

Apparently people keep forgetting who pays the majority of OpenJDK developers.

Or people simply want to avoid installing the proprietary software that is bundled with Oracle JDK. With the added benefit of running the same JDK on your dev machine and on your servers.

Which leads to the interesting situation that not all Java GUI applications run properly in GNU/Linux with OpenJDK, forcing companies like JetBrains to bundle their own fork for those not willing to install Oracle JVM or another third party vendor.

Because actually OpenJDK isn't 100% 1:1 to the closed source versions.

Font rendering is ugly on linux with both Oracle JDK and unpatched OpenJDK, or at least that was the case last time I tried to solve this issue manually.

If the OpenJDK developers would provide official builds of it, I could accept the argument.

So what do you think it would happen if Oracle just made OpenJDK offline, withdraw its developers or even nastier changes to OpenJDK (left to imagination)?

Which of those listed companies would try to keep OpenJDK alive and drive the JEPs?

There are many examples of projects maintained by a cooperative effort between multiple corporations.

Yet none of those companies cared enough for Java to save Sun, why would they do it then?

You can care as much as you want: If you don't have the money to save them, you will be of no use.

Which means most likely they will just look elsewhere.

RedHat is now supporting .NET, IBM made J9 modular for other languages like PHP, Ruby and Python, additionally improving Swift on GNU/Linux.

> Which of those listed companies would try to keep OpenJDK alive and drive the JEPs?

The question should rather be: Which of those listed companies will Oracle sue for doing so?

And who is that? IBM?

Oracle of course, so they can do whatever they feel like to OpenJDK.

I actually doubt, that given the interest other companies have shown regarding saving Sun assets, anyone would bother to pick up OpenJDK afterwards.

It's a shame Azul doesn't make their custom silicon anymore...

One thing Oracle doesn't seem to understand is that the whole "milk it till it's dry" strategy won't last forever.

Everything they touch is a catastrophe.

Oracle database? Bloated, absurdly expensive, and blown away by PostgreSQL. If you really want bulletproof reliability and absurd throughput then DB2 on a mainframe is a better choice.

Virtualbox? Bloated, slow, and much more buggy than VMware's offerings.

ERP software? Companies could save tons of money using a custom solution and even if you are so massive you need something like Oracle's ESP SAP's offering is infinitely better (and cheaper).

Java? Don't even get me started on Java...

Don't forget MySQL.

It's not that Oracle ruins properties, the same could be said of Microsoft over the years, but that they tastelessly ruin them.

Bundling the Ask Toolbar with Java is absolutely insulting. Not even Adobe stoops that low.

Hudson too...

And yet they bought java along with all of sun with the money they made doing just that.

Their strategy works.

They're not kind or well thought of in the dev community - have they ever been? They don't care.

They're interested in having enterprise decision makers on their side.

How real is this and what impact, if any, would this have on server apps that run on a JVM? There's tons of them, many of which bundle a copy of the JVM in the app itself. The latter is the suggested deployment model in containers (i.e. bundle all your dependencies).

Also, would using OpenJDK remove any "Get your ass sued by Oracle" risk or just defer it to a later date?

It seems like all the features that require a license are those that require launching the Oracle JVM with `-XX:+UnlockCommercialFeatures`. If you're not running with this flag enabled you should be fine. Note that those features are not in OpenJDK to begin with.

Absolutely. By all means bundle the JVM because it is a dependency, but do not bundle Oracle's JVM/jre in your container images.

I wrote a small post on the JRockit part of this approx 5 years ago if anybody is interested: http://www.spyfoos.com/blog/2011/07/28/oracle-java-7-and-com...

They are slowly strangling every single golden goose they got from Sun.

One interesting alternative to Java SE would be an OpenJDK JVM bundled with one or more of the superior alternatives to Java the language.

Such a package with Scala might make major inroads into the enterprise over time, with virtually no risk. Clojure is also a widely respected JVM language.

Richard Stallman was right about Java all along.

But something something something Aspergers something picking feet something

What evidence can you present that Richard Stallman has Aspergers?

I think he means in jest that people have constantly talked about Stallman's quirks that are honestly gross but shouldn't take away from what he says regarding technology.

His "quirks" are what harms his message. The same could be said for his long-time collaborator ESR who has some quirks that are beyond eating shit from his feet.

You want a spokesperson for something they better be worthy of respect. That's their primary function. It's not being a sage of truth.

People listen to those they respect, and his behaviour at times is so out of line that he spends more time destroying his credibility than communicating.

People sometimes are just thick, focusing on "quirks" instead of the content.

I get that people might disagree with his views, but why would they think he's not worthy of respect?

People don't like his views so they look to his quirks as proof that he is crazy and not merely misguided. Thus they can dismiss his followers as crazy too instead of having to own up to the fact that many of their colleagues worthy of respect believe in a world view fundamentally different from them.

The thing is that I don't see Stallman as the PR arm of FL/OSS. He's just a more notable contributor and advocate. And that doesn't always mean you get someone who's slick and sharp. Besides, you have Brendan Eich (despite my own issues with his politics, he's a damn good advocate for a free web) so it's not like Stallman is the end all be all of free software advocates.

> You want a spokesperson for something they better be worthy of respect.

You want people talking with the spokesperson be rather worthy of being treated respectfully by the spokesperson. People who put the medium (Stallman) above the message clearly aren't.

Exhibit A: Richard Stallman.

Why is this business model legal? I mean, suppose I give you a candy, wait for you to eat it then ask for payement aguing that it's obvious I'm not giving it for free. I'm sure there are forgotten laws protecting against such a business

Was Oracle present at the Trump building some days ago?

The one thing that truly matters is how they determine if your use is "embedded" or not. And they left the answer out of the FAQ:


>Frequently Asked Questions

>Is Java still free?

>The current version of Java - Java SE 8 - is free and available for redistribution for general purpose computing. Java SE continues to be available under the Oracle Binary Code License (BCL) free of charge. JRE use for embedded devices and other computing environments may require a license fee from Oracle. Read more about embedded use of Java SE or contact your local Oracle sales representative to obtain a license.

Also, this link has more info on specific features that cost money, aside from the embedded vs general purpose issue:


When exactly do I need to pay for Java? When I develop with JDK? When I download java from https://java.com and install with default settings? When I download the installer from https://java.com and distribute it alongside with my java programs?

I assume you have this question at this moment because of http://www.theregister.co.uk/2016/12/16/oracle_targets_java_... ? Good question...

No one really knows.

And this is why Oracle will lie at the side of SCO in the Bay Area graveyard.

Are there still any reasons why one should choose Java instead of .Net for new developments?

There are many, many more good libraries for Java in Maven Central than for .NET in Nuget. OS independence, if not quite platform independence, has informed much of those libraries' development.

Maven, love it or hate it, can do a staggering number of things, some of them very useful.

JAX-RS servers and clients are more robust IME on Java. (Just try to find a capable path+querystring builder for .NET.)

JDBC is still the gold standard for database connectivity.

Maven, where your build script is actually declarative XML that might or might not run. Maven, which spends a minute contacting random servers all over the world only to tell you there is a closing tag missing.

I still have a repository where Surefire (hah) refuses to run any tests. Impossible to debug. No, that pile won't be missed.

I will rather take Maven a full day over a few seconds with Gradle.

Since Gradle 3, Kotlin is the preferred language for writing build scripts and addins, rather than just Apache Groovy. If you use Kotlin instead of Java for your Android coding, you can use the same language for writing your build scripts as you do for your system code.

Curious what you're looking for in a path+querystring builder.

For ASP.NET controllers, I'd use attribute routing's URL generation: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers...

If you want a separate library for use outside of ASP.NET, and you want something more sophisticated than UriBuilder, there are several out there. I've used Superscribe in the past, but I just looked around and Flurl looks pretty neat: http://tmenier.github.io/Flurl/

I mean something like WebTarget: https://jersey.java.net/documentation/latest/client.html#d0e...

Haven't yet found the .NET equivalent to allow webtarget.path("foo").path("bar").query("hello", "yes") without making the user try to remember which URI query-part-escaping static method is appropriate.

Now that said, Flurl looks to have this pretty well covered, neat library!

> JDBC is still the gold standard for database connectivity.

The funny thing about that statement is that it's both true and insanely sad. JDBC is downright terrible but having a standard DB access layer has contributed a lot to Java's rise over the years.

One reason might be you have a team of Java developers.

I personally acknowledge that C# is a nicer language, but on Macs and Linux machines I have not had a great experience using it so far. I think if you try it today, you're basically an early adopter. If you're going to be an early adopter, the barn doors are wide open and I'm going to make serious consideration of Python, Haskell or Go.

Cross-platform .Net is not as good as cross-platform Java/JVM. It's getting better, but it's not there yet, and it's currently a very confusing mishmash of concepts and implementations. I suspect it is also difficult to find people who are deeply familiar with it, due to its recency.

The JVM ecosystem is vastly richer.

:) Probably because Java runs without problems on Windows and *IX platforms without major problems.

> Probably because Java runs without problems on Windows and IX platforms without major problems.

Probably because Java runs without problems on (Windows) and (IX platforms without major problems).

FTFY ;-)

I've been using Java on Linux in production for more than 7 years and have never had any problems associated with the OS choice.

There are operating systems with "major problems" out there. Linux isn't the only *IX.

The JVM: it is not only Java than runs on it, but Scala, Clojure, Ceylon, etc. Although many of these languages support other compilation targets (JavaScript, for example), the JVM is always their main and most powerful platform.

web programming in C# is not very good. Although I like C# as a language. I hate ASP.NET and the way it is built. Java has much better support for writing web applications and tons of open source libraries.

There are alternatives, I like this one: http://nancyfx.org/

I definitely love Nancy since it's basically Sinatra for C# (IIRC Nancy was inspired by Sinatra).

I wonder how it looks to courts that Oracle, thus far, has strategically singled out Google?

If Oracle does not show a concerted effort to protect their copyright from all who are "infringing", does that help delegitimize their case against Google?

There is so much negativity around Java that I wonder why anyone starting on their journey to becoming a programmer would want to learn it or work with it.

Because it is the only alternative to .NET for those of us working with enterprise customers.

Pick the list of Fortune 500 companies and many smaller ones that work with them, take out the few SV darlings, and they will either be using .NET or Java for the majority of their software.

Specially those whose commercial domain isn't at all related to software development.

C and C++ are usually around as library languages supporting those applications, or older applications, many of them still written in frameworks like MFC and such.

Even if Oracle would kill Java, which might happen with this kind of behavior, it will take a few generations to change to something else, specially since many people are unaware of the amount of hardware running embedded JVMs.

"There are only two kinds of languages: the ones people complain about and the ones nobody uses"

-- Bjarne Stroustrup [1], Creator of C++

[1] http://www.stroustrup.com/bs_faq.html#really-say-that

On a more serious note, Java's "reputation" is because:

- It was kind of the Golang of the 90s, where each class had a clear and limited purpose -- but it also meant you had to chain three or five classes together to get anything useful done [1]. For this and other reasons, like the longtime lack of type inference, earned it a reputation for verbosity.

- Most people don't have a clue how to design software, so they turned to outside resources for ideas. The 1994 book 'Design Patterns: Elements of Reusable Object-Oriented Software' [2] introduced a lot of useful models on how to translate mental models into object-oriented code. Some systems sprawled too much to where their implementations started to look like this model gone horribly wrong, while some developers merely ingested these ideas as a dogma and went on to produce code that was needlessly complex and poorly thought-out.

- At some point a bunch of licensed code originating from a venture of IBM was dumped into the JDK, hence the awful, miserable mess that was datetime and calendaring [3] before Joda-Time's Stephen Colebourne brought sanity to it with Java 8.

- Applets were punching above their weight, but the tech was poorly implemented, and, as history proved with it and other plugins like Flash, woefully insecure. Vulnerabilities in Java Applets, and early public confusion about Javascript vs. Java perpetuated the stereotype that Java itself was broken, insecure, or both.

- Consultancies are big business, and companies like IBM, Oracle, and SAP would happily sell shops on big application servers with monitoring and control panels and genuinely useful stuff, but also tons of cruft and bugs. These players emerged from the J2EE spec, which defined useful APIs but intentionally left the implementation unspecified, to cultivate a thriving community of alternative implementations. Predictably, this didn't go as hoped.

- People are obsessed with customizing their software, so vendor-delivered products were built with externalized configurations. Some people took this way too far, resulting in the familiar nightmare [4] where you had to configure mounds upon mounds of XML or .properties files to get an application running. It didn't help that this was actually the better way of getting it done in Java, with the Spring Framework, which was way more palatable to work with than the alternatives coming out of the J2EE spec.

- Rails shook the world at the end of 2005 and showed that the obsession with configuration was dumb [5]. Scrambling, both Spring and EJB received rewrites, so now Java devs @hardcoded things directly into the source code with @annotations (that are by the way "not code!", as if that distinction was at all relevant) and pretended they were enlightened.

- Sun had a vision for Java that they were never truly able to execute. In the process, they delivered a pretty solid language, eventually backed by a fantastic VM [6], that became popular because it was simple and scaled down well to okay and decent programmers -- not requiring a fleet of expensive rockstars. Oracle smelled money and bought it up, and despite additional innovation still being delivered by its staff, created wariness and distrust in the Java community by its corporate attitude.

[1] http://stackoverflow.com/questions/4716503/ [2] https://en.wikipedia.org/wiki/Design_Patterns [3] https://java.net/nonav/projects/jsr-310/lists/dev/archive/20... [4] http://thedailywtf.com/articles/Soft_Coding [5] https://news.ycombinator.com/item?id=12761705 [6] https://news.ycombinator.com/item?id=12160439

> There is so much negativity around Java that I wonder why anyone starting on their journey to becoming a programmer would want to learn it or work with it.

Because it is used in many CS curricula.

The negativity is well earned but companies like java because there are plenty of interchangeable worker bees available. Ditto libraries and ecosystem.

If you always want a job of some kind, for the next 30 years, it's safe to put it on your resume.

I wouldn't start with it. It has its charms, but they're mostly evident after you've been burned by the breakneck pace of change in other ecosystems. MJD's "Why I like Java" is probably the best article about it:


I'm a little more affirmative of it than he is. But yeah, I definitely would not begin my journey with this. Start with Python. Javascript, maybe.

It's the language of choice in most college programs. Though I won't be surprised if Javascript supplants it. Node.js feels like the new JVM. And it even has Clojure running on it.

Outside of HN, it's not very different than any other mainstream language, and I'm saying this as someone who doesn't work with Java at all.

That was probably my first "mainstream" language I learned as a teen. What kind of negativity do you mean?

Great news for Golang. Time to switch if you have not.

Go doesn't share any kind of similarity in purpose, methodology or audience with Java.

Or maybe you were being sarcastic?

C# is a much better drop-in replacement for Java.

It fits the generic GC performant network server designed for large teams in mind. A large segment in Java land.

I would say that Go is designed for small teams. Minimal compiler safety and generally weak code reuse (outside of code generation, which...no) under the guise of "just microservice all the things."

It is an okay analogue to Java 1.4. But the state of the art is significantly further along, and OpenJDK+Kotlin (or Scala, if you're adventurous) is a significantly more well-considered alternative that fits much better into a Java workflow (not that those Java workflows are in danger in the first place, given that they don't use any version of Java that is outside the license).

I am not sure I understand this: if I develop an application and distribute it using the installer that embeds the JVM, then I owe Oracle??

Alphabet will swallow Oracle to save it's Android.

Nice sci-fi scenario.

Sounds like good news for C++ developers?

I'm assuming C#/.net carries the same risk, and C/C++ does not.

.NET is under MIT license (https://github.com/Microsoft/dotnet/blob/master/LICENSE) and there's also a patent promise (https://msdn.microsoft.com/en-us/openspecifications/dn646766). There isn't an "enterprise .NET" version for sale. There are enterprise versions of Visual Studio, servers, etc., but nothing you could feasibly be "accidentally" using, and nothing that you have to use to do .NET dev.

What specific risk(s) are you thinking about?

Disclaimer: Microsoft employee, Nazgûl

Could change but I think Bill Gates originally tried making money selling a version of BASIC. Never made much money[1]. Since then Microsoft doesn't try to make money on dev tools. The dev tool business is there to support Microsoft's internal needs and to promote the Windows Platform.

[1] Bunch of companies tried selling compilers with 'drink your milk shake' licensing terms in the 80's. Developer resistance, Microsoft and Borland killed them off.

Dotnet is fully open source (mit licensed) for more than a year now. Let's just say I knew which of the two ecosystems to pick half a year ago for a new project. Java (as an ecosystem) is going down the drain as oracle has no clue what the dev world wants and where they are pivoting towards. Commercial frameworks and commercial languages are fast on their way out.

I doubt most enterprises would be willing to go back to C++.

C++ is as much as dead in the enterprise outside of a few niche concerns. It's just too hard to get right.

C# and Java are significantly more forgiving and for most use cases are perfectly adequate. Performance is a reasonable concern, but not the primary driver of language choice.

If you look at the sort of Java code some people churn out in an enterprise environment you'd be glad they weren't using C++ which has significantly more sharp edges. Throwing random exceptions isn't as bad as periodically segfaulting for no apparent reason.

The most recent example of this was Android Things.

Brillo was supposed to have key Android frameworks made available in C++, as explained at set of Linux Embedded talks.

Instead what happened was they brought in the Android Java frameworks and renamed it to Android Things.

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