Hacker News new | past | comments | ask | show | jobs | submit login
Negotiations Failed: How Oracle Killed Java EE (headcrashing.wordpress.com)
460 points by omnibrain 53 days ago | hide | past | web | favorite | 516 comments

The Java ecosystem has been slowly dying for years, it's already the new Cobol at this stage.

I have the impression that a lot of the mindshare has switched to the Node and Javascript ecosystem, especially the frontend devs, via the Typescript / Angular path, which is a natural path to Java developers due to the comfort given by familiar concepts like static types, classes, etc.

When I used to do Java, I always found that Spring was a much better framework than Java EE, and have used it in most projects I've worked.

Oracle did not take a note from the Microsoft book and is really behaving that an evil corporate overlord.

It's clear at this stage that they bought Sun in order to slowly turn Java proprietary, and charge billions to the companies that are now fully Java-based for the next few decades.

I'm glad I saw the writing on the wall and switched, but the problem is that Java is still being taught a lot at schools, and school programs especially universities are hard to adapt and only change every 4-5 years or so.

Working in the JVM world I'm always surprised to hear that its dying, the JVM and Java moves faster forward than ever, Graal is about to go 1.0, a bunch of very interesting (very) low latency GCs are in the pipe (for example ZGC and Shenandoah) and lots of other interesting projects like Valhalla promise to keep the JVM relevant for the next 20 years. Oracle have made some moves to monetize on parts of its investment, but the situation is largely misrepresented.


- https://openjdk.java.net/projects/valhalla/

- https://www.graalvm.org

- https://wiki.openjdk.java.net/display/zgc/Main

- https://wiki.openjdk.java.net/display/shenandoah/Main

Too little too late, and I highly doubt that (5-year-old) Valhalla will deliver even one of the promised features (value types) in the next 3 years. Remember that the original plan was to have all Valhalla features in Java 10.

Java/JVM was in the ideal position to dominate the software world for the whole 21th century 15 years ago. Instead they did an IE6 and stagnated for so long that their competitors became plain better.

I'd say Java/JVM is now where IE was in 2008. Still massive majority market share, but in decline because people are switching to competitors. LLVM and webassembly are eating JVM's cake, and a multitude of languages like Kotlin, C#, Go, Rust and even Javascript and Python are chipping away at Java's market share.

> webassembly [is] eating JVM's cake

It's hard for me to take all the "Java is dying" threads seriously when they don't even seem to understand where Java plays. Webassembly? Really? That's a client-side tech, and 99.999% of Java devs ceded the browser battleground pre-9/11.

Java's bread and butter is EAI, ETL, and server-side business application development. Particularly with pieces requiring heavily distributed design. Node might pick away at some of the lowest-hanging fruit (e.g. JavaScript webdevs writing their own REST endpoints to fetch user settings from the database). But most of that crowd doesn't understand what the terms "EAI" or "ETL" even mean. Hell, most of that crowd has never had the experience of working for a company that turns a profit. The next major downturn will be interesting to watch...

And JavaScript is the only JVM-alternative to take seriously at all. Hype trains come and go for Rust, .NET Core, Go, etc. But they never really gain serious traction beyond a non-Java niche area, and/or devolve into endless arguments about generics or whatever.

I've seen zero actual encroachment into anything that earns me money for the past 10 years now, and at this point I'll probably be retired before I have to worry about it.

You're right that Java is entrenched in a lot of the enterprise space, but I think you're being quick to dismiss entrants that have gained steam in the last few years.

For example, Go is becoming the default in Kubernetes applications. It's eating tech companies that became large in the last few years like Lyft and Uber. It'll spread to other large tech companies like Amazon or IBM with ease. It will possibly get picked up by a significant number of universities for undergrad courses within a few years as well.

Seriously, people. K8s is a container orchestration system. Yes, it's written in Go, like Docker itself. DevOps tooling is a niche area where Go has been very successful. But k8s runs whatever you put into your Docker containers.

I've seen no indication of it changing which languages people choose to containerize (Node containers probably being way more common than Go ones). If anything, easy containerization negates one of Go's strongest selling points (i.e. standalone executables with no need for a runtime environment).

Exactly! In the enterprise world, there is a lot of Java and .NET code that isn’t going away for a while especially since K8s makes it easier to port to the cloud. In my enterprise, the only other language that comes close in usage numbers is Python, so I think a lot of enterprise folks will opt for that over Go.

As someone who works on Kubernetes in the enterprise I would agree - there’s lots of go, but it’s newer and organized around the teams who were early adopters. And even the early adopters have massive Java, .NET, and increasingly Node footprints.

However I think the rule of enterprise software is that it’s increasingly fragmented and diverse - that’s partially why Kubernetes and containers were so attractive because it allows operations to unify footprint on prem and have a path to cloud.

Nobody in an enterprise ever stopped using a piece of technology. It lives on forever (and public cloud just gives it new places to live).

Go is really not a language to recommend for enterprise business applications. It's a niche and will likely stay this way unless they add tons of features, which they have been reluctant to do. Because otherwise they'll end up with Java, or something very similar, is what you end up with.

> If anything, easy containerization negates one of Go's strongest selling points (i.e. standalone executables with no need for a runtime environment).

I don't know about that, I think that is still a strong selling point for Go, even in a containerized environment. Somewhere I saw a statistic that says over 90% of container images in the wild contain unpatched CVE vulnerabilities and (searching...) [1] here's an article that shows just how bad the problem is, according to this article in just the top 10 docker images, there are over 8000 known vulnerable paths.

The reason is probably not because those 10 products are simply nightmarish from a security perspective and expose the lions share of the vulnerabilities in their own code paths, it's because of unchecked dependencies. If someone took a tree shaker to those images and removed all of the unnecessary packages that aren't real dependencies, you see that number going down by probably about 30% if not more.

Even then, you're still seeing lots of potential issues caused by far-away dependencies that we do actually need, but don't really care about. There's something to be said for a development stack that is geared toward automatically pruning out packages you've included when the compiler can prove you're not even using them, and helping you reduce the scope and size of your external, far-away dependencies.

From an InfoSec perspective that's the biggest problem I see in containerized environments, (and true that just not using containers won't really make it much better) so correct me if I'm wrong, but I think that Go does all of that for us.

[1]: https://snyk.io/blog/top-ten-docker-images-contain-over-8000...

I'm working with customers now that are running Kubernetes to host Java applications and microservices. I'm not a huge fan of Java or the ecosystem, or the fact you can build a Kubernetes cluster using maven, but to claim its dying is outright absurd.

As a consultant, I see Java widespread. Every organization is either writing Java or running an application dependent on Java that is also mission/business critical. Most of my work happens on the backend, but we see lots of Java upstream with mobile apps, big data, ETL, etc...

Go is a good language for developing middleware and automation tools, but it's not, at any rate, a replacement for Object-Oriented languages. Java, C#, Python, Ruby etc are much more suited to business-oriented apps, data science and so on.

There are many uggly things on Go language that can be considered nice features for system programming. Even though, if you go too much on the low-level (such as for operating system, drivers or embedded devices) it's still a issue to use go instead of a more hardcore systems language such as C++ or C. It is, at most, a niche language today. And probably will stay this way unless it goes into a major redesign.

Better to talk about Rust or Kotlin, which are languages that have much more potential and can be a real threat to the dominant languages/platforms today. But right now, they are too unknown to be taken in consideration just as many other good languages that never came to be.

I've heard that attitude before. C++ developers working in finance around 2000. They were damn sure that no-one was going to switch to any other language because reasons.

I'm sure there's still a bunch of C++ devs working in finance, and making decent money, but I think the industry has moved on now.

The industry always moves on

HFT gigs I’ve looked at were all C++, some even Rust now - because they don’t want the risk of a long GC pause messing up a trade (which means Java, .NET, and Go are right-out).

You are right, but HFT is a tiny subset (headcount-wise) of the Financial industry.

Go uses tri-color mark-and-sweep gc that runs concurrently and its latency is extremely short compared to .net and java (probably still not short enough to be put in the critical path of hft order processor tho).

Edit: I'm also confident you can ensure Go’s gc doesn’t run when you don’t want it to so there’s that.

This may be true but conventional wisdom against using anything GC'ed for real-time applications (like HFT or aerospace stuff) is going to mean even if go's gc is good enough, using any gc'ed language for these apps is going to be extremely rare for years if not decades. Seems far more likely that rust will chisel away at that market than golang or any other gc'ed language.

Many HFT firms have used Java for ages. If you know what you’re doing you can avoid GC. Also, not everything needs to be realtime.

For arbitrage that must happen really fast, FPGAs is the way to go, and for complex code that needs to be rewritten often and quickly, Java is probably a better fit than C++.

There are active ongoing efforts to push wasm beyond the web client. Which makes perfect sense, since it could, in theory, deliver JVM's "compile once, run everywhere", but with a lot more flexibility for the languages on top.

As far as Node.js being the only JVM alternatively to take seriously, I don't even know what to say. There are lots of enterprises with mature .NET (not Core) business apps, doing all that very stuff that you list - EAI, ETL etc.

And then there's the evil implication of this aging, entrenched ecosystem. Companies who wrote their Java development process documentation did so in the 90's, with guidance from IBM or a "big 3," and now treat EVERY project in the business as though it was the same scale and complexity as the mainframe projects they were trying to supplement. Which is why it takes 6 months for me (on the FAST TRACK!) to even get a development environment for a simple CRUD web app designed to replace a terrible Excel spreadsheet with 5 users -- so that I can submit my feature list and test plan to review boards -- so that I can START writing my application.

No wonder it takes the IT group 2 years to write an application I can have in production in 3 months! I don't need a reverse proxy! I don't need redundancy! I don't need an encrypted file store! It's a shared, specialized to-do list application! I don't need the overhead of a global financial application running on Sun E10K's!

Nothing personal, but there are a lot of us out here who can't WAIT for people who have based their careers on "enterprise" Java to get out of the way already, and retire. When computers were as powerful as smart watches, we NEEDED all that distributed processing and faffing about with off-line data. Now? Not so much.

"Hype trains" Rust, .NET, Go, etc.? Maybe you, too, think that Rails is too "new" and "unproven" to use for anything.

carrja99 52 days ago [flagged]

LOL... someone woke up in the wrong side of the bed this morning.

Please don't do this here.

I'm one of those Node devs who've mostly worked for companies who have never made a profit, and I've recently been exploring Go, Java and C# (.NET Core) given I'm starting to work on more "serious" (or difficult) backends (distributed systems) and am hitting the limits of the language and ecosystem I know. Genuinely curious - why do you think I should give Java my attention over C# or Go?

ETL is the bread and butter of the company where I work and you can be sure Java is not even allowed near our systems.

We have thousands if not dozens of thousands of different data providers and it is mostly financial data.

Everything important is PHP and Python. It was Perl 10 years ago. There is some Java, but not in the ETL subsystems.

I didn't know Java had so much mindshare for ETL. Can you explain further?

The JVM, Java and Scala have a huge ecosystem with Hadoop, Spark, many databases, etcetera. Go to any company that does a lot of data-intensive processing, and chances are very likely it's powered by the JVM in at least some of the components.

I said LLVM and webassembly.

LLVM has replaced JVM as a programming language target bytecode in the last 10 years (except Kotlin no new JVM language). JVM has lost web to JS 20-15 years ago, and Webassembly is now taking shape as proper web bytecode.

I do not know what will be the most dominant language + bytecode in 25 years, but I would bet $10000 that it isn't Java and JVM.

> except Kotlin no new JVM language

Java's never going to be on the bleeding-edge of trendiness (thank goodness). But there have been fewer JVM-targeting alternative languages over the past decade, because Java itself started leaning in a functional direction. It became "good enough" to negate the purpose for most of them.

At any rate, counting compile targets for hobbyist toy languages is barely one step beyond measuring GitHub stars.

> I do not know what will be the most dominant language + bytecode in 25 years

In 25 years, I'll be long gone and you can have it. By then, the industry will be pushing to automate most programming jobs out of existence altogether, and you can be the old guard arguing against that.

> except Kotlin no new JVM language.

What about Clojure?

I 100% agree with you on Java. Some of these people who compare Java to Cobol have no idea. It’s hard for anyone to predict the future in tech but at this point Java is so widely used in the enterprise that it’s foolhardy to think that Java will disappear anytime soon.

To the credit of the Java community they keep the language relevant and refreshed.

I agree it’s always about 1-2 years behind other languages in terms of features but most enterprises don’t give a damn. Most enterprises just want to get work done. They don’t care about functional or OO.

In the last 3 years I have seen maybe 40% of developers use the latest features from java 8.

So while java might be slow to catch up that’s what it’s customers want.

Spring and Vert.x and similar Java frameworks will always keep Java relevant that it will be hard to ignore

> Some of these people who compare Java to Cobol have no idea....at this point Java is so widely used in the enterprise that it’s foolhardy to think that Java will disappear anytime soon.

Isn't that PART of the Java to Cobol comparison? Someone making that comparison wouldn't be saying that Java will disappear anytime soon.

COBOL is a valid comparison in terms of its space occupied and the verbosity the language is. The difference is cobol is really mainframe era and java is mini / unix era. Its client side except via phone is largely gone. But like cobol still in mainframe apps, so would be java. We do not see that gone as mini/unix not dying.

The windows server running java is an area I am not sure and not much encountered. But windows and Microsoft languages are the only competitor here.

I’ve actually seen enterprise apps on Java deployed on a Windows server in some big banks.

Client-side is gone on most languages. While there's still native mobile apps (and some rare desktop apps), the only language available on the client-side for the web is javascript or languages that can be transpiled to javascript. Flash, cold fusion and other stuff are gone. It's not a "Java is dead" thing.

Clojure doesn't fit in the original poster's "last 10 years" qualifier. It's older than that.

>LLVM has replaced JVM as a programming language target bytecode in the last 10 years (except Kotlin no new JVM language)

LLVM only emerged as a major target in the "last 10 years", so there's that.

And JVM already had so many major languages it didn't really have much space for others (Scala, Clojure, Groovy, and so on, including fully working clones of Ruby and Python).

Still, 4 major new languages: Scala, Clojure, Groovy, Kotlin -- all in the TIOBE top 50, from a single platform (which wasn't designed to be a language neutral target in the first place, it just happened because of it being too successful), plus the number one TIOBE index spot (Java), sounds like enough.

llvm is not a vm. describing llvm as something that is replacing the jvm doesn't really make sense.

mentioning javascript or webassembly is also a bit strange and would seem to demonstrate some kind of misunderstanding.

In 1995-2005, JVM was a serious competitor for the web, it's why JavaScript was named JavaScript.

javascript is named javascript for marketing purposes. your example is an almost stereotypical misunderstanding by people unfamiliar with java.

Those marketing purposes are exactly what dtech is referring to.

marketing purposes being a non-technical thing, which isn't a very meaningful support to saying something like js/webassembly are replacing the jvm.

Kotlin runs on JVM and needs Java to even bootstrap.

And the idea that corporate developers or even frankly any developers are switching to LLVM and WebAssembly en masse is pretty ridiculous.

Java as a language may be getting less developer interest but Scala, Clojure and Kotlin are as strong as ever.

Kotlin can run on the JVM and, Kotlin-on-the-JVM needs Java to even bootstrap. Also it seems that most of the interest for Kotlin comes from the JVM community and this aspect of the language. That is certainly the case for Android programmers any how. Backend JVM application server programmers use it as well.

However Kotlin can be targeted to other platforms as well. Kotlin can target JavaScript ( https://kotlinlang.org/docs/reference/js-overview.html ).

Also the Kotlin compiler has a LLVM based backend which can compile native binaries, without use of any VM ( https://kotlinlang.org/docs/reference/native-overview.html ).

My main non-JVM use of Kotlin is that when I want to use some arcane aspect of Kotlin, which I may not be too familiar with, I might write and test a small toy function on the command line using it and then copying it over to a big Android Kotlin project, as opposed to trying to work out how to use the arcane feature in the middle of a big Android project.

To me two things about Kotlin stand out over all other Java alternatives: 1) fantastic IDE support and 2) it does not add too much rope to hang oneself with (see re: Scala).

> I highly doubt that (5-year-old) Valhalla will deliver even one of the promised features (value types) in the next 3 years.

I'll gladly take that bet. People said the same about lambdas.

> Java/JVM was in the ideal position to dominate the software world for the whole 21th century 15 years ago. Instead they did an IE6 and stagnated for so long that their competitors became plain better.

I don't see any competitor coming anywhere near Java on technical merits. Not only is there no stagnation, but true breakthroughs -- in GC, compilation and observability are being made in Java and almost nowhere else in the past few years. That's not to say that Java doesn't have some glaring deficiencies but they're being addressed.

Are they being addressed too slowly? Perhaps, but that's something we've heard about Java for a long time, and the perception has usually turned out wrong. I think this is because such complaints are made by HN readership that misunderstand the industry's priorities.

> LLVM and webassembly are eating JVM's cake, and a multitude of languages like Kotlin, C#, Go, Rust and even Javascript and Python are chipping away at Java's market share.

Java's short-lived complete domination was a fluke. Now its market share represents a more normal one for a technological leader.

LLVM and webassembly are eating the JVM's cake only on HN. Kotlin shares well over 90% of its code with Java, and is a part of the Java ecosystem. C# has always been a big competitor, and Rust is not really chipping much away from Java as it's optimized for different domains. Go certainly took a bite, but its rise has stalled. This leaves JS and Python. JS has truly been a remarkable success due to its ubiquity on the browser, and it has taken a big bite out of all languages. Python is the most interesting one in the bunch. It is nowhere near as technologically advanced as Java, but it has other important benefits that many companies now care about.

> Too little too late, and I highly doubt that (5-year-old) Valhalla will deliver even one of the promised features (value types) in the next 3 years

I never understood the purpose of Valhalla. They should just introduce a 128-bit scalar type and call it a day. Nobody actually cares about automagically storing value types in HashMap — all interested parties (HFT, computing) have already written dedicated collection libraries for working with primitives, and those libraries have little in common with object-based ones.

> LLVM and webassembly are eating JVM's cake

pffft, hahahaha, no they don't.

JVM and LLVM don't even share same market niche — one is a feature-complete runtime, another is a "make-your-own-language" build kit. Webassembly? What webassembly?

> Nobody actually cares about automagically storing value types in HashMap

I agree. When I look at the allocation profiles and heaps of our Java applications (which I assume to be fairly typical Java enterprise applications) boxed types do not show up. What really matters are Strings, both in the heap and the allocations.

Kotlin is a JVM language, sold as a better Java, and the JVM is really the thing that is the echo system gathers around, not necessarily the language Java.

Other interesting languages you have on the JVM is Scala (multi-paradigm), Clojure (Lisp), EtaLang (Haskell)

- https://eta-lang.org

- https://www.scala-lang.org

- https://kotlinlang.org

- https://clojure.org

Notice how I separately addressed JVM and Java.

Java is already losing market share to JVM competitor languages.

JVM is in a stronger position than Java, but imagine a world were 15-10 years ago native compilation for JVM bytecode became available instead of 1 year ago. LLVM wouldn't have stood a chance.

Kotlin and Scala (I'm not too familiar with Clojure and others) are hedging their bets and making JS/Webassembly and LLVM versions.

LLVM would have been created even if free/open source, SubstrateVM style tech existed back then because LLVM was designed as a competitor to GCC for compiling C and C++. The JVM can run C/C++ code these days 'natively' (by JIT compiling LLVM bitcode using Sulong) but that's not what it was created to do.

Also bear in mind LLVM is not really a JVM competitor despite the name. LLVM is a toolkit for building compilers, primarily, C/C++ compilers. Other languages that targeted it have had to do a lot of work to change LLVM for that language. It's not actually a "VM" in the JVM or V8 sense, for instance, it doesn't provide a garbage collector and LLVM bitcode is neither platform neutral nor a stable format.

> Also bear in mind LLVM is not really a JVM competitor despite the name. LLVM is a toolkit for building compilers

It started out as a (lower-level than JVM) VM and evolved into what it is now, mainly because of Apple's requirements and funding.

JVM native compilation exists since 2000 for anyone willing to pay for it.

Do you mean with Excelsior JET? I tried to compile an application totaling 157MB in jars to native with it just now. After compiling for 2 hours it was still only 15% done. I had aggressive optimizations disabled.

Excelsior JET is only one among many.

As for your problem, it looks very strange to me, only similar to compiling C and C++ on underpowered hardware.

Which are the other ones? I know of GCJ, which is dead, and Graal, which from what I hear takes hours to compile small programs.

Most commercial JVMs for embedded development.

For example, PTC, Aicas, Aonix (now also owned by PTC), IBM RealTime WebSphere, some variants of J9, Android since version 5 (although it isn't technically a JVM), RobotVM, Codename ONE, GluonVM, IBM i JVM (uses OS/400 TIMI), JRockit.

I know for a fact that in the case of Clojure (and I assume the reasoning is similar for Kotlin and Scala) that targeting other ecosystems has nothing to do with "hedging", and everything to do with reaching other platforms and mediums.

>Java is already losing market share to JVM competitor languages.

Really, any examples? And not Go and Rust (down 30+ places in the TIOBE index compared to Java, and as insignificant as to not even exist in the global job market).

"LLVM and webassembly are eating JVM's cake,"

> webassembly is not eating any cake.

And C++ is still around, and one of the top choices, despite 25 years of other languages chipping away at it.

Java is very mature, it doesn't need to evolve a whole lot - and most everything you need is there.

Oracle is definitely a risk to this, but I don't see TS/JS/Node taking over.

Kotlin is a strategic choice by Google due to Oracle woes, otherwise it would be a very rare language: consider that it really hasn't made a big roar outside of Android, i.e. it's not really anywhere on server side.

Java isn't going anywhere for a while yet.

There will need to be some kind of tectonic shift for this to happen.

If Google or AWS for example fully embrace some new thing, that might do it - but I don't see what the candidate is.

Kotlin for JVM has a lot of potential. It takes a lot of the pointless busywork out of Java (this is Go's problem), yet the median hiring candidate can probably handle it (this is Scala's problem) and you don't sacrifice decades of library coverage.

Kotlin is nice, but to me it's mostly just 'different', not necessarily an 'advantage'.

Without Android adoption (and G did this specifically because of Oracle issues) I don't think anyone would really be using it. Outside of Android, it's not a big thing.

I've gone Java to Kotlin and back again simply because the few advantages to Kotlin just aren't worth the phase shift. FYI almost every single code example in Android has Kotlin and Java the same length. It's not really any shorter or more concise in the end.

I wish Kotlin well, and it's a great example of how the JVM can be leveraged.

The JVM is probably Java's greatest foundational asset, which is why Graal has such potential, if Oracle doesn't screw it up ...

> even Javascript and Python are chipping away at Java's market share.

The GraalVM team is working to run a bunch of stuff all together on the JVM

>webassembly are eating JVM's cake

Nobody seriously uses webassembly outside of the web broswer.

So much for hyperbole.

Reality is subjective and local.

At any given time most developers will neither have much real choice when it comes to technology nor have a longer term perspective. Hence most developers will stick to what they know and what organizational inertia seems the path of least resistance.

The comparison to COBOL is good for several reasons.

My first bit of production Java code was an applet that used cobra to talk with COBOL in the Java 1.0 days. When I'm bridging new languages to Java codebases, I always wonder if this is the 'new hotness' I'll be driving next.

Similar position. Corba overhead too high and we use a middleware to handle it. But the aim is to migrate away those we can from mainframe. And use java in lieu of cobol.


> Working in the JVM world I'm always surprised to hear that its dying

So how is this "JVM world" escaping the grip of Oracle? E.g. graalvm is directly Oracle's, or am I missing something? Specifically, what is preventing any of the Java-related things people use now (including those that you mention) to end like the OP is describing?

Asking as somebody outside of that world, but interested "how much it's worth considering" under the given circumstances (Oracle being Oracle, demanding a lot of money for everything Oracle's that some company could use, and owning a lot of that "world"). Where are the boundaries? What is safe and outside of reach of Oracle? E.g. what is safe for a small company to use?

Graal Community Edition is licensed under GPL, there is a Enterprise Edition that has additional features that is licensed differently.

OpenJDK does not need commercial licensing, but Oracle JDK which is built from OpenJDK needs.

Then there are plenty of other vendors to chose from if you absolutely does not want to interact with Oracle.

IBM and now Eclipse foundation OpenJ9 is a very interesting TCK compliant JVM, then you have Azul Systems that innovates a lot with Zulu/Zing.

GPL is not usable for any small company which doesn't want to publish its own sources.

What can be used only using BSD, MIT, Apache licenses? And what from the GPL-licensed products is safe to use to produce and sell own closed source products (e.g. where the exception to GPL exists for just linking the libraries or similar)?

Edit1: Long term dangers/costs of depending on the technologies that need commercial licenses like Oracle’s are also important.

Edit2: And additionally, just as an old example, once I’ve considered using Berkeley DB in the closed source product (before some of the current alternatives were available), and my interaction with Oracle proved that only a bigger corporation could fund that. For a library which was already open source, but owned by Oracle. It's not that I'm in the "I don't want to pay for anything" camp -- I'm simply having a perspective of a small player. And about small players Oracle couldn't care less. However, the significant changes very often come at that level of cheapness and overhead, most of technologies would be still not widely accepted otherwise.

You probably use Linux today, that fact does not require you to publish the source for your program running on Linux.

> GPL is not usable for any small company which doesn't want to publish its own sources.

Maybe I'm missing something, but AFAIU you have to publish any changes to that library, not your sources.

There are different levels of what’s allowed for different GPL based licenses. To use a library as a library with another license a GPL library exception has to exist for the library etc. If you step on only one of such mines your whole product has to be GPL-ed.

It the context of my questions here, and as an example, my guess is that I can't use graalvm to produce a binary which I can sell without either open sourcing everything I've made or paying too much to Oracle. But I don't know for sure and for each of the mentioned technologies, that's why I'm asking very specific questions.

> my guess is that I can't use graalvm to produce a binary which I can sell without either open sourcing everything I've made or paying too much to Oracle.

GraalVM CE is licensed under GPL 2 with Classpath exception (https://github.com/oracle/graal/blob/master/LICENSE), specifically so that binaries created with GraalVM (which contain the GraalVM runtime) don't fall under the GPL.

As far as I can tell the GPL in the Graal source repo includes a classpath exception. So the license wont affect a program distributed with it.

> So how is this "JVM world" escaping the grip of Oracle?

Why would you? What is the point of "escaping"? It is like asking, "how would Go world escape the grip of Google?" — no one cares to, because nobody asks Oracle for permission to make software for JVM.

Java EE has been in maintenance mode for a long time, but Spring and Dropwizard are alive and well despite that. Incidentally, Nginx Unit has recently implemented Servlet spec — a cornerstone of JEE! — but they are stuck at it's initial version, without asynchronous Servlet support. Maybe Oracle should give Nginx a couple of decades to catch up before drafting next JEE version...

Oracle seems hell-bent on undoing the openness around Java that SUN was allowing. What I'm reading between the lines of this report from the Oracle-Eclipse negotiations is that Oracle wants to roll back the world to a "thou shall not have a JVM besides mine" state with a hefty price tag on commercial usage of their VM.

I'm sorry, but as bad as Oracle's sales and legal behavior has been, I don't see how the evidence supports your claims.

Oracle has open sourced (or deprecated and removed) the remaining commercial elements in the JDK -- OpenJDK now is truly the complete open reference implementation of the JDK, JRE, and JVM.

OpenJDK is an open distribution and preinstalled on all major operating systems and is now the standard JVM for most developers. We even have open distributions of it e.g. Amazon Coretto.

GraalVM isn't even at version 1.0 so nothing at all to worry about.

> OpenJDK is an open distribution and preinstalled on all major operating systems

My understanding is that it is preinstalled on chrome os and android, but is not preinstalled for any major linux distribution, is a separate third-party download for windows and Mac, and is unavailable for iOS.

On the contrary, Linux distributions ship only OpenJDK.

They ship it, but it doesn't come pre-installed.

I don't see how this is an argument though, there is no Java in a standard desktop/server installation, but it's trivial to install if needed.

Since when OpenJDK is preinstalled on Windows?

... and iOS? And I’ve only done upgrades, but I don’t believe any JVM is preinstalled on MacOS.

Apple used to have its own JVM implementation.

As for iOS, RoboVM, Codename ONE, GluonVM are three possible AOT compilers to native code.

Apple's JVM was MRJ, the Macintosh Runtime for Java. It became obsolete around 2004, during the transition to Mac OS X.

Last time I used MacOS, it prompted me to install Java and then it did the install. I was in the Terminal, I am not sure what the interaction would look like if I had double-clicked a JAR file.

I believe Apple donated their customizations (Swing L&F, launcher code, etc.) to OpenJDK.

This is Apple's old build of Java 6, and is currently downloaded as needed for backward compatibility. Anything newer than that the third party is expected to bundle into their application.

Yes, Graal is the evolution of Maxime, started by Sun Research Labs, which Oracle kept alive.

All good alternatives to the JVM are commercial.

The free ones are generally just repackaging Oracle's work on the OpenJDK, with zero contribution to Java's research and respective improvements.

Hence why it is always ironic to see the crys to use OpenJDK and forget about Oracle.

Java the language is slightly different than JVM but nevertheless the future is not very bright IMO. So far there are a few areas Java/JVM still holds a strong position but if you take a look at GitHub trending there is little or now new blood coming in.

- Android. No serious competitor to Java yet (JVM is irrelevant). But the Google lawsuit could have some complication.

- Spring stuff. I won't be surprised if they will be replaced by golang and nodejs (along with react/angular/vue etc). Same path for RoR.

- Data processing: Spark stuff, PrestoDB, Flink, Kafka, Hive, HBase, Lucene/Elastic etc. Java/JVM is still dominant but golang could be a future contender. A few new application databases/KV stores are implemented in golang.

The problem for Java is that the last category is mostly services (instead of libraries/frameworks) so you can potentially use any language to work with them, and the industry probably won't create many jobs for building generic services especially in the cloud era. So having the dominance doesn't provide a lot of protection.

Golang, at least in its current incarnation, has no chance of replacing Java in its core use case - business processing. Golang is replacing infrastructure that used to be written in C, which makes sense considering that's what it was designed for.

It's weird that you put Spring and react/angular/vue in the same sentence, because there is no overlap in these problem domains.

Just take a look around to check out new enterprise MIS projects being implemented with a simple golang backend + reactjs etc frontend. The adoption of intereactive/responsive and single page web UI, and the more iterative development practices are certainly driving to a different direction compared to Spring (and RoR etc). I think the main force is from the frontend tech here and that is why you see them in the same sentence.

Perhaps Golang was designed to replace C, but from what I've seen that doesn't seem to be happening. Most converts seems to come from the other direction, from Python and server side Javascript.

There is a clear trend there to grow static features, and I think a lot of people ask themselves why they shouldn't go directly to a more traditionally compiled language then.

I can see you're a Go fan but I think .NETcore has potential to start eating away at Java in a big way if Microsoft continues on its current path. They can actually provide the enterprise level support big corps want.

.NET's developer community is in no place comparable Golang's or Javascript's. Just take a look at GitHub's trending page by programming languages. Javascript is really bad for server side applications, and yet here we are with so many nodejs server apps. It doesn't matter much how good a tech is. What matters more is what the new generation is using, which you can get a sense from the trending page on GitHub.

Lol, go has nowhere near the mind/marketshare of .net

Spring is really nice, but all the flexibility comes at a cost. Annotation meta-programming, runtime reflection, constructing proxies, classpath scanning... all contribute to a perception of slow JVM startup times that makes something like Spring Boot unsuitable for really small services or utilities.

I know there are other Java frameworks out there that are more optimized for smaller modular projects, but there's also the cost of operationalizing the JVM in something like Docker. Fat JAR deployments are relatively simple, but tuning the JVM isn't always straightforward. I'm definitely jealous of the simplicity of producing a single binary as your deployment artifact.

I've hated Java for years, but recently I think it has become usable again. I've looked at GoLang and Node, but I've kind of given up on them, too. GoLang I would consider for specific use cases. NodeJS just seems to insecure and "wild".

Was hoping that Kotlin+Spring could be a good alternative to GoLang for realtime apps, but haven't tried it yet.

> The Java ecosystem has been slowly dying for years, it's already the new Cobol at this stage.

This has been said for at least the last ten years. Not only is Java not dying, but companies like Apple and Facebook (not to mention Netflix, Amazon and Google, that are mostly or largely Java already) are increasing their investment in the platform. This was not the case when COBOL was 25.

The reason this is so is that Java is by far the most technologically advanced server-side platform in existence. It continuously presents technological breakthroughs in GC, compilation, and low-overhead profiling technology (just in the past few years it did so again in all three -- with ZGC, Graal and JFR). Node, Python, Go, Erlang -- none of them even come close. .NET comes closest, but even it is pretty far behind. This certainly wasn't the case when COBOL was 25.

It is true that for a short period of time, somewhere between 2002 and 2005, Java was more dominant than it is today, but that was a fluke. More "scripty" runtimes and languages were usually more successful in the "smallish software" domain. In 1995-2002 that was VB (and others); now it's Python. Also, there has been some decline in all languages due to the ubiquity of JavaScript on the browser, but Java did not suffer more than others. Maybe less so.

> Oracle did not take a note from the Microsoft book and is really behaving that an evil corporate overlord.

Oracle has just open sourced the entire JDK. Sun didn't do that and even .NET isn't entirely open source. I have no knowledge or involvement with EE, but it seems Oracle simply doesn't have faith in EE, and doesn't want the Java trademark associated with it.

(I work at Oracle on the JDK -- i.e. OpenJDK -- but speak only for myself)

I think you’ve drunk the kool-aid a little. Outside of complex projects headed by PhD compsci students (who used to learn java in uni but those courses are now taught in python) there isn’t a whole lot of mindshare going towards java these days. At least in regards to new FOSS projects.

I can say that my company’s use of java is diminishing rapidly over the last 5 years too.

No matter what you think of the technological advancement of the language and ecosystem- it matters not if people are not using it.

Oracle itself is a pariah, the vast majority of the tech industry avoid it.

Just checked, my old university only uses Python for machine learning lectures.

C++, Java, C#, Smalltalk, Prolog, Lisp, OCaml (used to be Caml Light), Haskell are still being taught.

Those doing compilers, also get to enjoy Algol, PL/I, COBOL, Fortran and a couple of other relevant languages in the history of computing.

> there isn’t a whole lot of mindshare going towards java these days. At least in regards to new FOSS projects.

No surprise, Java never had a great standing in FOSS. Most FOSS in java originates from companys or research-projects. Which might be the reason why many data science FOSS-tools these days are written in java. Sometimes I even get the impression apache foundation is now an oracle-sweatshop because of all the java-software they have now.

> No surprise, Java never had a great standing in FOSS. Most FOSS in java originates from companiess or research-projects.

Huh? You have Spring and Tomcat and Jetty and Spark and Netty and Kafka and Lucene and ElasticSearch, and even the Java language alone is consistently in the top three most popular languages on GitHub

> I think you’ve drunk the kool-aid a little.

Don't know about kool-aid, but if you want to do interesting platform work -- on GC, compilers or low-overhead observability -- you could work at Microsoft on .NET, at Google on V8 (or Go), or at Mozilla on WebAssembly, but the truly cutting-edge, state-of-the-art work is done at Oracle on the JDK (and related projects like Graal), which is where I get to lead a project to add delimited continuations and fibers to the JDK. We're obviously keeping an eye on what's going on elsewhere, and while there are certainly great ideas out there (some we're happy to steal, as others steal from us) we look around and don't see similar overall technological leadership elsewhere. That's not to say others won't pick up mindshare or win certain niches, or that technological leadership is the determining factor, but if you're in interested in the technology and familiar with what people are doing, it's hard to deny that Java is ahead of the pack in the technologies I mentioned.

> there isn’t a whole lot of mindshare going towards java these days. At least in regards to new FOSS projects.

I'm not sure your numbers are correct. Java is not the only game in town as it was for a few years in the first half of the naughts, but "not a whole lot of mindshare" seems to be detached from reality. I can't predict the future, but remember when PHP had all the mindshare and totally killed Java? Remember when Ruby did the same? I would like to think that Java still being the leading server-side platform after being killed over and over has something to do with its technical excellence, but I know that's being naive. Nevertheless, wishful thinking on the part of some don't make reality, and usual fluctuations don't make a trend. Eventually, something will kill Java -- or at least mark its true lasting decline -- but it doesn't seem like that something is here yet.

> I can say that my company’s use of java is diminishing rapidly over the last 5 years too.

That may well be, but we're also seeing companies switching to the Java platform in quite significant numbers, in cases where both performance and observability are top priorities. There seems to be movement inside the Java ecosystem (e.g. among the Java language, Kotlin, Clojure and Scala) or outside it (e.g. people switching among Ruby, Python, Node and Go), but we're not seeing any significant shift away (except on the client side, where the browser has won). There are also certain niches, like machine learning, where the Java platform isn't number one, but it's doing much better than Node, Go or .NET.

> Oracle itself is a pariah, the vast majority of the tech industry avoid it.

I'm not a manager, but I'm not sure the numbers support your conclusion. The opinions developers voice on HN and Reddit are... fickle, and don't necessarily reflect market shifts. In any event, the competition doesn't seem to be doing too hot in comparison, either. I can tell you that personally I'm certainly unhappy with some of the things Oracle has done, but at least it's not surveilling on the entire world, putting thousands of small businesses out of business, or getting kids into conspiracy theories. Also, my colleagues are so far not famous for outbursts of racism or misogyny. Now, I admit that’s not exactly high praise, but these days, as far as Big Tech is concerned, that’s not not nothing, either, and I’ll take annoying some other corporations over those any day.

Here is my fickle opinion of course not reflecting of market shifts.

A couple of years ago I was a CTO of a midsized company which had a misfortune of building the main product on top of Oracle DB (decision was made before me).

Oracle the database is great: performant, scalable. A bit pricey and complex to manage but that's acceptable for what it delivers.

Oracle the company is absolutely horrible. I've never dealt with anyone worse than Oracle.

Just one example: we accidentally turned on a feature called "advanced data guard" or some such. The DB is large and complex, it was a mistake of one of our DBAs who reported it right away. We never used the feature and could prove it with logs. Nevertheless Oracle demanded us to pay close to $1m or they would shut us down: we would have to discontinue the use of the entire DB in 30 days which was impossible.

The funny thing is that once ADG is turned on it cannot be turned off. Which made me suspect that such traps were created on purpose.

We ended up paying less than $1m but in the form of purchasing their cloud services. Apparently that's how their sales people get commissions.

But, dear Oracle, I've learned my lesson. Never again will I use anything with Oracle name on it. No company under my leadership will use anything Oracle. Not even Java or MySQL. Regardless of the technical merits of the product. Oracle is too underhanded to be trusted.

P.S. We also decided against using the Oracle cloud services we paid for. We just let it sit there, never even logged in. I'm sure Oracle reported their cloud as growing.

"Never again will I use anything with Oracle name on it. No company under my leadership will use anything Oracle. Not even Java or MySQL. Regardless of the technical merits of the product."

Now THAT is leadership I can follow. So, uh... you hiring?

I don't know about these things, but I totally believe you. There are much worse things than not forgiving a customer's mistake Oracle does that I do know about and very unhappy with, but the sad reality is that even with all that, it's still much better than Google, Facebook, Amazon, that are even more underhanded and even less trusted (perhaps not necessarily because some manager at Oracle is trying not to be as horrible as them, but because they would be as bad if they could but can't).

This is the most relevant comment for this article. I know a lot of companies who got bitten by license changes from Oracle like „You run one DB on your VMWare environment? Now you need to lic every cpu in this cluster although you just use one. Or you drop VMWare and use Oracle virtualization products, then you just have to pay for that one cpu“ My bet: Java lic not allowing you to use PostGres

>My bet: Java lic not allowing you to use PostGres

I've no love for Oracle, but the amount of uninformed comments here is scary.

> Oracle has just open sourced the entire JDK.

Last time I had to download a JDK I got a warning about having to pay a license for commercial use. I think most enterprises care more about the licensing arrangement than access to the source.

The licensing arrangement is that the JDK is now completely free (rather than mixed free/paid as before). Oracle offers the same JDK under two different license -- one, commercial, for those who wish to buy support, and one free. That page you went to described the two options, and referred you to the free one: http://jdk.java.net/

The "free one" that Oracle refer people to doesn't even come with a Windows installer, nor does it have any useful installation instructions. It's (presumably) intentionally unusable to all but the most persistent and technically knowledgeable users.

First of all, the JDK doesn't need an installer. You can put the JDK wherever you like and just point JAVA_HOME to it. Second, the JDK is intended only for developers. We have discontinued the "consumer/desktop JRE", and it is now the recommended practice for developers to create their own embedded runtimes with jlink. We are also working on a tool that would allow developers to package their applications with native OS installers [1]. Third, nearly all OpenJDK contributors are Oracle developers and use those builds, and AFAIK few if any OpenJDK contributors use any other build than the Oracle or the Red Hat ones, and so if you want anyone to fix your bug, you need to report it against an "official" build. Fourth, I don't know why you put free in scare quotes. It is the most popular OpenJDK distribution and it is as free as all the others (because all OpenJDK distributions are released under the same OpenJDK license; they are all owned by Oracle, BTW). Finally, you should ask yourself why is the OpenJ9 JDK, which makes up for maybe 1% of their downloads, featured so prominently on Adopt? Well, the reason is that IBM is in the habit of finding promising community projects, throwing some money and people at them, and taking control. This is what happened with Harmony, what happened with Adopt, and my guess is -- though I have no knowledge of the situation -- that this is precisely what Oracle feared would happen with Jakarta. This may not be bad if IBM also contributed something to OpenJDK, but they don't [2]. They just take over community projects, and then take credit for work that's done by Oracle. IBM taking control over Adopt is also why they lost their TCK license. The TCK is licensed freely for OpenJDK builds but requires payment for non-OpenJDK builds. IBM used Adopt to run the TCK on the OpenJ9 JDK -- not an OpenJDK build -- which put the entire project in violation of the TCK terms. So this entire story should be viewed in this light, as well: we have a company doing nearly all the work an an open source project and other companies wishing to exploit that.

You need to realize that Oracle does over 90% of the work on OpenJDK, and that the Java ecosystem is so big that there are other very large corporations who want to make money off of Java, and so are very interested in painting a picture of a "non-cooperating" Oracle. But again, whether you use a build from Amazon or Adopt, those source code behind those builds is developed and maintained by Oracle developers. And I can also tell you that we beg companies that build distributions or make money off of Java to contribute more, but so far, they can't or won't. We're happy to see Google starting to contribute more, and, of course, we've been cooperating with Red Hat for a long time. But so far, Amazon and IBM contribute little if at all (but I will say again that some companies cooperate nicely with Oracle -- Red Hat, SAP, and now it seems like Google may be starting to do that as well).

[1]: https://jdk.java.net/jpackage/

[2]: https://blogs.oracle.com/java-platform-group/building-jdk-11..., https://blogs.oracle.com/java-platform-group/the-arrival-of-...

>it is now the recommended practice for developers to create their own embedded runtimes with the JDK tooling

I am unfamiliar with Java and am curious: if I open 2 Java-based apps on my Mac or Windows box, how much of the memory devoted to Java tooling that would have been shared if the apps were built with the assumption that there is a JRE already installed locally is instead duplicated because of the recommended practice that you describe?

Very, very little. Applications don't include the whole JDK, but a custom runtime they create with a tool called jlink (I meant that JDK tools, i.e. jlink, are used to create the custom runtime, not that the runtime includes the JDK tools). That runtime is only a few tens of megabytes (smaller than the shared JRE, as only modules actually used by the application are included). Also, the decision to do away with the shared JRE was sort of forced by shifting consumer and OS behaviors, that no longer encourage shared runtimes, but are shifting to containers and app stores. So whether a shared runtime is technically a better approach or not is moot, because the entire software ecosystem is shifting away from them.

You simply need to download from https://adoptopenjdk.net/

This seems to be the correct answer - it appears to be the only way of getting a properly working install of OpenJDK for Windows that will actually be found by other apps - but it's a third-party build of OpenJDK backed by most of the major Java supporters except Oracle.

It is not backed by Oracle because OpenJDK's developers, who are 90% Oracle employees, do not use this build and don't know how it's made (it doesn't just use the OpenJDK make files), but rather the "official" OpenJDK build at http://jdk.java.net/. Similarly, the "official" OpenJDK build for 8 and 11 is the Red Hat one here (hosted on Adopt, but not an Adopt build): https://adoptopenjdk.net/upstream

These are the only builds for which you can directly report OpenJDK bugs against. This is not because of some conspiracy, but merely because most organizations that provide JDK builds (like Amazon or Adopt) do not contribute much or at all to OpenJDK -- usually because they don't have the resources or the knowledge, and in some cases because they don't want to.

Because the responsibility of developing and maintaining OpenJDK -- in all builds -- mostly falls to Oracle developers, we can only "back" builds we actually know. If you find a bug in Adopt, you'll need to report it to someone who will first reproduce it on an official build and only then report it to OpenJDK, where, in all likelihood, an Oracle developer will address it. Other companies can back Adopt because they're not the ones who maintain the project, anyway, so they bear little or no responsibility. We're happy that OpenJDK is doing so well, but with limited resources, we can only focus on builds that are under our control.

JavaScript is practically stone age compared to Java. Debugging is a nightmare. Documentation is a nightmare. Scaling is a nightmare. NPM is a thousand monkeys at a thousand typewriters.

Java suffers from having some 20-year old codebases because it's been so popular for so long but I can open up a 2004 WebLogic project in Eclipse or InteeliJ and trace everything it's doing. And modern Java has added all the nice features we expect a modern language to have. Java's slow demise is due to terrible PR and Oracle's endless insistence on JEE when every sane developer is using Spring.

I am not very sensitive to all those issues, I find the JS/CSS/HTML web stack a bit antiquated (virtual DOM, LOL), but very usable.

But the build toolstack is a pure, unadulterated nightmare. I used to think Maven's XML orgies, archetypes and learning curve were bad, but diving into Webpack et al was a new dimension of horror. This time based on JSON, though.

This. Sure JavaScript is moving fast .... but it's moving haphazardly.

CDI may be the golden egg though. I enjoy using it as an alternative to Spring, it's just unfortunate it comes with the deadweight of legacy ee.

Time for another sortie by the COBOL evangelism task force.

Java has been the new COBOL since its inception in the 1990s.

I programmed quite a bit in COBOL early in my career. It's an extremely efficient language for scanning records especially in an era when a large proportion of data was stored offline on mag tape. Most common business problems of the era could be expressed and solved effectively in COBOL, which is why it became so popular.

I programmed in both C++ and Smalltalk in the early 1990s, which were innovative but also difficult to use for large systems. Java hit a happy medium with its C++-like object syntax, built-in libraries, and virtual machine operation with garbage collection. Add in the network effects from wide adoption (leading to tools and libraries) and it became a huge hit.

Oracle seems to be going out of its way to submerge the language in confusion. But nobody should mistake this as a reflection on the inherent capabilities of Java or its fitness for use.

Edit: correct typo

I think you're missing the point of the COBOL comparison. It is not meant to imply that Java is similar to COBOL as languages go, or that it is as bad as COBOL, or even that COBOL is bad.

In fact, you described exactly why it is the new COBOL: because it is also an efficient and popular language for common business problems of our era, that is hugely popular, but mostly in "unexciting" places like large internal enterprise apps, out of sight for many. And just like COBOL, it will keep ticking on like that, probably forever.

How does one secure a COBOL gig today, and is the supply:demand ratio such to guarantee excellent compensation and working conditions?

Be patient, and talk to your local Alcor representative.


Please remember that such viewpoints tend to be very subjective and depend a lot on your environment.

Where I am (geographically, company wise and ecosystem) Java and the Java ecosystem are very much thriving.

I wouldn't say that for Java EE.

That's true for me as well. There are a few select components from EE that I see but other than that it's of no relevance for me either.

Spring is compliant with and reliant on many of the JavaEE specifications - JDBC, Servlet, JAX-RS, etc. It provides DI that is not JavaEEs CDI.

I'd consider Spring as more of a non-JavaEE application server. Pick either Spring or Wildfly/Glassfish/Websphere/etc and you're either using part of the JavaEE specification with the former or the full specification with the latter.

Avoiding JavaEE for micro-services requires moving to something like DropWizard. Instead of a 200MB application server you end up with a 20MB application. Unfortunately, running that application in a Docker container will spin up a 180MB JVM. So the main reason we're moving away from JavaEE is actually more related to our move to container orchestration and that was originally driven by our adoption of micro-services. If you write a micro-service with a single end-point why should it use 500MB of memory?

>The Java ecosystem has been slowly dying for years, it's already the new Cobol at this stage.

Not in any industry I know.

How can a languages and its ecosystem that is being used actively in many projects within ALL Fortune Global 500 company and most Fortune Global 2000 be dying?

When people say Ruby is dying, it would be more accurate to say they are not growing or they are shrinking. But given the size of Ruby marketshare of less than say ~2%. I would not really disagree with their notion.

But Java? I mean even from a Web Development prospective, given you mention Node, JS and Spring Framework, it is Far from dead.

And this is speaking as someone who likes Ruby and dislike Java.

Java is not even close to be pronounced dead and it’s still the best ecosystem and platform on the market.

Java is much closer to C++ than COBOL. COBOL has been massively obsolete for decades. Java has a lot of historical cruft but the basic syntax is still somewhat modern, mostly based off of C++ and agruable better.

Like C++, it's modern features are being slowly added. There's a huge difference between Java 8 and 11, in performance and features. Innovation is hardly dead.

Java EE and Spring are both terrible. I recommend trying some of the newer frameworks out there to see how much nicer things have become. DropWizard is my favorite right now.

I'm no Oracle fan, but Java is more "open" in many ways than it has been since the beginning. It wasn't till a few years ago we had a feature-complete high performance OSS implementation as the standard.

Oracle will try to ruin it, but the GPL JDK and history of projects being forked away from them makes it fairly safe. It's not in the interest of any Java user to have more than one standard.

IMO Java isn't going anywhere. It's been top 3 most popular language for over a decade. JS is somewhat promising but will never match Java in performance and multi-threading support due to core design decisions. Go is too verbose to get industry buyin to replace Java in most use cases. WASM is promising in the far future but it will take years to have a full browser and server ABI. The only real contenter to replace Java is C# and so far it's not getting much traction.

If anything killed Java it would be C#. Value types, no type Erasure, unsafe code and some native vector support. But it hasn't and probably won't ever dethrone Java. Java has a combination of decent features and an insanely huge amount of library support that makes it the default language of many companies.

Why do you think Java EE is terrible?

Recently started working on Typescript project and it looks to me like java with really poor tooling, C++ like compilation times and huge mess in libraries (i.e. how to determine which version of @types package I need). I think that Typescript is really step back from java.

Nothing wrong with being the new COBOL. We need a new COBOL is Java is pretty good for that.

At least it would be if Oracle wasn't trying to squeeze it dry.

As a Delphi developer this is the first time I heard about Java is dying, and in a reply the other one said that some is saying so for over a decade :D

And I think Java is more alive then Delphi, at least no one is setting up a site like http://www.isdelphidead.com/ :D

On the contrary! They are likely very aware of Microsoft's strategy and probably regard it as being too soft. They intend to milk their technology to the last drop.

You and I may regard it as evil, but it's a perfectly valid strategy. Perhaps it's more common outside IT? It's the brutally honest business strategy.

I can sort of appreciate that they don't play around. Perhaps not my first choice of technology, but you certainly know where you have them.

I would not go as far to say it's dying but it's heavily slowing down for sure. First because of the big move out of the "entreprise" software and secondly because of Oracle legal team. It's definitely due to the licensing that Android is switching to Kotlin for example.

a) Java/JVM hasn't moved out of the enterprise space at all. Not sure where you got that idea.

b) Android isn't switching to Kotlin because of licensing since it is a JVM language after all. It's purely because it is a much better language than Java and has great tooling courtesy of Jetbrains.

> a) Java/JVM hasn't moved out of the enterprise space at all. Not sure where you got that idea.

It's the opposite, it's that old school entreprise type software & frameworks are getting less used.

> b) Android isn't switching to Kotlin because of licensing since it is a JVM language after all. It's purely because it is a much better language than Java and has great tooling courtesy of Jetbrains.

I think it's a mix of both, getting sued by Oracle probably did not help.

The stack overflow survey is a good source of info on this. Java is the 5th, but HTML/CSS is 2nd and SQl is 3rd.

The only languages that are used more currently are Python and Javascript.


Except that Kotlin still lags behind Java compiler speed and it is heavily dependent on Java libraries.

Compiler speed is a fantastic tradeoff. I'm made of meat that runs at maybe 0.0001 MHz after coffee, so I want to offload anything I can to the compiler!

I rather bet in platform languages, without extra layers to debug, FFI and additional tooling not available to all IDEs for the respective platform.

That's a very sensible standpoint.

All of these are technical issues which will be solved by Google eventually, I'm not worrying much about that, they definitely have the resources to make it work.

Kotlin is owned by JetBrains not Google.

And there is Kotlin-Native but the likelihood of JetBrains reimplementing the entire JVM SDK is pretty slim. Not to mention all of the common third party libraries e.g. Guava, HTTPClient.

> Kotlin is owned by JetBrains not Google.

Yes but there's a lot of efforts from Google to support the language as well since now it's the new Android language.

Android supports Java, Kotlin and C++.

Kotlin is just one option more, and the tooling is still not mature as Java.

Specially in compile speed, incremental compilation, debugging, speed in type completion, FFI.

I would not put C++ with the other ones, unfortunately Android has a lot of API only available from Java.

Agreed about the 2nd class status of C++, still that is the official message, about all three languages.


"Android apps can be written using Kotlin, Java, and C++ languages. "

I bet that in 5 years Kotlin will have as much market as other alternative JVMs languages have today.

And regarding Google, Kotlin is not among the beloved ChromeOS and Fuchsia languages.

So it depends very much on their internal politics.

Is there any official language for ChromeOS?

I believe it supports Most Android and Linux apps now.

Yes, it is called JavaScript.

Android and Linux apps support is made via containers, aka they are not native to the OS, and isn't supported across all Chromebooks models being sold.

And even then, there are support issues.

PagerDuty, Zoom, Slack —- seems like a great time for enterprise software.

PagerDuty - losing money


Zoom - a tiny net income of 7.6 million


Slack - losing money.


So why is it a “great time” for enterprise software?

By entreprise software, I mean the traditional heavy Java frameworks & tooling.

That is not Enterprise Software. It is less the language and the frameworks which are making it Enterprise but the requirements placed on them and the software development lifecycles.

Imagine you do a medical product and the regulations needed for FDA approval require you to check for vulnerabilities in your product and build infrastructure. Have you ever checked all packages in a npm dependency tree for vulnerabilities?

> Imagine you do a medical product and the regulations needed for FDA approval require you to check for vulnerabilities in your product and build infrastructure. Have you ever checked all packages in a npm dependency tree for vulnerabilities?

The same way as any other language? With audits? I don't get your comment.

To write the same functionality I need 10x the packages (from 9x vendors) in JavaScript compared to a Java/.NET ecosystems. The infamous left-pad packages is a sample for something found in the base class libraries of the other languages. And this does not only stand true for vulnerability analysis but also for other analyze jobs like for licenses or gdpr compliance. The amount of work is just higher with the amount of packages you use.

I think the net amount of code ends up being pretty much the same, it's just spread over several repositories/sources/owners. That does mean it's more difficult without tooling to trawl through, but it's not like it's an order of magnitude or anything.

The interesting part is how professional the packages are handled. For example in JavaScript there a thousand of authors with very different understanding of their "responsibility". Some do not even provide a license (do not even care to put a "WTFPL" or "Unlicense" on it) and do not read bugs. Others, have a emergency response team and publish CVE records. The less packages I have, the better I can select them and monitor them.

Java/.NET/Python ecosystems tend to be more professional with this regards. JavaScript catches up but is not completely there yet (you can see this with the amount of repositories who add licenses in 2016/2017 timeframe, years after creation).

Hence, same amount of code, much more work (it is a magnitude).

I've spend quite a bit of time doing javascript and typescript lately. Typescript definitely patches up a lot of the ugliness of javascript but you still deal with the same messy ecosystem of tools, libraries, and other cruft. It's been slowly getting better over the years but it's still not that great. I see typescript more as a gateway drug for people who seem to think that Javascript is all there is and then discover that actually having a type system unlocks all these amazing new tools that the rest of our industry has been enjoying for a few decades.

Guess what, if you like typescript, you'll love Kotlin. It's a much cleaner language, just as expressive, and it has a whole range of things that typescript simply can't do or that it simply does better/more elegantly because typescript is stuck preserving compatibility with javascript and all it's weirdness. MS has done a wonderful job of shoving a lot of that under the carpet with typescript but fundamentally types are optional because all javascript has to be valid typescript and therefore it has to also allow all the silly hacks, misguided features, and other cruft that javascript people have been coming up with for the past decades.

You might also like C#, Rust, Elixir, and several other languages that each offer their own tools, libraries, and features. I'm seeing a pattern with many frontend developers in the last few years that they at some point become full stack developers and shortly after start adding more languages to their repertoire. I know former node.js developers doing Rust, Go, Elixir, Kotlin, Rust, etc. now. Most of them are not very eager to move back to doing node.js projects.

Like Kotlin all these languages are all coming to the node.js/browser ecosystem through WASM. Full stack in 2020 is going to be a very different beast than just a few years ago.

Right now WASM already allows lots of languages to be used for just about anything that people currently do with javascript and typescript in browsers or in the node.js ecosystem. As this becomes more mature, people are inevitably going to change the ecosystem. This is already happening. E.g. Rust is being used for many low level npms for a few years now. However people have also been developing frameworks and libraries in Rust that work around/replace that ecosystem entirely. For a Rust person dealing with crates is preferable to dealing with npms, webpack and all the other stuff that is used in that ecosystem. So, they are fixing that. The goal there is to run pure rust in wasm in the browser or on v8 with 0 npms pulled in or used during the build process.

Likewise, there's an ecoysystem of multi platform kotlin libraries emerging and that allows you to build wasm or native applications and libraries without needing things like webpack, npm, etc (but using gradle instead). Same with C# and blazor. Each of those ecosystems uses browsers and node.js as runtimes but try to minimize/eliminate/replace most of the rest of that ecosystem. In the same way the Kotlin ecosystem is also starting to provide alternatives to stuff from the java EE and Spring ecosystem. E.g. Ktor is a multi platform web application framework that you can use instead of spring boot and run natively or on the jvm. It's also a drop in replacement for anything you might want to do with e.g. express.js. Doing express.js applications in Kotlin is of course also possible, but why would you when you can have ktor instead? In the same way building react applications in Rust is possible, but replacing it with a rust specific framework is much less awkward.

So, I agree things are changing but I'd say the node.js/browser landsace is changing as well and will not involve a whole lot of javascript/typescript for people coming from the JVM or other ecosystems.

You might make the point that there are all these millions of npms out there that can't be replaced easily. I'd counter that with the point that an awful lot of them seem to have very short shelf lives and are in fact replaced/discarded regularly.

> Spring was a much better framework than Java EE

You can't compare these frameworks. They're in entirely different spaces, with different requirements and constraints.

Good luck doing that when OpenJDK exists.

Oracle makes Java a risk factor in all projects. I stopped approving new Java projects in my team 2 years ago after we switched to Go. This wasn’t a decision we took lightly and it took almost a decade for me to be comfortable with leaving Java behind.

But it is the right thing to do. Oracle is not trustworthy.

Strange attitude to take when you can just target OpenJDK and then it is completely irrelevant what Oracle does or does not do.

The fact is that every single one of the largest companies has some Java or Scala code within their core platform. And none of them have ever raised Oracle as a risk.

In this case we have Oracle using the JEE namespace discussion as leverage to try to force the Eclipse Foundation to distribute their VM with their products.

If Oracle had succeeded, would that mean that every developer that downloaded the Eclipse IDE would be subject to Oracle's licensing and a possible audit target? I believe that it would.


Everyone should move off of Oracle's VM. I think Oracle is going to be more agressive in discuraging this or making it more difficult.

The most valuable corporation in the world as of this date uses zero Java for anything “core”.

Anecdotally, nearly every CIO/CTO I’ve encountered in the last few sees Oracle as a huge risk. Most particularly with regards to databases, which are even sticker than applications which have shorter life cycles.

Very few developers have access to the decision making process (or risk management imperatives)of executives of large organizations (and vice versa). When big numbers are involved the actual story and what gets told to the public are often entirely different things. This is why the “but we have OpenJDK” argument is practically a non-sequitur, yet seems a valid argument to many.

Oracle is, as you say, on the radar primarily because of databases. But it is really the risk of dealing with a company that is likely to screw you if they can do so with sufficient ROI (where the investment is audits and litigation)

Developers and CxOs/company boards risk very different things and when things go bad, have very different downsides.

You mean the servers Apple has running on WebObjects, JEE and Clojure for iTunes, Apple Maps and their iCloud?

I'm guessing the use of "as of this date" means that the parent comment is referring to Microsoft and not Apple, as at the moment by market cap, Microsoft is more valuable than apple by about $13billion

Microsoft is currently the most valuable company in the world.

And they created a whole language and ecosystem (C# / .Net), even before Oracle bought Sun, so they wouldn't be dependent on a 3rd party for that.

Ironically, .NET was created because MS tried and failed to take over the Java ecosystem using an Embrace, Extend, Extinguish approach that ran afoul of SUN's licencing deal with them.

Less ironically, Google managed to create their J++.

iTunes is based on a 17 year old code base with a framework that hasn’t been updated in a decade. Not exactly a ringing endorsement of Java.

Seeing that Apple started a project to rewrite Maps back in 2014, hopefully they didn’t decide to rewrite it using WebObjects (https://appleinsider.com/articles/14/07/01/apple-overhauling...)

What matters is that it brings money home.

Maps uses Clojure, and is partially developed here in Berlin.

Until you are out there trying to find another job in two years and people start looking at you like an old VB6 or PowerBuilder developer.....

You seem really traumatized with whatever happened there regarding jobs.

No job is secure.

That’s kind of the point. No job is secure that’s why it’s not a great idea for someone not to keep their skills current with the market and keep their heads down. It’s not hard to project that Windows only development is a dead end when even Microsoft is outright saying that all of its energy is going toward .Net Core and they have been moving toward cross platform development for the last half decade.

Developers that focus in only being good in tech, without any additional skill won't go far.

The days of pure coding jobs are over.

Even with being a reformed former team lead, Devops and plenty of AWS infrastructure and development experience and looking for a change to add on Docker and k8s, It still crazy not to have the table stakes of knowing the latest tech.

Plenty of customers still run stuff on premises without any desire to put their precious data on someone's else computer.

Docker and k8s are the NoSQL of 2019.

Wait, what, Apple Maps is partially developed in Berlin?

Yes, or at least it used to be around two years ago.

Just keep monitoring their job openings in Germany.

You're either disingenuous or ignorant of the history of programming languages. MS doesn't use Java because it's a direct competitor to MS's eco systems. Windows isn't required; enterprise software; taking away developer's mindset. Not a decision based on technical merit.

MS did have a Java clone 20 years ago, but gave up due to legal threat from Sun and the DOJ lawsuit.

Ironically, MS has quite a few of Android apps [0]. Has been for several years. I guess there is at least some Java there. Unless you don't consider Office "core".

[0] https://www.microsoft.com/en-us/mobileapps?activetab=pivot_1...

As pointed out elsewhere in this thread, Oracle employs a lot of/most of the developers who work on the OpenJDK.

So Oracle's attitude to OpenJDK and the possibility that it cuts back on development is a likely factor for people considering the platform.

It's likely that OpenJDK developers would be snapped up by other enterprise vendors. There's a serious market in the JDK now, which didn't exist before Oracle created it. Part of competing in that market is having upstream credibility.

> when you can just target OpenJDK and then it is completely irrelevant what Oracle does or does not do

Yeah, Google thought the same

That's not what Google did.

you can just target OpenJDK and then it is completely irrelevant what Oracle does or does not do

If Oracle's copyright argument holds up, then they can kill or cripple OpenJDK at will by denying it the ability to implement new Java APIs.

What's the relationship between OpenJDK and Oracle, exactly?

As somebody who's not deep in the Java ecosystem, the precise relationship is not clear to me, but it does seem that Oracle is a major contributor to OpenJDK at least, most likely also involved with the project steering.

AFAIK, Oracle's own JDK is being built from OpenJDK source and they work on OpenJDK source directly. The only difference is that there is no official LTS of OpenJDK by Oracle. You have to either keep upgrading to newer OpenJDK (with potential breaking changes) or pay Oracle license to use their LTS JDK

> You have to either keep upgrading to newer OpenJDK (with potential breaking changes) or pay Oracle license to use their LTS JDK

I don’t think this is accurate. Alpine and Debian OpenJDK have been getting point releases (u###) through the distribution package manager. I’ve got apps running on openjdk 8 and 11 (the LTS versions) and they are still getting u### releases with security fixes and bug fixes despite Java trunk already having moved past 11.

Edit: did some further research on this and it looks like various distros are providing the LTS support for java 11. For instance Amazon Linux will be supporting Java 11 through 2023. https://dzone.com/articles/oracle-continues-long-term-suppor...

It's sane to be leery about entering into any kind of contract with a counterparty as grasping and merciless as Oracle has proven to be. If they find an exploit in the GPL, Java projects are in for a bad time.

No, it is not irrelevant and people thinking it is makes it more dangerous.

> Oracle makes Java a risk factor in all projects.

Far as I understand having any Oracle products is a liability. They can't 'audit' you if you don't use any of their products.

Just curious, what makes you think Google trustworthy (in relation to Go)? It is not surprising that corporates control and drive the languages and ecosystems in their own favor. IMO, Rust and D are truly open source, even though D lacks the corporate sponsor like any other major language.

« Oracle already started a blocking politics at the Eclipse Foundation’s board, where Oracle has a seat, and where unanimous decisions are needed. Oracle now has the power, and apparently will use that power, to block the foundation’s future. It demonstrated that power already in a board meeting, where they had the sole vote against an otherwise unaimous move. »

I hope other organisations with a director from Oracle are taking note.


For me it's more a lesson about how unanimous votes, or unanimous - N can become problematic.

In the EU the same is happening. Poland and Hungary have found a loophole allowing them to ignore EU rules and sanctions while still profiting from subsidies and market access.

All sanctions against a member state require unanimous-1 (all states except the sanctioned member) votes and Poland is vetoing all sanctions against Hungary, and Hungary all sanctions against Poland.

The irony is that Poland was once the #1 or #2 power in Europe, but they were destroyed by unanimous voting. Want to raise taxes to build an army to repel foreign invasion? Everyone agrees, except that one person too far from Russia to care, and the taxes get vetoed, so Russia wins, thus Poland was destroyed. The Poles know how dangerous unanimity is.

What’s ironic is that Poland fought for years to become a member of the single market, after years of stagflation. They profited massively in terms of growth and wealth. Now after X years of membership they no longer want to play ball and think it is ok to corrupt the system. The same goes for Hungary after years of iron fist Soviet rule. It’s deeply tiring and begs the question whether the EU would be better without them.

Governments come and go, Poland isn't a monolith, and definitely not over a period of 15 years. Lazy thinking.

Which instance are you referring to?


What I remember from history lessons in school agrees with Wikipedia's description, so I'll just quote:

"Many historians hold that the liberum veto was a major cause of the deterioration of the Commonwealth political system, particularly in the 18th century, when foreign powers bribed Sejm members to paralyze its proceedings, and the Commonwealth's eventual destruction in the partitions of Poland and foreign occupation, dominance and manipulation of Poland for the next 200 years or so. Piotr Stefan Wandycz wrote that the "liberum veto had become the sinister symbol of old Polish anarchy". In the period of 1573–1763, about 150 sejms were held, about a third failing to pass any legislation, mostly because of the liberum veto."

This was noted already at that time:

"To give a minority a negative upon the majority (which is always the case where more than a majority is requisite to a decision), is, in its tendency, to subject the sense of the greater number to that of the lesser. Congress, from the nonattendance of a few States, have been frequently in the situation of a Polish diet, where a single VOTE has been sufficient to put a stop to all their movements. A sixtieth part of the Union, which is about the proportion of Delaware and Rhode Island, has several times been able to oppose an entire bar to its operations. This is one of those refinements which, in practice, has an effect the reverse of what is expected from it in theory. The necessity of unanimity in public bodies, or of something approaching towards it, has been founded upon a supposition that it would contribute to security. But its real operation is to embarrass the administration, to destroy the energy of the government, and to substitute the pleasure, caprice, or artifices of an insignificant, turbulent, or corrupt junto, to the regular deliberations and decisions of a respectable majority. In those emergencies of a nation, in which the goodness or badness, the weakness or strength of its government, is of the greatest importance, there is commonly a necessity for action. The public business must, in some way or other, go forward. If a pertinacious minority can control the opinion of a majority, respecting the best mode of conducting it, the majority, in order that something may be done, must conform to the views of the minority; and thus the sense of the smaller number will overrule that of the greater, and give a tone to the national proceedings. Hence, tedious delays; continual negotiation and intrigue; contemptible compromises of the public good. And yet, in such a system, it is even happy when such compromises can take place: for upon some occasions things will not admit of accommodation; and then the measures of government must be injuriously suspended, or fatally defeated. It is often, by the impracticability of obtaining the concurrence of the necessary number of votes, kept in a state of inaction. Its situation must always savor of weakness, sometimes border upon anarchy.

It is not difficult to discover, that a principle of this kind gives greater scope to foreign corruption, as well as to domestic faction, than that which permits the sense of the majority to decide; though the contrary of this has been presumed. The mistake has proceeded from not attending with due care to the mischiefs that may be occasioned by obstructing the progress of government at certain critical seasons. When the concurrence of a large number is required by the Constitution to the doing of any national act, we are apt to rest satisfied that all is safe, because nothing improper will be likely TO BE DONE, but we forget how much good may be prevented, and how much ill may be produced, by the power of hindering the doing what may be necessary, and of keeping affairs in the same unfavorable posture in which they may happen to stand at particular periods."

It’s an old Polish tradition:


How’s that a loophole? That’s literally how unanimous works, if EU wanted to be ruled by majority, they should have decided on that instead.

That's the point - unanimous voting is open to abuse from tiny minorities.

Eh, I wouldn't so much call it "abuse". Coming to consensus takes work. At a large enough scale, it won't ever happen, and the EU is much larger than that -- it's never going to meet any unanimity requirements.

Not sure what they were thinking with such a policy. Unanimity is something you can have at the village level.

> Poland and Hungary have found a loophole allowing them to ignore EU rules and sanctions while still profiting from subsidies and market access

AFAIK this was tit-for-tat: HU & PL closed/sold-off their industry in favor of WEU in exchange for subsidies. Removing these subsidies for any reason would violate the main economic agreement between them and EU. Mind you, there is no significant locally grown industry in those countries anymore (outside of a few state-owned industries), WEU profited from this enormously, especially Germany. As economic potential of this arrangement has been exhausted after 25 years already, incorporating UA is the next move to give EU (primarily DE/FR/NL) some nice economy boost for the next 10 years. EU is essentially playing Sim City.

Adding to that: one of the fundamental EU rules was freedom to do bussiness anywhere in EU. That worked in favor of Western countries which had their corporations opening offices in Poland, and making huge profits here.

After some time Poland found some niches for itself, e.g. Polish transportation companies dominate EU market in truck freight. What was the EU response to that? They recently passed change in labor laws, that would make this business unprofitable.

So: common EU market is fine as long as Western countries benefit from it, but Poland or other Eastern countries making money from business in the West is against the rules :)

>They recently passed change in labor laws, that would make this business unprofitable.

Are you talking about those labor laws, which require truckers driving in Germany to be paid German minimum wage? Totally unprofitable.

What evidence do you have that the labor laws are a response to polish domination of freight, or that those laws would would somehow only cause polish carriers to become unprofitable?

It was explicitly stated by French president Macron, that the goal is to end Polish dominance in truck freight :)

Basically the law change is this:

Now, if you are Polish truck driver employed in Poland, you are subject to Polish tax and labor codes, including things like tax rate, minimum wage, etc. What France wants (and what was passed, but is not in effect yet) is that if said truck driver crosses the border of another country (say, France) he should be subject to that country tax and labor code. Which is riddiculous, because the driver does not change his tax residence, he just enters France for a few days it takes to make a delivery, and then comes back to Poland.

Would it also be ridiculous if a factory worker would be employed in one country and just cross the border to do a bit of factory work? All kinds of other local laws apply just by entering a country. How is minimum wage different?

Would it also be ridiculous if a factory worker would be employed in one country and just cross the border to do a bit of factory work?

It would be ridiculous, because the factory worker would be working at a company domiciled in the other country. That is because, a company in one country can not just open a factory in another country without having an entity in the latter country.

Consider an alternative situation: Franz is employed in Hungary as a writer of fiction, but crosses into Austria many days and uses wifi to work there. Should Franz be paid Austrian minimum wage?

All kinds of other local laws apply just by entering a country.

Local laws do apply, but generally one can not just enter another country and work there. Very often one is specifically prohibited from working in another country without a visa.

Except the stated goal of European Union is free movement of workers. You can literaly go and work in any EU country, no visa or work permission needed.

But that's not really the situation here: it's a business providing services for customers in another country. You send a driver abroad for a few days, that should not make him subject for local tax and labor laws. If you can prove that said worker spent significant period of time there (most tax treaties use 183 days as a rule of thumb) then that's a different matter.

Main frothing at the mouth was because of requirement to pay local minimum wage for the time employee worked in that country.

Same playbook as with Greece -- which up to the 80s and the EEC had a larger industry presence, and discarded most of it with non-compete laws and the lure of subsidies in favor of the nothern-western parts of WEU.

No need to get conspiratorial. Industry jobs nosedived since the 80s all over Western Europe (and beyond) for well known reasons.

Russia killed whatever plan the EU had for Ukraine. There is no way EU let's in a state where russian troops operate.

What is UA?

Edit: Ukraine.

You think e.g. Germany doesn't do the same with several satellite countries they play for with funds, trade deals, diplomatic pressure, and so on, to get a bunch of votes on EU matters based on their interests?

Hungary and Poland aren't the first to abuse the unanimous-1 veto.

The Netherlands always vetos Romania's application to enter the Schengen zone as Romania's harbors to the Black Sea will provide cheaper alternatives for import of goods to the Dutch ones.

Had to validate the Netherlands claim out of curiosity. The claim is popular but even Romanian officials have stated this is not true [0].

[0] http://business-review.eu/news/pm-ciolos-future-of-constanta...

Mind you, not officially!

However, the endemic corruption could be the real reason.

And you want the Romanian government to admit that? Of course it's the Dutch who are jealous of a port which couldn't we worse located/s

Right, a port at the other end of Europe without good connections to the West, whose usage maybe makes sense only for ships passing through the Suez and Bosporus is a competitor to the ones sitting on the Atlantic.

And it doesn't have anything to do with the fact that the Romanian coastal surveillance system was conveniently down when cocaine started to shop up on the beaches.

I'm not sure about the merits of the original claim, but you can't dismiss the Suez like that. It's the connection you need between the Mediterranean Sea and the Indian Ocean and it lends itself to a ton of traffic: https://www.marinetraffic.com/en/ais/home/centerx:32.2/cente...

Agreed. Additionally Greece, Italy, France, Spain suggest a port located near(er) the Suez canal isn't a threat to Dutch ports.

Yeah unanimous is ironic in that actually a single actor controls the outcome.

UN security council is another classic example, where any permanent member can use the veto to block any resolution they want, regardless of how the other permanent or elected members vote.

That’s by design. The council is kept small and all permanent members are nuclear powers. The ability for Russia and the US to veto each other’s foreign policy spats and agreeing-to-disagree is the reason we’re still alive today.

There are more nuclear powers now, so shouldn't the security council permanent membership be expanded? We're not in 1945 anymore.

The _neu_-nuclear powers possess at most a few hundred warheads and lack true intercontinental delivery systems. They might kill a few million people but the damage will be localised.

All of the countries that could - and would (given the right kind of existential threat posed by another) kill a few _hundred million_ people in even a limited exchange are on the council.

There are other, non-nuclear states that could cause similar (<10m) deathcounts if they had a conflict. What we don’t want to do is frame the security council as “the nuclear club” which allows them to dictate global security - that would give states like DPRK and Hussein’s Iraq even more motivation to pursue a nuclear weapons programme.

To an extent it does come down to sincerity - I’m not concerned about India being a nuclear power despite it bordering Pakistan and PRC: I have faith in India’s democracy and stability to use their power responsibly (Kashmir is another discussion) - but I don’t extend that to DPRK who are clearly using it to avoid a Libya-type situation but who may end up using it anyway given the inherent instability of autocratic dynasties.

I obviously didn't mean all. India, Japan, Germany and perhaps a couple of others, such as South Africa and Brazil, deserve to have permanent status to have a more even security council.

It's more an economic issue than a nuclear issue IMO. And, I think the veto should be done away with.

South Africa does not have any nuclear weapons - they were all decommissioned at the end of Apartheid

> Japan... deserve[s] to have permanent status to have a more even security council.

I'm imagining whether China might veto this...


Well if they believe similar things they vote accordingly. It's not a loophole, just two governments having similar views about those issues. It's for the better as well, if you allowed sanctions for refusing immigration policy you would end up with huge backlash and likely several countries exiting EU.

France broke the EU deficit rules for over a decade. Everybody talked about it, but nobody acted.

If a EU state refuses to do a thing, that's basically it.


Germany's been breaking the EU's excessive trade surplus rules for more than ten years as well, and nobody even talks about it ! Go figure.

how does nobody talk about it? It's mentioned fairly regularly by commentators. Less than the italian deficit for sure, but still a well known fact.

If anything, few people mention the dutch trade surplus (I presume because the "netherland is evil!!" narrative is not as common as "german is evil!!").

Not true. The commission can chose to sue any memberships state in the European high court. Denmark was sued by EU for not allowing sale of tin can drinks (beers, soft drinks) in Denmark due to environmental concerns. It was seen as a kind of protectionism.

That too, but I fear there are likely to be ways a hostile director could cause serious trouble even without a unanimous vote requirement.

OK, but Poland and Hungary are far from the only nations ignoring EU rules (though they might be the only ones ignoring certain particular rules).

Take for example the Italian government's decision to run a deficit higher than what is allowed under EU rules (2% per year if I recall correctly). The EU tried to put a brave face on it: they held negotiations with the Italian government and announced a compromise, but it was pretty obvious to people who follow EU politics that the EU had no effective means to enforce the rule on Italy.

And this cap on deficit spending by governments of member nations is no minor rule. Many had stated over the years since the introduction of the Euro that the rule is necessary for the single currency to work.

Two countries in the EU that seem to be actually concerned with their futures and the welfare of their citizens...

I don’t understand how the org let that happen... Does someone know or have articles about it? I can believe that they left the unanimous vote and then had the good idea to invite Oracle at the table without some Power play behind it.

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