Live data from Hacker News

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

github.com

361–370 of 557 posts

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

#361
post #27

The only problem Java has is experienced C programmers don't build servers from scratch with it yet. Once they take that responsibility, the debate will be over because: "While I'm on the topic of concurrency I should mention my far too brief chat with Doug Lea. He commented that multi-threaded Java these days far outperforms C, due to the memory management and a garbage collector. If I recall correctly he said "only…

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…

Afaik, a malloc is not guaranteed to return fast. With those requirements it's hard even in C.

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

#362
post #161

Earlier quoted context omitted.

What stuff does C# objectively do better than Java?

Generics, LINQ, structs, delegates, to name just four.

Can you explain why you think C# does those things better than Java? And what they correspond to in Java?

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

#363

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…

Java has reached the status of Cobol - it is immortal because it is everywhere and has been around a long time.

Because of that, there are a lot of Java devs.

Our team works in Go, and so we get a few Java devs in once in a while as new positions open up. The biggest change for them is to get out of archonaut mode and stop overdesigning everything. After going through a 3-6 month cleanse, it's fun to see them complain about the legacy Java stuff and how overly complicated it is and how slow it is to build and test compared to Go.

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

#364

Earlier quoted context omitted.

What stuff does C# objectively do better than Java?

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…

> Performance-sensitive applications are still going to go for something native.

What’s up with Java in HFT stuff then? I’ve never understood this: from what I understand in order for it to work, you have to intentionally avoid doing many allocations, and that seems like you’ll be throwing massive amounts of the ecosystem (Javas biggest strength) away.

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

#365

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…

I agree with all this. Java is a great application programming language.

But bullen was arguing that Java is the best for servers of all types, which is what I object to.

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

#366

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…

What's your take on Kotlin? Neatly solves a ton of these issues.

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

#367

Earlier quoted context omitted.

Old school xml based Spring is horrible and if that was your only exposure, I understand your aversion. But spring-boot has an almost zen like quality once you get that it favor convention over configuration. When I was a Java developer, I'd usually use spring-boot with the following dependencies to make the experience better: - lombok: to generate the boilerplate: constructors, getters, setters, equals, hashcode...…

Sorry, but the popularity of tools which generate boilerplate for you is, in my opinion, one of the biggest indictments of the whole ecosystem.

agreed. every time I see static code generation I think "this is why people invent and use properly powerful languages".

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

#368
post #27

The only problem Java has is experienced C programmers don't build servers from scratch with it yet. Once they take that responsibility, the debate will be over because: "While I'm on the topic of concurrency I should mention my far too brief chat with Doug Lea. He commented that multi-threaded Java these days far outperforms C, due to the memory management and a garbage collector. If I recall correctly he said "only…

No doubt, Java GC is a feat of engineering. But it has to be to avoid being swamped by the lack of mechanical sympathy between the language and memory management. Pretty much everything you do generates lots of unnecessary litter, which then must be eventually collected.

Except in very narrow circumstances, I've not ever seen Java perform at the level of C or C++, especially when I/O is involved. Java typically needs 2-4x the memory and a lot more cores to do the same job. That's fine if you bought the machine and the machine is big enough, but if you're leasing an EC2, why pay more every hour?

These days, my C, C++, and Java days are behind me. We do mostly Go, and couldn't be happier. The GC and language have really good mechanical sympathy, and the bad memories of tuning Java GC are fading. We pay a small tax in terms of CPU and memory over using C, but not remotely like what we saw with Java. And yes, we built prototypes of critical use cases in C just to see how 'bad' Go would be, and were very pleasantly surprised that Go compared very well indeed.

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

#369

Earlier quoted context omitted.

> This combined with the fact that Java doesn't crash Huh? Doesn't crash in what way vs. C? I can still deref a null pointer and blow up. Java's perfectly fine, and I have no idea why you'd write C any more, but if you care about (extreme) performance and not crashing, Rust seems the obvious modern choice here.

Dereferencing null is undefined behaviour in C. Probably it could be handled with platform-specific code, but handling it correctly not the easiest thing to do. Other than dereferencing null, there're so many ways to accidentally blow up C code and something like reading uninitialised memory is truly undefined behaviour which can't be worked around. Java does not have undefined behaviour at all. Dereferencing null wo…

I've never seen Java code in production handle NPEs, OOMs or other such conditions well.

It's a shame Java does not have value types, which makes nulls a much rarer thing to have to deal with.

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

#370
post #30

Funny how the revival of Java is similar to the revival of .NET. After some stale years, both languages refined themselves and are back in the top competition (.NET in the VM space, Java in the language space). It really shows which languages can re-invent themselves (Java, .NET, PHP, ..) while some fail (Fortran, Basic, Pascal, Perl, ..). Not sure where JS is ;). Python seems to have survived the 2/3 schism by now.

I guess both JavaScript and Python reinvented themselves through gradual typing. It makes Python quite a different language and JavaScript literally a different language. My most recent small (1k LoC) Python project is “fully typed” and therefore practically type safe (not strictly speaking though). Lots of the large libraries are typed as well, which is important. For Python, work around the GIL might be the next ev…

I agree. It seems like the road for dynamic languages goes through optional typing. And it is logical because their weak spot right now are huge systems.

I have to add that JavaScript would greatly benefit from a solid base class library

Post reply on HN