8 ms·
This post from "an ignorant computer science undergrad" is pretty silly, so allow me to get a little silly in response. I think if Java's new features are an a
by dkarl 6y ago
This post from "an ignorant computer science undergrad" is pretty silly, so allow me to get a little silly in response.
I think if Java's new features are an attempt to woo new developers, Java comes off pretty tragically, like the old guy in the club, trying stay relevant by showing off how it just got up to date with ideas that hit the mainstream ten years ago. Whoa, check out these record classes! Fresh stuff over here! I don't think there's any significant audience for this (a few "ignorant computer science undergrads" aside,) and I doubt that's what Oracle is shooting for.
I think what Java is really doing is reassuring people who committed to it long ago that it will take care of them. Java is not the old guy in the club; it is the middle-aged guy dressing up and taking his wife out for a night (or half an hour, depending on her arthritis) of dancing at a jazz bar. It's doing its honorable best to show the people who committed their lives to it that it understands they still need a little bit of excitement now and then, and they don't have to sacrifice their dignity to some cad at the bar at the country club to get it.
They don't really want to leave Java. Java understands things about them that nobody else ever will. All Java needs to do to keep them is love them enough to keep doing its best.
- ebiester 6y agoMore importantly, there are likely billions of lines of java code in production at this point, and just having that as an option matters for those code bases. It might not be what you choose for a new company, but it may not be fashionable here but it is very common and quality of life improvements are welcome.
- dkersten 6y ago> I doubt that's what Oracle is shooting for My guess is that they're not trying to win over people from other languages with these features, but rather to not give Java people a reason to move to other languages. Why move (legacy and lock-in aside), when Java has the features you're considering moving elsewhere to get?
- hyper_reality 6y agoThis is funny and I would love to hear your personifications of other languages. I imagine Python and Perl offer a lot of material.
- vbezhenar 6y agoAs a developer who used Java for 12 years, I don't really like the direction Java takes. It's not happening like you're trying to describe. Java have some weak points which could be addressed easily. For example properties are relatively easy to implement, but instead developers decided to implement records which are very different. Modules are weird thing that nobody asked for and they broke old code (what a blasphemy in Java world). And still I'm not aware of any useful modules use-cases. They throw out Java EE instead of improving it. I'm sure that Java developers have a vision which they're moving to. They're trying to convert old language into a new one with immutable classes, pattern-matching, green threads, modular JVM, all that stuff. May be I'll like that new language, but so far I'm a little bit unsatisfied. And, as it seems, young people are not that impressed either.
- jcadam 6y agoI think Kotlin is pretty much what a modernized Java should be. Between it and Clojure I don't spend very much time with Java anymore.
- jackcviers3 6y agoKotlin could he better, but doesn't go all the way. Without HKTs and implicit injection, Java is going to eat its lunch. Java already has records, type inference, parametric null safety with Optional, Loom provides coroutines, vavr and streaming apis have given us theabilitytodo FP... what's left as a unique feature? Kotlin will survive because it was picked for Android to avoid copyright issues. But the difference between the two languages is vanishing small.
- blacktriangle 6y agoCould you clarify the point on Android and copyright issues? At least at the time in 2017 when Google blessed Kotlin as an officially supported language, it seemed like the reasoning was Kotlin was far more ergonomic than Java. How does copyright come into this?
- 6y ago
- januszpawlacz 6y agoYour metaphors are tiring
- icholy 6y agoHow is this the top comment?
- dkarl 6y agoI read the linked post from beginning to end. I wouldn't normally post jokes, but for an HN audience, there isn't much to process in it except to criticize the author's inexperience, which seemed mean, and the issues it raises have been argued thoroughly many times on HN, so there didn't seem like much of a chance of a meaty technical discussion. The demographics of who the further evolution of Java will and won't appeal to seems like the most interesting question the post raises.
- bronlund 6y agoWhy is this post on the front page. That's the real question.
- strictfp 6y agoJava development scales, it has pretty good performance, and great tooling. I agree that it's underhyped. You can pick a lot of other languages, but no other language is as broad as Java. Python reads like a dream but has useless perf and threading. Javascript (Node et al) has the I/O concurrency but no clear solution to threading, and is bad at number crunching. C++ has good perf but is overly complicated, compiles take forever, no good module management, etc. Rust is great but super-hard to learn. Golang lacks tooling and perhaps some libs, albeit being a really good contender. Naturally there are other languages to bring up, but I personally think that Java strikes a good balance. The language itself doesn't really have any clear weak points anymore. With lambdas and streams, even FP is succinct in it. The only thing really speaking against Java right now is the culture of overly complicated frameworks with too much meta-programming and magic. And the fact that the market of lightweight alternatives is too fragmented.
- dkarl 6y ago> Java development scales, it has pretty good performance, and great tooling. I agree with this, but I think these qualities are shared by a lot of languages that run on the JVM, and Java the language is no longer a worthy flagship language for the JVM. > With lambdas and streams, even FP is succinct in it. I have the opposite reaction to lambdas and streams. I think Oracle could have gone two ways with the evolution of Java: - Be conservative about what features were adopted into Java, but be willing to change the syntax and feel of the language to do it in the best possible way. Only add features that both made sense for Java and had proven themselves after years of experience with the languages that pioneered them, but give Java the most elegant and polished version of them, so that Java would be a kind of "best in class" language that trailed the leading edge but always reflected it in an excellent way -- at any moment, the best version of Java that could be built with the industry's combined experience. - Or, keep Java feeling as familiar as possible, while adding any features that are embarrassing to lack. It's okay if new features feel bolted on or don't feel as elegant as they do in newer languages; it's more important that longtime Java programmers don't feel like the fundamentals of the language are changing underneath them. Streams are what convinced me that Oracle were committed to the latter route. They came out with an implementation that looked and felt clunky compared to what people were used to in other languages, but it felt very Java-y, and existing Java developers were pretty immediately comfortable with it.
- scrubs 6y agoAgree re: silly OP post. I read it thinking: Eventually this guy will move to sales and marketing majoring in language wars. So I'll further the silly follow-on as follows: Guys, c'mon, get your head in the game. Before we tech out how under hyped JAVA is we still never sorted out just how awesome VI is and how VI is way better than EMACS, Code Lion, and whatever other crazy complex IDEs are out there. Once we figure that out, only then can we afford to resolve the lesser pressing problems.
- maxpert 6y agoI’ve already moved to Kotlin. I love the language other than the fact that JVM objects are just too heavy. Nothing against Java but language has aged like milk, the readability and writability is just too bad. Recent strides with records and project loom etc are evident efforts to make it evident again. I’ve kinda started to like Kotlin from syntax perspective & Go’s nature of compiled and low overhead prospective. I wish somebody can combine those together (don’t tell me GraalVM).