'Java 9, It Did Break Some Things': Oracle Bod Admits To Developers Still Clinging To Version 8 (theregister.co.uk)
Java has a problem -- the language and platform is evolving faster than ever, but many developers are stuck on the five-year-old Java 8. From a report: So why have developers not upgraded? Simply, Java 9 introduced major changes, including internal restructuring, new modularity (known as "Project Jigsaw"), and the removal of little-used APIs. These changes broke code, and even developers who are happy to make the necessary revisions have dependency issues. "We have problems with libraries that do not yet support the latest versions," said one QCon attendee.
"I want to explain why it was necessary," said Oracle's Ron Pressler, part of the Java platform group developing the language and lead for Project Loom. "There are billions of lines of code in Java, and Java 9, it did break some things. The reason is that Java is 20-something years old. It will probably be big and popular in another 20 years. We have to think 20 years ahead. The way the JDK was structured prior to Java 9 was just unmaintainable. We could not keep Java competitive if we had not done that change. That was an absolute necessity."
"I want to explain why it was necessary," said Oracle's Ron Pressler, part of the Java platform group developing the language and lead for Project Loom. "There are billions of lines of code in Java, and Java 9, it did break some things. The reason is that Java is 20-something years old. It will probably be big and popular in another 20 years. We have to think 20 years ahead. The way the JDK was structured prior to Java 9 was just unmaintainable. We could not keep Java competitive if we had not done that change. That was an absolute necessity."
"But Java isn't necessary, so I'm kinda stuck."
Java: works now, breaks later.
Anons need not reply. Questions end with a question mark.
I know of no new development done on java applications or anyone in my company doing anything with java. its all python now, if its not a compiled language like C. more interest in golang, actually, than java.
in india, they are still behind the times and still lazily using java. but the ROW is moving on to python and while python2 vs python3 has its issues, its nothing like the monstrocity that is java.
"write once, run everywhere". fucking pack of lies that is.
java can fuck off and die. sooner the better.
--
"It is now safe to switch off your computer."
"It will probably be big and popular in another 20 years. We have to think 20 years ahead."
See? This is future-proof thinking. Send this man a case of beanie babies, which I assume based on this logic will be a valuable currency again in a few decades.
I know of no new development done on java applications
Come on, Java server development is still going strong
I mean, some companies are still using Cobol, and you think Java is going anywhere?
Not to mention not all Android developers have moved to Kotlin, that is a many year process - in the meantime there is a ton of Android Java code, and even new apps being developed in Java until widespread Kotlin expertise ramps up.
"write once, run everywhere". fucking pack of lies that is.
Why? That actually worked well. In the past I worked on desktop Java apps that I could run across various systems (and still work today).
When I moved to server development, we would sometimes shift between systems like Solaris and Linux or some BSD variants, but while we may have had to tune the VM we did not change the code...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Not if you keep this up.
Sorry. I stopped reading at that point and shouted bullshit.
Comments and blank lines maybe, not code.
Guy is an idiot.
https://jaxenter.com/java-slippery-slope-downward-trend-133843.html1
https://jaxenter.com/java-slippery-slope-downward-trend-133843.html
Just a quick question, sorta on topic:
If you are a Java guy - would you start anew with Java today or pick something else? (Scala, Kotlin, ... Go, Python, whatever).
Que opinions below, and thanks for that.
We suffer more in our imagination than in reality. - Seneca
I greatly dislike breaking changes but sometimes it is necessary. Backward compatibility do the dawn of platform time gets increasingly expensive in every way. Technical debt exists here to, languages are not immune.
I was reluctant to move to Python 3, but now I see that this had to happen. Substituting iterators for lists in the APIs was essential to make it scalable to big data. Its not just for parsing little log files anymore.
That binaries break on every release of Scala is a defect in that platform. Yeah, I know, reasons, but it is still a significant defect.
I use Java a lot, so I know that there are debt issues. So I am willing to give them a pass on this. I'll buy the argument it was necessary. This is not the first breaking change in Java by the way, though previous ones have been small issues.
Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
Write once, rewrite everywhere.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
It's 100% obvious that you are a hack.
to stay away from Java? Impressive!
It sounds like Java 9 is the Windows Vista version of Java: it broke backwards compatibility and made users apprehensive to upgrade yet despite that, it was absolutely necessary to increase the quality and the long-term maintainability of the product. Assuming that they didn't make any other major changes that created significant difficulties in upgrading past version 9, I think I agree that Java will be better in the long-term for these changes.
Why would anyone make the effort to port to a non-long term support version (e.g. 9, 10)? By the time your application container supports those versions (some still don't) and your application would be ported to those versions they are already going off support.
The entire support life cycle for Java 9+ along with the change in licensing are just a collection of not terribly bright ideas from Oracle. There's a reason that Azul, IBM, Redhat, etc. are offering extended support for Java previous versions.
The new Java LTS version (11) has only been out for a few months. The interesting question will be what is the usage of Java 11 a year or so from now.
Java is a turd.
Oracle went with a new version scheme a couple years ago. According to their website java 9/10 are already out of date.
Java 11 is the latest, and supposed to be Long Term Support.
https://www.oracle.com/technetwork/java/java-se-support-roadmap.html
You lot fucked up and are fucking it up some more while trying to "fix" it.
Sounds about par for the oracle course.
The problem very much is that even five years is a very long time in the hype-de-l'heure world of idiot hipster computing, and twenty or even forty years is very little time for infrastructure and even the code that keeps companies going. Exactly that is what java positioned itself to bridge, and apparently they have been falling short and are still falling short trying to "fix" it.
Amazingly oracle is made out of one application that ends up in that sort of long term (and due ellison, terribly abusive) relationship with companies providing them building blocks for their infrastructure. So I say they ought to've known better. Waiting a good twenty years before even starting to clean up? That's just not good enough. That's criminally negligent.
So I'm not buying the aplogy. It's a reason, not an excuse. Yes I get what you're trying to do. No, try harder and break less things while doing better. And if you cannot, find someone who can. Sooner rather than later.
I've developed in various platforms, including mobile (from friendly ones like iOS to... less friendly ones like BREW), but I had never used Java outside grad school, partly because I didn't enjoy that experience. :)
So a few years ago (3 perhaps?) I tried installing the Android dev environment on my Mac to try out Android development, even if it is Java. I was in disbelief when I saw on the official Google instructions that you needed a very specific version of Java to have some functionality of the dev environment... and you also needed another version if you wanted some emulators to work!!! OK, it was probably partly Google's fault (they probably couldn't care less about development on Macs), but it was also about Java being like this.
Saw that, tried to make it work regardless, had some lingering issues, said f*ck that shit, and I am still android-dev free
Grumpy old man here, but a Java developer. Java is not, and never will be a functional language. Nonetheless, Java 8 just had to introduce lambda expressions, so that wannabes could kinda, sorta pretend that Java was functional. The main effect of lambdas, however, is to hide data types, so that weak developers don't actually know what interfaces and data types they are using.
So, doubling down on stupid, they introduce "var", so those weak developers really don't have to know what types they're using. Java will figure it out, or you can play pinball till it works.
Project Jigsaw, was it really necessary? Maybe, but I'm not entirely convinced. Certainly, the new module system is a PITA, since you now have to deal with both module-paths and class-paths, plus of course getting the permissions right.
Now, I know that Java is used for a lot of backend stuff, but JavaFX finally made Java actually really good at GUIs. Swing was a buggy mess that no one seemed to want to fix, but JavaFX got a lot of things really right. So, of course, Java 11 removed JavaFX from the core, making it a PITA precisely because of the module system introduced in Java 9.
- - - - -
Here's the important bit: Nowadays, I am a college professor, and I am faced with a problem: Students new to programming can no longer start with a current version of Java - the changes in Java 9/10/11 have made things just too complex for new users. I have rolled back to Java 8 for the moment. I have spoken with a number of other college level Java instructors, all of whom feel the same way.
The long term question will be: what language do we teach in our programming courses? It is entirely possible that we will move to a different language.
When your language is no longer being taught in schools, well, that's the beginning of the end.
Enjoy life! This is not a dress rehearsal.
Java is NOT better than any other language. Microsoft proved that with C#, which started out as a lame Java version that now surpasses Java in MANY ways. As for the JVM: write once and run away.
...Java is the new COBOL.
My personal view is asking the world to change their ways because you are too lazy to provide a proper mechanism for managing change is unacceptable.
The argument often peddled is of the unfalsifiable objective evidence challenged variety which asserts progress / improvement necessitates breakage or some sob story about how dealing with old crap slows down development or requires too many resources.
I don't share this view. Managing complexity is what programming is all about. Having a long term robust workable plan to manage change and maintain compatibility has ever increasing value in a world of growing user base, dependency trees and maturing technology.
If you have problems it's not because everyone else doesn't want to waste their time on unnecessary hoops it's because you failed fundamentally to design your systems to accommodate change.
So, your language was too much of a POS, so you tried to "improve it" by breaking it, in the hope that people will keep using it...
Feeling the pain with the breakage and incompatibility between .net Framework and .net core.
Feeling the pain with .net Core long term support versions only being supported for 3 years.
Microsoft is forcing all of our .net Core solutions to have a major release every 3 years once LTS version is unsupported.
Then can't do it with the database server SQL Server, customers would revolt. Why is it OK to force a major release on customers every 3 years?
My group has 4 major systems to develop all on .net. If we have to do a major release if each of them every 3 years just to get to the latest .net Core LTS version, where will be the time to actually add business functionality?
Oh yea, vendor says you have the source, it's open source so you are all good if you want to run on the old version for 5 more years. Unlikely my team gets any time and budget to 'learn' the open sourced framework and 'fix' it to work for our systems. Don't have the time to read a million lines of framework code, build my own version, test it and .....
"The reason is that Java is 20-something years old. It will probably be big and popular in another 20 years. We have to think 20 years ahead." No other technology works that way - unless you have a monopoly or licensing lock-in.
The real problem, and this is a problem that many newly created languages and systems have decided to happily and neglegently copy, is the fact that Java was the first language to merge it's grammar and it's libraries under a single banner.
It was an idiotic idea then, and it's an idiotic idea now. Because of this one core terrible decision, backwards compatibility is now a nightmare for literally anything that follows this ridiculous paradigm.
With C/C++, there is the core language. Because of that modularity, each can be updated independently of the other unless the core language introduces a breaking change. Which it generally doesn't, because the people overseeing C still have the ethics required to put their target audience first before their own personal convenience.
Write Once, run on the correct version of the JVM, with the correct libraries, with the correct patches, with the right OS, if the stars align, and the correct sacrifices are made.
Java solves all the problems all you need is:
-At least a 3Ghz CPU, with at least 4 cores
-At least 16GB of RAM
-At least 20Gb of disk space
-At least 3 different versions of the JVM, and compatibility libraries
-A little bit of patience
"Hello World" compiles and runs in just MINUTES on the configuration above.
Rather than break the .Net Framework, they created .Net Core (which is cross platform). Both are being extended separately and in different functional directions (with a growing shared functionality referred to as .NetStandard).
Here's a nice summary of this situation:
https://stackify.com/net-core-...
Further, Visual Studio Code and Community aren't Eclipse...
BlameBillCosby.com
One of the ways this is going to bite people is legacy code ... we recently had to update from Java 7 stuff to Java 8 due to known security issues, and there was always the fear it would break something.
Pretty much you can find yourself with an older app you can't replace, which relies on an older Java ... and then you are screwed.
I'm starting to say "Wait, that runs on Java? Then no, we can't install it" because I now consider Java to be a poisoned environment -- especially with Oracle following their usual douche-y progression and saying you don't get updates without a support contract.
OK, fine, Java is dead to me, apps written in Java are verboten in my professional lide, and Java is simply going to die on the vine from a combination of bit-rot of older apps, and now being in the hands of assholes.
Java is dying because of Oracle, so the sooner you get away from it the better.
Me, if I see some component someone wants to install which relies on Java, I pretty much will loudly say "totally unsupportable in the long run, too much risk to install".
Fuck you, Oracle.
They should have named it "Java 10", to signify a greater jump, and to avoid breaking changes with all of code out in the wild that looks for "Java 98" to indicate the old version.
I'm not surprised that Java 9 and later is seeing limited traction, especially since you still have to jump through hoops to download the JRE for Java 9 or later.
If you actually go to Oracle's Java.com runtime download site, they suggest the latest version of Java 8.
You could download the latest OpenJDK 8 or OpenJDK 11 from adoptopenjdk.net both are LTS (long term support) versions.
This is assuming you don't want to pay for commercial support.
Java doesn't have "billions of lines of code" and worse yet, anyone attempting
to use that as justification for "something" needs to be replaced by a real software developer.
E
That is why all important stuff is still done in C, C++ and Ada.
Corporate beancounting is done in Java, true.
I can't help but feel that Oracle has gone out of its way to make the whole end of life for Java 8 and changes in licensing going forward as complex and confusing as possible, and given that it's Oracle I have to feel like it's intentional - probably in hopes of being able to extract usage fees from any commercial users who keep installing updates.
fencepost
just a little off
I've had a lot of issues with the post-8 versions of the Oracle JDK. I'm a high school teacher and a graduate student in computer science. In classes at my university, we've been using it a lot because databases are my area of focus. Last semester we were pretty much working with relational databases, and we used Java to write web applications using Spring. This semester we are working with NoSQL databases. I spent a couple of hours last week trying to get HBase working with JDK 11, and found quickly that the message in a lot of forums is "don't bother trying, you're doomed." Since I don't really want two installations of the JDK on my machine, I reverted back to JDK 8.
At school, our gradebook application is actually written in Java. You could run it from a terminal or command prompt (I use Linux, Mac, and Windows at school) with a "javaws launchGradeBook.jnlp" command (and it really ran the same in all three environments). In Java 11, javaws isn't around anymore, so that doesn't work. There's a workaround for our gradebook, but it's still annoying because I do a lot of my grading of student work from the command line. In Linux this isn't a huge deal because OpenJDK also supplies javaws, but in Windows/Mac it's a pain.
The biggest annoyance, though, is that the java-package package (which supplies the make-jpkg command) in Debian (and Debian derivatives) still doesn't apparently work on post-8 versions. Don't get me wrong, I use OpenJDK too, but I've had some issues with it and I like to have the Oracle JDK around as a deb file I can install.
Q: Why use lambdas? A: You give a name to something when it has proven important enough to give a name to.
Lambda expressions are awesome and a long overdue language feature.
That neither you nor the PP understand this means you have something new to learn. Go for it.
Comment removed based on user account deletion
Comment removed based on user account deletion
That link is very old. I have always used Oracle Technology Network (OTN) for Java downloads from Oracle: https://www.oracle.com/technetwork/java/javase/overview/index.html where Java 11 is very much recommended. All extremely large companies with very large web presence have a lot of old sub-sections in web sites.
And now the OpenJDK as supplied by Oracle is usually recommended. See this article.
http://www.javamagazine.mozaicreader.com/NovemberDecember2018/Default/52/0/4097901 for easy understanding, and this one for a more complex treatment.
https://medium.com/@javachampions/java-is-still-free-2-0-0-6b9aa8d6d244
The licensing changes are a problem.
the language and platform is evolving faster than ever
The point is that it would be nice if the language and platform could actually run faster.
I have lots of legacy apps out there that still use Java Web Start. I believe it was removed in 10+ but I'm still sticking with 8 for those apps.
You do realize that C# runs on Linux and OSX. For f*ck sake, OSX has a Visual Studio (not just Visual Code). Also, since Java has started withering on the vine there has been many open source libraries for C# and .NET being developed. Even Microsoft has started to do this.
With the amount of time required to massage apps to use java 9, if we're going to make that effort we'll rewrite in something else.
You realize that the java work India is doing is for 'merkin companies right? India just supplies a demand, a demand created by 'merka and its use of java.
I still havn't fixed the javaeditor for Wograld yet although it should be easy to do. It worked under java 8, and now under java 11, its all messed up. They changed something about how types work so everything has to have a type, even if it is just a wildcard.
No Java Web Start - no reason to use Java.
Want smart clients - use Android?
Oh really, I just run
dnf install java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64
and it's installed
Oracle's license changes make using anything newer than 8 a headache.
I really like Java, but finally got fed up. The inclusion of JavaFX was very convenient (if you wanted OpenGL support, just download the Oracle JRE). Oracle incorporated JavaFX for a number of years but have now removed it from the JRE and pushed it to the open source community. So, now the convenience is gone.
In the near future, Swing and AWT are supposed to get pushed to the open source community and no longer be part of "Java". Evolution will decide what sticks around (I imagine Swing and AWT are not at risk, but JavaFX will probably die off since most of it is crap compared to Swing aside from the inclusion of built in "OpenGL" support). Great, so lets go back to 1997'ish, pre Java 1.2 (if I remember), and now I need to download extra libraries to run an application that, for more than two decades, only required the JRE.
I get it - Oracle is focusing on their bread and butter - the back-end. Shit, I really liked Java, but I've decided to drop it and only use it when necessary to support an existing infrastructure. I'm just not going to support new development with it and will find other shit to work on.
Luckily, C++ has evolved over the years and can be a very pleasant language to program in. I always hated it until the C++ 11 standard. Now I actually like it.
I don't get the Pythong rage. The only positive thing I can say about that language is it has some nice libraries for presenting data. Otherwise, it seems like a waste of time.
Lot's of glowy words. Now all we need to figure out is why Java (any version) will not install on Windows 7 x64? Admin or otherwise.
I am a Java programmer. I have moved on to Haskell for personal projects and Python for office projects.
Maybe earlier. There were game breaking changes in every major revision of Java after 1.4. Some resulted in code not running at all, others in changed object dependencies which lead to inconsistent results, still others silently produced the wrong results, sometimes deep inside of code nobody understood anymore.
End result: Java versions that are insecure and less featureful are STILL IN USE TODAY because Java didn't live up to its write once run anyways Mantra, and the only safe way to run it is on a PC with every revision installed as a different runtime environment with all package dependencies companies to that exact version. Something that is almost impossible to achieve without running very specific versions on each version of the JRE/JDK.
Much like DotNet, it has failed at one it was supposed to do, in large part due to the object orientation making cascade changes that result in ABI and sometimes even API incompatible code.
Think about why Java's "still around" for a minute. It probably serves a purpose or two. IMHO Java's purposes are pretty banal but valid nevertheless.
Java's main purpose lies in openness. As in you can't get strong armed by one player. The second purpose is in Java's type safety. Application programmers won't screw up badly. And so, you can setup an organization with a handful of programmers that actually know what they do and a huge load of application programmers with families, mortgages and lives.
Java's success also has to do with being first to market with the mentioned traits. Don't what would have happened if today's languages would have been around 20 - 25 years ago. But Java still develops and would still be a serious contender in such an hypothetical case.
So Java is the new Cobol. That's being said since the turn of the century and that's pretty much true. With deep pockets and employing huge amounts of programmers, finance influences language popularity massively.
To me, Java is good enough but I don't sell my soul to it. I keep my core code -which contains my unique data structures and algorithms- well away from anything else. Thus minimizing dependency on anything external.
Recently I -somewhat reluctantly- moved from Java 8 to Java 10/11 and I merely had to update a few dependencies. I also had a few test classes using reflection that started show warnings which I had to deal with to completely clean up my code.
I look at other languages respectfully. I see them serving purposes, changing our way of thinking and simply having fun. We're standing on the shoulders of giants but we still are at the beginning of our quest.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
https://jaxenter.com/java-slippery-slope-downward-trend-133843.html
( ^- FTFY )
If you define 'dying' as 'it's not what most of the new hip project a born with',
yes under that very strict and very precise definition, Java is dying.
A long time ago (e.g.: right about the time Java was migrated into a cross-platform thing for PDAs and feature-phone, and was still taught at the university), it was popular to use it when you wanted to build something cross-platform, an app that runs on both PC and Mac (and Linux) (think all the GUI that where written for server-mode clones of e-Donkey, etc), a portable game that runs on multiple pocket devices (<-that why Android was born among Java).
Nowadays, most new hip things tend to be started in Python (currently starting to overtake the previous JavaScript/node.js over popular thing)
But in General ?
No.
Java is headed the same direction as COBOL before it.
It used to be popular a long time ago, now business have giant legacy codebases they are reliant on, and in the business world, those code bases are going to be maintained for at least the next couple of decade.
( ^- which is also why Oracle is thinking about modularity and long term maintainability)
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Did they expect developers to update to 9 without end users having a version 9 JRE?
9 was a trainwreck from a dev perspective. It's going to take a major effort to recode around the stuff it broke on the projects I work on. With Oracle now changing the licensing too, it may be the right time to just leave Java behind and recode for a new platform instead.
In direct contrast I recently compiled quite a few COBOL programs that were last amended sometime in 1979 (an old school project for a stock control system that I recently recovered from floppies) I used the GNU COBOL compiler and there were zero compilation errors and no refactoring work required. The program then ran as expected.
In contrast you'll be lucky to compile a piece of Java that was written 6 months ago without work.
There's a reason COBOL isn't going anywhere soon.
I'm still learning and reading the book on java 1.0 chapter 1!
So I'll get there someday to the latest and greatest, since before I knew it there was java 2.0 and now this new fangled Java 9.0... :)
I'm waiting on the new and improved version java 10.0, so to get prepared for it and be ahead of the game since Im outdated, I bought the java 10.0 book that was out there before I realized it was a misprint/renamed and was really java 1.0. So the java versioning is just one big recursive loop...from what I have already read in chapter 1 of my new book, but then again that was what my old book said too!
A university is not a vocational school. It's not your job to teach what's popular.
Employers expect recent graduates to have both university knowledge and vocational school knowledge. They'll choose to hire at job fairs at universities that give both kinds of knowledge over those that don't prepare students for work.
Based on the transition of commercial use of Java 8 to a pay model, I think Oracle wants home and small business users to use OpenJDK builds of the JRE.