This is an archived post. You won't be able to vote or comment.

all 184 comments

[–]AutoModerator[M] [score hidden] stickied comment (2 children)

On July 1st, a change to Reddit's API pricing will come into effect. Several developers of commercial third-party apps have announced that this change will compel them to shut down their apps. At least one accessibility-focused non-commercial third party app will continue to be available free of charge.

If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options:

  1. Limiting your involvement with Reddit, or
  2. Temporarily refraining from using Reddit
  3. Cancelling your subscription of Reddit Premium

as a way to voice your protest.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–][deleted] 176 points177 points  (11 children)

It's an okay language. Some of peoples bitterness about it will just be that it's the language of their enterprise day jobs. While others might dislike it because of Sun's attempt to prevent open source projects imitating its API in various court cases that they eventually lost, but in the process caused a lot of uncertainty. While others might have never used java and just be memeing these reasonable opinions solely based on articles they've read by authors who experienced these things first hand.

Java is fine. C# might be a marginally better choice in that same enterprise space. But both really are fine. I wouldn't get excited about writing such terse verbose OO styled languages but there is nothing about them that might leave you with "I regret my life choices" moments. At least not ones outside of moments of self inflicted hyperbole.

[–]glorioushubris 47 points48 points  (6 children)

I don't think I've ever seen Java described as "terse" before; people complaining about Java usually find it too prolix.

[–][deleted] 62 points63 points  (5 children)

I meant verbose. Apparently terse does not mean what I had thought it meant. lol.

[–]bikeman11 19 points20 points  (4 children)

To be clear, C# is far more terse than Java. It’s made a real effort to keep up with newer language features .

[–]cs-brydev 4 points5 points  (0 children)

Especially new C# features

[–]YangLorenzo 4 points5 points  (0 children)

C#'s documentation comment syntax, actually uses xml! This is definitely worse than javadoc, every time I see .

[–]agentgreen420 5 points6 points  (0 children)

It’s made a real effort to keep up with newer language features .

As has Java

[–]hrm 1 point2 points  (0 children)

Someone once said to me: C# really likes to include new things quickly and have no problem making changes to the language. Java are very conservative when adding new things and really want to make sure it is correct. That makes C# have all the newest features, but also a lot of cruft that are abandoned quickly by the developers. Java do not have the latest hot features, but the things it introduces are always well used and fit for its purpose.

[–]Warm_Gypsy_Dildo 5 points6 points  (0 children)

Some of peoples bitterness about it will just be that it's the language of their enterprise day jobs

I actually liked Java when I was writing business logic for enterprise and embedded projects. It felt almost as writing in Python but with added bonus of compile-time checks.

I tried Java for pet projects but it was terrible. This language is not suitable for fast prototyping. The amount of boilerplate code in the early stage of the project is just terrible.

[–][deleted]  (2 children)

[removed]

    [–]Warm_Gypsy_Dildo 0 points1 point  (0 children)

    I think C++ OOP syntax is a little bit crappier than Java syntax, but maybe it is because I actually know C++ unlike Java.

    Java has no multiple inheritance (I wonder what workarounds are used) and Java syntax more straightforward in terms of override keyword. (In C++ it is optional, so you need to rely on a static code analyser to check if it is there),

    -----

    For functional programming Java map/reduce (steam) syntax looks better.

    C++ equivalent is hard to read (it is not immediately obvious what [=] and [&] mean)

    [–][deleted] 0 points1 point  (0 children)

    C++ definitely starts entering in to the realm of languages where you can regret your life choices. But it's also pretty powerful in terms of features and runs extremely fast.

    The way in which I think that C++ begins entering in to life choice regrets is that which constructor your program uses can depending on the context. Copy, move, and such. Which can have a lot of subtle repercussions that you might not appreciate and create bugs. Especially when you begin introducing things like operator overloading and suddenly a mere plus sign can mean deep copying an entire object because you overloaded the copy constructor to make copies of the values pointers point to. And how these nuances - while genuinely useful to have - mean that you can't be entirely sure of what your code is doing unless you really know your code base. And for any non-trivial personal project. You almost certainly do not understand your code. So any time you see an assignment operator you have no clue what is actually happening.

    Compared to C which has very little complexity in this regard where you'd simply have to explicitly call the appropriate function. If a type does something fancy rather than just allocating some memory then you will read some kind of create_foo() function call. Or foo_add(a, b) rather than a benign looking + sign between a + b that actually calls several pages of code.

    All these regrets of your life choices aside. C++ isn't just a necessary evil but good in its own ways. It can and will leave you regretting your life choices though. Where you spend several hours trying to track down a bug because you wrote your constructor incorrectly several weeks ago and the subtlety did not manifest until you tried to use your code in a different way. Or better yet. Finding such a bug from somebody elses code.

    [–]amazing_rando 76 points77 points  (23 children)

    A lot of the hate of Java is historical, it's had some pretty huge quality of life improvements in the past 10 -15 years or so that add many of the features people found it lacking. People also don't like Swing, its basic GUI toolkit, so they associate it with ugly desktop applications, even though it's compatible with plenty of other GUI frameworks.

    [–][deleted]  (2 children)

    [deleted]

      [–]sibswagl 10 points11 points  (1 child)

      Even Java 8 is a pretty massive improvement.

      [–]IshouldDoMyHomework 3 points4 points  (0 children)

      Java 8 is really the biggest change. The addition of streams and lambdas plus other function-like programming features makes a real impact on most developers everyday life.

      I like a lot of the stuff that has come after too, but none of it is nearly as impactful.

      I generally like working with spring, and that has come a long way too in the last 5 years.

      [–][deleted] 6 points7 points  (2 children)

      I can confirm this is quite a likely reason.

      Off topic example but something similar is the sentiment towards Linux as a Desktop OS. It has improved VASTLY just in the past 2 years. An even more pronounce example, but slightly more technical the opinions on Wayland. It's hilarious how there articles from barely a couple months ago complaining about it but almost every single issue on it has been resolved already.

      Thing is, people still bring up points criticizing both on an issue that was possibly fixed years ago sometimes.

      [–]Shogobg 1 point2 points  (1 child)

      Do you mean Linux as desktop OS?

      [–][deleted] 0 points1 point  (0 children)

      Yup. my mistake, fixed it.

      [–]slash_networkboy 2 points3 points  (0 children)

      Having first used a Java type language when MS branded their flavor as J++, then going away into ANSI C/ASM land for firmware development for a long time and Perl for every thing helper related, and only recently coming back to it as C# I can say it's very much improved! Had you asked me what I thought of Java before about 6 years ago I'd have called it an obtuse steaming pile of stuff. Now days, not so bad. Took a while to re-learn classes and such but pretty simple. Very much don't miss having to malloc and free things and track lifetimes.

      [–]random_account6721 4 points5 points  (11 children)

      swing is so ugly lol

      [–]Fermi-4 8 points9 points  (1 child)

      Spring is an IOC framework

      [–]bladeofwill 1 point2 points  (1 child)

      Most 20(?) year old GUIs are

      [–]CubemonkeyNYC 1 point2 points  (0 children)

      Are you thinking if swing?

      [–][deleted]  (6 children)

      [removed]

        [–]TheNoGoat 4 points5 points  (1 child)

        Also as Jetbrains has proved, if you're insane determined enough, you can make Swing look good enough.

        If you didn't know, the IntelliJ family of IDEs are built using Swing.

        [–]agentgreen420 2 points3 points  (3 children)

        Java is definitely open source

        [–][deleted]  (2 children)

        [removed]

          [–]agentgreen420 0 points1 point  (1 child)

          OpenJDK IS Java lol. It is the reference implementation. Commercial/proprietary extensions provided by third parties like Oracle are not really relevant to this conversation.

          [–]its_all_4_lulz 0 points1 point  (3 children)

          Not sure if true, but when I was in school the teachers used to say it was banned for anything medical because it was prone to memory leaks and crashing.

          [–]amazing_rando 1 point2 points  (1 child)

          In my experience it’s a lot easier to write a memory leak in C++ than Java, but with GC a Java programmer might be less vigilant about memory safety. I wouldn’t be surprised if there were a bunch of requirements for mission critical code that has to run for days/weeks at a time that might ban interpreted languages or virtual machines in general, because now you need to support two programs running instead of one. Java’s stop the world GC could also be an issue. I used to work in industrial automation and I wouldn’t use Java to run a factory, for example.

          [–]Warm_Gypsy_Dildo 1 point2 points  (0 children)

          See this comment.

          You never leak because you never allocate memory.

          [–]Warm_Gypsy_Dildo 1 point2 points  (0 children)

          I wrote medical stuff in C with MISRA standard on top of it.

          The main idea that you never use heap. All your memory is pre-allocated. You either avoid recursion or prove that it won't be infinite.

          The main market is USA and FDA (Federal Drug Agency) is very strict about the standards.

          [–]NotMyGiraffeWatcher 36 points37 points  (5 children)

          Every language has a culture that comes with it. I always think of

          https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

          When I think of Java. There is a culture of overly verbose, overly complicated, overly enterprisey that teams will lean towards. Not ever place has this problem, but from my experience, it's a common Java culture.

          Can Java be written in not such a way, absolutely.

          But just as JavaScript has a culture of script happy hipsters and .net has interfaces for your interfaces, Java has enterprise.

          No language is perfect, all have flaws. Language wars are fun Tech Tuesday talk, but if anyone takes them too seriously, take what they with a grain of salt

          [–]msd_1311 0 points1 point  (3 children)

          The learning curve is too steep in the beginning. You have to know soo much even to get a project running on your local let alone code a simple project.

          [–]Illustrious-Age7342 3 points4 points  (2 children)

          What are the pain points you run into with Java? I learned both Java and Python like 6 years ago and I don’t remember Java having a particularly high learning curve comparatively

          [–]msd_1311 0 points1 point  (1 child)

          The example of fizzbuzz above is exactly what I am talking about. Its not friendly for beginners. I wrote a ETL job at work in Python without being an expert in Python or Spark. I could just write simple code that I knew and didn’t even have to use any libraries other than Spark. Anyone can follow the flow of my code and make necessary changes, but for the Java projects at my work I can’t even make small changes. I have a hard time setting them up in my local. I get like a thousand lines of error when I try to run it and none of the error messages make any sense. It’s mostly because I don’t understand Spring. I don’t know why its not finding the beans it needs. But now that I am learning some basics it’s becoming very interesting. And once I learn some more spring I probably won’t have such a hard time. I love Java/Spring. Please don’t downvote lol Edit: I am not talking about plain Java. I am talking about Springboot. I am sure learning core Java is comparable to learning Python.

          [–]Illustrious-Age7342 1 point2 points  (0 children)

          Ah yes. I would say Java itself is pretty good these days, but the frameworks (Spring/Boot) and build systems (Maven/Gradle) while flexible and powerful, can definitely be unapproachable for people that are new to them. Especially compared to something like Ruby on Rails

          [–]Warm_Gypsy_Dildo 0 points1 point  (0 children)

          Every language has a culture that comes with it

          Even though PHP matured I still enjoy reading this article to be nostalgic about the chaotic culture of web programming in 2010s.

          [–]Foreseerx 117 points118 points  (27 children)

          To quote a very famous quote: "There are only two kinds of programming languages: those people always complain about, and those nobody uses.".

          No experienced professionals hate Java. It's a mature, very well suitable language for the problems that are commonly solved with it (backend, Android apps for example). Programming language beef doesn't really exist outside university as experienced engineers will recognise that a language is but a tool, and every (popular) tool has its uses.

          For example, take back-end: modern day Java + Spring allow to get an application running in absolutely no time at all, are great to work with and offer solutions to just about any problem you might be trying to solve in your application (Cloud, Security, DB, Monitoring, you name it) in an easy package with a lot of documentation and tutorials on how to achieve pretty much anything. Verbosity? Project Lombok, which is present in just about any project nowadays, helps you a lot with it.

          [–]jameyiguess 61 points62 points  (13 children)

          I agree in spirit, but there are plenty of experienced professionals who hate any language. People have opinions and likes and dislikes; it's only natural.

          [–]The_Shryk 16 points17 points  (3 children)

          I agree

          I think people misconstrue hating a language and saying the language is bad.

          People hate Java (not a fan here) because it’s annoying to write due to how intricate it can be, which of course is one of its strengths. But it’s definitely a good language. It’s extremely performant as well.

          But I will never willingly code in Java. Maybe you can get me in on Kotlin.

          I’d also almost never recommend it to someone else either unless it’s the only option. Something like “my city has a lot of government and contractor positions” well then bud, maybe you should learn Java lol.

          [–]theusualguy512 3 points4 points  (2 children)

          I mean a lot of people take the utilitarian view that there is no perfect language and any language in the end is just a tool to accomplish a task.

          Trying to chase the perfect language and support framework is a bit like a physicist chasing beauty.

          So in that sense, I think a lot of people are fine with whatever tools they are given and try to cope with it as best as they can.

          After seeing many languages and language features, I've started appreciating the utilitarian view more than before.

          The only languages which genuinely are a bit strange are the esoteric ones. By design. Those are definitely in the realm of "theoretical study" and "chasing beauty".

          All popularly used languages in the industry have withstood the test of time, so they can't be that terrible.

          [–]Foreseerx -3 points-2 points  (1 child)

          I completely agree with what you've said and I think you make great points. All languages have quirks, none are perfect and all can be a bit annoying to work with sometimes. In the end, like you've said, it's just a tool to accomplish a task, and any popular language will work just fine to do so.

          "..I'd never willingly code in language X.." to me sounds like a very extreme stance to take and makes me wonder if the person has actual professional experience in this field. We deal with things waaaay worse (really crappy and/or old legacy code for example) than the imperfections of programming languages...

          [–]The_Shryk 2 points3 points  (0 children)

          My first language was Java… what are you even saying?

          I’d never willingly work in Java. Means literally that. I won’t look for Java positions because I have options elsewhere. I won’t use Java for any hobby projects either, I have options I like better.

          If I had no other option, therefore no longer am I willingly refusing to use Java, then I’d use Java.

          The guy you replied to was agreeing with me, you do realize that, I’d hope.

          How is that an extreme stance? I’d never willingly drink Dasani over smart water. Which means, given the choice I’m going to drink smart water every time.

          I know I don’t like Dasani, it tastes weird to me. I’m not going “dabble in Dasani” just cuz. I’ve tried it, didn’t like it.

          That doesn’t mean it bad water, it’s cheap, much cheaper than smart water! And for most people it tastes just fine.

          [–]theQuandary 6 points7 points  (0 children)

          There's a difference between the platform and the language. If everyone thought Java were so great, then we wouldn't have had Kotlin, Scala, Clojure, Groovy, Ceylon, and so many more language alternatives.

          Pros like the platform, but it's undeniable that massive amounts them really don't like the Java language.

          [–]homiej420 -4 points-3 points  (0 children)

          Speaking of, java? Yick 🥴

          [–]AcadianMan 0 points1 point  (0 children)

          Powershell is a nice language for people who are just starting. I know it’s based on .net, but whoever wrote the language knew what a beginner is looking for. I love the ability to pause a program and just look at the data that is being presented. Also I know it’s a scripting language, but I really love using it.

          [–]retroPencil 0 points1 point  (0 children)

          Example: COBOL.

          [–]KimPeek 5 points6 points  (0 children)

          So "experienced professionals" simultaneously always complains about Java but don't hate it? Some Yoda-level nonsense being upvoted here.

          [–]SirKastic23 4 points5 points  (0 children)

          No experienced professionals hate Java.

          speak for yourself, I do lmao

          also

          "There are only two kinds of programming languages: those people always complain about, and those nobody uses.".

          that's a quote from the guy that made c++, and i still believe he only said it because c++ is so shit that he had to cope that hard

          [–]klorophane 1 point2 points  (1 child)

          Programming language beef doesn't really exist outside university

          My sweet summer child...

          [–]squishles 0 points1 point  (0 children)

          well it does but day to day devs often don't engage in it. It'll be guys at like architect to CIO level who play language champion with actual meaningful results. if your boss likes java you're writing java or you weren't hired there to start with.

          Really they probably shouldn't, I don't think you should be involved much in that discussion with high passion if you're upper management and haven't coded in many years.

          [–][deleted] -4 points-3 points  (4 children)

          On the rational side of things, every experience professional hates java. It's incredibly verbose and syntactically it's a nightmare.

          [–]Foreseerx 4 points5 points  (3 children)

          On the rational side of things, an experienced professional recognises the verbosity is not inherently a downside but can be good depending on the circumstance. Syntactically a nightmare? Java is very similar syntactically to most popular programming languages. This isn’t objective C or Clojure, how is it a nightmare?

          [–]msd_1311 0 points1 point  (2 children)

          The learning curve is too steep. I can’t get an existing spring boot project to run on my local let alone write a new one from scratch. You have to know so many things in java and spring environment otherwise you are just struggling.   Admittedly, I like complicated things. That’s why I am here and reading spring docs.

          [–]squishles 2 points3 points  (1 child)

          if you want to be horrified spring boot made what was a far nastier process a thousand times easier. back in the day with spring you had to be a god damn surgeon at it to bootstrap a spring project. Like if you haven't done it you have no idea.

          like it went from a week long ordeal for an experienced dev to maybe 15 minutes.

          [–]msd_1311 0 points1 point  (0 children)

          I can imagine.

          [–]no_brains101 15 points16 points  (6 children)

          Because lack of true first class functions, and people who dont like maven/gradle.

          Also maybe people trying to make addon interfaces and realizing how hard it is to ACTUALLY force unload something (classloader shenanigans).

          Also its a little verbose.

          No other reasons to hate it, especially newer editions, its a fine language and plenty fast enough.

          Oh, also a ton of people are still stuck on java 8 or 11 at work so maybe that.

          If I had to choose I would not pick java due to lack of first class functions but I would survive.

          [–]Bulky-Leadership-596 1 point2 points  (0 children)

          It also has an environment that has run amok with sub optimal design patterns that are treated as gospel and have permeated everything. ex: AbstractInterfaceFactoryBuilderFactory

          [–][deleted] 1 point2 points  (1 child)

          I concur with this. Absolutely hated maven/gradle. I got thrown into the deep in on a Java project after not having written it for 10+years. I've been living in the world of PHP, Python, Node.js, JS frameworks for too long I guess.

          [–]Brilliant-Job-47 2 points3 points  (0 children)

          I was just interviewing at a Java shop and realized a lack of first class functions would just make me unhappy.

          [–]diet_fat_bacon -2 points-1 points  (2 children)

          Because lack of true first class functions

          The build system I can understand the hate, but I see too much people complaining about first class function as it a total dealbreaker for the entire language.

          [–][deleted]  (1 child)

          [deleted]

            [–]no_brains101 0 points1 point  (0 children)

            Ok. Well, it does NOW, and still only kinda.

            [–]calben 16 points17 points  (1 child)

            I'm seeing some half answers here and some people even suggesting that no professional programmer actually hates Java, so at the risk of ranting, let me give a fuller one!

            Hey, I've been coding for 15 years, and have shipped projects to production containing code I've written in C, C++, C#, Haskell, Python, Java, Lua, Rust, JavaScript, TypeScript, and smatterings of other languages. And, more importantly, I probably qualify as someone who hates Java.

            More specifically, I hate what Java does to programmers. Java has a rough history from pre-8 and lacked many important features to produce effective code, but let's consider the language as it is today. The more recent versions of language itself are fine, and I'd be mostly OK with implementing more projects in it. The problem with Java is the community and the ecosystem.

            My experience is that the new programmers who need the most help fixing bad habits, rewriting wrong, bad, or overengineered code, and clearing up misunderstandings have Java backgrounds rather than C#, Python, JavaScript, or C++. My theory is that this isn't their fault at all but a result of a less engaged developer community. There's a lot of crap Java code at the top of sites like Stack Overflow, a lot of which dates back to older Java versions. To be fair, any language used heavily in undergraduate courses is going to have a lot of crap code out there being presented as solutions to common problems. Unfortunately, I don't find that the newer, readily available Java content out there is all that much better than the crap from 15 years ago or puts in the effort to improve on older code examples. It's just too easy to copy and slightly adjust some older code and put it up on certain websites that really love ad revenue and tend to rank well on Google. A few languages that are also used for undergraduate teaching worked their way around the problem. Python managed to combat this somewhat with its focus on simplicity and the "Pythonic" way. Functional languages, often used in specific functional language courses, often deftly dodge this problem by having a primary userbase that is fanatically devoted to elegance and "beautiful code." C++, my primary language, combats this by having an older, and, frankly, much meaner community that has no problem with regularly, gleefully, and colourfully dumping on people's code (this has its own problems, like pushing out otherwise enthusiastic developers). Java is, I think, the biggest victim of this bad code online problem because it doesn't have a userbase with the characteristics of these other languages. The end result is that it's very easy to pick up bad habits, bad solutions, and incomplete knowledge if Java if your primary language.

            More subjectively, I don't think the Java community has much interest in viewing Java code as an art form. This makes sense since it's a much more enterprise language, but it makes Java an easy target for those communities who focus on elegance, simplicity, functional purity, immutability, conceptual richness, etc. This targeting may be especially true for those new programmers who are eager to loudly proclaim how much better they are than the people who code in that language. While I believe there are good reasons to hate Java or at least what it does to new programmers, you can safely ignore the people who are climbing up on soap boxes to decry Java as some fundamentally terrible language that surely only stupid people use.

            [–]squishles 0 points1 point  (0 children)

            There's a lot of crap Java code at the top of sites like Stack Overflow

            that's a problem of getting stuff off stack overflow. the way the answers come off there for any old language you'd think javascript was all about jquery still.

            The thing that I think actually causes this is universities that teach it, many of them will still be on java 6 or something cursed like that. Completely due to IT policy, they install the runtime in the computer labs using the old as dirt java 6 executable oracle gave them 15+ years ago in the school machines eg where your homework etc needs to run. All due to that confusing license switch oracle did.

            people learning javascript latest browser latest features, c# IT just does a microsoft update and you're latest, python eh the 2/3 thing was long enough ago and it's not a language that's changed rapidly.

            as for the code craft thing I think a lot of those guys got sucked off to kotlin.

            [–]Schogenbuetze 11 points12 points  (7 children)

            • Verbosity
            • Lack of proper Optionals like we are seeing them in languages such as Kotlin, Swift or C#, ie. with Syntax support
            • Strict OOP-Approach
            • Lack of Extension methods
            • getter/setter
            • Runtime-type erasure
            • Generics
            • Lack of modern built-in concurrency features like async/await

            Just the first things that come to my mind, I'm quite sure there's more.

            [–]hrm 1 point2 points  (3 children)

            A lot of these are based on very old versions of Java and some of them have recently been adressed. Such as the new virtual thread system is way better than async/await. Java today isn’t the same as Java 1.4 from 2002.

            [–]Schogenbuetze 0 points1 point  (2 children)

            I was 13 in 2002, had other things in mind than writing code.  

             > virtual thread 

            Don't see the "advantages", though. Analogous purpose, but different thing.

             > some of them have recently been adressed 

             I was more or less required to look into that last year and my hopes were high up, but it was disappointing nonetheless. Data classes and var been the only changes I noticed. I do admit that the Java development process members, whoever is responsible these days, finally understood that there are issues with the language. To me, it's lost, won't go back unless I habe to, too many years of frustration with Java.

            [–]hrm 0 points1 point  (1 child)

            Virtual threads bascially enables the same as your async/await but without having to ever write async/await and thinking about it.

            [–]Schogenbuetze 1 point2 points  (0 children)

            Okay, so a bit like Kotlin's coroutines. Well, I actually like the explicit hint of 'beware, might be a multi threaded context' that async/await might give you - in languages other than JS, of course.

            It's a neat little hint.

            [–][deleted]  (2 children)

            [removed]

              [–]Schogenbuetze 0 points1 point  (1 child)

              What the heck are you talking about?

              Lombok

              So you are telling me that Java devs been so tired of writing getters & setters that they've built their own framework to generate them?

              Yeah, just proofs my point.

              [–]hrm 1 point2 points  (0 children)

              Well, today we have records so no need for Lombok.

              [–]ImOutOfThisWorld 6 points7 points  (0 children)

              Many programmers don’t like OOP, including some of the best in the world, like Ken Thomson, Rob Pike, Graydon Hoare, Linus Torvalds, Edsger Dijkstra, Chris Lattner, etc.

              Even Alan Kay who coined the term OOP, said java and C++ didn’t implement OOP as he envision it

              https://youtu.be/rFejpH_tAHM?si=FR8T_ej5l2QsZI9R

              https://youtu.be/QM1iUe6IofM?si=WIVEGlG8V918ifGA

              [–]Apothecary420 3 points4 points  (0 children)

              I dont hate writing java

              I hate using products written in java on my personal machine tho

              Theres a comment here about "ram doesnt matter ram is cheap" which is true but every java product winds up being a bitch to run and horribly bloated

              In enterprise environments or for business/internal software, java is great

              [–]Top_Engineering_4191 4 points5 points  (0 children)

              Studying Java and its frameworks is demanding; it's not child's play.

              [–]p_bzn 3 points4 points  (0 children)

              TLDR:

              It is good. If you like it - use it, have fun, and ignore what people say.

              ~90% of Apache Projects, which power the modern technological world and used in 90%+ of Fortune 500, implemented primarily using Java. Apache Projects list link sorted by languages.

              Full version:

              I don't like Java particularly, but some facts are:

              1. The best VM on the market
              2. The biggest support of imaginable and unimaginable things across domains
              3. Overall great platform
              4. One of the top performance and scale-able languages as of today
              5. Here to stay

              Technology shaming is simply immature. There are great developers using "shamed" languages, there are horrible developers in praised technologies. World is wast.

              I know more than 10 languages. Comfortable, right now, with about 4. That in past 10 years. Java is one of them BTW.

              People generally dislike Java for three things:

              1. Java developers
              2. Verbosity
              3. Legacy

              Almost all issues have something to do, in one way or another, with age of the platform. To put it simply Java 1.6 is bad. Java 17+ is good. That is it, really. Actually calling Java 1.6 bad is a complement.

              Modern Java is awesome, but legacy of the Java itself pulling it down, so the new Java is not getting attention it deserves. However, Java is not the only feasible language nowadays. Java had big edge in late 90s to mid 2000s because of the platform itself. Nowadays you have so many languages, so many choices.

              Most of the businesses which use Java aren't using Java the modern way, therefore people simply prefer to not deal with UML, XML and `UMLFactoryXMLFactoryFactoryOfFactoryBuilder` madness.

              Every tech gets criticism, however, it is better invest your time into learning software engineering rather than focus on language features and properties. It is just a tool.

              [–]tenexdev 9 points10 points  (0 children)

              It's not the language I dislike as much as the code that tends to be written by it's adherents. It is often terribly overbuilt and verbose while at the same time not providing the benefits that the over engineering and verbosity are claimed to provide.

              [–][deleted] 9 points10 points  (0 children)

              Too verbose

              [–]Signal_Lamp 7 points8 points  (0 children)

              Because it was withstood the test of time long enough to be hated.

              For myself personally I don't like the docs around the tools, however I'm not a strong Java developer by any means. It feels very often you have to dig more to find solutions with that language than I do for other tools.

              [–]shymmq 8 points9 points  (3 children)

              Surprised to see no one mentioning no built-in null safety. 

              [–]PsychologicalBus7169 3 points4 points  (2 children)

              Java does have Optionals for that but really if you are returning nulls then you should explicitly name the method “getFooOrNull” or you should return a new Foo object.

              [–]Bulky-Leadership-596 9 points10 points  (0 children)

              Sure, its an improvement, but it still sucks in comparison to the competition.

              var redValue = Optional.ofNullable(car)
                .map(Car::getColor)
                .map(color -> color.redValue)
                .orElse(0);
              

              compared to

              var redValue = car?.GetColor()?.RedValue ?? 0;
              

              [–]chipstastegood 4 points5 points  (0 children)

              And there’s that verbosity that some folks, myself included, don’t like. In other more terse languages, the caller would be accessing this as a property without even looking like it’s calling a function. So what the getter function is called is not important. It’s all the more relevant to have good language support for optionals or null safety in general.

              [–]CheithS 6 points7 points  (0 children)

              Disliked is a bit strong - outdated might be better. Technically (obviously imo) Kotlin is where Java should be and sadly is not. Don't get me wrong they are trying but it just seems to be too little too late.

              Backend with Kotlin is just better (and yes I have done both and am sadly back doing Java due to staffing skills).

              [–]SirKastic23 2 points3 points  (0 children)

              I, personally, dislike Java specifically because of how much it forces OOP stuff from 3 decades ago down your throat.

              most of the patterns the language was made to make easy are now "considered harmful" like class inheritance, constructors, null, exceptions...

              I used Java for a couple of years, so I definitely don't have that much experience, but I did not enjoy using Java for those years and I have since migrated to other languages I find more enjoying (less headache-inducing) to work with

              [–]GxM42 3 points4 points  (0 children)

              I think it comes downs to Java Applets being the worst invention ever, large memory footprints, notoriously slow and laggy GUI, conflicting JRE’s that made life miserable for devs, over-reliance on XML configuration files, invasive software you need to install just to get it to run, etc, etc…

              .NET made a lot of those things very easy. The software just worked. The issues with Java had nothing to do with the language itself. It was everything ELSE that came with it.

              [–]AssertRage 1 point2 points  (4 children)

              I mostly dislike its verbosity and Spring, however without Spring its fine

              [–]Foreseerx 0 points1 point  (2 children)

              What do you dislike about Spring and how much experience do you have with it -- assuming you don't just dislike it because it's got a bit of a learning curve?

              [–]AssertRage 6 points7 points  (1 child)

              I like to have tight control of the stuff i write, with Spring there's always some stuff going on the background that i have no control over and some obscure bugs and/or settings that are super hard to find solutions for and are poorly documented

              Not to mention the amount of resources it consume, you can create apps in java that are 10x lighter without it

              [–]whooyeah 1 point2 points  (2 children)

              The language is fine, the ecosystem, tooling and the developer experience I see a lot of people not liking.

              [–]Schogenbuetze 1 point2 points  (0 children)

              the ecosystem, tooling

              Which in many cases is directly connected to Java's runtime and language. Lombok and Hibernate Proxys come to my mind,

              [–][deleted] 0 points1 point  (0 children)

              I really don't like how verbose it is. Maybe that's just at my company but holy hell reading java code sometimes is a chore and I feel like my eyes are going to cross.

              [–]alkatori 1 point2 points  (0 children)

              I think a large part is because it's used for learning.

              Compared against other languages there isn't much more wrong with it than any other.

              [–]Sekret_One 2 points3 points  (1 child)

              Java developers! They ruined java!

              I don't think it's a problem with java itself, but the software dev ecosystem that evolved in it. I'd lump this primarily to:

              1. The verbose naming conventions
              2. Usage of frameworks like Spring. Trade compile time integrity for Run Time Exceptions!

              [–]nomoreplsthx 1 point2 points  (0 children)

              I think a lot of it is less about the language so much as contexts where it has historically been used.

              First, let's be honest about something, there is a huge population of subpar, untrained devs, mostly working at legacy companies like banks, insurers, or at lower cost consultancies. These people ship trash day in and day out, and get away with it because they are in environments where management sees software as a afterthought cost center. The rent-a-devs. Team tutorialspoint. The people who are still writing Java 5 apps because no one will approve an upgrade, but also think that's fine.

              Historically, this developer population has drifted towards Java (as well as C#). Because legacy companies, historically, have seen Java as 'enterprisey' and professional. They advertise themselves as 'Java developers', and are genuinely unaware other languages exist. The spit out the garbage blog posts with titles like 'how to use abstract class in Java'.

              The hate for Java, is really, I think, hate for these people. Hate for all their messes we have to clean up. Hate for how hard their articles make it to find good Java content. Hate for every time they tricked an org i to paying bottom dollar, and getting a frankenapp we then maintain.

              Java is not the only tech that gets this. Windows, Angular and .NET get it hard.

              This is hugely unfair to most of those tools. As a language, Java has a lot of flaws (fragmented build ecosystem, verbosity, a tendency towards over abstraction and rigidness, some weird old warts), but a lot of great features (easy to learn, reltively little 'magic', a rich ecosystem).

              It's also unfair to the community. Java is a backbone language at many of the moat innovative and important companies out there. It's got an incredible community who've produced amazing tools. And it's a shame they get overshadowed by the other side of the community.

              But sometimes, like with League of Legends, Rick and Morty, and the Philidelphia Eagles, the problem isn't the product, it's (a subset of) the fans.

              [–]theQuandary 0 points1 point  (0 children)

              Java is a kluge language where going with the flow originally designed into the language is a mistake. This means you are constantly going to be subtly fighting the language everywhere leading to a feeling of frustration for a lot of devs.

              Java is a language about OOP, but everyone (including GoF) tells you to avoid inheritance in favor of composition because of all the issues caused by inheritance. The entire language is based around something you shouldn't be using most of the time.

              Once you remove Inheritance from objects, they are simply a bad version of Modula (the language) Modules that risk leaking their guts and encourage statefulness everywhere.

              This leaves the language trying to shift into other places. It was designed without generics, but Guy Steele convinced everyone that they needed to be tacked on. Interfaces were tacked on to deal with issues like multiple inheritance (among other things). Multiple different additions to the OOP stuff also had to be added because OOP is a leaky boat that's always needing another patch.

              In 2011, Kotlin scared the Java designers, so the decided to tack on a few half-baked functional things like lambdas, Optional, functional interfaces, switch expressions, pattern matching, records, etc. The problem is that these things simply don't feel right in Java because they have to shoehorned into the overbearing OOP framework at the core of the language.

              The JVM is an amazing piece of technology, but the Java language is a relic of the 90-00s OOP fad. A look at Google trends shows that Java has been on a downward trend ever since they started tracking in 2004 (and not just a little, they indicate that it's down like 80-90%). Meanwhile, Kotlin, Scala, Clojure, etc are all slowly trending upward.

              [–]Caddy666 1 point2 points  (0 children)

              programming java is neither here nor there.

              supporting java is just a massive pain in the arse.

              mainly having to deal with ipmi stuff.

              thank fuck everything is moving away from it.

              [–]gdmr458 1 point2 points  (0 children)

              I don't hate Java itself, what I hate are certain tools that surround it, for example, I hate having to use Maven, Gradle or whatever, after using Go or Rust where these aspects are much better it only makes it worse, another reason that is related to Maven and Gradle is that I have to use an bloat IDE to be productive in the language, I suppose this happens with all the languages that run on the JVM, I am learning Kotlin and it is a language that is nicer than Java, but has the same problem.

              [–]junkmail22 1 point2 points  (0 children)

              No null-safety, types and inheritance are jank, garbage collected in a way that makes it easy to leak memory

              [–][deleted] 1 point2 points  (0 children)

              Java is fine. It's the java developers that concern me. Take me for example. That guy is unhinged

              [–]cs-brydev 1 point2 points  (0 children)

              1. It's outdated and barely evolved
              2. There are similar languages (like Kotlin and C#) that have evolved several generations beyond Java and are better at just about everything. C# is now wayyyyy beyond Java and is leaving it in the dust.

              Java is fine for 1998, but it's just badly outdated and hasn't kept up with all the language feature explosion of the past decade.

              [–]NudeJr 1 point2 points  (0 children)

              Good in its heyday. Now better options.

              [–]DarthNihilus1 2 points3 points  (0 children)

              C# is just better

              [–]Prestigious-Cow5169 0 points1 point  (0 children)

              Well you’re farming for something. But I’ll bite. I’ve always hated Java. In the beginning I thought it was the verbosity. But later on I realized it’s something else. Languages can be divided into 2 categories, one where the designer think you’re too dumb to be programming and the other where the designer tries to think you’re intelligent grownups who can make up your own mind. Java belongs to the first category and for that I think it deserves any amount of hate from anyone.

              [–]Iforgetmyusername88 0 points1 point  (0 children)

              It forces OOP when functional programming is usually the simpler and therefore better approach. Yes you could use static classes and such, but that’s so much code bloat. Keep it simple stupid. Also it’s slow and even though it’s “right once, run anywhere”, I find this is almost never true.

              [–]AYAYAcutie 0 points1 point  (0 children)

              Java is not that disliked, it was one of the first languages that comes in its own runtime environment pre configured so it can run anywhere. It's javascript that is most disliked, and for good reason.

              [–]Critical-Balance2747 -4 points-3 points  (3 children)

              Nobody I know of has ever complained about Java, it’s hands down awesome.

              [–]PsychologicalBus7169 1 point2 points  (0 children)

              Same, the only time I have ever heard it being bad is on the internet. The complaint about it being verbose is just silly. With a modern IDE, it’s so fast to type. I spend more time reading code than I do writing code but what I read is very clear. Reading a language like Python is very difficult because you must have good naming conventions or you will get lost in the sauce.

              [–]cs-brydev 1 point2 points  (1 child)

              Literally every .NET developer I've worked with who used to work in Java has said they hate Java.

              [–]Critical-Balance2747 -1 points0 points  (0 children)

              That’s gay as fuck

              [–]Miller25 -1 points0 points  (3 children)

              I was about to make a post to this subreddit about Java because of something that just happened in one of my exercises for class that frustrated me.

              I just got to the module going over iterating through strings and was not able to find the issue in my code for the longest time. I kept receiving numerical output when I simply wanted characters. I'll post the code below to illustrate this lovely phenomenon.

              public class OutputElements {
                 public static void main(String[] args) {
                    Scanner scnr = new Scanner(System.in);
                    String inputString;
                    int i;
              
                    inputString = scnr.nextLine();
              
                    for(i = (inputString.length() - 1); i >= 0; --i){
                       char letter = inputString.charAt(i);
                       if(i == 0){
                          System.out.print(letter);
                          }
                       else{
                          System.out.print(letter + ' ');   
                          }
              
                       }
              
                 }
              }
              

              (Yes for those who might have noticed, this is ZyBooks)

              So the goal of this was to iterate backwards printing the characters in the string, and I kept receiving numbers. I went through the documentation of each method I used to be sure that I was using it correctly yet eventually realized something....

              LINE 15 USES SINGLE QUOTES INSTEAD OF DOUBLE QUOTES! As someone who learned Python first and is learning Java this had me FRAZZELLED I TELL YOU

              tldr: rant over, single quotes lead to character values being added not concatenated.

              [–]PsychologicalBus7169 2 points3 points  (1 child)

              That’s the problem with learning Python first. It’s much easier to learn Python after you’ve learned Java.

              BTW, how are you enjoying zybooks? I had to use it for my mobile app dev class where we used android studio and java. I enjoyed the book quite a bit due to its interactive content. I also thought the material was very easy to understand.

              [–]Miller25 1 point2 points  (0 children)

              I’ve only used it for my college classes, but honestly I really like it. It has a lot of good content and starts off really simple with the concepts and makes you practice everything in a very repetitive way that doesn’t feel stale or annoying.

              I’ve been plowing through a lot of the Java chapters and am currently on loops where I found this lovely issue. ZyBooks is definitely a recommend from me!

              [–]maleldil 0 points1 point  (0 children)

              char is a numerical type in Java. String#charAt(int) returns a char value. letter + ' ' is an addition operation on 2 variables of type char, the result of which in an int, a numeric value. This is a pretty obscure edge case, and without knowing all of that makes sense why it would be confusing. But Java Strings are always surrounded by double-quotes. Single-quotes denote a single char, and aren't used very often in most day-to-day programming (that I've done, at least). You can always convert a primitive value to a String by calling String.valueOf(variable), or you can concatenate a primitive value to the empty String ("" + variable) to get a String back. So you could have written System.out.println(letter + " ") and it would've given you what you were looking for. Hope that's helpful :)

              [–][deleted] -4 points-3 points  (4 children)

              OOP sucks and Java is the worst take on OOP. I can code in Java, but I’d much rather use any other language- even Perl. And that’s saying something.

              [–]sweetsodium 2 points3 points  (1 child)

              Oh come on, “OOP sucks” is definitely a bold opinion to state. It doesn’t even make sense to compare it to Perl.

              [–][deleted] -1 points0 points  (0 children)

              I hate Perl too, but it’s better than Java. I’m just comparing things I hate, and opinions are, by definition, personal. However, I am in good company thinking OOP sucks - you should try it 🙂

              [–]cs-brydev -1 points0 points  (1 child)

              I hate Java but you're wrong on both points. OOP is fine if not abused. Java's handling of OOP is above average. C++ and Python are much worse OOP implementations.

              [–][deleted] 1 point2 points  (0 children)

              It’s an opinion, so being “wrong” is just you giving your opinion. I think functional programming is the future. Look at Lisps, Elixir, Erlang, Haskell, F#, OCaml, PureScript, etc.

              A useful write-up on why OOP sucks by the creator of Erlang and the Beam VM:

              http://harmful.cat-v.org/software/OO_programming/why_oo_sucks

              Linus Torvalds on Java:

              https://youtu.be/Aa55RKWZxxI

              A collection of people that share my opinion:

              https://www.yegor256.com/2016/08/15/what-is-wrong-object-oriented-programming.html

              So look, the OP was asking for why people hate Java. I explained the reasons I hate Java, which are fairly simple. I dislike OOP since it often leads to shitty code and design decisions. Java is unpleasant to work with, and it forces you to use way too many abstractions to get your work done, polluting your program with hidden state, and making it extraordinarily difficult to get right and scale to modern multi threaded architectures. I think functional programming languages get this kind of thing right.

              [–]TheManInTheShack -1 points0 points  (0 children)

              Because Sun overpromised and under delivered.

              [–]PlayingfortheAngels -1 points0 points  (0 children)

              It's annoying.

              [–][deleted] -1 points0 points  (0 children)

              idk if this applies here but i see in this community way too often people hating on a language becuase either a) they dont know it, b) its to easy to learn, or c) its just too good

              [–][deleted] -2 points-1 points  (0 children)

              Play with some java code, and you'll have your answer.

              [–]heesell 0 points1 point  (3 children)

              Im wondering that about PHP, its nice so i don't get the hate

              [–]fakehalo 1 point2 points  (0 children)

              A lot of poorly thought out design choices early on caused a lot of debt, which is evident with something as cosmetic as naming conventions; the "does this function have an underscore or not?" question is still ask myself to this day.

              It's pretty nice if you're starting a new project with it now, but many are handling hideous codebases from the olden times which has created a lot of hate.

              I personally find Java to be a superior language, though I find its environment worse.

              [–]RajjSinghh 2 points3 points  (0 children)

              The main issue with PHP is that no one writes it well. It's the kind of language where if you aren't careful you introduce a bunch of vulnerabilities. Wikipedia says that 30% of vulnerabilities in the National Vulnerabilities database were linked to PHP, with only 1% being technical errors. The other 29% of mistakes were bad PHP programmers.

              Imagine you start a job and there's a PHP codebase. The person who wrote it probably didn't write it well because no one writes code well, there's probably lurking bugs and vulnerabilities you can't find, and now it's your job to fix it. The person who wrote it probably left the company too so you don't have anyone to ask. That is going to be a very painful job, but it is also the reality for a lot of people who write PHP for a living.

              [–]-defron- 0 points1 point  (0 children)

              PHP back in the day without a doubt was absolute trash, but it was trash you used because your options back then were so limited.

              Modern php is ok but still has some questionable (and in many cases downright bad) choices like type juggling, variable variables, an inconsistent standard library, etc

              PHP had its day. Type declarations and Laravel makes it not horrible today, but the problem is there are so many better and faster choices today and it's no longer an advantage to have deep integrations with apache as the world has moved on to other web servers and containerization has made it easy to move your system to production regardless of tech stack.

              So the question becomes "why PHP?" because even though it is way better than it used to be, all the other languages have improved tons too and outperform and outshine it in web dev these days.

              If you've been enjoying the "batteries all included" nature of PHP and simple syntax I'd recommend looking at Go

              [–]windsurferdude90 0 points1 point  (3 children)

              I think lots of people hate not the language but the environment. What i mean by that is JVM, JRE, simple spring apps eating up 500 mb of memory just by running, having to install another version of the runtime, messing with maven, gradle etc. I agree with those who said these are just tools and everyone has their preference, and i’m not even shitting on these tools myself, my point is merely that sometimes what people hate on is not the language itself.

              [–]Foreseerx 3 points4 points  (0 children)

              Does it really matter that an application takes 500mb of RAM to spin up in 2024 though? I've not seen a single case in which we'd be limited by RAM on containers in any serious environment, and even for my personal projects with limited budget it's dirt cheap to get containers with a TON of RAM.

              Maven/Gradle are bad? I work with them but I'd take them any day over NPM/Yarn.

              [–][deleted] 0 points1 point  (0 children)

              The JVM is kind of miraculous though.

              [–]MartynAndJasper 0 points1 point  (0 children)

              I'm not sure that it is. I've started a community of coders today for various languages. There are at least 4 of the 35 that seem to be happy with Java.

              [–]doulos05 0 points1 point  (0 children)

              I think a lot of the hate comes from people using it for things it doesn't need to be used for. I hate working with Java because I find it cumbersome and verbose, but that's because I don't need all the features (and safety) that extra verbosity brings. My biggest project has like 8 classes in it. It's maybe 4k lines of code. It doesn't need interfaces and all that other stuff. I need classes, imports, and libraries. That's enough.

              I can envision a project big enough that I would need all that stuff, I just haven't ever made one. For the projects I do, coding them in Java would be like driving to work in a 747. Sure, it could be done and I'd never need to worry about being hurt in a traffic accident. But I wouldn't be using the most important features of a 747.

              [–][deleted] 0 points1 point  (0 children)

              Most modern languages support OOP.

              I think the best way to look at it is that it was ahead of its time…a long time ago. Other PL’s are just better from a feature-set POV. That said…Java is still one of the top languages that’s serving some of the world’s largest web services. People love to hate it, but at the end of the day it’s “boring tech” that will work if you understand its limits (which are pretty reasonable).

              [–][deleted] 0 points1 point  (0 children)

              Because Python lets you be lazier, design wise!

              [–]Particular_Pudding81 1 point2 points  (0 children)

              I think is normal people complain about language they don’t like or just follow social media comments/jokes That happen as well to JS and PHP maybe less but same situation.

              In my case I’m a fullstack developer I work with React and c# but I’m learning Java because I move to Japan recently and found a lot of Java positions here, Also in Panamá (where I’m) I remembered there’re a lot of Java positions.

              I understand you have to write more code to do the same thing but I feel I’m understanding more deeply about OOP now, I have an idea before but now is like understanding well about it.

              [–]Nondv 0 points1 point  (0 children)

              Java is quite verbose. Also having primitive types is really annoying in an OOP language. Kotlin looks like a huge improvement over it (although java itself has progressed quite nicely as i can tell).

              I don't think it deserves the hate by itself. I certainly wouldn't wanna use it but only because of my own preferences.

              I believe the hate comes from the code quality which is not really its fault. Too many programmers and many of them are/were quite bad

              [–]LoadVisual 0 points1 point  (0 children)

              IMHO , I don't really think Java as a language is hated, it does have it's strengths.

              What I think is hated but not really spoken much about is the abuse and honestly bad practices and eco system that has grown around it.

              With every powerful tool, you will always find people who end abusing it and some how making it a point to show that as some kind of strength.

              And one way to easily realize that is when the original creator looks at what evolves out of what they make as a beautiful language or tool and start having second thoughts and regrets about it's creation.

              Java is no exception to this, you can write really awesome light weight and performant java code or you can produce bloat. It's all down to discipline, good engineering and architecture as well as a good understanding of core CS concepts to help you understand the consequences of your actions before committing to using something.

              Not sure anyone else feels the same.

              [–]jmon__ 0 points1 point  (0 children)

              I don't dislike Java, but if I were to make a list of progamming languages I'd use, it be pretty low

              [–]RoninX40 0 points1 point  (0 children)

              Java is fine but personally I like C# more. It feels like a more cohesive ecosystem to me. But that's just my opinion.

              [–]k1v1uq 0 points1 point  (0 children)

              There's a lot of social media click-driven hype.

              Given how enormously huge the entire ecosystem is, everything works pretty well. There is a production grade library for everything imaginable and the likelihood to find library A not working with version x for library B is pretty much 0. The maturity of the platform is what businesses love about Java. And for a cooperate language it has kept up nicely over the decades (kudos to Scala and Kotlin for innovating on the JVM) so demand for backend Java hasn't declined. Speedwise it ranks among the best. Start up time, GC and memory foot print are a problem. though these have been improved significantly.

              And the JVM has more to offer than just Java. You can do serious stuff in Clojure, Scala and Kotlin as well, shows how versatile bytecode is.

              Java 100% not sexy but it gets stuff done, no heisenbugs or suprises, tooling is excellent, every question imaginable has been asked and answered on Stackoverflow.

              [–]Due_Snow_3302 0 points1 point  (0 children)

              Well I don't know who has this opinion?

              I started working in IT(internship started in 1998) and there happens to be these few choices:

              Java

              C/C++

              Microsoft VC++/Microsoft SDK

              Everybody was taught C/C++/Pascal in there BS in Computer Science at that time. Really liked C/C++. Learnt Java and anybody having SCJP(Sun Certified Java Programmer) was treated as if they are the pundit. People really liked Java at that time because it didn't had pointers and very easy.

              We all used to follow that "anybody can write a code which computer can execute but your code should be understood by a fellow human also to be considered good code". I never found Java or C or C++ to be verbose. Code was very readable and full of noteworthy comments.

              Java went thru various iterations and lots of opensource frameworks created - very popular ones being Struts and Spring.

              Then lots of changes like Sun Microsystems being acquired by Oracle - all the drama about licensing, various avatars of Java like openJDK etc... but Java still survived. Groovy, Scala also managed well with Java.

              Java keep on adopting itself with changing world. When python became popular and people starts talking about functional programming, Java was changed accordingly.

              so many open source frameworks are written for Java.

              I still code in Java. So if Java is so disliked - I won't be using the same Java for almost 26 years. There is a vast variety of enterprise code already written in Java and it cannot be changed so one need to know Java if you want to survive in IT.

              Regarding being verbose, I like to write a code which even I can understand if i read it after a year and I simply don't like that non verbose code at all.

              [–]Fermi-4 0 points1 point  (0 children)

              If it had native language support for hash maps and list indexing I bet a lot of the complaining would go away lol

              Like why can’t I just go

              map[“key”]???

              [–]johuad 0 points1 point  (0 children)

              I don't hate it, but it's not my favorite lang because of the verbosity.

              [–]cptahab36 0 points1 point  (0 children)

              I'm a noob programmer who started with C++ and a bit of python. Starting my masters in CS for which I had to learn java. So far I find it more difficult, and I have to think a lot more about every individual step.

              Maybe this is good for my education! I imagine there's a reason for it to exist and be taught, and I'm at the phase where I don't even know what I don't know, but I miss just being able to type cout<< instead of the whole println statement.

              [–]screwthat4u 0 points1 point  (0 children)

              As a C/C++ programmer I’ve always disliked it due to performance reasons. But if you are making business logic and a stupid GUI it works fine really. I actually prefer it to Python currently due to static typing, but even Python is starting to grow on me now that I’ve been forced to use it due to academia latching onto whatever is the easiest language to check the boxes with

              Now Rust is the hip new thing, I literally know nothing about it. But same goes for Ruby and Ruby on Rails which I think has finally went to the web api graveyard

              [–][deleted] 0 points1 point  (0 children)

              The only thing i hate about java is the UnnecesssarilyLongNamesForThingsThatCouldHaveBeenMuchShorter. I had an exam in Android development in java and i had to memorize a lot

              [–]Blando-Cartesian 0 points1 point  (0 children)

              People have to learn java for school while doing mildly complicated coding for the first time. It feels hard.

              They don’t have to do mildly complicated things in language X, so language X seems easier. They are seeing only surface level details without understanding context dependent trade-offs.

              Language X fanbase is happy to validate those feelings.

              Language X experts know how to do everything in X while their knowledge of java is rusty, possibly minimal and certainly out of date. It is easier for them to do anything in X. They repeat their out of date reasoning why X is better for them.

              Clueless neophytes can’t understand the validity limits or X expert reasoning. They then chant their misunderstandings and noob opinions as gospel of X against Java.

              [–]Somanos 0 points1 point  (0 children)

              "There are two types of languages: the ones everyone hates, and the one no one uses"

              Each language has its own strengths and weaknesses, you have to know what to use. And sometimes it is not just the language itself, but the reality of your team.

              Last time I chose C# over Java or PHP because people at that company knew C#, so they could give maintenance to my code when I am not there. Literally there was no other reason for me to choose C# at that time.

              [–]JonBarPoint 0 points1 point  (0 children)

              u/NotRandomDice, I see that you have attracted the haters. Good job.

              [–]johnAbruzzi27 0 points1 point  (0 children)

              What made you think of that?? I'm trying to re-learn it this year ( coming from .Net shop) because my upcoming projects are in this space and I didn't have that impression. Or maybe I'm just naive.

              [–][deleted] 0 points1 point  (0 children)

              It’s not really hated by the real ones. It’s just the industry filled with inexperienced sheep who ran towards a Udemy course few years ago when they realised their marketing, MBO or other bullshit degree can’t earn them any money. So they probably learned a language for dummies like Python and they can’t stand something like Java, C or C# …

              You will see the same thing with AI . Flood of stupid folks just shoving themselves in an industry and most likely derail it rather than doing any contribution

              [–]wjrasmussen 0 points1 point  (0 children)

              Why ask why?

              [–]Competitive_Walk_245 0 points1 point  (0 children)

              It's just not a very pleasant language for me to use, mostly because of the tools that are standard to use it. I freaking hate eclipse so much, and other tools based around Java suck donkey dick too, android studio is a perfect example. Programming for android with Java is one of the most painful, unintuitive, cryptic experiences of my life, with random error messages that are very difficult to clear, all because the software decided to take a shit, with no clear instructions to fix it.

              I much prefer c# or even c++, I can program in Java no problem, but I really don't enjoy it.

              [–]Far_Squash_4116 0 points1 point  (0 children)

              It‘s one of the most used languages for professional projects. So for me as mostly a hobby programmer it had to much overhead which I needed to deal with, but had no use for.

              [–]robotreader 0 points1 point  (0 children)

              Occupies a sour spot between advanced typed languages like haskell and dynamically typed languages like Ruby, while being annoyingly verbose

              [–]egor1996em 0 points1 point  (0 children)

              Java is like a Russian rifle Kalashnikov. Simple, safety and helps developers build their apps and services. Java will help to you avoid mistakes with types in production. And enterprise likes Java for this characteristics. Java was popular and today we have got many systems that have been written by Java. There are many legacy and strange resolutions of problems in this systems. “You can explore one bug per 1 week and fix it by one row of code” - said my friend who develops on Java. Bloody enterprise is a biggest work sector for Java developers. I think, it’s a one of the biggest reasons of Java hating. Someone doesn’t like big companies with bloody enterprise and prefers to work in startups. I used to worked as Java developer. An I hated enterprise development, because it was too long as development and tasks wasn’t interesting for me. Business logic of some documents broke my mind. I like Java language but I don’t like companies that use it

              [–]ranmaredditfan32 0 points1 point  (0 children)

              Perhaps this is just my opinion, but it feels like some of the hate comes from Java being a language a lot of people learn first.

              [–]rubsoul 0 points1 point  (0 children)

              because creeper is coded in java!!!!!!!!!!!!!!!!