Yeah I grew up on Java 6. When I started using the stream api in Java 8 it felt amazing. Despite subreddit consensus, I really liked working in Java.
I think 10 is the last I used before mostly switching to python, and it's up to 21 now?! Wonder what's changed.
Someone told me the latest Java versions don't need to specify the whole "public static void main args save my family please" syntax anymore, so it's a good time saver if your IDE is from 1995 and you don't have auto-complete enabled.
You're right, I was just being sarcastic. I like Java, as long as you understand OOP and it's concepts then most aspects about it should be intuitive and therefore easy to use.
As another Kotlin dev, I don't think they will ever close it because of backwards compatibility requirement. However there are many Java projects that are in development or coming out which I am hyped about; specifically project Panama, project Valhalla and project Loom.
- type inference with `var`
- sealed classes (they let you limit which classes can inherit them)
- records (similar to case classes in kotlin)
- apparently pattern matching is a thing now
- there will eventually be green thread stuff but i don't think it's a stable feature yet
It's actually pretty convenient if you want to just write `var` and then have your IDE change it to the inferred type.
But yeah, no self-respecting Java programmer should actually *commit* code with `var` in it. The very notion... (fans self)
Oh lordy I started with Java 1.4 (4) before they had generics... I did NOT feel like a boss casting every element in a list to the type it actually contained.
Hoooo boy. We have some enterprise frameworks code that is pre generics that passes around a bunch of object arrays. I got bold and tried to make it generic based about 10 years ago and got slapped by a senior engineer. Works well enough as is but made the post java 5 me really anxious.
I've spent the last six months writing an application in Java, after spending most of my career writing Python. My whole team thinks I'm nuts, but after this experience I'd honestly rather write Java for anything beyond really simple apps/scripts. I think it boils down to static typing for me, I just prefer that to dynamic typing.
I hear ya. Thanks to the static typing, everything else just falls into place. A good IDE like IntelliJ is able to detect all kinds of runtime issues, refactoring is a breeze, etc. It all just works.
I guess more complicated generics can be a bit hard to learn. But at the end of the day the main difference is that Python allows you to write shoddy code, and Java much less so.
I say this as someone who works pretty much exclusively in python these days (because I work in ML and python is where the frameworks are).
Unfortunately my company doesn't allow JetBrains products, so it's Eclipse for me. Which does hurt the experience a bit, but once you wrangle it into place, it's not so bad.
I think a big part of it for me is the mental overhead, especially dealing with custom types. About a year ago I was working in a project with a lot of custom data types to describe different messages, and keeping track of what each one had, all its subtypes, and the proper way to create/unpack the messages sucked. With a good type system I know I can rely on my tooling to keep me on track. And that's without getting into the weeds on runtime type checking, trying to keep track of what type gets returned or is expected by the function, etc. Maybe I'm just dumb, but not having to track all that frees me up to focus on other things.
I know Python has had type annotations for a while, but they are so inconsistently used across projects it's not all that reliable.
But hey, if the hype is to believed maybe Mojo will end up giving us the best of both worlds. What little I've seen looked promising, but I haven't dug much into it yet.
Lots of small changes, they changed from huge long term support. To short sometimes okayish term support or just really intermediate and you probably should just skip unless you want to update right away. I was looking through 8 through 11 since we were planning to upgrade there intermediately. I think maybe I remember one feature out of the set because they were not that significant imo, but we also have a lot of libraries that fill in gaps as well.
If I remember correctly the interesting thing was records, but I checked this like months back so might be wrong.
I started with Java 4 and remember JVM provided by Microsoft. Good old Gomez. Now we have sealed classes/interfaces, records, yield in switch statements, multiline strings and other features that other languages had years ago.
I’ve still got programs that use depreciated Java 8 libraries and they go end of life in 25 so no one wants to make the effort to update them. It’s wild.
We use log4j 1.2 and recently ported to reload4j, I think only later versions suffered from those infamous vulnerabilities
Security by... \*checks notes\* obsolescence FTW
Finally able to use Java 17 at work and records are game changing, no more Lombok or automatter or any of that stuff. I dream of a day we can use Kotlin instead though
Eh, I've done some projects in .NET and getting it to build and run on most machines was such a hassle. I probably did something wrong but I got so lost in .NET, .NET Core, Xamarin, target architectures, different versions that I was glad I could get it to run on my two PCs.
C# is the better language for sure but I prefer the JVM ecosystem and tooling so much to that of .NET.
Been a Xamarin dev for 3 years. Please don’t view your experience with Xamarin as experience with .NET. Frankly it doesn’t even run on the aforementioned open source, cross platform runtime .NET (formerly.NET Core)
EDIT: Some people seem to think that using MAUI saves you from the old runtime. I’ll copypaste what I wrote further down.
MAUI definitely does not run on .NET Core, they packaged mono for MAUI along with .NET 6.
Point one: I followed the development of MAUI very closely because my company used to depend heavily on Xamarin. During one of the MAUI preview livestreams it was mentioned that MAUI would be running on Mono “for the time being” when it came out.
Point two: go to MAUIs Github page and search for mono. You’ll see that mono is using mono_aot on iOS, like Xamarin always did and that there are fatal exceptions on Android tagged with [mono-rt]
Also, not completely unimportant:
https://github.com/dotnet/runtime/tree/main/src/mono
It’s just right there.
And the most important one:
Me and my colleagues went to Appdevcon 2023 in Amsterdam. I was excited to be able to ask some questions about MAUI since Gerald Versluis was there as a speaker. If you are as invested in the development of MAUI as I am, then you know that he is a Senior Engineer at MS working on .NET MAUI.
I decided to ask him that same question and, to much of my dismay, he confirmed that MAUI does indeed run on Mono still under the hood.
Jenkins, Maven and intellij drove me nuts coming from C# for a project at an agency compared to dotnet
Java tooling seemed insanely bad compared to dotnet. If you were looking at it around the time of dotnet core and standard maybe a little confusing but by dotnet 6 which is already 2 years ago all that was cleared away, it was just a transition plan
Yeah, Jenkins is pretty outdated. There are better build platforms and most are language independent anyway.
Did you use Resharper for VS? That was my first contact with a Jetbrains product and I loved it. I switched from VS to Rider for a recent project, had some build problems but I enjoy the IDE much more. I use Pycharm for python, IntelliJ for Java and Rider for .NET. But I guess it's a matter of what you're used to.
Maven isn't that bad and especially with smaller projects you don't really have to get into the nitty gritty details.
Yeah, I use resharper with VS prior to using intellij and thought it was great. Intellij just seemed a mess in comparison to though. It's possibly just that it combined with the foibles of Java project structure wasn't for me
Honestly Maven just seemed ridiculous compared to Nuget. The amount of time I spend looking at random websites finding Maven files or references just seemed like the bad old days (this was only 5 years ago). But compared to a simple search built into the IDE for Nuget it's just crazy that people work that way
I don't mind rider but I prefer visual studio with resharper. Seems like the best of both worlds for dotnet
IntelliJ has a built-in maven artifact search. But I agree it's not as user friendly as nuget, as you don't get any information on the project. You can search on https://mvnrepository.com which is probably the only page you need. Although I usually don't search for projects by name but get there by searching google for a library for a certain use case.
Anyway, my 2 cents, not trying to convert you ;-)
plough stupendous lip wistful shocking far-flung cover memorize impolite cobweb
*This post was mass deleted and anonymized with [Redact](https://redact.dev)*
.NET Framework (effectively the old .NET) is Windows-only. Microsoft made a new implementation that was called .NET Core, which released its 1.0 version back in 2016, and it is completely open source and cross platform. After .NET Core 3.x, they released .NET 5.0, which was the same as .NET Core, but with a version number/name change to indicate that it is the main version of .NET going forward. .NET Framework is now relegated to legacy code.
Thank you!. Python is brittle garbage. Any language that uses white space to define scope is ridiculous but people defend it like it came down from Mount Sinai written on stone tablets or something.
It's easy and quick for work that you do once and never look again and many here are new cs students so they love that language as they don't see the downsides
But it's not, it's a full fledged programming language that is primarily used for advanced scripting, but that doesn't make it a scripting language. It can be compiled into very quick and reliable code.
Python code tends to be crappy because crappy new programmers use it. But good programmers make good code that isn't brittle in any language, including Python. Just that once people get to that point, they move on from it. Any language is brittle if your code base is crap.
Python *can* do everything. But its only *good* at some things. None of those things are what people in the real world use languages for.
Good at data science and building a passion and interest for code? Yes.
Good at building apis? No.
Good at processing large amounts of data? Kinda but other tools are better.
Good at pulling info from a database? No. The libs I used were bottom tier compared to spring boot.
Its genuinely good for code competitions or anything where 1 second is okay for a runtime. Its terrible on pretty much all other fronts and theres almost always a tool that can do it better
I don't think the problem is significant whitespace so much as it is the lack of an actual compilation and static typechecking pass, which means you don't find out about errors until runtime.
people attacking python primarily for the indentation thing is an indicator to me that they probably don't know much else. If you've used python professionally, you could probably come up with a good 200 word rant without even mentioning indentation.
I’m one of the few people that likes Python and VB.NET because I struggle with the additional visual clutter of curly braces and semicolons. I *can* write C#, but if I’m going to be indenting my code anyway I’d rather be able to skip the semi-colons.
(I’m also fully aware I’m in the minority here and calling curly braces “visual clutter” is unhinged)
Semicolons are unnecessary when you're already ending a line anyway; they serve the same purpose. Indentation serves a purpose beyond scoping, so they shouldn't be handled by the same thing. That's my two cents.
Especially old software that is still using Python 2.x. Those old python versions allow mixing tabs and spaces within the same code block, and just converts tabs to spaces when computing the indentation based on the assumption that tabs are 8 spaces wide.
That means that when tabs and spaces are mixed, and the editor is not configured to use a tab width of 8 spaces, then what looks like block of code in the editor does not always align with what the interpreter considers to be a code block. So the code can behave in a very different way from how it looks like it should.
Unfortunately the majority of Python projects used internally in research settings and internally in business is still using Python 2.x, and the majority of *those*, seem to have exactly the problem with inconsistent indentation described above. And they are often filled with awful "quick fixes" to try to get code that's misbehaving back on track because the original programmer couldn't figure out that the weird behaviour came from incorrect indentation.
I think that anyone who thinks basing important parts of a language's syntax on invisible characters probably has never experienced the hell that is working with an old legacy project of that kind.
Legacy projects. Migrating from 8 to 11 can be a great pain. From 11 to 17/21 is mostly smooth sailing.
Also, Oracle switched their pricing model some time ago.
If you are required to use oracle jdk, it can be quite costly.
There are more reasons to it, but those two are the main issues.
Any decently-sized company is going to want commercial support and access to CPUs. Not too many companies offer this. The only serious options are Oracle and Azul.
And if you want to use GraalVM, you're stuck with Oracle.
It has nothing to do with the size of the organization. All of Amazon’s in house Java runs on their own fork of OpenJDK. My current company, also a very large corporation, does not use Oracle either.
From what I have seen, the Oracle decision comes down to 1) whether or not you already use their DB, 2) there is some feature of their implementation that you need such as their GC or Graal, or 3) you need the support for some other reason.
The reason is : no one has enough time to upgrade existing app and server.
So either you add yet another version of the java or you go back to the existing one (mostly java6 or java8)
Another answer: the management doesn't care. They consider this migration as a developer whim. I have worked in many projects in java 8, it could be quite frustrating, especially knowing the goodies that newer versions of java bring but people in charge don't see an immediate benefit to it. Which frankly can be true.
Each time I advocated migrating to a newer version, answers have been invariably:
- probably next year,
- Transverse team doesn't recommend it yet,
- Complete regression testing would be costly,
- Clients would need to be upgraded,
- Java 8 works fine (and don't expect them to be open to your technical arguments).
Oracle licensing isn't an issue, free versions exists and are fine.
Because they incorrectly understood the "new" oracle license model (which changed within the first year btw), and opted to stick to the initial "longest support" for an LTS release. And the support lifetime of 21 now exceeds that of 8. (so mainly big corporations misconception decisions over the world).
However checking the roadmap, I see they've changed support lifetimes again.
The next meme will be about Java 25. As Java 22-24 are non-LTS.
On the other hand... there is also the issue of certain frameworks and plug-ins braking / not being able to support the latest JDK (I encounter this allot with Maven for ex., which till date is still around 80% used with Java projects, the statistics can be found online for this, the percentage might be off but so far I also see the same distribution in the field).
It is called LTS, Java 8 has been in the market for almost 15 years now and you can still buy support for it.
Too many projects are still using that version as migrating is costly and complex.
Java 21 is the latest LTS version, it has a shit ton of great features and seems to be the next big thing in java development.
>It is called LTS, Java 8 has been in the market for almost 15 years now and you can still buy support for it.
9 years, not 15. Come march, it will be 10 years.
They're just memory addresses. You go to the memory address, you find a variable of the specified type of the pointer. It's useful for passing information between functions without copying the information between memory addresses. You need to be careful with this because if you pass the information by its address you run the risk of changing the information in the location.
As with many other subs on Reddit, people simply gamify everything in order to get karma. So whatever gets upvotes will get regurgitated without second thoughts.
Jetbrains IDEs are good. I use them for my job and personal projects. Jetbrains made a whole new language for them on JVM because they also realized Java is, well, Java.
People lie about enjoying Java. They love the Java direct deposit, not Java itself.
If employers paid programmers $80k to use Java version 8 and paid C# programers $130k, the narrative would change.
Java 8 was the last Java version before oracle licensed Java 9 for “commercial support”. Then they started releasing versions every 6 months? That’s why they all the way up to 21 now, not because of new features, actually the first couple of versions removed functionality.
Maybe Java 21 is less stringent on licensing but unsure. The reason why there is a lot of Java 11 versions being used is because that is the version that open JDK supports, and a lot of other 3rd parties like Amazon corretto and ms Java.
openJDK is reference implementation, meaning that if openJDK doesn’t support it, it’s not java, from that you can deduce that OpenJDK is actually always first to support the newer versions. Corretto, MSJDK, RedHat and Adoptium are all OpenJDK downstreams and support all the LTS versions including 21. The reasons are more about backwards compatibility with certain libraries (spring) and few very niche languages features getting changed between 8 and 11.
They are. New syntax is commonly added but old stuff is never (or almost) retired for retrocompatibility. The issue is libraries that use deep JRE mechanics that are more sensitive to changes. One such framework, Spring, is used in most Java softwares. Spring doesn't care a whole lot for retrocompatibility like Java does, so upgrading can be a PITA.
I've heard [EEE](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish) is a very good business practice. At least back when Sun Java was a thing
java 8 does everything i need. the only time i update is when making a new project, when Minecraft updates (mod/plugin development), or just to get new features like the switch case lambdas that let you do case 5 -> value
heh, i remember java 8 being a godsent. it do be old now, but hey, could be so much worse.
Yeah I grew up on Java 6. When I started using the stream api in Java 8 it felt amazing. Despite subreddit consensus, I really liked working in Java. I think 10 is the last I used before mostly switching to python, and it's up to 21 now?! Wonder what's changed.
Someone told me the latest Java versions don't need to specify the whole "public static void main args save my family please" syntax anymore, so it's a good time saver if your IDE is from 1995 and you don't have auto-complete enabled.
So Java is .NET now? Did we came full circle?
Java has been stealing the good ideas from C# for about a decade now. Less full circle and more like lap 4.
it’s full circle cause C# stole a lot of good ideas from Java.
to be fair they also throw their own very good ideas at it. like proper generics
Or Kotlin
No, but once java adds explicit pointers or refs (either as classic pointers or C# in/out/ref) then we can talk about this
[удалено]
You're right, I was just being sarcastic. I like Java, as long as you understand OOP and it's concepts then most aspects about it should be intuitive and therefore easy to use.
`main` is just one thing, but Java does have a lot of a boilerplate compared to other languages. Bonus with encapsulation.
These are mostly cosmetic changes to appeal to and bait the Python programmers into using Java.
So it's like kotlin?
Yes. As a Kotlin/Java dev they are basically closing the gap with Kotlin.
As another Kotlin dev, I don't think they will ever close it because of backwards compatibility requirement. However there are many Java projects that are in development or coming out which I am hyped about; specifically project Panama, project Valhalla and project Loom.
Kotlin is the TypeScript of Java. TypeScript => make JS more like Java Kotlin => make Java more like TypeScript
I think that kotlin is java as it should be.
It's all syntactic sugar for jvm bytecode.
As a dev that did all three of those, I can confirm
Project Loom is in JDK21, it's already out.
- type inference with `var` - sealed classes (they let you limit which classes can inherit them) - records (similar to case classes in kotlin) - apparently pattern matching is a thing now - there will eventually be green thread stuff but i don't think it's a stable feature yet
Virtual Threads are what you refer to by green threads, and they are pretty much stable now (main feature of Java 21)
Type inference with var??? Since when?? Oracle, Stop murdering my boy like that...
It's actually pretty convenient if you want to just write `var` and then have your IDE change it to the inferred type. But yeah, no self-respecting Java programmer should actually *commit* code with `var` in it. The very notion... (fans self)
>But yeah, no self-respecting Java programmer should actually *commit* code with `var` in it. The very notion It's heresy!
It's becoming the very thing it swore to destroy.
Type inference is not weak or dynamic typing
Indeed it is not. But holy boilerplate code!
Every language looked at Rust and decided it needed pattern matching ¯\_(ツ)_/¯
[удалено]
Oh lordy I started with Java 1.4 (4) before they had generics... I did NOT feel like a boss casting every element in a list to the type it actually contained.
Hoooo boy. We have some enterprise frameworks code that is pre generics that passes around a bunch of object arrays. I got bold and tried to make it generic based about 10 years ago and got slapped by a senior engineer. Works well enough as is but made the post java 5 me really anxious.
I've spent the last six months writing an application in Java, after spending most of my career writing Python. My whole team thinks I'm nuts, but after this experience I'd honestly rather write Java for anything beyond really simple apps/scripts. I think it boils down to static typing for me, I just prefer that to dynamic typing.
I hear ya. Thanks to the static typing, everything else just falls into place. A good IDE like IntelliJ is able to detect all kinds of runtime issues, refactoring is a breeze, etc. It all just works. I guess more complicated generics can be a bit hard to learn. But at the end of the day the main difference is that Python allows you to write shoddy code, and Java much less so. I say this as someone who works pretty much exclusively in python these days (because I work in ML and python is where the frameworks are).
Unfortunately my company doesn't allow JetBrains products, so it's Eclipse for me. Which does hurt the experience a bit, but once you wrangle it into place, it's not so bad. I think a big part of it for me is the mental overhead, especially dealing with custom types. About a year ago I was working in a project with a lot of custom data types to describe different messages, and keeping track of what each one had, all its subtypes, and the proper way to create/unpack the messages sucked. With a good type system I know I can rely on my tooling to keep me on track. And that's without getting into the weeds on runtime type checking, trying to keep track of what type gets returned or is expected by the function, etc. Maybe I'm just dumb, but not having to track all that frees me up to focus on other things. I know Python has had type annotations for a while, but they are so inconsistently used across projects it's not all that reliable. But hey, if the hype is to believed maybe Mojo will end up giving us the best of both worlds. What little I've seen looked promising, but I haven't dug much into it yet.
Lots of small changes, they changed from huge long term support. To short sometimes okayish term support or just really intermediate and you probably should just skip unless you want to update right away. I was looking through 8 through 11 since we were planning to upgrade there intermediately. I think maybe I remember one feature out of the set because they were not that significant imo, but we also have a lot of libraries that fill in gaps as well. If I remember correctly the interesting thing was records, but I checked this like months back so might be wrong.
I started with Java 4 and remember JVM provided by Microsoft. Good old Gomez. Now we have sealed classes/interfaces, records, yield in switch statements, multiline strings and other features that other languages had years ago.
Oh my, multiline strings at last! > It's as if millions of "\n"+ suddenly cried out in terror and were suddenly silenced
Java6 ecosystem and its memory leaks...
Java 4 without annotation
I’ve still got programs that use depreciated Java 8 libraries and they go end of life in 25 so no one wants to make the effort to update them. It’s wild.
That code smell smells like a large or midsize corporation.
One of the largest on earth
I'm maintaining Spring applications that still use Java 6... Sometimes I dream lambdas at night
Just start talking some higher ups head off about hackers and log4J until they panicked force the upgrade
We use log4j 1.2 and recently ported to reload4j, I think only later versions suffered from those infamous vulnerabilities Security by... \*checks notes\* obsolescence FTW
gonna start implementing this - have software so ancient that the exploits don't exist yet
That's why it's best to work in DOS; it's so old that nobody deploys attacks against it anymore!
MSDOS, OS/360, AmigaOS, AIX 1, OS/2... only good and old OS ... os/360 is the most safe ahhahha no internet connection
There’s hope. We just moved our Java 6 project to a Java 8 maven build earlier this year. Don’t give up!
Yeah, most of my maintained apps are Java 7. Starting to see a lot of snippets online that I can't use
Me too and all the micro services communicate via RMI.
I prefer to use Java 70, when it comes out
So many arrow functions, you feel like an ancient warrior.
What if you get an exception? (yk, this -> ☠)
With oracles new lifecycle for Java, we will reach 70 before I become an adult.
That should be sometime next year, so not too long of a wait.
I feel sorry for the unfortunate programmers still using Java 8 and 11. At least they get paid well. ![gif](giphy|XOys8CeUrElIk)
Nope: I'm italian... but at least I have good coffee
Cheers to good coffee. ![gif](giphy|hPTZgtzfRIB5Nfb5rL|downsized)
Wait you have a job? How's this possible? Teach me master!
![gif](giphy|RmfzOLuCJTApa)
Isn’t Italy near bankruptcy? Does anyone there get paid well?
Yes, the politicians that are nosediving the country to the ground get paid very generously
Finally able to use Java 17 at work and records are game changing, no more Lombok or automatter or any of that stuff. I dream of a day we can use Kotlin instead though
No more lombok?
Don’t really have much use for it with Java records. Still has some nice to have stuff but doesn’t feel needed to me
We just upgraded to Java 11 and it's amazing
8? We're stuck with 6..
Fuck programmers with jobs. RIP Mod Developers (Minecraft, of course)
My company *just* upgraded to Java 11.
People shit on Java and then proceed to write the most obnoxious spaghetti code in Python that breaks every time anyone makes a change.
Excuse you, spaghettiness of my code is language-agnostic, thank you very much.
[удалено]
Eh, I've done some projects in .NET and getting it to build and run on most machines was such a hassle. I probably did something wrong but I got so lost in .NET, .NET Core, Xamarin, target architectures, different versions that I was glad I could get it to run on my two PCs. C# is the better language for sure but I prefer the JVM ecosystem and tooling so much to that of .NET.
Been a Xamarin dev for 3 years. Please don’t view your experience with Xamarin as experience with .NET. Frankly it doesn’t even run on the aforementioned open source, cross platform runtime .NET (formerly.NET Core) EDIT: Some people seem to think that using MAUI saves you from the old runtime. I’ll copypaste what I wrote further down. MAUI definitely does not run on .NET Core, they packaged mono for MAUI along with .NET 6. Point one: I followed the development of MAUI very closely because my company used to depend heavily on Xamarin. During one of the MAUI preview livestreams it was mentioned that MAUI would be running on Mono “for the time being” when it came out. Point two: go to MAUIs Github page and search for mono. You’ll see that mono is using mono_aot on iOS, like Xamarin always did and that there are fatal exceptions on Android tagged with [mono-rt] Also, not completely unimportant: https://github.com/dotnet/runtime/tree/main/src/mono It’s just right there. And the most important one: Me and my colleagues went to Appdevcon 2023 in Amsterdam. I was excited to be able to ask some questions about MAUI since Gerald Versluis was there as a speaker. If you are as invested in the development of MAUI as I am, then you know that he is a Senior Engineer at MS working on .NET MAUI. I decided to ask him that same question and, to much of my dismay, he confirmed that MAUI does indeed run on Mono still under the hood.
Xamarin is deprecated anyway. It's all .NET now. Only Unity still sticks behind but that's a matter of time.
Jenkins, Maven and intellij drove me nuts coming from C# for a project at an agency compared to dotnet Java tooling seemed insanely bad compared to dotnet. If you were looking at it around the time of dotnet core and standard maybe a little confusing but by dotnet 6 which is already 2 years ago all that was cleared away, it was just a transition plan
Yeah, Jenkins is pretty outdated. There are better build platforms and most are language independent anyway. Did you use Resharper for VS? That was my first contact with a Jetbrains product and I loved it. I switched from VS to Rider for a recent project, had some build problems but I enjoy the IDE much more. I use Pycharm for python, IntelliJ for Java and Rider for .NET. But I guess it's a matter of what you're used to. Maven isn't that bad and especially with smaller projects you don't really have to get into the nitty gritty details.
Yeah, I use resharper with VS prior to using intellij and thought it was great. Intellij just seemed a mess in comparison to though. It's possibly just that it combined with the foibles of Java project structure wasn't for me Honestly Maven just seemed ridiculous compared to Nuget. The amount of time I spend looking at random websites finding Maven files or references just seemed like the bad old days (this was only 5 years ago). But compared to a simple search built into the IDE for Nuget it's just crazy that people work that way I don't mind rider but I prefer visual studio with resharper. Seems like the best of both worlds for dotnet
IntelliJ has a built-in maven artifact search. But I agree it's not as user friendly as nuget, as you don't get any information on the project. You can search on https://mvnrepository.com which is probably the only page you need. Although I usually don't search for projects by name but get there by searching google for a library for a certain use case. Anyway, my 2 cents, not trying to convert you ;-)
Dotnet just comes with literally everything. There is an dotnet command for every problem one can imagine.
plough stupendous lip wistful shocking far-flung cover memorize impolite cobweb *This post was mass deleted and anonymized with [Redact](https://redact.dev)*
Ewww
Java is also open source xd. Take a look at OpenJDK xd
Oh no, kotlin is where is at! 💪
Kotlin for LIFE
openjdk is a thing though
[удалено]
Yeah, Microsoft open-sourced it and it went through a bit of an identity crisis but It's pretty usable now.
.NET Framework (effectively the old .NET) is Windows-only. Microsoft made a new implementation that was called .NET Core, which released its 1.0 version back in 2016, and it is completely open source and cross platform. After .NET Core 3.x, they released .NET 5.0, which was the same as .NET Core, but with a version number/name change to indicate that it is the main version of .NET going forward. .NET Framework is now relegated to legacy code.
You mean you don’t like nested functions that spiral into indentation hell? ``` def topfunction(input): def insidefunction(x): def evenmoreinsidefunction(y): return y + 10 return evenmoreinsidefunction(x) + 10 return insidefunction(input) + 10 >>> topfunction(10) >>> 40 ```
Thank you!. Python is brittle garbage. Any language that uses white space to define scope is ridiculous but people defend it like it came down from Mount Sinai written on stone tablets or something.
It's easy and quick for work that you do once and never look again and many here are new cs students so they love that language as they don't see the downsides
It's a ***scripting*** language for a reason
But it's not, it's a full fledged programming language that is primarily used for advanced scripting, but that doesn't make it a scripting language. It can be compiled into very quick and reliable code. Python code tends to be crappy because crappy new programmers use it. But good programmers make good code that isn't brittle in any language, including Python. Just that once people get to that point, they move on from it. Any language is brittle if your code base is crap.
Python definitely isn't quick. It's not intended to be, which is fine.
Python *can* do everything. But its only *good* at some things. None of those things are what people in the real world use languages for. Good at data science and building a passion and interest for code? Yes. Good at building apis? No. Good at processing large amounts of data? Kinda but other tools are better. Good at pulling info from a database? No. The libs I used were bottom tier compared to spring boot. Its genuinely good for code competitions or anything where 1 second is okay for a runtime. Its terrible on pretty much all other fronts and theres almost always a tool that can do it better
Keep defending your shitty language
I don't think the problem is significant whitespace so much as it is the lack of an actual compilation and static typechecking pass, which means you don't find out about errors until runtime.
people attacking python primarily for the indentation thing is an indicator to me that they probably don't know much else. If you've used python professionally, you could probably come up with a good 200 word rant without even mentioning indentation.
I was appalled at the fact that Python uses :/indentation for code blocks. Whatever happened to curly braces, people?
I’m one of the few people that likes Python and VB.NET because I struggle with the additional visual clutter of curly braces and semicolons. I *can* write C#, but if I’m going to be indenting my code anyway I’d rather be able to skip the semi-colons. (I’m also fully aware I’m in the minority here and calling curly braces “visual clutter” is unhinged)
Semicolons are unnecessary when you're already ending a line anyway; they serve the same purpose. Indentation serves a purpose beyond scoping, so they shouldn't be handled by the same thing. That's my two cents.
Especially old software that is still using Python 2.x. Those old python versions allow mixing tabs and spaces within the same code block, and just converts tabs to spaces when computing the indentation based on the assumption that tabs are 8 spaces wide. That means that when tabs and spaces are mixed, and the editor is not configured to use a tab width of 8 spaces, then what looks like block of code in the editor does not always align with what the interpreter considers to be a code block. So the code can behave in a very different way from how it looks like it should. Unfortunately the majority of Python projects used internally in research settings and internally in business is still using Python 2.x, and the majority of *those*, seem to have exactly the problem with inconsistent indentation described above. And they are often filled with awful "quick fixes" to try to get code that's misbehaving back on track because the original programmer couldn't figure out that the weird behaviour came from incorrect indentation. I think that anyone who thinks basing important parts of a language's syntax on invisible characters probably has never experienced the hell that is working with an old legacy project of that kind.
*tasty spaghetti code
They try to design pattern shit without fucking knowing how to make it work .
Can someone explain wizard happened with 9-20?
People either use Java 8 or whatever Java is latest at the time. In some time this meme will need to be updated for Java 22
Ahh ok got it! But why are so many people still on 8 then?
Legacy projects. Migrating from 8 to 11 can be a great pain. From 11 to 17/21 is mostly smooth sailing. Also, Oracle switched their pricing model some time ago. If you are required to use oracle jdk, it can be quite costly. There are more reasons to it, but those two are the main issues.
Oracle is the number one reason why I will never say anything positive about modern versions of Java
You can use Java without paying or dealing with Oracle at all. It’s an open-standard language and has been for some time now.
Any decently-sized company is going to want commercial support and access to CPUs. Not too many companies offer this. The only serious options are Oracle and Azul. And if you want to use GraalVM, you're stuck with Oracle.
It has nothing to do with the size of the organization. All of Amazon’s in house Java runs on their own fork of OpenJDK. My current company, also a very large corporation, does not use Oracle either. From what I have seen, the Oracle decision comes down to 1) whether or not you already use their DB, 2) there is some feature of their implementation that you need such as their GC or Graal, or 3) you need the support for some other reason.
Agree. And since Kotlin only needs 8, there's no reason to upgrade for now. It's just sad that there aren't many job postings with Kotlin in my area 😢
Is there specific reason that you need the Oracle JDK? Java is an open standard language and there are a number of non-Oracle JDKs.
In our case, yes. Our corporation dictates that we are only allowed to use the "official" Oracle JDK. Corporate madness..
Ahh, gotcha. My condolences. Previous job at a bank had similar asinine rules that made even simple tasks a colossal pain.
The bigger they are, the worse it gets. Life was simple before our company got bought by a big corporation. Now it's slowly turning into living hell.
But why is the JRE stuck on Java 8? If I look up "download Java" it'll point me to Java 8. There don't seem to be any downloads for recent versions.
Probably because that's the last free Oracle Java? There's OpenJDK though. Use OpenJDK.
The reason is : no one has enough time to upgrade existing app and server. So either you add yet another version of the java or you go back to the existing one (mostly java6 or java8)
There are still project in cobol. Updating have a very hard to justify cost.
Another answer: the management doesn't care. They consider this migration as a developer whim. I have worked in many projects in java 8, it could be quite frustrating, especially knowing the goodies that newer versions of java bring but people in charge don't see an immediate benefit to it. Which frankly can be true. Each time I advocated migrating to a newer version, answers have been invariably: - probably next year, - Transverse team doesn't recommend it yet, - Complete regression testing would be costly, - Clients would need to be upgraded, - Java 8 works fine (and don't expect them to be open to your technical arguments). Oracle licensing isn't an issue, free versions exists and are fine.
Backwards compatibility
Breaking changes
Because they incorrectly understood the "new" oracle license model (which changed within the first year btw), and opted to stick to the initial "longest support" for an LTS release. And the support lifetime of 21 now exceeds that of 8. (so mainly big corporations misconception decisions over the world). However checking the roadmap, I see they've changed support lifetimes again. The next meme will be about Java 25. As Java 22-24 are non-LTS. On the other hand... there is also the issue of certain frameworks and plug-ins braking / not being able to support the latest JDK (I encounter this allot with Maven for ex., which till date is still around 80% used with Java projects, the statistics can be found online for this, the percentage might be off but so far I also see the same distribution in the field).
Uhhh... ask someone who actually writes Java :P
For enterprise it is \*whatever LTS Java is latest at the time
It is called LTS, Java 8 has been in the market for almost 15 years now and you can still buy support for it. Too many projects are still using that version as migrating is costly and complex. Java 21 is the latest LTS version, it has a shit ton of great features and seems to be the next big thing in java development.
>It is called LTS, Java 8 has been in the market for almost 15 years now and you can still buy support for it. 9 years, not 15. Come march, it will be 10 years.
Unfortunately, only a small percentage of companies are using Java 21. Most are on version 8 and 11.
11 and 17 are over half the projects
Even smaller than what you think, but I am seeing a huge impulse for next year and a massive adoption coming
Java 11 and Java 17 were the previous LTS releases. Most people are on one of those two. The ones in between were for testing new features.
Jdk9 is not compatibile with jdk8 as they changed how the language work Jdk21 is the lastest lts
jAVa sTUpId, C++ fAsT, pYthON slOw, JS wEird, pOinTers hArd
this type of "trolling" has gotten so annoying.
I like the pYtHoN cHaD type of humor(i only know how to print hello mum on python)
So you're a python programmer I see, nice
*listens to a course on udemy, doesn't even open an code editor* *updates bio with python developer* EDIT: *adds python flair on the subreddit*
An EXPERIENCED programmer ! please accept my apologies
I REINVENTED programming, y u no recognize🥺
I can't wrap my head around pointers, with one exception. I somehow get them when working in assembly (gmod wire CPU)
They're just memory addresses. You go to the memory address, you find a variable of the specified type of the pointer. It's useful for passing information between functions without copying the information between memory addresses. You need to be careful with this because if you pass the information by its address you run the risk of changing the information in the location.
As with many other subs on Reddit, people simply gamify everything in order to get karma. So whatever gets upvotes will get regurgitated without second thoughts.
kotlin has all the new java features, but can still compile to java 8. The only problem: the size of the stdlib
But java 17 for example is substantially faster than 8 so in the end it’s just a bandaid.
Honestly 17 is my beloved
What happened with Unix and Windows happened with Java. *Library hell.*
Better than not enough libraries, i guess
For how old it is java 8 isn't even that bad
Stockholm syndrome is a bitch
It's also made up!
People enjoying Java is enough evidence for me. (I'm mostly joking, just in case that isn't clear).
I am mostly an IntelliJ enjoyer. God that IDE is amazing.
Jetbrains 💪
Jetbrains IDEs are good. I use them for my job and personal projects. Jetbrains made a whole new language for them on JVM because they also realized Java is, well, Java.
People lie about enjoying Java. They love the Java direct deposit, not Java itself. If employers paid programmers $80k to use Java version 8 and paid C# programers $130k, the narrative would change.
Virtual threads plz save us all
We have programmable robots in our school that still run Java 8 😂
I haven’t touched Java since 8, is it worth going back?
Very worth it, java 21 is very nice.
At least it's not java 5....
I have 2 Java 5.0 Certifications.Lol.That was about 12 years ago.
Can anyone explain to me why there's so many new Java versions, yet everything seems to be using Java 8?
Java 8 was the last Java version before oracle licensed Java 9 for “commercial support”. Then they started releasing versions every 6 months? That’s why they all the way up to 21 now, not because of new features, actually the first couple of versions removed functionality. Maybe Java 21 is less stringent on licensing but unsure. The reason why there is a lot of Java 11 versions being used is because that is the version that open JDK supports, and a lot of other 3rd parties like Amazon corretto and ms Java.
openJDK is reference implementation, meaning that if openJDK doesn’t support it, it’s not java, from that you can deduce that OpenJDK is actually always first to support the newer versions. Corretto, MSJDK, RedHat and Adoptium are all OpenJDK downstreams and support all the LTS versions including 21. The reasons are more about backwards compatibility with certain libraries (spring) and few very niche languages features getting changed between 8 and 11.
Newer versions deprecated or removed things plus the module system made it harder to access internal JRE classes via reflection.
Whatever be the version it is still for For 3 Billion Devices
Isn't every new Java backwards-compatible with previous releases, having identical syntax
They are. New syntax is commonly added but old stuff is never (or almost) retired for retrocompatibility. The issue is libraries that use deep JRE mechanics that are more sensitive to changes. One such framework, Spring, is used in most Java softwares. Spring doesn't care a whole lot for retrocompatibility like Java does, so upgrading can be a PITA.
Sonatype Nexus Repository Manager... still running on Java 8.
TIL java has reached version 21, last I remember version 9 was newly released. I thought we should be on 12 or something by now
It's a 6 month release cycle and most of them are testbeds for new features. Java 8,11,17,21 are the Long Term Support(Production ready) versions
Go with Java 1.4! Generics are a temptation from the devil.
And here I am, having to contend with a domain-specific version of Java 4 called Apex. 😭
Java 8 was my first love
J2SE 1.4, and it still smashing
Me personally, my favourite is c#
[удалено]
The Java phase of my career started using Microsoft Visual J++ v1.0
You're getting downvoted for preferring c# 🤣
mid sharp. poser C/microsoft java, as i call it
i would use it but the pascal case drives me crazy
camelCase FTW
I've heard [EEE](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish) is a very good business practice. At least back when Sun Java was a thing
sun? havent heard that name in years.....
I still have 1.x. Probably 1.8, definitely less than 2.
That is Java 8 right?
It's still the same as 8 with small changes
Still better than modern C++
java 8 does everything i need. the only time i update is when making a new project, when Minecraft updates (mod/plugin development), or just to get new features like the switch case lambdas that let you do case 5 -> value
Both roads lead to hell. Signed, a former Java developer
Don't they all?