9 ms·
Java is still worth learning
- ivan_gammel 1y agoThe content of this post makes some sense, however it does look like it’s written by AI and thus lacks depth, context and personal touch.
- theletterf 1y agoEspecially sentences like these: "This wasn’t just about type safety – it was about reducing the mental burden of programming." The "x wasn't just about n — it was about m" carry a strong LLM smell.
- dqv 1y agoAnother giveaway: > Whether you’re debugging your first NullPointerException or architecting enterprise systems, there’s always someone willing to help you grow. > Whether you’re starting your programming journey or looking to add a robust, reliable language to your toolkit, Java remains one of the best investments you can make in your technical future. I wish people would be more thoughtful about how they used LLMs.
- booleandilemma 1y agoI hate that I have to second-guess whether or not something has really been written by a human nowadays. Especially with these blogs that have sprung up in the past couple years.
- raincole 1y agoQuote from the article: > Java has been my companion through: > Learning object-oriented programming > Building enterprise applications > Navigating the transition to cloud computing > Exploring microservices and distributed systems > Mentoring other developers > Speaking at international conferences Yeah this is literally what 90% of senior programmers have done regardless their favorite languages. Either AI-slop or human-slop.
- AnimalMuppet 1y agoOff topic: Lacks... personal touch. That's exactly what I find wrong with AI writing. Good writing has the author's voice. Corporate writing has no personal voice; that's why everybody hates reading it. AIs train on all the text of all the web (that they can get, at least). A lot of that text is "corporate voice" (that is, written by nobody). But even the rest, the AI blends it all together. As a result, in the output, there's no voice - or rather, all the voices all blended together, which doesn't sound like anybody.
- delusional 1y agoAdvocating that people use either Quarkus or Spring is like advocating they build their stuff in COBOL. Java is an alright language by itself, but the "EE" frameworks and the ecosystem that surrounds them are corrosive to good software. You are actively harming your brain by learning JavaEE. If you do that to new developers you deserve to have your beans turn undiscoverable on Christmas Eve.
- imtringued 1y agoSpring and Quarkus are not Java EE.
- mqus 1y agoYeah, they are "jakarta EE" now. Or what do you mean?
- fiddlerwoaroof 1y agoSpring has some compatibility shims for EE but my understanding is it’s always been its own thing and was originally formed in reaction to EE
- ivan_gammel 1y agoSpring is not „jackarta EE“, it’s compatible with some of EE specs (a good thing), but otherwise it’s just a different framework.
- antonvs 1y agoSpring is neither Java EE or Jakarta EE. It can integrate with those frameworks, but it's a completely independent system.
- Xenoamorphous 1y agoProbably OP meant that they are ubiquitous in Enterprise settings, no that they're part of "EE Java".
- ivan_gammel 1y ago
- Klaster_1 1y agoCan anyone recommend a good Java learning resource for those who already know a popular language like JavaScript or Python?
- jimbob45 1y agohttps://learnxinyminutes.com/java/ https://learnxinyminutes.com/java/ Great starting place for any language.
- minebreaker 1y agoI don't know. I started my career as a Java dev, but what made me grow as a software developer was learning Scala. I learned a lot about functional programming, algebraic data types, effects, and so on. I'd say Java is a great production language, mostly because it's so simple that I don't need to "learn" it (when you know better than using madness like `==` or Serializable).
- misja111 1y agoI went the same route and am still working as a Scala dev. However Scala adoption seems to slowly go down, unfortunately .. Which is a shame because it's a beautiful language and I love using it as FP together with Cats. However Java has advantages too: the IDE support was miles better than Scala, build times were shorter, most frameworks were more mature and better supported and the language itself was much more stable.
- minebreaker 1y agoSo true. Scala 3 made it even worse. Hope Jetbrains will improve that, but they seem to fully committed to Kotlin.
- piva00 1y agoScala adoption is going down because it's a behemoth of a language with so many features that it takes too long to learn and be proficient with it. There's beauty in simplicity, and Scala is the antithesis of that, it has not only the kitchen sink but the whole kitchen and some house attachments within it. I fell in love with Scala for a while, worked with it for a couple years, and absolutely hated it whenever I had to train someone new. Nowadays I simply refuse to work with it because I'm not willing to relearn all the stuff it needs to be productive.
- jjav 1y ago> There's beauty in simplicity, and Scala is the antithesis of that Succintly put, exactly this. Scala is as bad/good as lisp, and has the same challenges. It's fun for a solo developer or very tiny close-knit team to do intellectually fun code pirouettes and stunts. Not in a negative way, that does bring satisfaction. But throw it into a multi-dozen people codebase with many varying styles and soon enough nobody understands what's going on and it becomes a royal nightmare. There's a lot of value in simplicity if you need to maintain that code over the years and many people.
- ravirajx7 1y agoI’ve been working as a backend developer for close to six years now, but reading this brought me right back to college. Like many others, I started with C. It taught me the basics - memory, pointers, writing data structures from scratch - but most of the time it felt like I was just trying not to break things. Solving problems became more about handling the language than understanding the logic. Then I came across Java, and something just clicked. It felt structured, readable, and intentional. Almost like reading good English. For the first time, I could focus on the actual problem instead of building the tools to solve it. Collections, built-in libraries, and a reliable runtime made coding feel productive, not just painful. Even now, years later, Java still feels like home. It’s not perfect, but it gave me the space to learn, grow, and build things that last. I really appreciated this article - it captures that quiet strength Java has, and the care so many people have put into making it better over time. It reminded me why I still enjoy writing Java after all these years.
- rapsey 1y agoFunny I had the exact opposite reaction to Java when I needed to use it in college. So many abstractions, forced design patterns and boilerplate. Absolute soul sucking joyless development.
- chii 1y agomay be it was the way you were taught java. It had abstractions but you were never forced to use them. Ditto with design patterns - you could use them, but none were forced, unless you _had_ to use a framework (like spring), but that's a choice! May be it wasn't your choice, but it was a choice someone made. If you used java like you used C, java is much easier and less mentally demanding, and therefore less prone to mistakes.
- rapsey 1y ago> Ditto with design patterns - you could use them, but none were forced, unless you _had_ to use a framework (like spring), but that's a choice! May be it wasn't your choice, but it was a choice someone made. Every language has a koolaid aspect to it. Java drinks the OOP+design patterns koolaid, so it was standard to use it incessantly. Yeah in theory there is a choice, not really in practice though. I find the typical over abstracted, one line functions everywhere java codebase revolting.
- Tade0 1y agoThe further away you are from VC money, the more "boring" technologies like Java make sense. Whole careers have been built on producing CRUD web applications with Java on the backend and Angular on the frontend. It's not exciting, but so is life without income in countries where this line of work is something to aspire to. I should know, as I live in such a country.
- jajko 1y agoI refuse to jump on this oh-so-popular bandwagon of (seemingly) everybody complaining how java is uncool ad nauseum. You can make cool stuff in literally any language, and syntactic sugar around and how to express it are details. That's junior dev thinking, chasing fads, repeating others and not forming one's own opinions. This is mine.
- Tade0 1y agoMine is that I need to protect the uncool status of Java and the like so that certain people and their egos will stay out. There are, of course, other certain people and their even bigger egos already in this space, but it's enough to avoid the training/certification treadmill to not have to deal with them. Point being it's good that a hammer is a hammer and its best that no one tries to reinvent it. I don't care how cool my hammer is as I'm not excited to drive nails into planks.
- anon-3988 1y agoIf Java can be compiled into a single binary and have a package manager then I would learn it. I really want to like Java, or JVM-based languages specifically, but its extremely annoying and complicated to figure out how and why thing works.
- RamblingCTO 1y agoI think you might need to look into java (or better kotlin) then. Is gradle not a package manager on top of a build system, just like npm? Is a fatjar/shadowjar not a "single binary"?
- raincole 1y ago> Is a fatjar/shadowjar not a "single binary"? No, it isn't. `go build` is a single binary.
- ivan_gammel 1y agoTechnically speaking, what’s the difference between native binary requiring some set of OS APIs or portable binary requiring a VM layer on top of OS? User experience can be the same, you can run those things from command line, pipe inputs and outputs etc.
- chii 1y agothe difference might be expectations that the OS api exists and does not require an installation pre-execution of the binary. On the other hand, i think the jvm, like python, ought to be part of a standard install of an OS tbh. Then there would really be no difference.
- piva00 1y agoYou can package a JVM into a binary executable, no need for a system JVM that way.
- 1y ago
- thibran 1y agoNo. I've done Java long time ago and now again in a new job. Java is still verbose and clumsy. Did not like it back then and don't like it now. Would prefer to use Kotlin or Clojure.
- dzonga 1y agoJVM is probably the most impactful piece of software ever written. our world literally runs on the JVM. however - the "Java" ecosystem used to suffer from architecture astronauts & complexity merchants. Certain things like Quarkus & SpringBoot have helped reduce that. if you keep Java simple, don't ingest too much OOP Kool-aid. You can literally make anything that will work today, 10 years from now, 20 years from now. that's reliability you won't get from Python, Ruby & Javascript. Remember the JVM offers alternatives - Clojure, Kotlin. with a Kotlin a nice compromise.
- vismit2000 1y agoObligatory fireship: https://www.youtube.com/watch?v=m4-HM_sCvtQ https://www.youtube.com/watch?v=m4-HM_sCvtQ
- lolive 1y agoAs a senior Java developper, I would say the most important things you will learn from Java (beyond types) are: stream on collections (the local functional implementation of map/reduce/…), interfaces everywhere, and more importantly safe function extraction by your favorite IDE. Let me elaborate the last one: you write an horribly long spaghetti code (because you are a junior, or you are in a hurry). That’s ok because the “Extract method” instant feature of your IDE will help you safely extract each piece of code AFTERWARDS into its own small function (that can be tested in isolation, where local variables stays internal to the function, where the interface contract in term of input/output/sideEffect is clear, where the function naming is meaningful). The IDE can even tell you that this code you are extracting as a function appears at several other locations that should also be replaced with a call to that new function. I don’t know if Typescript support in IDEs reaches the same level of simplicity/safety in term of function extraction. But that feature is absolutely critical to go from spaghetti code to clean modular code, when you are a junior/work with juniors.
- parallax_error 1y agoI’ve in university and the classes have been almost exclusively taught in Java. Learning C/C++ definitely felt like a step backwards, as there’s more you have to implement yourself instead of using the standard library. With that said, I think I learnt a lot more about how systems work under the hood by learning C, so perhaps it’s not as good for learning programming concepts IMO
- zarzavat 1y agoThis is why whenever someone asks me what language they should learn first (if they want to be a professional and not just a hobbyist), I say C. Don't learn a high level language first. Learning Java before C is like learning to ride a bicycle before you learn to walk. You will need to learn C eventually, but learning C once you already have a high level language under your belt will make the experience frustrating. Having to manage your own memory, build your own data structures, it can be fun, but it's less fun once your brain is already wired to expect these things to be done for you.
- parallax_error 1y agoI agree, I’ve definitely had a lot of “ahh, that’s why it does that/works that way in Java” when learning C
- tialaramex 1y agoIn C you program the C Abstract Machine, this machine is a child's drawing of the Digital computers on which C was invented, it's simpler and easier to grasp than they actually were but fundamentally similar. Your computer today does not much resemble this, but your computer is the real machine your software will be executed on anyway. Mistaking the Abstract Machine for your real one is a catastrophic misunderstanding and C feels as though this is the bare metal when it is not. As a result it's more honest to use a language where it doesn't feel as though you're touching the bare metal, because you aren't anyway† When I last checked both Oxford and Cambridge teach an ML as First Language. So did the place where I did my degree decades ago although today it teaches Python (which I believe is a mistake). That's because the theory of computation is foundational here, not the practice. † Even assembler isn't touching the bare metal, you have features like out-of-order execution and register renaming between the machine code you wrote and the actual things done.
- p0w3n3d 1y agoI've been hating Java since 1999 for many reasons, yet I'm a Java Developer since then (with episodes of Python, C, C++ and Qt). The language itself got on my bad side when the Java developers said that they will not implement operator overloading (I'm a little bit crazy about the subject) because - EKHM - it would allow writing unclear code, which is bananas. Things missing in Java: - .? operator - operator overloading And there were a lot more, but most of them are already solved. The language is tidy and usable, the Optional api is not bad, the native function calling is improving. But what I wanted really say is: the language itself is one thing, but the libraries available are the other. The strongest libraries in Java are the part of the language, especially time handling, character encoding, etc. Java was built with utf-16 in mind and other languages are still trying to cope with it. There are frameworks (outside the language standard) which allow crazy fast web service and DB development. It's all good, it's all standard and it's rarely breaking the backward compatibility. So you get a new developer, just after CS Bachelor and they jump into the project and understand the huge part of it. When I'm learning new languages, I tend to try writing business applications and usually I cope with the same problems: datetime, string encoding, database connecting, etc. Yeah, golang has great goroutines, but they still import web service library from some guy's github, which can vanish in no time.
- xscott 1y agoSeconded on operator overloading, but being restricted to the limited set of "primitive" (value) types is horrible too. Complex numbers are table stakes. The idea that I need to dynamically allocate an object holding two floats and hope the JIT can optimize that into a stack value is awful.
- p0w3n3d 1y agoActually using the record at the moment might be almost a guarantee of success. Java JIT is great!
- ivan_gammel 1y agoI think with value types we may see some support of operator overloading eventually. Done carefully, Java way, covering most important use cases, but leaving extremes outside of the scope.
- daitangio 1y agoJava is the new Cobol. Java had changing its skin: Applets and Security managers, part of the cornerstone of Java 1.102 are gone. So Java are 2-3 different evolving language nowadays. JVM has so strong optimization layers which make very difficult for other languages to provide similar performance (Erlang is one of them in my humble opinion). Yeah C/C++ program are faster but error prone (manual memory allocation...) PHP is faster for web developing but refactoring is a nightmare. Python can compete, but I do see few big projects written in it (Zulip,Dropbox,Plone/Zope). JavaScript is super rapid dev rapid but can become a mess. Rust is the newcome, I do not know but it seems quite cognitive-complex to code with it (I may be wrong). I worked with shit-like Java code and i was always able to refactor it in small chunks. The verbosity of Java is its major strength, but some things added to the language (like default interface implementations, virtual threads) are drawbacks because it create some confusion on basic pattern strategy you can employ with the language.
- pjmlp 1y agoOnly ART, .NET, Erlang, and V8 are on part, with similar engineering efforts. Which when coupled with the great IDE tooling, graphical debuggers and libraries, is the reason why with exception of Erlang, they remain my main tools. With the occasional dip into C++ for native libraries.
- pjmlp 1y agoNot only it is one of the best ecosystems, Java bashers keep forgetting that it has a cousin ruling 80% of the world market in mobile phones, via the Java subset it supports, and the whole JVM infrastructure Gradle, Kotlin and Android Studio rely on.
- nick-laptev 1y agoEnterprises will be on Java and .Net for decades. If you plan to work there, then Java is a way to go. Please note that Java is not human friendly. You can learn it for years and still shoot your leg easily.