Developers Finally Moving Away from Java 8 to Java 11 (sdtimes.com) 61
SD Times takes another look at the uptake of Java 11
Previous reports of the Java community found that developers were still mainly using Java 8 and didn't adopt newer versions, but according to Snyk's JVM Ecosystem Report 2021, that is starting to change. This year, 61.5% of respondents are using Java 11 somewhere in production, and almost 12% are using the latest release, which was Java 15 during the survey. "This is huge, because it shows that developers do upgrade their Java version beyond Java 8 to some extent. The mantra that most Java developers are comfortable staying on Java 8 seems to be slowly breaking apart," Snyk stated in the report.
However, half of the Java 11 users — which is currently the most used version — still use Java 8 in their production stack...
In addition, almost half of developers (44%) use the free AdoptOpenJDK distribution in production as one of their JDKs and 48% use it in development.
"Other findings are that Java is still by far the most popular language by a long shot and Snyk stated it will probably remain that way in the foreseeable future and that JetBrains IntellIJ IDEA still remains dominant as an IDE in the Java ecosystem."
However, half of the Java 11 users — which is currently the most used version — still use Java 8 in their production stack...
In addition, almost half of developers (44%) use the free AdoptOpenJDK distribution in production as one of their JDKs and 48% use it in development.
"Other findings are that Java is still by far the most popular language by a long shot and Snyk stated it will probably remain that way in the foreseeable future and that JetBrains IntellIJ IDEA still remains dominant as an IDE in the Java ecosystem."
Different definition of popular (Score:2)
Re: (Score:2)
Honestly, we have no idea what the actual numbers are. Big corps output a ton of Java and nobody there is reporting to anyone outside of the org.
Re: (Score:2)
Honestly, we have no idea what the actual numbers are. Big corps output a ton of Java and nobody there is reporting to anyone outside of the org.
True, but I do have 25 years of anecdotal experience while CSE. Java is dying in the places it used to thrive. It is slowly being replaced by C++ and Python. TTFWIW
Re: (Score:2)
ava is dying in the places it used to thrive. It is slowly being replaced by C++ and Python. ...
Har har har har
Re:Different definition of popular (Score:4, Insightful)
If you allow that to count, I'm pretty sure that the amount of slapped together Excel sheet automation would make Visual Basic dwarf everything else.
misleading (Score:2)
Okay they said they had some java 11 running somewhere, but the big enterprise software stacks are firmly in Java 8 territory. Like Websphere 9, Oracle's DBMS, Oracle's Weblogic 14, even Apache tomcat will run with later versions (it's claimed) but targets Java 8.
Re: misleading (Score:2)
I'm actually surprised that in 2021 there are still some dinos who still use Java at all.
Even on Android everyone switched to Kotlin because no one could really stand Java.
Java is a shitty, needlessly verbose language, that was cool back in 1990 but that today is surpassed by pretty much everything else, including .NET from Microsoft... hell, even vb.net is far better than Java, and i hate vb.net...
Re: (Score:2)
The organization defines what to use, not the programmer.
And I don't really see so much benefit in Kotlin over Java. For private stuff I use Scala and Groovy. Kotlin is just Java in a different syntax. That is mostly handled by the IDE - why would i care if I use one or the other?
Re: (Score:1)
What, put application that handles millions of dollars on windows based platform? No, that's malware and ransomware target, piled on top of Microsoft's poor source code control and bad security.
No one is going to rewrite hundreds of thousands of lines of solid working code just to please someone's language aesthetics. You Kotlin is just a fad for phones and will come and go while money in e-commerce continues to go through java (and yes COBOL too)
Java is used for serious stuff, not your mobile toy/phone t
Re: (Score:3)
The difference between Java 8 and Java 11 isn't that huge from the majority of the code base so there's no real need to enforce an upgrade.
The most recent important update of the language was the introduction of generics. Subsequent updates haven't been as important even though they have been interesting for some cases.
One of the things I think actually have held back Java has been the lack of true native serial port support. Mostly because serial port interface logic is still one of the most used methods t
Re: (Score:1)
Not that big a difference... well I can tell you my employer's old code won't work under it, just a few hundred thousand lines to go through and rewrite, no big deal eh? lolz.
Serial port? No problem, if you don't want to do JNI then make a socket to a C program that does it, file system or network.
For that matter on real operating systems you can have shell script that uses one of the many serial port setup programs and do io right on the terminal dev file. On the fake OS windows cygwin can do it but the
AKA, version creep (Score:4, Insightful)
This is a good example of Version number creep. Why does Java need "a version number" , can't they make a Java "just work" ?
Clearly not. I remember this with 1.1 when people were still on 1.0.2 and it was like ... why is stuff breaking?
This is what ultimately is going to be the death of Java and it being replaced by something that is stable.
There are depreciated things in C and C++ but that's largely at the suggestion of the compiler, when microsoft started calling non _s functions depreciated, 3+ versions of MSVC ago. Yet if Microsoft actually removed that functionality, then everyone would have to use Clang, which hasn't.
Rather C/C++/OBJC have the reverse problem where developers do not use exotic features of the language, and are discouraged from doing so if the program is intended to be portable. If your code can't compile on the C99/C++98, then it's not portable enough for all platforms but you might get away with it if it compiles with Clang which is available on all platforms.
Java on the other hand, just breaks, and there's no guarantee that a Java runtime will be on a system.
Re: (Score:2, Interesting)
There's another huge reason to never upgrade.
For some years now, any JRE from Oracle is under new licensing, and you can not run anything using it without opening yourself up to huge risks of lawsuits.
This isn't even tied to a specific version of the JRE, just a point in time when it was downloaded, which mostly rules out anything newer than 8.
There are other implementations, and have been for awhile but a few years back they weren't completely compatible. These days it is the non-oracle implementations be
Re: (Score:2)
This isn't really an issue. The OpenJDK and its JRE have always been unencumbered, FOSS, actively maintained, and used as the basis for the encumbered Oracle JRE/JDK releases. I suspect OpenJDK is still by far the primary distribution used for professional developers' machines, build servers, production deployments, and bundling with installers and Docker images.
The Java 8 Oracle JRE/JDK releases has since at least 2019 [oracle.com] been encumbered by the same license as Java 11. So not applying maintenance versions of
Re: (Score:2)
Add in there are some LTS support version of Java 8 from sources other than Oracle which are free and frankly much easier to use at least for Linux. For example I can just set up a repository for Amazon's Corretto and it will be kept up to date using the same mechanism as the rest of the OS.
The only hassle is that there is no JRE option it's full JDK but heck disk space and network bandwidth in 2021 are all cheap and plentiful.
Re: (Score:2)
Yeah, and the difference between an JRE and JDK is what?
Five executables, like the compiler, debugger and some other random tools like key-store management?
What you say doesn't make sense (Score:4, Insightful)
If both Java developers and C++ developers tend to use older versions, how is that "the reverse problem"? No, it's the exact same problem, with developers only slowly taking up new versions.
That's certainly not going to be the death of Java. As long as new updates are available buy older stuff can still be used, that's the normal way for a language to move forward.
Re: (Score:2)
"The problem" are not "developers" but "organizations".
I work for organization or company A: they define what I have to use.
On my laptop i have usually 3 or 4 versions, and most certainly two of them are:
a) Java 8
b) the newest Java version - most likely a beta version
Re: (Score:2)
I"ve had my share of "fun" attempting to run my programs and getting "The program can't start because VCRUNTIME140.dll is missing from your computer."
Re: (Score:3)
Why does Java need "a version number" , can't they make a Java "just work" ?
Good question. *looks up better languages*
Why is GCC at version 11.1? It's just compiling C. Couldn't they get that right the first time?
Why is CLANG at version 12? Is it even worse than GCC?
Why is Python 2.7 not compatible with version 2.6 on my machine? It's just a minor version change.
Why has C++ gone through 5 versions? People were telling me it could do *anything* in the 90s!
The reality is there are no languages which are prefect or can't be slightly improved...Okay maybe Brainfuck is, or maybe people
Re: (Score:2)
Re: (Score:2)
Each version brings with it new and exciting incompatibilities. What you use today is not guaranteed to work in six months.
Re: (Score:2)
Java uses a virtual machine.
Everyone knows that. A virtual machine is more or less just a virtual processor/CPU.
How you think an old CPU can know how to interpret new code is beyond me.
Why does Java need "a version number" , can't they make a Java "just work" ?
Simple answer: see above, no it can't.
If your code can't compile on the C99/C++98, then it's not portable enough for all platforms
That is one of the reasons why I do not use C++ anymore. Makes no sense to stay in programming stone age for me.
Re: AKA, version creep (Score:2)
Apparently you havenâ(TM)t tried doing C++17 much. C++ isnâ(TM)t quite as stable as you think.
We switched builds on all platforms from C++11 to 17 recently. Apple is normally the annoying one for breakages and their clang-based compiler is generally the most pedantic. Nope, no problems there. No major problems upgrading gcc from 4.8 to something modern. Microsoft are normally kings of backwards compatibility and also for not exactly known for having a standards compliant C++ compiler, but not
Re: (Score:1)
You're so full of s__t.
For the sake of it, I just tried running a jar file compiled with Java 5 (released 2004) on god knows what on my Mac with java 14. Guess what? I just works. Swing UI and all.
I also tried compiling the same (it's an old download), then running it. Guess what? I also just works.
My experience is that there's exactly _three_ languages for which you can take _any_ code, from anywhere, anytime, and _trust_ that it will work just fine now on the same platform: C, Java and Perl (a bit of a co
Most important language ON THE JVM (Score:2)
Ugh, this leaves out a *very* important qualiifier. The "most ppular language" refers to most popular language that runs on the JVM. Specifically its a reference to 18% of JVM code using Kotlin.
Java is NOT "The most popular language" of all however. Thats most likely a battle between C, JS and Python, at this stage.
Re: (Score:2)
Considering that the TIOBE index is based on "search questions", I would assume: Java is by far far far the most popular language. But it has also an excellent documentation.
If I program in Python - which I rarely do - I'm feeding the "popularity index" of Python on TIOBE: but I do not belong to the "popular language developers" ... I'm just a noob in Python.
OTOH: I only use "java 'insert search term' " in absolutely obscure cases. (And most of the time I can not search anyway, as internet access to the ou
Re: (Score:2)
I honestly don't see as much Java out there as I used to. I mean theres still a lot of legacy Java, but seemingly not a lot of new projects. What I *am* seeing is a hell of a lot of Java projects, particularly in large enterprises and government, being replaced by Django stacks, which seems to be emerging as the next big enterprise powerhouse (and keep in mind that things been around for coming close to 20 years, its pretty battletested at this point).
Re: (Score:2)
Well, Django is considered to be a pretty solid framework. :D
No idea why it is "emerging" as it is most likely 20 years old
Java will remain 'popular' - it fills a big niche (Score:2)
Depending on who you ask, Java is still in the top ten most popular programming languages - sometimes at #2 or #3, but mostly not #1 unless you're looking at 'most popular language that runs on JVM'.
But there is a need for Java that nothing else can fill yet - basically, it's the new COBOL. Java lets legions of marginally competent corporate hacks work together on the same gigantic bloated monster of a project without hurting each other too much - because it requires so much verbosity and making things exp
Re: (Score:2)
Java lets legions of marginally competent corporate hacks
That is nonsense.
Most programmers I meet are excellent programmers. Regardless of language.
Why you dismiss someone: who is basically forced by the organization he is working at as a "bad developer" - or mediocre - or "bad hack" is beyond me.
Also, 'write once run everywhere' is mostly a lie, but Java does provide a relatively easy way to get your laggy app running on Windows, Mac, and Linux if you don't feel like writing snappy native apps.
Strange th
ipmi doesn't work with newer versions. (Score:1)
IME IPMI and its equivalents doesn't work with runtimes newer than java 8.
ssl rather than tls too. All to talk to something that isn't (shouldn't) be publicly available but is often mission critical that it 'just works' discourages upgrading.
Redhat (Score:2, Interesting)
Java 8 - > Java 11 was not easy for us. I have over 10 years of experience in Java and I am considered one of the elite developers in my company, and it was still hard for me. Because I am the elite, there was no-one I could ask for help. Some problems were so rare that you could not find answers to them from the net. Most of the hard problems were caused by our own decisions years earlier, by using rare libraries and making custom solutions (which I still think are pretty good).
First problem is Redhat.
Re: Redhat (Score:2)
This is also a problem with not upgrading incrementally, isnâ(TM)t it? The longer you stick with old tools and justify it with âoeif it ainâ(TM)t broke, donâ(TM)t fix itâ, the harder the eventual upgrade will be. Maybe of course the actual costs in time, if measured, might show that waiting is the right thing to do.
Maybe time to try :net (Score:2)
Re: (Score:2)
Java is Open Source ...
And if you ever had programmed in/with/on .NET you would not ask such stupid questions.
Re: (Score:2)
C# and .NET Core are open source, as are most of their ecosystems, and C#, generally speaking, is well-suited to most of the same problem spaces as is Java.
But you don't risk being sued by Larry Ellison for using it.
What is AdoptOpenJDK good for? (Score:2)
OpenJDK is standard in all the distributions such as:
Re: (Score:2)
Strictly speaking, not "OpenJDK" as in "the" OpenJDK, but "a" distribution-specific build of OpenJDK is part of each distribution. I guess they may, at least theoretically, differ between each other by exactly which updates they pull from upstream and when exactly OpenJDK updates are being released. AdoptOpenJDK, which is referenced by the central OpenJDK Wiki [java.net] as the source for OpenJDK releases, unifies updates and releases over all systems for which they build binaries.
Re: (Score:2)
Re: (Score:2)
There are several things which make "Linux fail on desktop", but this is the first time I heard the claim that "ABI" was one of them. I'm far from being a Linux systems specialist, but when I build an application on my PC, my impression always was that I get an x64 binary that runs on any halfway current x64 Linux, be it Ubuntu, Fedora or Arch, as long as it either finds the necessary libraries on that system or has them linked to itself.
Specifically, I haven't heard any complaints yet that AdoptOpenJDK's J
Re: (Score:2)
No way.
> as long as it either finds the necessary libraries on that system
That is the problem. Each system has different versions of shared libraries. Additionally they are compiled different ways which makes them ABI incompatible (such as using / not using symbol versioning). And then also distribution patches do not care about ABI compa
Good luck with that (Score:2)
Java has one fatal flaw. Every version leap also means throwing away your code. And that simply won't happen.
Of course, every major version leap, in every OS and langauge, comes with its "deprecated" practices, functions and whatnots. Java, though, seems it doesn't have that. It just stops working. Like, so. What used to be the staple of your programs in version A simply doesn't work anymore in version A+1. Or, worse, it seems to work but has some really nasty side effects that break your program JUST enoug
Re: (Score:3)
What about Java2k? (Score:2)
As an outsider it seems to me that Java2k is the way more advanced version. It ditches the C++-inspired class and object concept and introduces truly useful features like more defined probabilistic computing. (as in regular Java, every statement has a probability of executing, however in Java2k this is no longer implementation specific, so if you need code with a defined amount of reliability, you no longer need to port it)
Does it offer static indeterminacy? (Score:2)
But does it offer static indeterminacy, such as the call-by-name feature of Algol 60, which everyone has given up on figuring out what it does, let alone how it could be implemented?
Still Java? (Score:1)
Re: (Score:2)
I really, REALLY wish Java allowed us to do C#-style string interpolation. It wouldn't even have to be language-level. Literally, someone like Jetbrains could just graft it onto IntelliJ as pre-compile desugaring (that works just like Android Studio's Lambda-desugaring), so something like:
$"The value of foo is {foo}"
would automatically and implicitly be desugared to:
String.format("The value of foo is %s", foo.toString());
Some people would bitch & moan, but within a year or two Eclipse and Netbeans would
Interesting contradiction... (Score:2)
It boils down to LTS timing (Score:2)
I write educational packages in Java released yearly. These are distributed to students across the US and have to run in university's computer labs. We still target Java 8. Why because there is too much time between LTS versions of Java.
Java 8 was released in 2014. Java 9 and 10 were not LTS; so targeting them was software suicide.
Java 11 was released in September 2018. So before September 2018, we could not even consider migrating, there was nothing to migrate to.
During Summer 2019, we surveyed our users a
Its the incremental releases (Score:1)
Let me know when developers move away from Java (Score:2)
See subject.
Wake me up.
"most popular language by a long shot" (Score:2)
No no no (Score:1)