4 ms·
As someone who hasn't used Java since the early 2000s, I am surprised that it took them this long to get some features that I have taken for granted for many ma
by Nuzzerino 8y ago
As someone who hasn't used Java since the early 2000s, I am surprised that it took them this long to get some features that I have taken for granted for many many years elsewhere. What surprises me even more is that there are Java islanders treating this update as something to be proud of. Can someone enlighten me as to why this language is still popular? I get that there is legacy software that uses it, and therefore a demand. But what is the appeal otherwise?
- wging 8y agoAs far as speed-of-evolution, it is worth understanding that the slower speed is at least partly a by-product of different goals. This talk, "Stewardship: The Sobering Parts" by Brian Goetz, is informative and well worth the watch: https://www.youtube.com/watch?v=2y5Pv4yN0b0 https://www.youtube.com/watch?v=2y5Pv4yN0b0
- ktosobcy 8y agoIt has easy learning curve, it's verbosity while cursed upon makes it also easier to grasp the code by less-then-expert, it's performant, it has huge ecosystem, it can run everywhere. In principle - it's just convenient in many ways.
- random4369 8y agoC# ticks all the same boxes and is much better from a language point of view. The only reason Java still exists is because it created a generation of professionals who only know Java, only do Java, and won't learn anything else. That group is still large enough to maintain critical mass and create new greenfield Java projects despite the fact that Java is a shit-poor choice of language for those projects today.
- kllrnohj 8y agoC# was too tied to Windows for too long, it lost the mindshare outside of that ecosystem. Also that whole "Android" thing happened.
- random4369 8y ago> Also that whole "Android" thing happened. Yeah, and Google made their opinion of Java quite clear by adding first-party support for Kotlin. As for Java being popular because it has mindshare, you are agreeing with my original point. It doesn't continue to exist because it's a good language. It continues to exist because of inertia.
- bitmapbrother 8y ago>Yeah, and Google made their opinion of Java quite clear by adding first-party support for Kotlin. Which is good for Android developers as they crave that syntactic sugar. Unfortunately, businesses have different priorities. >As for Java being popular because it has mindshare, you are agreeing with my original point. It doesn't continue to exist because it's a good language. It continues to exist because of inertia. It may not have all of the syntactic sugar that other languages have at the moment, but given its new release cadence its only a matter of time before it reaches feature parity.
- thoughtexprmnt 8y agoAgreed. Java was first, so that's primarily why it is where it is today in terms of market share. But C#, and its functional cousin F#, are now leading the way in the evolution of modern programming languages. With .Net Core now being open source and all-platform, we should all look forward to it supplanting Java and JVM as the ubiquitous language and runtime.
- indemnity 8y agoWe used to be a Microsoft/.NET shop, and switched to Java for the ecosystem, as well as the fact that all the interesting things in cloud happen outside of Redmond. Somewhat nicer syntax and some functional features isn’t going to fix the wider problem Microsoft has, which is the reason for .NET core existing, I suppose.
- thoughtexprmnt 8y ago>which is the reason for .NET core existing, I suppose. True, .Net Core exists because Microsoft eventually realized its mistake of tieing its programming framework too closely to its operating system. But... that mistake is now in the past, for some years now. >all the interesting things in cloud happen outside of Redmond. We're getting a bit off-topic from OP with this, but can you please give an example of some other cloud provider's service for which there is no Azure equivalent?
- pjmlp 8y ago.NET Core still fails short of many features available on .NET Framework.
- indemnity 8y ago> We're getting a bit off-topic from OP with this, but can you please give an example of some other cloud provider's service for which there is no Azure equivalent? I'm not referring to Azure feature line items, but rather that in the industry, Microsoft is usually an afterthought. The innovation happens elsewhere, and then Microsoft has to themselves try and port it to Windows. If you're running on Azure, eventually you're running on Windows (yes yes, it can do Linux VMs). We did .NET forever, and always had to try and make do with half baked adapters and integrations when wanting to use things like Hadoop or Spark back in the day, not to mention containers took forever to come to Windows. Got tired of waiting for Microsoft or the community to port things over, just switched to the platforms and languages where this was all native. I'm sure you'll say it's better now, I've been hearing that for quite some time now, but every time I look, it's still confusing, muddled and in beta. Kubernetes, JVM & Node.js works great for us now, and GCP is absolutely rock solid and performant. And we don't have to wait for Microsoft to bless us with the only implementation we're ever going to get, the OSS community is much, much, more active outside of the Microsoft bubble.
- bitL 8y agoJava was propelled by investment banks that saw Java as a manna from heaven comparing to C++ CORBA and the mess it was. Suddenly you had something simple yet even more powerful than C++ when it came to time to deliver a flawless distributed app. Java's main drawback is the amount of boilerplate code, but frankly that's more of an issue of framework/design patterns than the language itself; similar problems are in Python, Scala or even Haskell, just at a slightly higher conceptual level. Language-wise C# overtook Java quickly, but SUN was all about openness and about not being big bad Microsoft, and that resonated with the majority of idealistic developers.
- peterashford 8y agoI code C# for a living and I still prefer Java. A lot of the things added to C# are mis-features IMO. When stuff gets added to Java it's usually been thought out better than the way MS used to cram new features into C#. I quick look at C++ ought to show that every feature under the sun isn't always the best approach. I take issue with your "professionals who only know Java" line. I knew C, C++, Lisp, Pascal and Assembler before coding Java. I've learned C#, Javascript, Python and Rust since. I still consider Java one of my favourite languages. It's a pretty poor ad-hominem argument.
- deleted 8y ago[deleted]
- eslaught 8y agoI object to the idea that Java has an easy learning curve. Java is only easy because there is a massive investment put into it up front, in the form of freshman CS courses. So (a) a lot of the learning curve gets attributed to programming itself being difficult, and (b) once you internalize the model you categorize everything else as being "easy" or "hard" based on how similar it is to Java. If you take people who instead learned Python as their first language, and put them through all the ceremony that is getting "hello world" to work in Java, you're going to get a very different reaction. A lot of this is very dependent on perspective.
- peterashford 8y agoI completely disagree. I learned Java after C++ and I found it to be a breeze to learn - and I was self taught. Python is a good language too, granted.
- starkruzr 8y agoPython's environment management stuff makes me dizzy every time I try to get back into it.
- eslaught 8y agoI agree with your experience, but not your conclusion. How quickly you can switch from C++ to Java is a function of how similar Java and C++ are, not how easy one or the other is. For the record, I also learned C++ first. I also found Java to be a breeze. And then I discovered a whole world of other languages, and learned that in the grand scheme of things, Java and C++ are actually really similar to each other. Even Python is not so incredibly different, though it is vastly easier thanks to dynamic typing. Compare any of these to stack based languages (Forth), array-based languages (APL), dataflow/graphical languages (LabView), homoiconic languages (Lisp), dependently-typed languages (Coq), etc. There are so many paradigms that are so dizzyingly different from each other. C++ and Java really are much more similar than they are different. And it's worth pointing out that many if not most of these, though they would probably induce shock in a typical C++/Java programmer, are actually built on top of a small set of core concepts that is probably more coherent than either of Java or C++. And this matters a lot for people who are learning truly from scratch. There isn't necessarily enough data to make any definitive statements here, but there are schools that start with e.g. Haskell as a first language, and offhand I would probably say they get off the ground faster than a lot of Java/C++ introductory courses I see.
- bitmapbrother 8y agoFirst and foremost the reason why it's still so popular is its commitment to backwards compatibility. Enterprises love languages that don't continuously break their code bases. And then there's its unparalleled ecosystem, its massive developer talent pool and its availability on a number of platforms. And with the introduction of Graal and Truffle I'd say Java is one of the more interesting languages to follow nowadays.
- kjeetgill 8y agoI'm a fan of Java. I enjoy writing Java and working on NEW systems in Java. There's tons of cool stuff going on in Java and JVM land. It has great library ecosystem, concurrent data structures, sane enough memory models. There is great new cutting edge work going on on the JVM: G1GC, grasp/truffle, etc. There are great distributed systems/platforms like gRPC, zookeeper, cassandra, kafka, and hadoop. The IDEs are great. Debuggers are fantastic. Hot patching live code could be better but it's not hard if you plan for it. As for the Java language itself: sure it can be a bit cumbersome and verbose from time to time. But reading even the trickiest code is usually pretty explicit and decipherable. Not being the most "featureful" language plays to it's strengths. I find myself missing Java when in python or go as much as the reverse. It's part of the reason why Kotlin seems to be taking back some Scala fans. Kotlin is more Javay. As much hate as it gets its a surprise to hear that people think it's confined to legacy work. From where I'm sitting I'm pretty optimistic about its future.
- bitL 8y agoI liked the predictability of Java code; no nasty surprises like in Scala, no changing API like in Python, no incoherent addons like C++. You just learned how to express some things and then you could focus on algorithm/problem itself uninterrupted. With Scala or C++ I have to fight with some weird definitions here and there, dig deep into compiler to understand why some error is happening, waste a lot of time on things that should be trivial but aren't. Now I am worried that Java is going to become the same with the newer additions.
- kjeetgill 8y agoHaha exactly. I think it would surprise some that many of us are wary of the language additions even if we enjoyed having them in Kotlin, Scala, etc.
- mabbo 8y agoIt gets the job done. The JVM is a different beast than the one you knew 15 years ago. GC is not a problem (usually) anymore. Change of hardware? Change of OS? Want to develop on something else? No big deal, it's all on the JVM. And it's a pretty damn fast JVM. It's got an extensive library ecosystem that isn't going anywhere. Because enterprise uses it so extensively, there's lots of support for it, lots of demand for it. Amazon is big on Java- heck they hired Gosling last year. Java is stable, not going anywhere, and an easy choice to make. So yes, people are happy that it's getting better linguistically. Stop being a language snob.
- peterashford 8y agoI think the language has huge bang for buck. It's fast, it's simple, it has excellent tooling and libraries. I can't see a similar value proposition anywhere else.
- pjmlp 8y agoOnly on .NET, hence why I get myself busy with both eco-systems. :)
- peterashford 8y agoWhile I do prefer Java, I also use C# a lot and concede that my preference is largely a matter of taste
- vbezhenar 8y agoLanguages features are not very important for some people. Tooling is more important: I'll take Java with Idea over Haskell with vim any day. Implementation is more important: I'll take fast multithreaded JVM over slow Python with GIL (or single-threaded node.js) any day. Portability is more important: I'll take JVM over .NET any day (.NET core might change that, just an example). I don't need esoteric language features to write useful software. Even something as basic as Go or Java 1.4 is more than enough. Sure, additional features are nice, but not necessary and sometimes even harmful.
- specialist 8y agoThe appeal of Java was the reduced (limited) design vocabulary. No meta programming. Just straightforward imperative programming. For data processing, parsing, CRUD, etc. Java should have focused on being a better "business" language. Type inference, string intrinsics, built-in regex, intrinsic arrays and maps, lightweight objects. I love functional programming. For my own projects. When I want to get my lambda on, I'll use Clojure. No way I want to wade into someone else's extravagantly tortured dynamically typed, meta tagged, lambda spaghetti code. Annotations, optionals, generics, lambdas, and other cargo cult inspired additions have reduced Java's core value proposition. Fortunately the tooling and JVM are awesome sauce.