If you have such a bias against any language that delivers the goods in the real world like Java does, you're probably not a systems guy. Let me guess, you have a problem with some clumsy aspect of the language or other? As if C is graceful?
If you have such a bias against any language that delivers the goods in the real world like Java does, you're probably not a systems guy. Let me guess, you have a problem with some clumsy aspect of the language or other? As if C is graceful?
Moreover, once you scale, you get big money, and then you hire IBM or Oracle or whoever to come in with consultants and give you the bespoke blessed Java stack. I have a friend in ecommerce right now (who is also an excellent low-level neckbeard) and his company bought top-of-the-line storage and things just to support the log spew from this stuff.
This isn't wrong, mind you...it's just that, at some point, it's better to just spend money on bigger iron, and then the neckbeards say "Fuck, this is boring and dumb" and leave for a challenge elsewhere.
The ASF has a ton of stuff based around the idea of "libraries rather than frameworks".
Again, I'm not bashing Java here. I think it's a good language, with a some cool things.
But, if you hire a neckbeard to code for you in Java, and they start messing around with java.net.blah and java.io.blah, and you're doing a webstack or something... I'm going to wonder whether or not they're mad. If they were doing this in C, that'd be par for the course and perhaps worth the effort. If you're in Java, though, why aren't they using the established libraries?
Anyways, again, consider the other issues for things like SOAP, XML, etc. Everybody ends up using the massive tooling stuff for that, and we're back to my original observation.
I'm primarily a Java guy but am capable of switching to C, writing decent code there, and making decisions like that. Someone who refuses to use Java because it's too "corporate" might be a better C programmer than me but they're not a better programmer.
Take a look at the code in java.util.concurrent sometime, specifically the inner Sync classes. If that's insufficiently "hardcore" for you, I don't know what to say.
Look, I get that there are people who really like Java, and that you've had to defend it for years against (often bogus) claims that it can't be used for x and y. I am not making any claims of the sort. Here is what I claim, put absolutely precisely so we can stop this nonsense:
The intersection of the following sets
1. engineers who I know
2. engineers who think deeply about performance
3. engineers who choose to write Java
is empty.That's it. I haven't claimed that writing Java makes you uncool. I haven't claimed that it's impossible to do anything in Java. I haven't claimed that Java is unsuitable for any task. It's entirely possible that I simply don't know the right people, and that even though the intersection of the first two sets is large, it's not large enough. I certainly don't know everyone.
I've seen a lot of cool things done in Java. I don't mean to imply otherwise. I've also seen a lot of really cool things done in Fortran and COBOL, many of them by unquestionably full-on neckbeards.
That said, within the population of people I know well, the experts who really understand low-level details of computing do not chose to write Java.
For web apps that scale out to a certain level, Java + Spring + Hibernate + Tomcat works boringly well. That is Java's niche. As you inferred, I wouldn't use it for much else.
Above a certain scale, you're back to C++, of course.
This is spectacular in its depth and brevity.