'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."
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.
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
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.
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.
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.
"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.
Then you're doing something wrong.
Yes: Using Java, and expecting Oracle to be a good steward when they never have been a good steward of anything.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
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.
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
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.
In the context of the statement, he’s clearly talking about lines written by others in Java being broken by Java 9 changes not the JDK or SDK
Well, there's spam egg sausage and spam, that's not got much spam in it.
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
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.
Comment removed based on user account deletion
Comment removed based on user account deletion
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.
Q: Why use lambdas? A: You give a name to something when it has proven important enough to give a name to.
This isn't a reason it's utter gibberish.
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.
Lambda expressions are crack for undisciplined lazy coders.
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.
The work you are doing now to fix your shitty code will not have to be done again. Framework allowed people to write shitty windows dependent code,. Net Standard leads you away from those bad habits of coding to a specific OS or language implementation. The tripe about redoing your software every three years is absolute garbage. Not true. Reading your post, it is no wonder you are having issues. Most framework code can be recompiled on core without issue. Just do what Microsoft's says and you will be good. They are doing you a favor, trust me.
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 ]
Q: Why use lambdas? A: You give a name to something when it has proven important enough to give a name to.
Er, I can always give a name to something in Java. Without lambda expressions.
I'm not talking about lambda expressions in general. I'm talking about them in Java. They're fucking up the established language paradigm. If someone wants to write in a functional language, let them go write in something other than Java. There are plenty of functional programming languages out there. Leave my OO Java code alone.
Did they expect developers to update to 9 without end users having a version 9 JRE?
Hmm, C# was designed by an expert language designer that looked at Java, kept the good bits and improved elements of the rest.
The main things he did wrong were allowing direct memory access, and allowing his employer to cripple the deployment environment.
Apart from that C# was a bloody good language from the outset. I'm not sure I'd say it was better than Java but Java's gone downhill substantially since then.
Corporations are optimizing for Dollars not for cpu cycles and bytes. Java is way more economical than C and C++.
A long time ago, in a galaxy far, far away . . .
CPUs were very expensive. It would take the annual salary and benefits of a good sized team of programmers to buy a CPU.
Today one developer's salary + benefits for a single month can buy a sweet box. And a very sweet box for two months worth.
Programmers are now the expensive resource. Not machines.
A Java programmer can ask for more memory and get it, because they can work at a higher abstract level and beat their C/C++ programmer to market, and laugh all the way to the bank. I know it is sad that we're not focused on saving every possible byte and cpu cycle. But that's the real economics. A business person would laugh at your argument. It's not the 1980s any more where every cycle / byte mattered.
I'll see your senator, and I'll raise you two judges.
Java is pretty dang simple to install onto Windows. Maybe you're getting your Java from the wrong place? Java is so easy to install onto Windows that even a PHB could do it -- I think.
I'll see your senator, and I'll raise you two judges.
That is a perfect example of why there is no single programming language that is prefect for everything. If there were, we would all already be using it.
So why should people bash Java because they work in an area where Java might not be the best choice? Obviously Java is heavily and widely used, so there must be SOME reason for that. And the fact that it tops job boards for years in a row. I'm not saying everyone has to like Java. Just quit making up crap. If it were so horrible it would not be used.
I'll see your senator, and I'll raise you two judges.
What is the procedure for devising a meaningful name for those methods that have not yet "proven important enough to give a name to"?
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.
You don't need a datacenter unless you need to scale up significantly.
You can google and youtube for it but . . . in 2012 Twitter rewrote from Ruby On Rails to Java. You should listen to their reasons why. They went to Java because they needed to handle a billion tweets per day. Each one has to be routed to phones, email addresses, and other things in near real time. Yes, they need a datacenter, but not because they use Java. They use Java because it was MORE efficient. It is in fact much more efficient. That's why it is number one. The people who are using it and spending significant money on it are not stupid as apparently you are.
I'll see your senator, and I'll raise you two judges.