What are your opinions on the future of back-end web development? Is the Java ecosystem going to wither away as more modern and better solutions are emerging and maturing?

If so, which language/framework and/or programming paradigm do you think will become the new dominant player and how soon?

Personally I would love to see Rust becoming a new standard, it’s a pleasure to write and has a rapidly growing ecosystem, I don’t think it’s far away from overtaking Java. The biggest hurdle imo is big corporations taking a pretty big risk by choosing a relatively new language that’s harder to learn compared to what has been the standard for decades.

Playing it safe means you minimize surprises and have a very large amount of people that are already experts in the language.

Taking the risk will definitely improve a lot of things given that you find enough people that know or are willing to learn Rust, but it also means that you’re trading off Java flaws with Rust flaws. That’s the case however with every big change, and Java flaws are a good enough reason to make a big change.

  • keef@programming.dev
    link
    fedilink
    arrow-up
    6
    ·
    1 year ago

    I’m surprised no one has mentioned golang. We have the usual dichotomy of java and rust but there’s a very very good option for those who are worried about rust adoption.

    I vastly prefer writing rust code but go on its own gets you very very similar performance at the cost of developer experience. I think sum types are the #1 requested feature so once that comes I’ll be a much happier boy.

    • ursakhiin@beehaw.org
      link
      fedilink
      arrow-up
      5
      ·
      1 year ago

      I think Golang had the potential to take over just because it’s so easy to pick up and start contributing.

      My last position was Golang focused and our hiring was never focused on experience with the language because we knew that if you understood programming concepts you would succeed in Golang.

      Today, I’m working on Rust and while I enjoy it for what I’m using it for (Systems level instead of Web Services) I’d be hesitant to suggest it for most backend application just due to the ramp up time for new developers.

      tl;Dr Golang will have an easier time hiring for because no language specific experience is required.

      • keef@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Yeah it’s pretty crazy how fast you can get going in go. As long as you are aware of a pointer you are mostly good to go.

        Just wish it felt better 😫

        • echindod@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          What is it about go that doesn’t feel good? I have this feeling myself.

          I didn’t enjoy parsing JSON with Go, and I the documentation sucked. But it was really really easy to stand up a simple API endpoint. I would have reached for go for the project I am currently working on, but it didn’t have the libraries I needed. It’s interesting.

          • keef@programming.dev
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            It’s the usual if err != nil return err critique.

            If you could yoink the question mark operator from rust AND support sum types that would be the dream.

            The marshaling isn’t too bad unless you need to do more specific things. I vastly prefer how rust’s serde does it but that language is the forbidden fruit

      • philm@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        I’d be hesitant to suggest it for most backend application just due to the ramp up time for new developers.

        I would probably suggest Rust for that exact reason, you’ll have to fight the language a little bit at the beginning (at least if you’ll have a very “interior mutable” experience instead of a functional background), but it teaches you how to write your code in a nicely relatively uniform compositional safe style, that IMHO can be read quite well between different people (team) and I think is easier to review (as long as it’s not some super magic trait-heavy/proc-macro code of course, but I think for actual applications (vs libraries) that part will be rather low)

        Also I think nowadays the barrier into the language is much lower than it was a few years ago. The tooling, specifically rust-analyzer (and probably Intellij Rust too, never tried it though) and the compiler itself got really good in the meantime (I actually think Rust-analyzer is by now the best LSP for any language I know of), so that getting into Rust is likely not that hard anymore (you’ll have to learn/understand a few concepts though, like heap/stack and the lifetime system, but I think that it’s not that hard to learn).

        Go just often feels very hacky to write with a lot of quirky things like handling errors, and a lot of missing features like pattern matching or a relatively good type system, I don’t think it really promotes that nice architectures (or limits the programmer kinda).

    • CodeMonkey@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      I have not done much GoLang development, but I am working on automating some dependency updates for our kubernetes operator. The language may be good, but the ecosystem still feels immature.

      Too many key libraries are on version 0.X with an unstable API. Yes, semantic versioning does say that you can have breaking changes in minor (and patch) releases as long as the major version is still 0, but that should be for pre-release libraries, not libraries ment for production use.

      • keef@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Too many key libraries are on version 0.X with an unstable API

        Sounds like my rust experience but then again it’d be non-existing for some of them.

  • starman@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    1 year ago

    I think that .NET will be used more and more instead of Java, because C# is similar to it, but better¹. And there is also F# which is great too². Rust and JS³ might also get some more usage in backend.

    ¹The only thing missing is union type.

    ²And has union type :D.

    ³And that’s unfortunate because I don’t like JS.

  • lysdexic@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 year ago

    Java gets a bad reputation from proponents of FOMO/fad-driven development, but the whole Java ecosystem was built for the web. Anyone is hard-pressed to find a better tech stack than Java-based frameworks without resorting to hand waving and passing personal opinions as facts.

    I love C# and the whole .NET Core ecosystem, but even I have to admit it’s very hard to argue against java.

    • TehPers@beehaw.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      fad-driven development

      This is certainly a way to dismiss all other programming paradigms, I suppose. Also, having used both C# and Java, I can’t see myself writing another backend in Java again when C# is such a pleasant language to write in. Both languages have flaws of course, but I find C#'s significantly more tolerable than Java’s.

      • sirdorius@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        1 year ago

        Exactly. The only reason Java is remotely tolerable today is because of influences from those ‘fad’ languages. Kotlin and Scala were also fads when they came out, they just got adopted because Java was utter shit at the time. Hell, even Java was a fad at some point in time.

        • TehPers@beehaw.org
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          I think a strong argument could be made for the JVM as a whole to be honest, since it encompasses several languages. That being said, I’m not sure I’ve seen a backend written in Kotlin despite how prominent it is for app development.

        • lysdexic@programming.dev
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          The only reason Java is remotely tolerable today is because of influences from those ‘fad’ languages.

          This might be your personal opinion but it is not a very informed one, or in touch with reality. Java frameworks such as Spring still dominate the backend ecosystem and some FANGs still standardize their backend development around it.

          • sirdorius@programming.dev
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            Read that again. I didn’t mention anything about ecosystem, I said Java, aka the language and JVM. You can patch it up all you want with frameworks, it is still a shit language, had an absolutely useless GC up until Java 9 (20 years into its existence). Though it has gotten slightly less shit in the last couple of years. It is informed from years of working with Java 6 onwards. The fact that I don’t agree with your opinion doesn’t make me less informed.

      • lysdexic@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        1 year ago

        This is certainly a way to dismiss all other programming paradigms, I suppose.

        My comment has nothing to do with paradigms.

        In fact, your strawman is proven to be false by the fact that there is no mainstream tech stack for the web which is not object oriented and provides a request pipeline that uses inversion of control for developers to pass their event handlers. They all reimplement the exact same solution and follow the exact same pattern to handle requests.

        • TehPers@beehaw.org
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          Your original comment and this one are exactly what you criticized in your first comment - opinions presented as facts. I encourage you to branch out. You might find that there are other languages and frameworks out there doing cool stuff, and IoC occuring even in the lowest level of languages.

          Edit: Since you love facts so much, let’s look at some numbers. According to the Stack Overflow 2023 survey:

          • JavaScript, Python, and TypeScript (which is apparently separate from JS here) all are more popular among professional developers than Java. C# and Java are toe-to-toe, with Java only 1.33% ahead (negligible at scale), while JS is more than twice as popular as both languages.
          • Node.js takes the lead for web-based frameworks, with Express being the most popular listed framework that I can see. Both flavors of ASP.NET are more popular than Spring Boot among professional developers, and people have been moving towards .NET Core for years now. Flask is only 2% behind Spring Boot as well, and being a Python-based framework, does not use traditional IoC and instead follows more of a service-locator pattern, where many request-related variables are stored in what is essentially thread-local static state.
          • Although meaningless on its own in my opinion, it’s still fun to point out. Java is one of the least admired mainstream languages in the survey, falling at 44.11%. It falls behind C++, C#, JS, Python, and TS. The most admired language falls back to Rust for… I forget how many years in a row, which isn’t even an object-oriented language (though borrows some concepts from them).
  • gooey@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    My team is trying to shift away from Java towards a TS backend. Call us stupid but our current Java stack is a nightmare to work with.

    Personally I would love for us to do a Go or Rust based backend, but we’re basically a startup with a rotating set of employees so I don’t see that happening

  • 0x1C3B00DA@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I don’t see it withering away anytime soon. My entire career has been enterprise web development (which is why I roll my eyes at all the web dev rants). Every company I’ve worked at has used Java on the backend and some JS framework for the frontend. Java has only been improving in that time and getting much easier to write. I don’t see companies taking an (in their view) unnecessary risk that makes it harder for them to hire and lose efficiency, at least in the short to medium term.

    I think the only way that changes is if developers are interested enough to try Rust, or any other language, in their free time. If they like it enough, they’ll suggest it at work. If enough developers are doing that, it’ll slowly shift the local scene.

  • Tinkerings@beehaw.org
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    I’ll throw my 2¢ in on TypeScript → JavaScript. The typings accelerate development significantly (if the developer doesn’t fight them and make everything any), and you can write to modem JS when you have older runtimes.

    But more you can do full stack from cloud infra (Infrastructure-As-Code with something like AWS-CDK or CDKtf) to deploy and orchestrate front-end to back-end.

  • tatterdemalion@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    I don’t think many large established companies will be taking the risk on newer languages, but there are plenty of new companies that will mature based on a foundation of writing their backend in Rust or some other new language.

    Probably some Rust contingents will form on internal teams within large companies, and they will build new products or services in X new language.

  • Durotar@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    I think that India will be a major factor and there are many Java developers. C-level guys don’t care about programming languages, they do care about cheap labor. So I don’t think that Java is going to wither away anytime soon, at least on a global scale.

    • CodeMonkey@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      That is a bit dismissive of Java developers around the world. There are several of us still left and we are in key positions of power.

  • flamboyantkoala@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    I give typescript running a decent shot of being a major force in backend APIs. There’s a draw to being able to code the same language on front and backend. It’s got a stronger type system than Java in strict mode as well.

    It also has quick boot time which can help in cloud functions that may eventually become the preferred method of APIs. No server or os to maintain and they are close to the customers location

    • mark@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      1 year ago

      Yeah, JavaScript/TS doesn’t get a great rep being used on the backend. But I use it on quite a few of my projects, one of which gets thousands of requests per minute. I was skeptical of whether or not using Node on the backend would hold up, but the performance has been stellar… pretty surprising, actually.

      • sine@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        Thousands of requests per minute can mean many things so maybe you’re referring to several hundred requests per minute, but one of our services at work gets 300 requests/second which is ~18K requests per minute and it’s really not that much. We’re using pretty cheap cloud services. Even thrice the traffic is pretty much a slow walk for your average production-grade web framework.

        Web frameworks are built to support an insane amount of incoming requests, including node. The issue with node is the single threading and having to scale with worker threads AFAIK.

        edit: our runtime is C#

      • Potatos_are_not_friends@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        It doesn’t get a great rep? Would love to hear from that perspective. I’m only seeing the opposite.

        Many popular node libraries are/have converted to Typescript. I was on the fence last year but now I’m working towards converting my work into Typescript too.

  • leviosa@programming.dev
    link
    fedilink
    arrow-up
    0
    arrow-down
    1
    ·
    1 year ago

    Python is already popular so Mojo making that ecosystem much faster, safer and easier to deploy could be game changing when it’s fully formed. There are also armies of existing Python developers out there for businesses to tap into and it’s an easy language to pick up.

    On their roadmap page, it looks like C++ interop is going to be a first class citizen too, further opening up the ecosystem to existing high performance libraries:

    Integration to transparently import Clang C/C++ modules. Mojo’s type system and C++’s are pretty compatible, so we should be able to have something pretty nice here. Mojo can leverage Clang to transparently generate a foreign function interface between C/C++ and Mojo, with the ability to directly import functions:

    from "math.h" import cos
    
    print(cos(0))
    
    • CodeMonkey@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      In my opinion, Python is still missing one key feature: the removal of the Global Interpreter Lock, which is finally starting in Python 3.13.