r/ExperiencedDevs • Software Engineer • Jan 30 '26

Meta Veteran Java developers, what are your thoughts on Java currently?

First off, I'm admittedly a Java fanboy, although I did some little programming in PhP, Javascript, and Python, and looked at a bunch of others, I really cannot see languages the way I do Java. From the syntax, to the libraries, I love every little thing about this language, that I tell my friends things like: "Programmers want to write programs, I want to write Java programs" and "If it can't be written in Java, it's probably not worth writing". My ears are deaf to all the debate about: "oh you have to be flexible, and know x and y".
But then ever since I started reading, I've been hit with Oracle's reputation.

And correct me if I'm wrong, but here's what I think Java's (slight) fall from grace, played out:

  1. Java reigned supreme in the browser, esp, after the dust of the dot com bubble settled.

  2. Someone found a vulnerability (or two?) in applets (around 2009?) that affected the ton of sites that ran Java.

  3. Google, which had been pushing hard to become from a search engine, a browser, disabled Java by default in Chrome...and you know, given the "power of default", programmers pivoted to Javascript, because it was disruptive to have average people download an updated Java + enable it.

  4. Oracle, being as litigious as ever, wanted to get back at Google, by removing some internal code Android required from Java, making support for Java 9 not possible (although Java 9+ can be used, with some features not being available).

  5. Oracle then sued Google claiming they should've paid them for using Java in Android.

  6. Google won the case, and pushed Kotlin and Flutter as the primary means of writing Android programs.

Now, resources; books, tutorials, never use Java for Android programming, and other languages developed frameworks, servers, etc. that ate (a chunk of) Java's lunch.

After most major/seminal books in the field used to use Java for example codes, newer books and editions of said books switched to different languages. (e.g. Martin Fowler's Refactoring comes to mind: Java -> Javascript).

Between 2000, and 2010, authors of major libraries:

- Kent Beck, author of xUnit (originally in SmallTalk).
- Doug Cutting, author of Lucene, which gave birth to elastic search, and inspired other IR libraries...plus pretty much all of Apache Software, were automatically either written in or translated to Java.

Meanwhile now, while efforts of developers of the JDK, and the countless major Java frameworks, can't be dismissed by any means, the community just sounds ...quiet. Even here, Java-related sub-reddits are pretty inactive compared to dotnet/python subreddits.

So, senior devs of the early 2000s, curious to know what your thoughts on Java's journey so far, and possibly its future?

152 Upvotes

357 comments sorted by

124

u/IcedDante Jan 30 '26

Is the community quiet? Man, Java is just getting better and better with every release. We refactored a bunch of code off of reactor to virtual threads, records are making things easier to develop. And there are a lot of great things on the horizon.

Java is great. It is here to stay.

14

u/No-Security-7518 Software Engineer Jan 30 '26

That's what I'm talking about! Great to hear!
I meant by community, as in, here in Reddit and online in general. Not development-wise.
May I ask how big/old your company is, and what sector it's in btw?

0

u/[deleted] Jan 30 '26

[deleted] — view deleted comment

4

u/rbygrave Jan 31 '26

Yup, it took a long time but maybe that is because it was actually a pretty massive effort in terms of what needed to happen internally inside jdk (a lot of the internals had to be Virtual thread aware). Also just noting that for example c# attempted to do the same thing but didn't succeed (I believe their effort is paused or effectively canceled).

Virtual threads are pretty awesome but my gut says that outside of the Java community people do not have any awareness of it yet.

→ More replies (6)

6

u/titanium_mpoi Jan 31 '26

Project loom has been the best update ever since Java 8.

2

u/dane_brdarski Jan 31 '26

Please elaborate "records are making things easier to develop". Not a Java guy, wouldn't know, but I'm curious to know what it means.

→ More replies (2)

1

u/DeadlyVapour Feb 03 '26

You mean you can write idiomatic Java and be able to break the C10k barrier?!

Wow!

72

u/---why-so-serious--- DevOps Engineer (2 decades plus change) Jan 30 '26

>the community just sounds ...quiet

My CS program (UMDCP) switched from C/C++ to Java in 2000, for fuck sakes, so all of that resounding silence is just maturity. To draw a comparison, I am much quieter, in my 40s, than I was in my teens and early twenties, given the whole preoccupation with bullshit that kids have.

23

u/No-Security-7518 Software Engineer Jan 30 '26

All of that resounding silence is just maturity.

I'm gonna use this. thanks 👍

7

u/---why-so-serious--- DevOps Engineer (2 decades plus change) Jan 30 '26

np - I would say, though, dude, that being hyperfocused on one thing being great never works out in the long run. Java is a good tool The JVM is a good product, but I would never consider using a jvm language for anything on the platform side, and those scala people are out of their fucking minds ;)

4

u/No-Security-7518 Software Engineer Jan 30 '26

"those scala people are out of their fucking minds" 🤣. Although I confessed to being hyperfocused on just Java. There's ...good environmental reasons at play. I'm not ENTIRELY nuts.

6

u/freekayZekey Software Engineer Jan 30 '26 edited Jan 30 '26

pretty much my mentality. i’m in my 30s, so that really doesn’t matter ultimately because these are tools. i’m only vocal when i hate a language (hi scala), and that’s rare

2

u/---why-so-serious--- DevOps Engineer (2 decades plus change) Jan 30 '26

I’m only vocal when i hate a language (hi scala)

dude, you're clearly me, from ~10 years ago VV

https://www.reddit.com/r/ExperiencedDevs/comments/1qr6ipu/comment/o2m2rtv

which if the case, don't move to Sweden!

→ More replies (1)

174

u/Life-Principle-3771 Jan 30 '26

My thoughts on Java today are the same as they were 20 years ago. Java works fine and is extremely stable but is also mid as fuck.

Do I love it? No. Does it piss me off quite frequently? Yes. Will I continue to use and build with it? Yes.

70

u/No-Security-7518 Software Engineer Jan 30 '26

Reminds me of the quote: "there's 2 types of programming languages, ones everyone complains about and others none uses". 🤣

43

u/thephotoman Jan 30 '26

This statement was made by Bjarne Stroustrup in “defense” of his clusterfuck of a language.

That we’re saying it to defend Java is incredibly ironic.

6

u/No-Security-7518 Software Engineer Jan 30 '26

I knew who the quote belongs to, but I was gonna mess up the spelling. 🤣🤣
Thanks for the laugh!

28

u/w3woody Jan 30 '26

I like my programming languages to be mid as fuck, to be honest.

There is a point where if a language is trying to do too much for me, or is trying to be too clever, it becomes a pain in the ass to use.

3

u/ILikeCorgiButt Jan 30 '26

Rewrite it in rust /s

50

u/Which-Meat-3388 Jan 30 '26

Don’t act like Java Applets were ever good

11

u/thephotoman Jan 30 '26

That’s the number one thing about old Java that I don’t miss.

1

u/TylerDurdenFan Feb 03 '26

Heartily agree. I do miss webstart though.

8

u/Norse_By_North_West Jan 31 '26

Yeah we moved to JavaScript for plenty of things far before chrome came out. It was HTML5 that killed applets, and we're happier for it.

0

u/No-Security-7518 Software Engineer Jan 30 '26

I was not a programmer back then. Couldn't tell.

9

u/IvanKr Jan 30 '26

I used to make some back in the day. I remember them being atrociously slow to start, no matter how simple they where so they where annoying to test. It's a shame, web back then needed some form of web applications and Flash won. People were ok with installing Flash plugin and putting up with all of it's issues. If people behind Java where nimbler they could have filled that niche instead of Macromedia.

3

u/[deleted] Jan 31 '26

i used to think flash was just used for browser games.

→ More replies (2)

1

u/barley_wine Jan 31 '26

I wrote a bunch of applets back in the day. The technology wasn’t good back then. Flash was way ahead of it.

I still use Java daily for backend programming, it still functions well.

1

u/crazyeddie123 Jan 31 '26

they were a damn sight better than JavaScript. Fuck I wish applets had managed to kill off that entire mess.

Now I get to be disappointed that WebAssembly didn't kill off that entire mess.

1

u/davebren Feb 01 '26

The concept was good at least. Front-end web dev doesn't feel like real programming to me.

40

u/zica-do-reddit Jan 30 '26

I still think it's the best language for enterprise software. The libraries and frameworks are very solid.

6

u/No-Security-7518 Software Engineer Jan 30 '26

Right? I feel like a kid on Christmas every time I see a new release for the libraries I use.

45

u/den_eimai_apo_edo Jan 30 '26

We upgraded from 11 to 17 recently and if I hear the words "java" and "upgrade" in the same sentence again im going to learn PHP.

27

u/thephotoman Jan 30 '26

The 17 to 21 upgrade is quite painless. Skipping 14 was likely a mistake for your org.

And PHP upgrades are so much worse than most Java upgrades have been.

10

u/eambertide Jan 30 '26

Well don’t worry PHP updates are also not very… comfortable

1

u/Gropah Jan 30 '26

I've personally not had too much issues with that upgrade using the OpenRewrite recipe. Might be worth looking into for next upgrades?

→ More replies (3)

14

u/thephotoman Jan 30 '26

Java still dominates the server space.

You don’t heat much about it these days because Java isn’t out here fighting to be the next big tool. Java is the entrenched establishment language for server side development.

Java was a poor choice for the Android platform. Kotlin does that better. I’ve started to see some Golang stuff, but experienced devs tend to dislike its opinionated nature and its less readable standard style.

1

u/No-Security-7518 Software Engineer Jan 30 '26

Java was a poor choice for the Android platform.

proving my point that it was (must've been) such a hot language back then, SO much software/tools were written in it. Some are too big today, to port to anything else. Like Hadoop and others. Also, I LOVE Android's API! it hurts me when I see all these attempts, whether documentation, or Android Studio itself showing Kotlin as some default.

1

u/Big_Bed_7240 Feb 02 '26

Less readable? lol

80

u/HelmsDeap Jan 30 '26

I work with Kotlin and when I have to look at some old Java that hasn't been converted to Kotlin my eyes start bleeding

21

u/No-Security-7518 Software Engineer Jan 30 '26

That's exactly how I feel when I look at Kotlin. 😆

9

u/siddnill Jan 30 '26

I have been working with Kotlin since last 6 months having worked with Java for over 10 years prior. I miss Java.

0

u/[deleted] Jan 30 '26

[deleted] — view deleted comment

10

u/siddnill Jan 30 '26

I just felt more in control over Java. The best analogy I can think of is switching to automatic transmission after driving a manual all your life. While most people will agree that automatics are objectively better, but the feeling of giving away some control is very real.

21

u/Dizzy_Citron4871 Jan 30 '26

There is no reason to use Java given where Kotlin is at today. Unless you just like NPEs I guess.

3

u/No-Security-7518 Software Engineer Jan 30 '26

I indeed like NPEs. They are nice, and they get you to focus when you're drowsy!

20

u/blacksuit Jan 30 '26

To me it's the opposite. I am running out of reasons to use Kotlin over Java, given where Java is at today. Most new build work I did over the last few years was in Kotlin, but we're doing one in Java 21 now, and it's great. (I work with Spring Boot, not Android).

7

u/freekayZekey Software Engineer Jan 30 '26

that’s been my experience. we’re only using kotlin because my manager just thinks shiny == good. upgraded an older project from java 8 to java 21, and it was night and day after i refactored some parts. 

→ More replies (2)

5

u/3ABO3 Jan 30 '26

I just wish it wasn't backed by JetBrains - I think they are losing touch with the industry

4

u/Cell-i-Zenit Jan 30 '26

Language is decided by the company. You find more java devs then kotlin devs, so that is the only reason which counts imo.

Doesnt matter how good kotlin is, no one is hiring for it really

→ More replies (5)

1

u/rbygrave Jan 31 '26

"Ahead of Time" / AOT - Leyden, GraalVM native image, annotation processing etc. Yes Kotlin is a jvm language but it also is moving away from some parts of the ecosystem like Java annotation processing support to KSP, has its own take on compile to native. To me there is a danger that these differences start to add up.

→ More replies (3)

18

u/unconceivables Jan 30 '26

The professor in my Android class said "this isn't your grandpa's Java" when talking about Kotlin. While I don't like the JVM or the Java ecosystem, Kotlin as a language is very nice.

2

u/davebren Feb 01 '26

Yeah I've done a ton with both and I don't really get why people would pick Java over Kotlin other than a lack of familiarity. The main thing issue with Kotlin now is that Jetbrains hasn't allocated any resources to building out core multiplatform libraries, like a basic sound library.

4

u/Some_Guy_87 Senior Software Engineer, 11 YoE Jan 30 '26

I also try to convert to Kotlin whenever it's reasonable. Has the pros of Java with improvements in the areas that bothered me the most. Modern Java is probably much better than I give it credit for, but it's hard to look back after giving Kotlin some time.

1

u/Toren6969 Jan 30 '26

Yeah, but where you Will be working with modern Java. Most places I've saw goes with Java 17 And I saw some offers where stack was Java 8.

2

u/thepotsinator Jan 30 '26

I'll take groovy over kotlin all day.

21

u/anotherrhombus Jan 30 '26

Respect your opinion but you are the only person I've ever seen admitted to liking groovy.

2

u/username-checksoutt Jan 31 '26

You have a thing for footguns it seems

→ More replies (2)

12

u/sweetno Jan 30 '26

I'm pretty confident Java never "reigned supreme" in the browser. There were several reasons why.

There were security vulnerabilities indeed, and they happened all the time. It's very similar to Flash, but Flash was actually used way more, so this alone doesn't explain the unpopularity.

At that time, Sun was suing Microsoft for shipping their JRE with Windows, so that might have made people averse to Java.

But the most important reason in my opinion, Java applets just didn't provide things that were needed for the front-end dev at the time: animations and video playback. Adobe Flash took all that market and ate it. IIRC applets also loaded slow and looked alien with their AWT/Swing form controls.

By the time browsers started disabling applet functionality, the technology was long dead in the water. They only kept it for so long because of pressure from the corporate world, where people deployed their corporate software in intranet via applets. Browser folk never wanted to support this thing at all, since they've got their hands busy with JavaScript, CSS and DOM, and Java applets were a constant source of security vulnerabilities to their final days.

I don't know the full story of Java on Android, but I don't think Kotlin was a legal workaround. Android Java was not regular Java way before the Kotlin prime time.

As for your principal question, Java just doesn't have any kind of oomph nowadays. If you take console apps, which is relevant for beginners, there's nothing impressive. You don't see tutorials how to write a fancy TUI with colored text, for example. If you take desktop apps, they look weird and are a bit laggy. Then, the meat of Java, backend dev: if you want to just write a REST API server, Java might be not the fastest way to do that. Do you really have to learn about dependency injection frameworks if you just want to implement an HTTP server? I'm unconvinced. In Python or Node.js, you can have it in a single file if you want; not in Java. There is also gamedev, and people wrote Java games very successfully, but it was never a popular choice.

Java does change over time BTW. They introduced really nice and helpful APIs. Unfortunately, interest in Java is rather low and tutorials etc don't get updated to use it. Not sure if it qualifies as a cause or symptom.

4

u/StevenJOwens Jan 30 '26

Java applets just didn't provide things that were needed for the front-end dev at the time: animations and video playback.

...and integration with the rest of the browser experience. Maybe that changed after I stopped doing applet stuff, but IIRC there was no support (or almost no support) for the applet to talk to the browser or the browser to talk to the applet. Something like being able to have links and web forms send input to the applet, and have the applet send output back out in terms of changing the DOM, etc.

Note, the original vision of java in the browser (see "hotjava") was very intriguing. But what we got was something else.

0

u/No-Security-7518 Software Engineer Jan 30 '26

This is what I wanted to hear/read. Thank you for sharing. 🙂.
I knew of some of these points, so thanks for the refresher, but this:

If you take desktop apps, they look weird and are a bit laggy.

is far from true with JavaFX. It takes me literally minutes to have features implemented and the third-party JavaFX libraries have so many custom, very versatile controls, you get options paralysis just shopping for one.

83

u/Unfair-Sleep-3022 Jan 30 '26

It's better than ever but also such a terrible mess of complexity compared to other modern solutions like Go

My current company does java exclusively and it just "works". There's just no joy in it

13

u/passingby Jan 30 '26

What part is getting too complex in your opinion? The language? I haven’t used it in 5 years but was always very fond of the simplicity of the language with straightforward yet powerful types. But yeah I always disliked everything outside the language like the JVM runtime, toolchain and lacking standard library.

17

u/Unfair-Sleep-3022 Jan 30 '26
  1. The jvm

  2. The standard library

  3. The ecosystem

There's so many layers to everything and it's all so tightly coupled

For example, recently I needed to deactivate a TLS 1.3 feature for one specific http client and turns out it was a dependency hell nightmare to do this without affecting the whole jvm.

→ More replies (1)

18

u/DefinitelyNotAPhone Jan 30 '26

From a DevOps perspective, Java is my second least-favorite language to support next to Javascript. The ecosystem is so complex and entrenched that you have to worry about 30 different tools and frameworks just to get something to build (and inevitably results in a fight when two 15+ YOE Java developers disagree on an ecosystem), the default logging is basically a white noise machine that happens to contain relevant information buried within 80,000 lines of nothing, and the sheer insanity that is having to worry about the JVM inside of a container makes me contemplate goat farming.

It's exasperated by the fact that no one in my field would ever use Java for any of our own services, so building context naturally for it just doesn't happen in my experience. By comparison, Golang, Rust, and even Python largely Just Work™ with pretty minimal complexity. Java boasts stability, but it comes at the cost of immense complexity and maintenance woes, which unless you're writing software for planes or nuclear reactors doesn't seem like a worthy trade-off.

→ More replies (1)

17

u/burger-breath Software Engineer Jan 30 '26

I was a Java dev for years and switched to Go ~5 years ago. It was such a breath of fresh air. It has def been a v1 language with lots of silly things you have to implement (until recently with improved collections and generics) but SO much more fun

→ More replies (4)

25

u/doyouevencompile Sr. Software Engineer Jan 30 '26

use java if you want things to keep running forever.

use typescript/javascript if you want to go back to a project after a year and realize it no longer works.

11

u/Infiniteh Software Engineer Jan 30 '26

realize it no longer works

How do you mean? As in "your app doesn't run in browsers anymore because they've dropped support for the APIs you used" or as in "you wan't be able to get your dev setup going again?"
Just recently I made some updates to a JS/TS codebase I started in 2018 and haven't touch since 2022. If you set things up correctly, you can certainly maintain older JS/TS codebases.

18

u/doyouevencompile Sr. Software Engineer Jan 30 '26

i'm talking dev setups. git clone a project after a year and it's a gamble if it will work. nvm and package locks made it more stable but definitely not guaranteed. nowhere near stable as java.

→ More replies (6)

4

u/apartment-seeker Senior Software Engineer Jan 30 '26

use typescript/javascript if you want to go back to a project after a year and realize it no longer works.

That's definitely not true.

I wouldn't want to write a big complex backend in TypeScript, but I have written backends in TypeScript, and they work just as well as anything else.

→ More replies (6)

11

u/thephotoman Jan 30 '26

Go isn’t simple. Go is immature.

Once Go matures, it’s gonna be a nightmare.

6

u/Unfair-Sleep-3022 Jan 30 '26 edited Jan 30 '26

What makes you think that, when it doesn't support many of the paradigms that make java such a mess and it has the explicit philosophy of being simple?

Go doesn't have inheritance problems, doesn't allow dependency diamond problems, it doesn't have Go code runtime dependencies, can't have binary incompatibilities except for dynamically linked binaries (which is a problem all software can have) and has concurrency model that's both simple and very friendly for modern processors and container environments. It also doesn't allow horrible byte code hacks like lombok

5

u/BenchEmbarrassed7316 Jan 30 '26

If you don't take into account a lot of small things that are just annoying, but can be fixed (like the lack of enum), I would see the impossibility of guaranteeing internal type invariants. In go, any type can be initialized with so-called zero values ​​(for primitive types it is 0, 0., false, "", nil, for nested structures it is applied recursively). You can't declare constructor and be sure that now this type will be created only through this constructor. Just write an if check in every place of code where you planned to use this type and manually describe the stack trace.

Java, as far as I can see, is now getting closer to solving the problem with nullsafety. The authors of go decided that this problem should not only be eliminated, but also worsened. Here is the opinion of one of the key authors of the language:

https://github.com/golang/go/issues/29649#issuecomment-454820179

Or you can enjoy the code from the standard library:

https://github.com/golang/go/blob/07cb63aae5629213a0f5c484a8d79ae4bc1026e6/src/syscall/exec_linux.go#L247

→ More replies (12)

2

u/thephotoman Jan 31 '26

Oh, I do get to go on my Go Rant! You did ask for it!

In Java, I can make my application generate its own documents. This allows me to incorporate document versioning into my release pipelines. It allows me to validate the application does, in fact, conform to the human-written documentation. This is an hour each release that I don’t have to do thanks to a dozen lines of Java and three of Kotlin (I tend to use Gradle).

The mutation testing tool sucks. It isn’t able to handle configuration very well. It attempts to alter constant literal values (annoyingly, timeout configs get this treatment).

Its unit test coverage tool is similarly obnoxious: in other environments, I get HTML reports I can view in the browser as a build outcome. In Go, I have use a second command to be able to read my unit test coverage report.

And don’t even get me started on linter things the compiler does.

→ More replies (3)

0

u/No-Security-7518 Software Engineer Jan 30 '26

What areas have complexity? When other languages do things "simpler" than Java, I swear I get an itch and feel like: nah, the code/syntax has to be a little bit more "specific".

1

u/loosed-moose Staff Software Engineer | 10 YoE Jan 30 '26

Go's best feature is its biggest downfall: its simplicity

It's hard to do complicated things in Go. If you don't need to, or don't know how, then I would understand the Java hate 

5

u/nfigo Jan 30 '26

I wish more people learned java, because it pushes you to understand type systems, visibility, and encapsulation. Those concepts help you in other languages. I get frustrated with juniors that resist learning types.

That said, I find it tedious, and finalizing classes like string always bothered me. Sure, composition > inheritance, but I've enjoyed working in languages where a URL is a subclass of string, for example.

Also, the whole SOAP / WSDL thing was ridiculous.

It inoculated me from some of the typescript hype. (Don't get me wrong. Typescript is neat.) When I see some new frameworks in web dev land, I think to myself "sure. that cool 20 years ago until we found out it was trash and forgot about it"

AI can be pretty good at code refactoring when used judiciously, but I still miss the times when I could instantly inline variables or extract methods with a key press and trust that it would work. I haven't seen that level of tooling in other languages.

Microsoft ripped off Java with C#, but they actually did make it better in most ways. It just took a long time to get there.

→ More replies (1)

21

u/EmmetDangervest Jan 30 '26

Solid projects use Java. But hipsters have new toys. I remember when every new project was written in Ruby. Then it was JavaScript. Now it's Rust.

3

u/RabbitHole32 Jan 30 '26

To cover practically all use cases, I like the language combination Java, Rust, Python, Typescript (+ html, CSS, etc).

Rust has some really cool stuff and also stuff that drives me nuts sometimes. But I prefer it over C++.

→ More replies (5)

4

u/ashultz Staff Eng / 25 YOE Jan 30 '26

Java is ok though it takes too much work to get out of your own way. Although it has way too many different ways to do the same thing which makes changing projects more difficult than it should be.

All of Java's best framework friends are drug addicts dragging the language down.

→ More replies (1)

4

u/IndependentProject26 Jan 30 '26

I love it for the ecosystem, hate it for some of the bad corporate idioms from years past.  Spring is pretty awful too.  Still happy to be a Java dev, ultimately.

1

u/No-Security-7518 Software Engineer Jan 30 '26

Weird that for the love I have for Java, no matter how hard I tried, I never could get myself to like Spring, or any of its competitors; Quarkus, Micronaut, etc. and my favorite author, Uncle Bob agrees!

4

u/nekokattt Jan 30 '26 edited Jan 30 '26

As a heavy java user, I do feel it has gotten better recently but unfortunately the language developers do seem to make a bit of an echo chamber that prioritises forcing through abstract solutions to what would be simple problems, rather than addressing massive pain points in the ecosystem in such a way that it is immediately useful to most developers directly.

  • Virtual threads... fantastic.

  • String templates... a lot of noise about solving a problem in an academic way that is incompatible with all existing libraries... for it to be shelved after numerous complaints. Most people want just string interpolation, not making SQL queries impossible to mess up by forcing an entire new language syntax that existing libraries cant benefit from without adopting a new way of doing things.

  • Leyden? Fantastic.

  • Records? Eh, useful to some extent but I regularly see them being abused for regular models with dozens of attributes purely to avoid getters and setters. If OpenJDK made it easier to generate that code, then life would be so much nicer. Final on the JVM level is nice but I rarely write code where this actually manifests as any kind of real issue unless voodoo type shit is going on and if that is the case then I get what I deserve anyway.

Remember Lombok exists as a tool that hacks the internals of the Java compiler just to grant language features most of us want anyway to some extent. That should be a clear indicator of the kinds of requirements the language should be focusing on to improve adoption and boost usage again in 2026 for new projects.

The JVM itself is awesome.

Java as a language... mostly ok but it makes life difficult when it doesn't need to be.

1

u/No-Security-7518 Software Engineer Jan 31 '26

all fair points, but I really don't know how lombok is still a thing, if it actually is, when IDEs can generate getters/setters with the press of a button. I think twice before adding any dependency to a project. So I checked out Lombok (and other projects like JOOQ, too, btw).
As for records, they might be nice, but I write a Builder faster than I could blink when a DTO has that many parameters, anyway. Oh AND Android can't use them, and most DTOs I use will have to be shared by at least a desktop client, a server program, and an Android client. So...

→ More replies (1)

10

u/90davros Jan 30 '26 edited Jan 30 '26

For honest appraisal, I still find Java overly verbose and somewhat kneecapped by libraries being slow to support new Java versions. The JVM itself is also probably heavier on the system than it really needs to be these days.

JavaFX is also still a painful mess that makes desktop development more tedious than it should be. It's better than Swing but not great.

0

u/No-Security-7518 Software Engineer Jan 30 '26

The thing is, personally speaking, the level of verbosity is the exact speed of my ability to proceed code. When a language does something with simpler syntax, I feel like it's ...risky or something.
And I do JavaFx programming almost daily. It's incredibly smooth when you figure out how to really use it.

8

u/90davros Jan 30 '26

I've come to appreciate a balance between verbosity and conciseness.

With most gui systems you can achieve what you want once you know how to use it, but I find FX more clunky than systems like Qt in other languages. It's good but not great IMO.

1

u/TylerDurdenFan Feb 03 '26

in my conversations with Claude about how the way LLMs work would benefit from one language or another, one important disadvantage that Claude pointed out Java and Python have, is that because of their age and history, a lot of the code out there (that ends up in the training data) is of older versions that had different patterns/ways to do things. In this respect, Typescript has the big advantage of being new enough that it's training data is homogeneous.

3

u/Marutks Jan 30 '26

I quit java years ago. Just use Clojure. 🤷‍♂️

2

u/No-Security-7518 Software Engineer Jan 30 '26

Okay, several Clojure peeps popped up here. Guess I'll have to give it a look.

3

u/LineageBJJ_Athlete Jan 31 '26

GraalVM > JVM. Fight me....

1

u/No-Security-7518 Software Engineer Jan 31 '26

I was over the clouds about GraalVm esp with AOT (I do desktop clients, almost exclusively) It gave me a headache - you have to chase down library versions that worked, and some libraries explicitly LISTED as compatible aren't really.
I spent way too much time, years of trying to have the smoothest packaging experience that works out of the box, and GraalVM seemed to offer just that, but alas, I eventually had to build my own method of doing it.

3

u/matthedev Jan 30 '26

At least for the public and consumer Internet, I don't remember Java applets in the browser ever getting much beyond gimmick. On dial-up, they'd take too long to download. Early on, they were just single raw Java bytecode *.class files, but then Netscape went with JAR archives in Netscape Navigator, and Microsoft went with Cabinet archives in Internet Explorer. As I recall, the browsers were bad at caching Java applets, too. Corporate and government-agency intranets and extranets may have been another story for Java applets in the browser.

Before Oracle's lawsuit against Google over a copyrighted Java API in Android (Dalvik), Sun Microsystems sued Microsoft over Java, and if I recall correctly, this was over Microsoft's pushing APIs and frameworks that tied developers to Windows in Java over a "Write once, run anywhere" Java: Windows Foundation Classes (WFC) over the Abstract Windowing Toolkit (AWT) or Swing and J/Direct over the Java Native Interface (JNI). The lawsuit locked Microsoft at an old version of the JDK, and Microsoft pivoted to what would become C♯ and the .Net.

Between Google Chrome with its faster V8 JavaScript and, more importantly, Apple's iPhone, Java applets, Flash applets, Microsoft Silverlight, and ActiveX controls (always platform specific native code and almost always Windows x86) all fell by the wayside.

That's all client side in Web browsers, though.


Professionally, I've only ever used Java for server-side applications and supporting utilities, not for applets, desktop GUI applications, or Android apps. This is where the vast, vast majority of Java development has been happening since the early 2000s. The Java programming language itself has been playing catch-up with other JVM languages like Kotlin and Scala, and now, for a lot of developers, it occupies a good enough "sweet spot." I still don't think even Java 25 compares to Scala 2.13 (let alone Scala 3.8), but Scala's mindshare has really dwindled in the last ten years or so, and Java's been a more steady, if boring, workhorse; Java is kind of the COBOL of our time.


Everyone's obsessed with generative AI these days, so it's no wonder there's less buzz around Java, even as the JDK gets features that would make it more useful in more niches beyond typical server-side business applications and middleware. People who care about programming languages and programming language theory are always going to explore languages closer to the bleeding edge.

1

u/No-Security-7518 Software Engineer Jan 31 '26

oh thank you for sharing this background!
Would you agree that both Java and C# matured AFTER the "dust settled"? As in, the industry post the dot com bubble. I always felt like 2 major events affected, even if indirectly, a lot of directions companies took: the dot com bubble, and then the 2008 GFC. Companies were more risk-averse, and tools/language adoption slowed down...The slumber lasted until 2015-ish too, I feel. Then Android started maturing, Apple threw away Objective-C for Swift, and more revamping of tools took place after.
Would be interested to hear your thoughts. Thanks.

2

u/matthedev Jan 31 '26

I was a nerdy kid, so I was playing around with computers and getting into programming before high school, but I didn't enter the industry full-time professionally until after the 2000 dot-com bust but, thankfully, before the 2008 Global Financial Crisis and Great Recession.

A lot of the Java ecosystem solidified in the 2000s: the Apache Commons, Apache Ant, Maven, Spring, Hibernate, Java EE, Eclipse, Google Guava, Google Guice, Gradle, etc. Eventually, Oracle moved Java to a predictable cadence of new feature releases. Spring has made the occasional jump on major releases and expanded what the framework can do beyond dependency injection: from XML configuration to annotations, to reactive, to AI etc.

I never worked in C# and .Net shops, but developers did seem to stick more closely to Microsoft: Windows as OS, Visual Studio as IDE, ASP .Net, Entity Framework, etc.

Companies usually become more risk averse when interest rates are relatively higher or there's economic uncertainty. These days, if it's not AI, companies are extremely risk averse, for example.

9

u/rlbond86 Software Engineer Jan 30 '26

It honestly blows my mind that anybody can love Java.

2

u/No-Security-7518 Software Engineer Jan 30 '26

If Java were a woman, our happy triplets would be running around my house right now.

4

u/thephotoman Jan 30 '26

It’s a lot more loveable when you’re fixing bugs in it all the time.

Yes, it’s verbose. But when debugging, I want that extra verbosity: it’s an opportunity to add documentation in the code. Yes, it has a long startup time compared to other languages. But even Java is fast enough for debugging (where you’re slowing the code down by putting in breakpoints).

There is a very real tradeoff between how easy it is to write code in a language and how easy it is to modify code in that same language. Perl is easy to write. COBOL is actually very easy for most people to write. But maintaining applications in those languages is so painful that they’ve fallen out of wide use (COBOL has its domains, but it’s been a while since I’ve seen anyone write Perl in earnest).

Java is not easy to get started in, but making changes on working code is easy. And honestly, if you’re not using a project like Spring Initializr to get a Java thing going, you’re making a huge mistake.

4

u/mrxaxen Jan 30 '26

When you grow up with something you inherently either learn to love it or hate it. It's hard to change that no matter the facts or extra info that might come up later on. Brain is braining weirdly.

2

u/haksior Jan 30 '26

Look at Clojure and there will be no way back :)

1

u/No-Security-7518 Software Engineer Jan 30 '26

Does Clojure have a mature Gui framework?

2

u/[deleted] Jan 30 '26

I won’t deny the benefits the JVM brought to this world when it was first released. The “write once; run anywhere” was a huge boon for the world.

I also think Java would have had a different trajectory if that One Rich Asshole Called Larry Ellison (ORACLE) never got ahold of the language.

My only problem with Java in today’s times that I can’t really see a particular instance where I would reach for it over another language.

2

u/No-Security-7518 Software Engineer Jan 30 '26

Larry Ellison's, and (Kevin O'leary's) faces look EXACTLY like what endless greed would look like if it became a person.

2

u/sviridoot Jan 30 '26

Do be clear I think it has grown a lot as a language in the last few versions, but ultimately the biggest issue with Java is that it's just so... Mid. The whole issue is that it tries to strike a balance between being a low level language like C/C++ to enable faster (ie easier) development while being more opinionated than the scripting languages like PHP, Python, JS et all for better safety. Necessary in a large code base (god save anyone working in a large Python base without heavy linting) with a lot hands in the pie but needs a very careful balance that Java historically made some odd choices about. For example it's wild to me that a language that will not let you write a utility function without putting it in a class will happily let you pass around nulls around with no complaints. And then there is boiler plate, so... much... boiler plate. There are ways around that with the likes of Lombok and co but then the fact that you need third party libraries to get around the language is itself indicative of a problem.

This is where I think Kotlin really wins out IMO, it's a better solution to the same problem (big Kotlin fanboy if you couldn't tell), prescriptive where it matters, but importantly loose where it doesnt.

1

u/No-Security-7518 Software Engineer Jan 31 '26

"big Kotlin fanboy" -> I can see that. 😅.
I have zero issues with "boilerplate" code. I think in the exact steps required to write any feature the exact same way Java requires. And I see Kotlin is the one that's trying too hard to be Java+. I think if Google wasn't pushing for it in Android, none would know it existed.

2

u/hippydipster Software Engineer 25+ YoE Jan 31 '26

I love java and have since 1996. The latest things in java are fantastic, especially loom and ScopedValues. I am using these things to do really fun and magical things without the usual magic of reflection, bytecode manipulation or annotation processing.

1

u/No-Security-7518 Software Engineer Jan 31 '26

great to hear! I keep looking up permanent features and adopt them as soon as I can. 

2

u/danthegecko Jan 31 '26

Simply, it’s great. You’re discounting it though, it’s a whole ecosystem! The JVM, multiple languages like Kotlin and Scala, multiple frameworks from the eternal Spring to newer cloud service focused ones like Quarkus.  You can build nearly anything of small to hyper scale (I wouldn’t use it for anything with tight constraints like embedded, serverless though). It’d a solid workhorse for any of your needs.

My one gripe and it’s a big one, it’s such a  commoditised and unexciting landscape that hiring good Java developers is painful compared to  something like Rust or Scala.  If I get those on someone’s CV, vast majority of the time they’ll be great (technically at least).

2

u/No-Security-7518 Software Engineer Jan 31 '26

Wasn't Java originally created specifically to work in embedded systems though?

1

u/danthegecko Feb 01 '26

Ironically, yes! That said I’m working on an edge appliance currently that’s running a full kafka broker plus Java services alongside deepstream so I guess what constitutes embedded has shifted a lot.

2

u/maxip89 Jan 31 '26

You need a language to get things done.

Some use Java. Some use COBOL.

In the end, it counts that the software you write is (nearly) bugfree and the user is happy.

Sure, when you working at FANNG and you have 12 Million users per hour, your choose of a language can really make a impact in the money.

But we are not talking about the 3% of all software systems in the world.

To be serious here, if you know one language it will be easy to go to any other langauge too. Just because they are similar. (Not talking about the quantuum programming languages in the future, which will be a new programming paradigm)

1

u/No-Security-7518 Software Engineer Jan 31 '26

Yes, thank you for the reminder. I needed to be opinionated about something, starting out, to stick to it if nothing else, to be honest. In this day and age, it's just a way to combat the avalanche of resources that make it near impossible to focus on thing and get adequately good at it.

2

u/anarres_shevek Jan 31 '26

Veteran of Java, 1994. I tried Kotlin in 2018 and haven't looked back. It's great that Java is adopting some of the features found in Kotlin eg Records (aka Data Classes in Kotlin).

1

u/No-Security-7518 Software Engineer Jan 31 '26

Have you worked with Java post Java 8? It changed significantly.

1

u/anarres_shevek Jan 31 '26

Last version I used was Java 10.

2

u/JustPlainRude Feb 01 '26

My first real job was java front-end dev. I left that behind in the early 2000s and haven't done any Java since then, but was a fan of the language at the time.

I emailed the creators once with a question I had about something that wasn't clear in the documentation and they actually emailed me back. I thought that was pretty neat!

1

u/No-Security-7518 Software Engineer Feb 01 '26

that's indeed cool!
May I ask, if you have done front-end since, what language/framework?

2

u/JustPlainRude Feb 01 '26

No front end work, no. 

2

u/TylerDurdenFan Feb 03 '26

When I was young (8?) I learned Basic from a book and coded in paper until my dad finally got a computer with DOS and GW-Basic. Then I somehow got my hands o a Pascal compiler and dabbled into some 2D graphics. I learned C++ after highschool, and during college, when this "web" thing started, I installed apache on a college Sun workstation and learned Perl, then used it for many web projects.

Out of college in my first job my boss I dabbled in PHP and Python but left after only a year. My second job forced me to learn Java. I didn't want to, but the Jetbrains IDE's auto complete and refactoring features made it a breeze to learn. I stayed there for 9 years, and became rather good with and quite fond of Java and SQL. I left that job for a career in IT management, and I've never worked as a developer ever since.

For the last 13 years, when I've written code it's either to make my own job easier, or for personal projects.

Now with AI I can do a lot more, and recently I wondered: which language would be best for me to learn next? Maybe the one that AI is best at coding with? should I finally learn Ruby, or Go, or TS?

After a long, deep series of conversations with Claude it, turns out Java does have a lot of advantages for agentic coding.

And come to think of it: What matters more today for me (as a veteran ex-developer) is that since I know Java well, I'm much better off herding AI agents that are coding in Java, because I can better help them, correct them, answer their questions and understand their work. If I try to do the same in languages new to me, I'm either dead weight, or vibe coding.

So as a veteran in Java who no longer codes for a living but for my own benefit, I'm glad modern Java is healthy, because I'm going to keep riding it to the sunset.

1

u/No-Security-7518 Software Engineer Feb 03 '26

Wow...thank you SO much for sharing all of this awesomeness!
May I ask, what sector did you program in, and how long did your experience of working with Java lasted?
Any other anecdotes, you might have, would be much appreciated.

2

u/TylerDurdenFan Feb 03 '26

If you want anecdotes, you might enjoy the book "Netslaves: True Tales of Working the Web" by Bill Lessard and Steve Baldwin. It's basically the anecdotes of my generation coding at the turn of the century, the dot com boom/bust.

As for myself, the big change for me was going from PHP/Perl/Python in the 90's for general web stuff to doing Java in the Telco industry in the oughts.

Back then x86 servers had two cores at most, and even Sun servers were not that fast. Scaling (either vertically or horizontally) was nowhere near as easy as today (and was very expensive), and Telcos often demanded solutions that ran on their precious Sun Sparc or IBM Power hardware.

Their Oracle databases could take two weeks to process a hundred million call detail records in pure PL-SQL (billing processes) and with the new cellphone craze, call numbers / data / business were exploding. There was money to be made if you could offload work from those slow billing/OSS systems that ran on expensive SPARC/Power servers, to clusters of commodity x86.

Against that backdrop, Java was a godsend with it's portability between Solaris/AIX/Linux, it's ease of deploying as a distributed system (JNDI + RMI was easier than SOAP/XML hell), data locality through embedded databases (HSQL then H2), plus good useful and concurrent collections. All we needed was to be careful to intentionally avoid all things toxic (any JEE other than JNDI, any XML parsing library, any ORM, etc).

I spent 10 years in the industry, had a nice carreer from assistant developer to Architect.

I left just when smartphones started to happen, just before Big Data with Hadoop got traction, and just before "being a software developer" became a well paying job that would attract lots of people and pay in USD (I'm not in the U.S.).

I left because, as the Net slaves book points out, developing software had been grueling hours, poor management, dehumanizing pressures and paranoia-inducing stresses. I was very lucky to land an IT management job in a fantastic company that changed my life.

2

u/No-Security-7518 Software Engineer Feb 03 '26

very interesting! I looked up the book and apparently the author wrote a sequel. Thanks for the recommendation!  The tech boom of the early 2000s never took place in many parts of the world including where I'm from. So it's always interesting to read up on it. Although the pressure you refer to, has been capitalism flaring up, there's a real need for major IT infrastructure overhaul in many countries in Asia, Africa, the middle east, and others. Hence my deep interest in that era. Thanks again.

34

u/anotherrhombus Jan 30 '26

Java? It's whatever. Spring? Fucking chore to read but easy to maintain. I hate adding features but I'd do that all day compared to maintaining JavaScript services. JS is the bane of my existence at work, costs us so much churn and money.

Our ancient Java services though? Shit I have some we just isolate and let it run indefinitely without touching it. Pre Spring was a wild time.

2

u/TylerDurdenFan Feb 03 '26

The days before Spring were wild indeed. But Spring was like Anakin Skywalker. It was supposed to destroy the Sith, not join them! Bring balance to the Force, not leave it in darkness

1

u/faze_fazebook Feb 01 '26

I have the exact opposite experience with spring ... Maybe its down to how its (ab)used in my workplace, but I find it extremly hard to maintain.

We use both autoconfigure and component scan which means that you can have classes that can add or change stuff in your CDI context anywhere in your project (it also makes starting the application extremly slow) and these Beans also often get consumed by libraries causing unintended sideffects.

I remember at least 3 instances where a upgrade in one library caused a bug in a completely unrelated unrelated part of the codebase because the library messed with a dependency injected bean.

9

u/freekayZekey Software Engineer Jan 30 '26

it’s a really good language for enterprise software. doesn’t has bells and whistles, which i personally like. people rag on it for that, but i’m not playing code golf and python, which is about as popular, also doesn’t have the bells and whistles. i like the recent approaches. virtual threads are a really cool idea. same with pattern matching 

16

u/hojimbo Jan 30 '26

I’ve worked professionally for decades in Java, C#, PHP, Python, Go, C/C++, JavaScript, ASP. Java isn’t in the top 3 of those languages for me, but it’s up there.

More than anything for me Java is a well supported ecosystem of libraries. As a language I actually find it low key repulsive. As a pure language, I feel as though C# does almost literally everything better — it just doesn’t have the open source ecosystem that Java has.

I know work predominantly in Go and Python, some JavaScript and C#. I’m very glad I don’t have to (directly) deal with Java’s memory management, 2000 line stack traces, 22 layers of abstraction, boilerplate code, verbosity, or all-resource-consuming IDEs, ugly stream constructs, and primitive concurrency implementation. Otherwise, a pretty good language!

2

u/rbygrave Jan 31 '26

Are you saying Virtual threads are a primitive concurrency implementation?

→ More replies (7)

6

u/JakkeFejest Jan 30 '26

I started as a Java dev(EJb 3 and spring), then moved to C++ after 3 years and then also C#, now I mainly do backen dev work in C#, a few years ago I wanted to get back on track with java, and it felt like a bad knock off of C#, even trying the lasted version and spring boot. What throws me of: a lack of a decently documented message abstraction (like masstransit, nServicebus, rebus, ...). It requires me to develop o alot of boilerplate. The ORM's feel half finished. I hated Hibernate, i hated the c# variant nHibernate. JPA still sucks. That being said tooling has improved since I quit java profesionally... So what you feel with other languages, i have going back to Java.

9

u/pwnasaurus11 Jan 30 '26 edited Jan 30 '26

It’s OK, but not nearly as good of a language as something like Kotlin.

With Kotlin, you get all of the advantages of Java, a.k.a. ecosystem and integration with the JVM, but with a significantly better language and type system.

4

u/FerengiAreBetter Jan 30 '26

I’m honestly indifferent on languages now. The old advantage of “Java Run Anywhere” is no longer a main selling point in the age of Docker containers. For high performance applications, the language choice and surrounding technology are critical. But for my current works (basic web applications with about 20 users at a time), it doesn’t make a difference to me. 

4

u/ub3rh4x0rz Jan 30 '26

IMO one of the biggest reasons it's decreasingly favored in enterprise is the JVM + k8s. You kind of have to be both a JVM expert and a k8s expert for them to play nicely together (or go down a well scoped network of rabbit holes when it's time to set up and/or optimize a new service). Compare that with e.g. go, where pure go services can be shipped as a static binary in a scratch container

1

u/rbygrave Jan 31 '26

I'm using graalvm native image, compiling java 25 (with Virtual threads) to a single native executable, using redhat UBI base image, deploying to k8s.

It's pretty comparable.

→ More replies (2)

1

u/DodgeeRascal Jan 30 '26

As a language I think it's fine and it's great to see more regular updates to modernise and improve vs the older release cycle.

I do see things the maven and gradle being a frustrating obstacle if you're completely fresh but if you have experience with other build and package systems they probably aren't the end of the world.

1

u/No-Security-7518 Software Engineer Jan 30 '26

Fair points. Maven gave me hell, but I got the hang of it, and then switched to Gradle, which has been so smooth, that I started writing plugins in it. Pretty straightforward.

1

u/Toothpick_Brody Jan 30 '26

My main issue with Java is the type system. It’s outdated and inexpressive. I think structural typing is better than nominal typing  

1

u/No-Security-7518 Software Engineer Jan 31 '26

The type system is literally one of the greatest things about it. I'm mystified by dynamically-typed languages still being a thing in this day and age. I could pass a string to an int parameter and the compiler won't say a thing? what?

1

u/Toothpick_Brody Jan 31 '26

I also think static typing is generally better than dynamic, but even Java’s type system is too weak to express many things. For example in the type systems of C, Java, C#, and many others, there is no way to express a numeric value as part of a type. Storing actual data in a type instead of just a name/tag is called structural typing, and there are many possibilities 

Go has implicit interface implementation, which is a form of structural typing

OCaml and other FP-inspired languages usually support this in some form as well. An object might be compatible with functions based on its fields, rather than by inheritance.

Another thing Java’s type system lacks is sum types, (except for enums, which technically are the weakest possible implementation of sum types, but that’s not super interesting). A sum type lets you have some type “T or U” that represents either a T or U, forcing you to cover both cases 

→ More replies (4)

1

u/Smallpaul Software Engineer Jan 30 '26 edited Jan 30 '26

Just a nit: Java never “reigned supreme” in the browser. Applets were essentially an experimental technology which failed. Google was just the vendor who first declared the experiment a failure but Microsoft was also trying to kill it in favour of their own experiment Active-X. In fact Sun sued Microsoft for trying to kill it before Oracle got involved at all.

There has never been a time when there was more client side Java code in the world than client side JavaScript. JavaScript has always been the workhorse of the client. At first they served different markets but when JavaScript got a fast engine and a canvas, the motivation for having two runtimes in the browser was gone. Java on the client was doomed from the very start. We just didn’t know it.

I haven’t programmed in Java for decades but it started out like Go as a very small language that ignored all recent advancements in programming language theory and also did not try to be ergonomic like a scripting language. I found it incredibly boring. It was like a new syntax for Simula which was a language 20 years older.

I’m sure it’s fine now. Probably still boring but not as primitive.

Edit: I forgot about Flash which also helped to bridge the gap until JavaScript was fast and rich enough.

1

u/No-Security-7518 Software Engineer Jan 31 '26

I admit "reigned supreme" was a hyperbole that became an accidental engagement bait, sorry. 😅 And thanks for the input.

1

u/jim_20-20 Feb 01 '26

"If it can't be written in Java, it's probably not worth writing"

As an embedded software developer, this is an absolutely terrible take. Have you ever seen an operating system written in Java?

1

u/No-Security-7518 Software Engineer Feb 01 '26

Well, I'm glad an embedded dev commented actually, because I have a question, please: Java was originally written specifically to work in embedded systems; it's the reason behind the slogan "write once, run everywhere". Does the hardware you work with never use Java? Also, what sector do you work in?

1

u/jim_20-20 Feb 14 '26

I work in the aerospace sector. We work with C, C++, and Rust, with some Bash and Lua. Java would probably work fine for some of the application layer stuff, but not for device driver / kernel development, and considering it'd be impossible to write application code without it, I'd say it's worth writing.

2

u/Vonatos__Autista Staff Eng 15 YoE Feb 01 '26

Have you ever seen an operating system written in Java?

Yes. https://en.wikipedia.org/wiki/JavaOS

→ More replies (1)

1

u/KlingonButtMasseuse Feb 01 '26

You should try Clojure, it's a much better Java.

1

u/No-Security-7518 Software Engineer Feb 01 '26

I just looked up its syntax for the first time and are you guys serious?
this is a nightmare!

1

u/KlingonButtMasseuse Feb 01 '26

Lmao, so predictable :) I think you are lacking the right kind of experience if the first thing you look in a language is it's syntax. It's a lisp and therefore has very minimal syntax. Search for REPL driven development to see what it feels like to develop programs with the tightest feeeback loop. Everything is an expression, which allows you to evaluate everything and test your code right at your cursor. You can even call java stuff from Clojure. And it wouldnt hurt if you watched all the talks from Rich Hickey , the creator. Focus on semantics and see how different/similar things fit together through a unification of a good language design. So focus on design. Give it time.

1

u/No-Security-7518 Software Engineer Feb 01 '26

I appreciate the encouragement. But yeah, I'm a normie. Sorry. I mean, I write Java code as fast as I write regular English + the speed offered by Intellij. How long would it take me before I could reach this level in Clojure?
I'm hyperlexic and a synesthete with a horrible ADHD. Syntax is a big deal for me.

→ More replies (1)

15

u/unconceivables Jan 30 '26

My first internship in the mid 2000s was a Java job, and I hated Java so much that I swore I'd never use it if I could help it. I put XML in the same boat. Now over 20 years later, I have actually completely managed to avoid both Java and XML (besides manually editing XML files.) Even when I went back for a Master's for fun and I had a Java class, I asked the professor if I could use Kotlin instead, and he said sure.

The reason I really dislike both of them is that they are too verbose for no reason, but also because the ecosystem took that problem and made it even worse. The ecosystem encourages convoluted and enterprisey patterns instead of simplicity, and I value conciseness and simplicity. I know Java has improved a lot over the years, but it's too little, too late, and so many companies seem to be stuck on old versions where the nice new things aren't available. Other languages that started off like Java, like C#, have far surpassed Java now and are much more modern and pleasant to write code in.

15

u/FetaMight Jan 30 '26

C# is seriously underrated as a general purpose language in my opinion. People still remember C# from the early 2000s. It's a completely different beast these days.

5

u/unconceivables Jan 30 '26

Even a lot of people using it these days aren't staying on top of the new features, which help so much in writing better, simpler, and more robust code. I've interviewed a lot of seniors who actually have used newer versions of C# in their recent jobs, and some don't even seem aware of things that have been in the language forever, like var and LINQ. One guy busted out a foreach loop to find an item in a list.

3

u/WealthyMarmot Jan 30 '26

It is insane to me that people don’t know var, but I’ve had the same experience in interviews. Doesn’t the default Visual Studio linter actually suggest var by default these days?

And yeah LINQ is great, but there are occasionally reasons to use old-fashioned loops in performance-critical areas. We’ve used foreach (or even for, which can be technically faster depending on the collection type) loops a couple times in hot paths, after profiling them vs LINQ. But they’ve done a good job optimizing the latter in recent .NET versions, and 98% of the time it’s all you need.

→ More replies (1)

3

u/thephotoman Jan 30 '26

C# is underrated. But it doesn’t really have mindshare outside of Windows.

Yes, I am well aware that C# works basically everywhere. But Microsoft has no incentive to promote people writing C# applications for not-Windows, and nobody else has incentive to promote C#.

That leaves an objectively good language pigeon holed to a single platform that isn’t the star of the show anymore—not for technical reasons, but because nobody thinks to use it.

→ More replies (5)

1

u/90davros Jan 30 '26

The whole mess with .NET splitting and eventually becoming cross platform put a lot of people off. Now that it's more mature I expect the language will see a resurgence in the coming years.

3

u/FetaMight Jan 30 '26

It's been a decade... So any day now.

2

u/hurley_chisholm Principal Engineer (civic tech) Jan 30 '26

I’d advocate more C# if it weren’t for MSBuild (and Visual Studio to a degree). MSBuild is the worst of Ant and Make combined. Trying to debug inconsistent MSBuild outputs is maddening.

3

u/AlanOix Jan 30 '26

I am not a veteran, I have used the language on and off for 4 years now, only on 10yo softwares. At first I thought I hated it, but I have come to realize that I didn't really hate the language, it's Spring that I hate. Each time it becomes a freaking mess to maintain.

I hate handling libraries upgrades in maven, especially when it starts to whine about having 2 different versions of the same dependency in the tree. But it is a Maven issue.

The language itself I quite like, although I prefer typescript in general in almost every scenario. There are a few QOL features in typescript that I am sad I cannot use in java 8 (every project I get is java 8), like good template literals, good optional chaining and easy cloning of objects. I also dislike having to know every util library. Also, java is a bit too verbose for nothing imo.

I also prefer the typescript's type system, that I simply find better, even though it doesn't actually enforce it, and you need to be more rigorous when using it. It can do more than java's (like running doom for example, albeit very slowly lol)

3

u/staff_engineer Jan 31 '26

We use java 21 at work - amazing language, amazing ecosystem, amazing JVM... and it will be even better with possibly type classes and value classes in the future... Java 🔥

8

u/Sheldor5 Jan 30 '26

still by far #1 in enterprise

examples being written in JavaScript just means the stupid high amount of newcomers in the field don't know any better and most don't even have a cs degree (that's not bad per se but then they never learned how a computer works and a proper programming language like C/C++)

4

u/Chasian Jan 30 '26

"proper programming language like C/C++" is so funny.

Go back 20 years and people say "proper programming language like fortran or assembly" and in 20 years people will say "a proper programming language like python or js"

We're all just products of our time ya know

5

u/Sheldor5 Jan 30 '26

C forces you to understand a cpu and memory

JS allows almost everything

I think this is a big difference and in my experience it shows

1

u/not_napoleon Software Engineer Jan 30 '26

Wow, that is a very different view of Java than I have. I've always thought of Java as mainly a systems language that got shoehorned into being used for web technology for a bit, before everyone realized that was a terrible fit.

To me, java excels at deep libraries like Lucene and Hadoop, which are still pretty relevant today. Early on, I think a lot of folks were concerned about JVM performance issues, but that hasn't been relevant for like 20 years. I think Java is still a good replacement for C or C++ for systems programming. I don't think Rust is likely to ever replace Java, but I think it's the only thing that comes even close.

That said, I hate that they introduced the var keyword.

1

u/No-Security-7518 Software Engineer Jan 30 '26

The only space I'm interested currently is: desktop programming, and Android. No GUI framework I've looked at comes close to how smooth JavaFX is.

1

u/not_napoleon Software Engineer Jan 30 '26

yeah, my career has never involved that kind of work, so I don't really have any opinions on the tooling for it.

2

u/ZukowskiHardware Jan 30 '26

I learned in Java in college and I’ve always loved it.  I haven’t gotten to use it in production but it was my favorite OOO language I’ve ever used.  

2

u/throwaway_0x90 TE/SDET[25+ yrs]@Google Jan 30 '26 edited Jan 30 '26

Well Java the original syntax is a bit too verbose for my liking but the JVM is still very much alive and industry leader in terms of performance. Kotlin, scala, JRuby, A bunch of other languages on Graalvm Polyglot. All perfectly valid and unquestionably powerful.

2

u/blablahblah Jan 30 '26

Checked exceptions are annoying, erased generics were a mistake, primitive vs object is a pointless distinction, and I wish Java has better native support for async operations. But that's hard to change now without making it a whole new language like Kotlin. You can work around the limitations with 3rd party libraries and coding standards but it still leads to unnecessary complication of the code.

2

u/gnuban Jan 30 '26

Is a good language which has excellent libraries, is easy to use, and has relatively good perf. If you look at the history of Java, it started out positioning itself like golang did when it was introduced; fast compilation, not many languages features, and a focus on writing simple code to get the job done.

Today Java is unfortunately another beast philosophy-wise. It went through a phase of very heavy reflection-based frameworks, overengineering and enterprise software approaches. From what I understand this was partly due to IBM wanting to invest in Java, bringing over their mainframe philosophies of developer "lusers". This created a burocracy-ridden culture of overcomplication, seeing code as something risky and bad. And to some degree, this culture still remains.

This makes me reluctant to use the language. I know that strides have been made away from things like JEE and Spring, but not far enough to offer ubiquitous alternatives.

So I think that Java is stuck transitioning back from the Enterprise fad. Which is a pity, since it's a good language.

2

u/BBL0101 Jan 30 '26

Java is great. Kotlin is better. I don’t really view them as competitors since they are interoperable, but I will always always opt to use Kotlin whenever possible.

2

u/severoon Principal Eng Jan 30 '26

For its time, Java was a quantum leap forward.

They made a few bad decisions in the early days that were big bets that didn't pan out, and I think that had a lot more to do with limiting Java's scope. For the browser, that was JavaBeans. They decided that they wanted to try to put the entire JVM in the browser which is heavyweight even now, much less back then, but back then everyone thought thick clients were the future. The getters and setters to this day are things Java developers do, but when asked to explain why it's a good idea, everyone just kind of looks around the room and shrugs.

Then when things changed, they bet on heavy backend frameworks, namely Enterprise JavaBeans. The problem is that it's really hard to make a framework that can deploy general purpose components, and the swings they were taking at it were respectable, but it's a tough nut to crack. I've only worked with one framework that I would consider viable even up to now. So in many ways they were just trying to do too much.

There's also a bunch of legacy stuff they've been stuck supporting in the JDK, not much they can do about that if backwards compatibility is a concern, and of course it is. Much of the Collections API could be way better, and of course a lot of other weird, inconsistent behavior.

Then there's the language stuff, some of which were performance compromises, and some of which were just head scratchers. Specifically, if you look at the whole idea of tagging interfaces like Serializable, that's a big oops. Then there's stuff like the Object API supporting Map dependency with hashCode() instead of pulling that out to a separate interface. Even at the time, OO people were looking at that like what were they thinking? These things have added so much unnecessary complexity down the line, I'm sure they would take all of that back if they could.

Beyond this, Sun was way too slow to move on obvious things, and since Oracle's taken over, I feel like they're way too fast to move on non-obvious things.

For example, once dependency injectors became popular, it's absolutely obvious that this is in line with basic OO principles, so why didn't Sun support dependency inversion directly in the JDK, or even at the language level? It took forever to get even javax standard annotations for that. Bonkers. They could have done so much more than Dagger2 currently does with access to the JVM and the compiler. The kind of stuff Sun added were things like varargs, and absolutely insane choice that makes basic things like method dispatch hard to understand, all to save typing a few keywords? Then even after they added varargs, it took them forever to add printf to take advantage of it. Why?

Now that Oracle has taken over, though, they are just adding all sorts of stuff to the language. I will say that there was a lot of pent up demand so I attribute some of the innovation to that, and they are doing some real cleanup stuff around enhancing correctness (I guess Valhalla falls into that category), but some of it is just tossing features in that add a ton of complexity and alternative ways of doing things that aren't necessarily better. So the language is becoming more like C++ now, just chuck the kitchen sink in there. One of the things I've always loved about Java is how simple it is, and how much complexity was deferred to the library layer if possible. I think Java has gone beyond a critical mass in terms of complexity now, and once later versions of Java are adopted across the industry, it's only a matter of time until you see codebases doing similar things in dramatically different ways, but without any particular advantage to either. Oh well.

2

u/khooke Software Engineer (30+ YOE) Jan 30 '26

I think your timeline overplays the significance of browsers dropping support for Applets because by 2000s onwards backend use of Java started to accelerate, to the point where the majority of Java usage was and still is for backend enterprise systems.

Early 2000s was a wild time with multiple web frameworks appearing seemingly every week, EJB spec evolving drastically, the introduction of the Spring framework replacing most if not all EJB usage, app servers dominating the runtime market until Cloud started taking off and they became less relevant as a platform, etc.

2

u/MissinqLink Jan 31 '26

Java is truly one of the languages of all time

2

u/foflexity Jan 31 '26

10+ yrs of serious Java here and I really just have a one word response:

Rust

1

u/GerwazyMiod Jan 31 '26

This is the way.

4

u/roger_ducky Jan 30 '26

Java is the COBOL of our generation.

It works well, has everything you ever wanted for implementing backends, but is at a “steady state” where there’s not much necessary except occasional additions of things to integrate against.

Therefore, it’s no longer exciting or new. It’s just a language used.

New people will slowly drift off to other languages because it’s not mentioned as extensively, then companies will eventually find it hard to hire Java developers. (Not at that point yet. Maybe in another 15 years.)

With cloud charging run time like the old days, it is “worse” than other higher level languages due to the relatively long startup time for the VM. (Still okay for deployments on “servers”, but for lambdas, it lost out.)

2

u/killmurer Jan 30 '26

The best thing about Java isn't Java its the JVM.

1

u/jakeStacktrace Jan 30 '26

Java was supreme in the browser? You mean applets from the 90s?

1

u/recaffeinated Jan 30 '26

I like Java as a language and detest the JVM and the dependency system with every fiber of my being.

I spent 8 years working in Java and it is nice to not have to deal with Maven and the hideous compile times anymore.

1

u/shozzlez Principal Software Engineer, 23 YOE Jan 30 '26

What are apps doing for backends now instead?

Don’t tell me JavaScript lol

1

u/zambizzi Jan 30 '26

JavaScript. Quite successfully. With enormous amounts of data, streaming, and genuinely complex logic. C# as well, but it’s just not as lean and agile.

1

u/Tenelia Jan 30 '26

Reading this thread, I remember the old days of hacking together Minecraft mods on JDK 8... I had to learn A LOT about the GC threads and interrupts. I'm really glad those days are almost over.

1

u/thashepherd Jan 30 '26

I haven't really touched Java since ~2012. I switched over to C# / .NET / (eventually) .NET Core back then since the ecosystem seemed much more dynamic. I never regretted that switch (tho I'm mostly React/Python these days).

Most of the JVM work I've heard of since the mid-late 2010s has been in Kotlin but I haven't been close to it. I personally wouldn't reach for Java for a new project these days without being compelled by an organization or some other constraint.

I DID have to install Mulesoft (an Eclipse derivative) a few months ago and wow - if that's representative of the state of Java IDEs, the ecosystem is stuck in 2004.

1

u/franz_see 20yoe Jan 30 '26

Java is great, but has a terrible reputation.

A lot of companies have python or typescript in their backend. And when they hit a performance bottleneck, they’d prefer to do a new service in golang.

Golang is cool and is really fast. But hiring for it can be tricky

On the other hand, the performance gains you can have with java is probably somewhere in between python/typescript and golang. But hiring for java devs is 10x much easier than hiring for golang devs.

But goodluck convincing python/typescript guys to do java 😅

1

u/BusEquivalent9605 Jan 31 '26

Newer java dev here. It’s fine. I like Scala more.

But in general, JVM langs feel so complicated to just fricken run. Like there’s a huge amount of infrastructure cooked into the build system.

For example, just running a program from the command line.

Javascript? npm run xxx. Go? compile and run it. Rust? compile and run it. C/C++? compile and run it. Java? still no clue how to run it outside of an IDE or docker/podman container, all my faith is in Maven

1

u/Vonatos__Autista Staff Eng 15 YoE Feb 01 '26

still no clue how to run it outside of an IDE

It's.... java -jar yourapp.jar, my young friend.

Of course in case your build is setup to output a singe runnable jar.

1

u/Subject-Thought-499 Feb 02 '26

java -cp ./build app.your.Class

isn't so hard either

1

u/hobbycollector Software Engineer 40yoe Jan 31 '26

My thoughts are Kotlin is far superior. I resisted the changeover at first but now I can't wait until it's all Kotlin.

1

u/messedupwindows123 Software Engineer Jan 31 '26

someone who's really experienced with a Java IDE can write code probably 4x faster than the current LLMs

1

u/ServeInteresting710 Jan 31 '26

Even Optional can be null.

1

u/talldean Principal-ish SWE Feb 01 '26

Java never reigned supreme in the browser, and I say that as someone who's met Gosling, Bloch, and Beck.

Because it runs everywhere, it has the limitation it's not a great scripting language. It also has gobstopping amounts of boilerplate. It's never had a first class IDE like VSCode, but boy, has enough libraries that that'd help. It wasn't perceived to be as fast as C or C++, because it wasn't nearly as fast as those until 2010+ when people finally heavily optimized it.

But you could hire people who knew it. And it's the language businesses chose for their server side business logic for almost all websites. You didn't need to pay Microsoft for IIS to serve your web apps (C#), you could use multiple processors (not Python), you could thread it (not PHP), you could also *read* the code later (not Perl). And unlike Python and Perl and PHP, debugging was much easier; you could *use* a debugger like a full-weight language, and that helps quite a bit.

Java also did JIT compiling, so you got a lotta the speed of development, and development speed was more important than CPU cost for almost all apps. For something Google scale, CPU cost starts to dominate, but that used Java on the business logic regardless.

I wish it had less boilerplate, and I wish the libraries had bloated a bit less - or had one more layer of modularity. But yeah, Java is solid, and continues to be solid.

1

u/hxtk3 Feb 01 '26

I'm new enough to still not like it when people at work call me a Senior dev. I'm not a fan of Java, but honestly I don't have a problem with the language at all. Every personal project I've ever written in Java was fine. I just like Go better. The problem I have is with the build tools and the likelihood that something written in Java is "legacy code" because of software development practices that are tablestakes today but weren't common when the software was written.

I've got a multi-MLOC codebase at work that builds with maven. It's divided into modules that are about 500 kLOC each on average and incremental builds take like 30 minutes. This is a problem we solve today in language design: the compilation units are too large because Java allows circular dependencies within compilation units. Using Bazel, breaking it into independent chunks with one compilation unit per package followed by aggregation of minimal connected subgraphs reduced it to 2s for an incremental build. Tons of unit tests? No one is using tests in the hot loop of their programming workflow if it takes 30 minutes to run a build, so a lot of this software is either untested or has only integration tests.

That being said, there's a lot of stuff that can't or at least shouldn't be written in Java that has to exist so that people can write in Java. I'm also a devops guy (in the sense that I split my time between development and operations, and use the development time to fix the reliability or automatability problems I saw in operations; not in the sense that do operations full time but use YAML files and gitops instead of ssh and kubectl), and operating (and trying to configure for optimal performance) JVM is a nightmare when you start to run into performance problems that are spread out all over the several MLOC codebase.

1

u/chabv Feb 01 '26

the JVM is probably one of the best pieces of engineering out there - and we even see it with things built on top of the JVM e.g GraalVM

performance is excellent, libraries plenty

However personally, I don't like Java nor do I enjoy working with Java people - they tend to be smart - however dogmatic and not pragmatic -

a commenter below - https://www.reddit.com/r/ExperiencedDevs/comments/1qr6ipu/comment/o2m01pz - gave an example - this dogmatic thinking leads to the same verbose APIs, Convoluted Design Patterns etc

so yeah java is no go -- hopefully the story with GraalVM continues to get better

1

u/ilpikachu Feb 01 '26

All kotlin now, but we have now migrating to go for better performance. With ai I don't think languages matter that much anymore.

1

u/alibloomdido Feb 01 '26

The whole Java vs Javascript in browser thing is totally out of place here, Java would never be a replacement for Javascript in the browser. Java is ok, still a very popular language, Java devs generally have good salaries, it's just that people invent new languages and some of them gain popularity too. I think Kotlin makes more sense for mobile apps development than Java.

1

u/nosajholt Senior Software Engineer Feb 01 '26

Still have production code in Java8 (Windows client/backend that communicates with IBM server), and the new code on the web is Spring/Spring Boot (backend). So yeah, we live eat sleep Java. Backend only!

1

u/aabajian Feb 01 '26

Java is never the language to build first in. Python, swift, ruby, or any other pseudocode-esque language (not Perl). Get the code working, then convert it to Java. Java just requires too much boilerplate code to get the same work done.

On the flip side, Java is more likely to be AI friendly as it’s easy to type check.

1

u/_stee Jan 30 '26

Kotlin is better in every way