1. 8

  2. 12

    you might think that Java was in fact in a period of great decline

    I wonder what drives that perception 🤔

    This article is a little weird to me. I don’t know a single person excited to be working in Java because it means Java 7 or Java 8. They are excited for the general JVM ecosystem, usually in Kotlin or Scala.

    I think you’ll see that Java is going to remain in the top three of loved languages

    Weird outtro when it was 53% dreaded in the last StackOverflow survey.

    1. 3

      I actually know a couple of people that are pretty excited about working in Java 11 (with prospects of moving to Java 17), who moved to Java away from Scala. Their take is that Java has a fairly rich ecosystem and well understood tooling and upgrade paths, while Scala doesn’t seem to have a good direction.

      1. 7

        Their take is that Java has a fairly rich ecosystem and well understood tooling and upgrade paths

        You kind of echo my point here, the JVM ecosystem is rich, but Java the language isn’t the desirable part in my experiences.

      2. 1

        I don’t know if excited is simply the wrong word. I inherited 2 Spring codebases last year and brought them from Java 8 to Java 11, and soon to Java 17 - it’s been fun, but then again working with Spring was kinda new to me and I can see how this could get stale again at some point. I’ve never been excited for the JVM ecosystem per se (but I do like Clojure, so don’t read this as “it’s all just boring tech”).

        But I guess this piece was trying to give a specific vibe which does not fit. Enterprise languages (as in: not only used by hip startups) are usually not chosen because the developers love them but because it makes sense.

      3. 7

        I have a bet with my former cofounder that if I ever end up writing Java in production, I owe him half my salary for that year.

        Certainly great things have been made with Java, and it powers a lot of the industry. But I could never come to peace with a language that relies so heavily on giant clunky IDEs, obtuse frameworks, and complex verbose relationships between files. We were made to use it as our main language at university, and I’ll never forgive them for that.

        1. 4

          I am the other way. I did not have any affinity to Java, but had to pick it up to write an Android app. Then I figured, that I need to reduce cognitive overload, and picked Java for the backend (originally thinking Erlang, actually).

          Having one interface definition of rest calls (without in-between IDLs) between backend and the Android app – is really helpful and easy to grock.

          Realizing that Android’s Java lags behind ‘standard java’ in capabilities, I created a ‘lowest common denominator’ library where I put Java functions that are shared between backend and UI. Using gradle I made it available to both the Android app and the backend.

          That let me use modern java features through the backend, and still allowed sharing code between backend and UI -without resorting to ‘in-between’ technologies.

          This was before Kotlin.

          Then Kotlin came along, but I felt for my business needs — this does not make sense to migrate 50-60K lines to Kotlin, Java was fine. Spending time on building functionality was more important and IntelliJ IDE allowed for code extensive code refactoring without later on finding basic typo/interface errors in testing or in prod. Yes, java is verbose for ‘fluent APis’ like in RxJava (which I also use extensively), but I also prefer (for maintainability) declaring parameter types for lambdas, explicitly writing a return statement and so on (even there are shortcuts).

          I am still struggling with Web client I built (javascript client with Flow annotations). Much more difficult to refactor compared to java-based parts of the system.

          I do not appreciate type-less languages for anything but prototypes, or 1-2 people projects were maintainability by other people (not the initial developers) is not important.

          Besides javascript + CSS, another area where I ran into ‘what the hell did I do here a couple of years ago’ – is Ansible.

          Great tool built on top of incomprehensible, un-documentable, un-IDE-friendly, barely debuggable, typeless mix of YAML and Jinja templates. Dhall is the right approach in the area of declarative-first configuration languages.

        2. 6

          They talk about Java language development without even once mentioning their most prominent competitor - C#.