Live data from Hacker News

Don’t call it a comeback: Java is still champ

github.com

321–330 of 557 posts

Re: Don’t call it a comeback: Java is still champ

#321
post #216

Earlier quoted context omitted.

When all you have is a hammer... What a ridiculous take, most server apps don't use Java and they are just fine.

This was true until 2017 when I became a C programmer. They are fine until they need to scale and iterate quickly without downtime.

Java apps have plenty of downtime during deploys, that isn't uncommon at all. You have such a naive view of java.

Re: Don’t call it a comeback: Java is still champ

#322

Earlier quoted context omitted.

The real nightmare is Java's versioning scheme

The version number increments by 1 every 6 months. What is so nightmarish about that?

To someone who has not written Java since High School in the '00s, I find the ecosystem a little confusing.

My recent experience was this: I have a Windows box in my basement that hosts a Spigot Minecraft server for some friends and their kids. This box also hosts my UniFi controller software.

The UniFi controller software requires Java 8, which is what Oracle offers for download on their website.

Spigot usually requires the latest version, at the time I ran into this problem it was 17. You have to go out of your way and actually download the whole JDK for any Java version newer than 8.

So I download and install JDK 17, which replaces the JRE 8 I already had running UniFi. Spigot works, and the UniFi controller appears to start up and function. However I quickly notice that the UniFi app is behaving erratically, and after some troubleshooting and googling, I learn that Java 17 is in fact not backwards compatible with Java 8, so both of them need to be installed.

Of course, Java doesn't make installing multiple versions side by side easy. It's doable, but even then they built no mechanism for a jar file to specify which runtime it needs and automatically run with it. So I had to write my own startup scripts for these apps calling the specific runtime they required.

None of this was particularly onerous to figure out and deal with, but your average user is going to get stuck and feel frustrated. And it left a bit of a sour taste in my mouth because .NET has done a pretty good job of avoiding exactly these kinds of problems.

Re: Don’t call it a comeback: Java is still champ

#323

Java was actually not bad for me in class when learning software design and data structures, but soul-crushing to work with in the real world. Mindless, unnecessary use of getters/setters, interfaces, and AbstractFactoryImpls. Hiding almost every piece of functionality behind 10+ layers of indirection. Dependency Injection with Spring. They all make it feel like Java draws folks who actually __enjoy__ writing bloated…

The problem with Java is much more with the ecosystem than the language, for all the reasons you describe. Clean, straightforward software can be written in Java but it seldom is.

Re: Don’t call it a comeback: Java is still champ

#324
Sun Microsystems had a link to my blog on the Java home page for about a year. I had attended the first Java World Tour, blogged about it, and for 15 years I was the first “hit” searching for “Java consultant”. Thank you Java.

All that said, I don’t use Java much anymore, preferring to use Clojure when I need the rich JVM ecosystem. I do follow new Java language features and usually try them.

Re: Don’t call it a comeback: Java is still champ

#325

Java was actually not bad for me in class when learning software design and data structures, but soul-crushing to work with in the real world. Mindless, unnecessary use of getters/setters, interfaces, and AbstractFactoryImpls. Hiding almost every piece of functionality behind 10+ layers of indirection. Dependency Injection with Spring. They all make it feel like Java draws folks who actually __enjoy__ writing bloated…

I have been learning Elixir for past couple of months. After a long time, I am in love with programming+design again. It has honestly given my brain a much needed refresh.

Of course, it can definitely be attributed, at least partly, to just moving to functional programming.

Every day I look forward to 6'o clock, so I can stop working and continue on my own projects.

Re: Don’t call it a comeback: Java is still champ

#326

Java was actually not bad for me in class when learning software design and data structures, but soul-crushing to work with in the real world. Mindless, unnecessary use of getters/setters, interfaces, and AbstractFactoryImpls. Hiding almost every piece of functionality behind 10+ layers of indirection. Dependency Injection with Spring. They all make it feel like Java draws folks who actually __enjoy__ writing bloated…

I don't think this is an issue with Java, it's an issue with Spring. I'm baffled by the popularity of Spring.

But this article specially mentions Spring as some next generation rocket fuel to send Java even higher.

The problem I see is as far Java ecosystem goes Spring is big, respected dev framework to be used liberally anywhere. So if a developer like me call Spring a revolting piece of shit software it is just me asking to become jobless.

Re: Don’t call it a comeback: Java is still champ

#327

Earlier quoted context omitted.

Benchmarks generally show C# outperforming Java, but not to a degree that most people would worry about. Performance-sensitive applications are still going to go for something native. One of C#'s biggest assets is Anders Hejlsberg of Turbo Pascal fame. He's been in charge of C# since its inception. He's done a very good job of keeping the language clean and concise, and generally ahead of Java when it comes to adopti…

I thought Anders was full time on Typescript these days? Certainly his fingerprints are all over c# from being in charge for a long time though.

He still acts as the lead architect on C#, in addition to working as the core developer on TypeScript.

Re: Don’t call it a comeback: Java is still champ

#328
post #114
post #97

Earlier quoted context omitted.

With Loom incoming, Go's only unfair advantage (shared with Erlang) may be gone soon. I guess we'll have the answer in a few years. Will the next WhatsApp be written in Java?

Loom does a small fraction of what the Erlang VM is capable of doing. For one, the Erlang VM has built-in preemptive green thread scheduling, which means it can suspend your green thread at ANY instruction, not just when an IO call is in progress. Loom is a step in the right direction, but Erlang is in its own universe for what it was designed for.

Erlang still has failure domains as a first class concept which neither go or Java are likely to have ever.

Re: Don’t call it a comeback: Java is still champ

#329

Earlier quoted context omitted.

Oh, please. I once worked on a Java-based server at Google that had to answer requests with millisecond latency. In order to achieve this, the server had to block garbage collection most of the time. Periodically, each instance of the server would ask the load balancers to stop sending requests to it, so that it could then safely run the garbage collector, and then ask for traffic to return. We likely would not have…

> I once worked on a Java-based server at Google This is kind of a fair comment, but kind of not, because Java performance and GC internals have really advanced a lot in the last decade. It would really help if you qualified approximately when this was. > Sadly the garbage collection debate is full of people who want GC to be the answer to everything Good point. I think more recently, the Java world is very aware of…

[deleted]

Re: Don’t call it a comeback: Java is still champ

#330

Earlier quoted context omitted.

> Java's GCs are incredible and you have a menu of algorithmic options can these options be used in separate parts of a single app ? e.g. the app I'm developing in C++ has parts that do realtime audio, others that do GPU rendering, others that do classic Qt Widgets GUI, others that do offline computations on datasets - and they all have different performance characteristics and need different memory management scheme…

If Java had isolated heaps then C++ would become redundant in every aspect except memory efficiency.

What are the advantages of isolates vs running multiple JVM processes other than avoiding slightly higher memory usage and some small context switch overhead on IPC - which should be negligent as presumably communication between isolated components would be coarse grained?
Post reply on HN