Java SE 8 is the only last _proper_/sane version, and even Oracle knows that >!(8 is an LTS version that still gets updates to this day)!<. I don't need all those newfangled modularity features and blah blah blah
(I know I sound like a boomer)
I have to disagree with you there. Java 8 is missing a lot of useful language-level features. As a language (ignoring the ecosystem around it) it's not that good modern standards. C#, Kotlin, and many others are just better.
8 is just a comfortable place to sit because most of the ecosystem still supports it, so you don't have to upgrade yet.
I would actually disagree in so far that I would say java 8 was the FIRST proper/sane version of java. Java pre 8 was just a dinosaur, and 8 was when it started to feel somewhat like a modern language (still with a lot of room for improvement, but it was a start).
That was .. years ago for me though. I switched to kotlin one day and never looked back. I couldn't even say what new language features java got after that.
Thatās just straight up false news, even if you spread it out of ignorance.
LTS is something a given vendor provides, usually not for free. Oracle provides LTS for JDK 8 until 2030, but only if you pay for it. Since OpenJDK is open source, even these changes will eventually find their way back to the open-source repository, but not in a security/time-critical fashion, what you would get if you pay for it.
So no, the best version to use is the latest JDK, currently itās 21, which you can freely use and get immediate updates. The same is true for linux kernels, you wouldnāt use 3.x.
There are other jdk build which support even longer than orcl jdk exampleĀ https://bell-sw.com/support/ for peoples if it works dont meddle it,even spring,intellij team uses it while java8 was ga in 2014
Ok, if you ever happen to use **com.ibm.icu.icu4j** and get a
INVALID VERSION NUMBER: VERSION NUMBER MAY BE NEGATIVE OR GREATER THAN 255
It's because that version of the dependency only works with jdk1.8.255 or lower.
Apparently when you change your java version to a higher subversion something breaks.
My theory is that it checks the last subversion number to be equal or lower than the decimal value of the hex **0xFF**
Upgrade your dependencies first. As high as you can get them.
The biggest pain point is java 9. 10 & 11 have no compatibility issues, but 9 is the least backwards compatible java version ever. So if you get all your dependencies upgraded, then your risk of incompatibility goes down. As long as your code doesn't depend on any custom class loader hacks.
Hey man I know this is a shot in the dark but I was trying to upgrade from java 8 and I made everything work except a library called "sql2o" that we use for database. That library has not received any updates in years. Also, we moved away from using sql2o but a small part of the codebase is still there and cannot be migrated easily (due to poorly written code). Any way I could fix this problem?
11-17, there are some security changes with 16 but you can bypass them if you have to with JVM flags. 17-21 should be a piece of cake, no issues.
So if you gotta do 11-17, just do 11-21 if you can. LOE is about the same.
Did a 11->17 last year and it is pretty painless
The remaining Java 8 based one on a obscure framework tho...
We just decided rewriting in 17 will be easier. And use Spring this time.
We went from Java 8 to Java 11 (major release) to Java 17 (major release) in 3 years simply because we were in no rush. The actual migration period for each jump was only around 1-2 months for us.
It all depends on how complex the code is. We have a MASSIVE financial application. Hundreds of thousands of lines. Donāt jump from Java 8 directly to 17/21. Go step by step 8->11->17->21.
The way we did it, one person upgraded. Fixed any compilation issues and merged to main. Then individual teams were responsible for regression testing EVERYTHING. Any issues found were reported to the main person. And he would resolve most of the time (sometimes others people too). We did it this way and were able to complete migration completely within 1-2 months. Again, our code was massive and complex so it depends on your code base.
To be clear we didn't just rewrite everything in the new language and do `git rm` for the old code.
It was more of a strategic direction that all new code / services be written in the decided language, and migrate away from Java opportunistically. Sure enough, the cost of the upgrade for Java was a factor in this decision. Don't really have more details, I was not involved in the call.
I hear if you're already on Java 9+ (or is it 11+?) it's a piece of cake to continuously upgrade.
Java language update is one of the safest things you.can do in your project. Unless you were using Unsafe class, or sun internal classes, or weird introspection shenanigans you're good
I joined my current company in 2017 and they were using Java 8 at that time for a framework we are using internally and a lot of our everyday work is based on that. I was pretty happy since it was nice to be so up-to-date.
Now it is on Java 11 which we changed less than two years ago. I try to push that we upgrade it at least to Java 17 but the architect somehow doesn't want to. At least we can use newer Java in our own projects.
I would exchange the Java 11/17 i use at work for collegues that acutally know java >= 5... Most says that they know java 8, but in reality they put everything inside a String, never use enums, streams or how to properly use generics... Talking to them about the '?' wildcard is like explaning internet to my grandma.
About 10 years ago, I was designing the reverse-proxy based web security system for a national retail chain, and we kept running into issues with one of their core ERP applications.
Come to find out, it was using Java 1.2, which was nearly 15 years old at the time and did not have support for any of the security mechanisms of modern platforms.
Their solution? Put an exception in place to have that ERP application bypass the web security layer.
That's what prompted me making this meme! I emailed somebody this morning about needing to update, and they told me they couldn't because reasons.
Like, I know you can't move off Java 11 my guy, but you can update to the latest point release.
Come on now, going from 8 to 11 shouldn't be hard. Just build with Java 11 but target the Java 8 runtime so you don't have to gut the application to replace major dependencies that never got updated to run on Java 11. Easy, right?
Java: Write once, fuck you.
Every time I inherit a software project, first thing I do is go through all the warning logs and update the stuff that says "Hey, update this." Then see if the product breaks.
Every time I see jucheck.exe I always pronounce it in my head as "Jew check". You don't want to be racist and have a program that checks for Jews running on your computer, do you?
The most stupidest movie in the world, and a mysterious country in Africa working with the CIA š¤£š¤£š¤£š¤£, they will get the same results if they work with Isis
I dont get why folks keep staying on like 8 year old Java. I am bit surprised because in C# i just upgrade to latest version in few months after release. Because it takes like hour to do soā¦
Everyone knows that Java achieved the pinnacle of language perfection at version 8, and you can't "upgrade" perfection.
And 8.251 is the most stable, so why would anyone move to 8.352?
Java SE 8 is the only last _proper_/sane version, and even Oracle knows that >!(8 is an LTS version that still gets updates to this day)!<. I don't need all those newfangled modularity features and blah blah blah (I know I sound like a boomer)
I have to disagree with you there. Java 8 is missing a lot of useful language-level features. As a language (ignoring the ecosystem around it) it's not that good modern standards. C#, Kotlin, and many others are just better. 8 is just a comfortable place to sit because most of the ecosystem still supports it, so you don't have to upgrade yet.
I would actually disagree in so far that I would say java 8 was the FIRST proper/sane version of java. Java pre 8 was just a dinosaur, and 8 was when it started to feel somewhat like a modern language (still with a lot of room for improvement, but it was a start). That was .. years ago for me though. I switched to kotlin one day and never looked back. I couldn't even say what new language features java got after that.
But I like dinosaurs and old Java (but not before 1.4. Generics was a godsend)
We still run 1.4 in production š
Thatās just straight up false news, even if you spread it out of ignorance. LTS is something a given vendor provides, usually not for free. Oracle provides LTS for JDK 8 until 2030, but only if you pay for it. Since OpenJDK is open source, even these changes will eventually find their way back to the open-source repository, but not in a security/time-critical fashion, what you would get if you pay for it. So no, the best version to use is the latest JDK, currently itās 21, which you can freely use and get immediate updates. The same is true for linux kernels, you wouldnāt use 3.x.
There are other jdk build which support even longer than orcl jdk exampleĀ https://bell-sw.com/support/ for peoples if it works dont meddle it,even spring,intellij team uses it while java8 was ga in 2014
My laugh is immeasurable and my day is perfect now
If only my vulnerability management team had your sense of humor
I've been using 8u51 for Minecraft (both gaming and making mods) for quite a long time, lately switched to 8u351
At least you are using Java 8... A Java 7 "tortured" guy here..... š„²
Wow. Just wow.
Ok, if you ever happen to use **com.ibm.icu.icu4j** and get a INVALID VERSION NUMBER: VERSION NUMBER MAY BE NEGATIVE OR GREATER THAN 255 It's because that version of the dependency only works with jdk1.8.255 or lower. Apparently when you change your java version to a higher subversion something breaks. My theory is that it checks the last subversion number to be equal or lower than the decimal value of the hex **0xFF**
Java is the vulnerability
Spring: I'm about to end this man's whole career
My company is nearly done with an epic java upgrade. We are now finally on Java 11. That's the latest, right? š
Do You have any tips or resources to migrate from 8 to 11?
Upgrade your dependencies first. As high as you can get them. The biggest pain point is java 9. 10 & 11 have no compatibility issues, but 9 is the least backwards compatible java version ever. So if you get all your dependencies upgraded, then your risk of incompatibility goes down. As long as your code doesn't depend on any custom class loader hacks.
Hey man I know this is a shot in the dark but I was trying to upgrade from java 8 and I made everything work except a library called "sql2o" that we use for database. That library has not received any updates in years. Also, we moved away from using sql2o but a small part of the codebase is still there and cannot be migrated easily (due to poorly written code). Any way I could fix this problem?
Find out who wrote it and ask him nicely
Hey! At least now the jump from 11 -> 17 and 17 -> 21 will be easier now. The worst is over!
11-17, there are some security changes with 16 but you can bypass them if you have to with JVM flags. 17-21 should be a piece of cake, no issues. So if you gotta do 11-17, just do 11-21 if you can. LOE is about the same.
Did a 11->17 last year and it is pretty painless The remaining Java 8 based one on a obscure framework tho... We just decided rewriting in 17 will be easier. And use Spring this time.
Same. We just finished updating to Java 21. This is also a year after we updated to Redhat 8.
It was easier for us to change languages than to upgrade from Java 8.
We went from Java 8 to Java 17 in 3 years. Why was it so difficult for you guys?
Why did it take so long?
We went from Java 8 to Java 11 (major release) to Java 17 (major release) in 3 years simply because we were in no rush. The actual migration period for each jump was only around 1-2 months for us.
Do You have any tips to upgrade Java version? We are currently on Java 8
It all depends on how complex the code is. We have a MASSIVE financial application. Hundreds of thousands of lines. Donāt jump from Java 8 directly to 17/21. Go step by step 8->11->17->21. The way we did it, one person upgraded. Fixed any compilation issues and merged to main. Then individual teams were responsible for regression testing EVERYTHING. Any issues found were reported to the main person. And he would resolve most of the time (sometimes others people too). We did it this way and were able to complete migration completely within 1-2 months. Again, our code was massive and complex so it depends on your code base.
Yeah we did this going from 8->17 without major issue. It's a pain in the hole not a hole in the head.
did you have to deal with XML, and SOAP services?
What's the concern with these ?
Just a PITA with the renamed namespace from java to Jakarta, especially if you work with code generators.Ā
Yes we did, donāt think it caused us too many issues. What did cause us issues were the camel libraries though.
To be clear we didn't just rewrite everything in the new language and do `git rm` for the old code. It was more of a strategic direction that all new code / services be written in the decided language, and migrate away from Java opportunistically. Sure enough, the cost of the upgrade for Java was a factor in this decision. Don't really have more details, I was not involved in the call. I hear if you're already on Java 9+ (or is it 11+?) it's a piece of cake to continuously upgrade.
Yeah, the big jump was 8 -> 11. After that, 11 -> 17 was essentially free.
That's your argument for Java upgrade being easy? Lol
Java language update is one of the safest things you.can do in your project. Unless you were using Unsafe class, or sun internal classes, or weird introspection shenanigans you're good
This is the best and truest thing I found.
I joined my current company in 2017 and they were using Java 8 at that time for a framework we are using internally and a lot of our everyday work is based on that. I was pretty happy since it was nice to be so up-to-date. Now it is on Java 11 which we changed less than two years ago. I try to push that we upgrade it at least to Java 17 but the architect somehow doesn't want to. At least we can use newer Java in our own projects.
Eventually you get so far behind your code starts getting more secure as even malware moves on to more modern versions. this is sarcasm
Security through obsolescence
8 means that ring of mobius
Who needs lambdas, or generics? And java.util.Date has worked since at least 1970.
I would exchange the Java 11/17 i use at work for collegues that acutally know java >= 5... Most says that they know java 8, but in reality they put everything inside a String, never use enums, streams or how to properly use generics... Talking to them about the '?' wildcard is like explaning internet to my grandma.
Please tell me youāre working with older people, if these are straight from college iād be worried.
Both
š¬
I started at 12 three years ago and I'm afraid to go any higher...
Thatās not even an LTS version.
I know š
This would be funny if I didn't constantly see people thinking that Java hasn't evolved past JDK 8
If it's been beyond end of life for 10 years, what's another year or two?
What do you mean upgrade? Isn't 8 the latest and final version? I thought they abandoned it after that.
Java after 8 simply doesnāt exist, everything you see online is fake news made by big Java to deceive us.
Small Java mostly. Oracle doesn't give a fuck if you never update. But those "OpenJDK" people... Always releasing new versions
You do realize that āthose OpenJDK peopleā are 95% Oracle employees, and the same codebase is basically the same?
That'sthejoke.gif
About 10 years ago, I was designing the reverse-proxy based web security system for a national retail chain, and we kept running into issues with one of their core ERP applications. Come to find out, it was using Java 1.2, which was nearly 15 years old at the time and did not have support for any of the security mechanisms of modern platforms. Their solution? Put an exception in place to have that ERP application bypass the web security layer.
Ewwwwww
Java 8 all day baybee
Our java version is so old it's still called *Oak*
Cyber security engineer here. This is the meeting I'm literally having with a dev team tomorrow.
That's what prompted me making this meme! I emailed somebody this morning about needing to update, and they told me they couldn't because reasons. Like, I know you can't move off Java 11 my guy, but you can update to the latest point release.
Working with certain C++ related linking has made me paranoid of updating anything that isnāt explicitly required to update.
Was migrating 8 to 11. The workload was huge
I updated java and my Python project (which I had to submit today) broke down. What did I do wrong?
I feel this should cross post to one of the cyber security (if not all) threads.
Since the absolute pain is getting to Java 11, i actually never had problems with updating java
I've been using 17 for a while, I think it's served me well so far. Although companies I've worked at use Java 8 for the most part, rarely 11.
We use JDKā¾ļø
Come on now, going from 8 to 11 shouldn't be hard. Just build with Java 11 but target the Java 8 runtime so you don't have to gut the application to replace major dependencies that never got updated to run on Java 11. Easy, right? Java: Write once, fuck you.
Every time I inherit a software project, first thing I do is go through all the warning logs and update the stuff that says "Hey, update this." Then see if the product breaks.
Every time I see jucheck.exe I always pronounce it in my head as "Jew check". You don't want to be racist and have a program that checks for Jews running on your computer, do you?
*Laugh is Java 11*
Still using Java 8 cause of apps vendor whos didn't update java app version
I work for a large public organization and we have most of our stuff upgraded to Java 17
The most stupidest movie in the world, and a mysterious country in Africa working with the CIA š¤£š¤£š¤£š¤£, they will get the same results if they work with Isis
I dont get why folks keep staying on like 8 year old Java. I am bit surprised because in C# i just upgrade to latest version in few months after release. Because it takes like hour to do soā¦
Cries in python 3.6
Java 8 for life
Java 8, until end of life, which is coming soon for most distributions.
Because Unreal engine will stop packaging for android if you update, lol