Let’s reinvent java bytecode but… different

  • testfactor@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    6 months ago

    Do you really think the reason people hate Java is because it uses an intermediate bytecode? There’s plenty of reasons to hate Java, but that’s not one of them.

    .NET languages use intermediate bytecode and everyone’s fine with it.

    Any complaints about Java being an intermediate language are due to the fact that the JVM is a poorly implemented dumpster fire. It’s had more major vulnerabilities than effing Adobe Flash, and runs like molasses while chewing up more memory than effing Chrome. It’s not what they did, it’s that they did it badly.

    And WASM will absolutely never replace normal JS in the browser. It’s a completely different use case. It’s awesome and has a great niche, but it’s not really intended for normal web page management use cases.

    • onlinepersona@programming.devOP
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      2
      ·
      6 months ago

      Do you really think the reason people hate Java is because it uses an intermediate bytecode? There’s plenty of reasons to hate Java, but that’s not one of them.

      No, I do not. It’s a meme.

      Anti Commercial AI thingy

      CC BY-NC-SA 4.0

  • AggressivelyPassive@feddit.de
    link
    fedilink
    arrow-up
    2
    ·
    6 months ago

    I mean, hardly anyone complaining about Java does so because of JVM bytecode.

    I’m not sure, where the wasm hate is coming from.

    • onlinepersona@programming.devOP
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      6 months ago

      No hate, just a stupid meme. WASM has the possibility of replacing JS in the browser, however it had to reinvent the JVM 🤷 As long as it gets rid of the JS dominance in browsers, I’m all for it.

      Anti Commercial AI thingy

      CC BY-NC-SA 4.0

  • magic_lobster_party@kbin.run
    link
    fedilink
    arrow-up
    1
    ·
    6 months ago

    Java is disliked because it’s designed around flawed OOP principles developed in the 80s and 90s. The code easily turn into a mess if you adhere to these principles, because they’re flawed. If you avoid using these principles, you will still get a mess, because that’s not how Java is supposed to be used.

    • hydroptic@sopuli.xyz
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      6 months ago

      Java was such a fractal of stupid design choices in its early years, and a lot of it is still there. OOP except when it’s not (int vs Integer, [] arrays but also List et al), no unsigned number types, initially no way to do closures or pass methods around so everything had to be wrapped in super verbose bullshit, initially absolutely dogshit multiparadigm support and very noun-oriented, initally no generics either meaning everything’s an Object, when it did get generics they had to do type erasure for backwards compatibility, etc etc etc

        • hydroptic@sopuli.xyz
          link
          fedilink
          arrow-up
          0
          ·
          6 months ago

          Great article, thanks for the link! It makes good points that I hadn’t really considered; I’ve probably just been cranky about it because I’ve preferred heterogenous translations

      • magic_lobster_party@kbin.run
        link
        fedilink
        arrow-up
        0
        ·
        6 months ago

        Also: everything is nullable. There are no safety guarantees to ensure you’ve done the necessary null checks. And if you miss your program will crash.

        • hydroptic@sopuli.xyz
          link
          fedilink
          arrow-up
          0
          ·
          6 months ago

          Oh yeah how did I forget the billion dollar mistake, definitely one of the worst misfeatures of Java

          • magic_lobster_party@kbin.run
            link
            fedilink
            arrow-up
            0
            ·
            6 months ago

            I think having null is great in some cases where you need to represent missing value. It’s just that there’s no good way to know for sure if you need to do null checks or not. The only way around it is to do null checks everywhere, which no one wants to do because fuck that. Nowadays there’s Optional which solves some of this, but it was introduced way too late.

            If I were to redesign Java the first thing I would do is to add a nullable keyword or something.

            • hydroptic@sopuli.xyz
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              6 months ago

              I think having null is great in some cases where you need to represent missing value.

              Option types or sum types would probably be a much less terrible choice for this, although I guess some sort of nullable keyword counts as a sum type

  • Rikj000@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    6 months ago

    WASM = WebAssembly,
    this has nothing to do with Java,
    but with JS (JavaScript).

    JS works with JIT (Just In Time) compilation, meaning every user that requests a web page, will request the JS and your browser will compile that JS on the fly as you request it.

    WASM on the other hand is pre-compiled once, by the developer, when he/she is making the code. So when a user requests a WASM binary, they don’t have to wait for JIT compilation, since it was already pre-compiled by the developer.

    They only have to wait for a tiny piece of JS,
    which is still JIT compiled,
    a tiny piece of JS to load in the WASM binary.

    This saves the user from waiting on JIT compilation and thus speeds up requesting web pages.

    WASM also increases security,
    since binaries are harder to reverse engineer then plain text JS.

    Due to those reasons,
    I believe WASM will be the future for Web development.

    No clue why people are hating on WASM,
    but I guess they just don’t grasp all of the above yet.

    • lil@lemy.lol
      link
      fedilink
      arrow-up
      0
      arrow-down
      1
      ·
      6 months ago

      I want webpages to be open source, not compiled. That’s why I dislike WASM

      • Rikj000@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        1
        ·
        6 months ago

        WASM projects can be open source,
        just like Android apps can be.

        However in both instances the compiled versions of it are not easily readable.

        Also you can validate binaries against a shasum to ensure no tampering has happened with them.

    • onlinepersona@programming.devOP
      link
      fedilink
      arrow-up
      0
      arrow-down
      1
      ·
      6 months ago

      Wasm code (binary code, i.e. bytecode) is intended to be run on a portable virtual stack machine (VM)

      WASM wikipedia

      Java bytecode is the instruction set of the Java virtual machine (JVM), crucial for executing programs written in the Java language and other JVM-compatible languages

      java bytecode

      Need I say more?

      • dohpaz42@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        6 months ago

        Please do say more because I don’t think the argument you’re trying to make is coming across clearly. Obviously your intelligence is at a level far higher than us low-iq plebs, and we need your brilliant mastery of these topics to be poetically spelled out for us. For we are not worthy otherwise.

          • dohpaz42@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            6 months ago

            In all seriousness, everything. You post two out-of-context quotes from two different websites, but put no actual effort into tying them together and explaining your position on either side, and expect us to read your mind and agree with you. It’s a bad faith comment that exudes arrogance.

  • DacoTaco@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    6 months ago

    The problem with java is the language and how it works itself, and not the byte code idea.
    I say that as a few things do that and .net, java and wasm are the first that jump to mind.
    Hell, pure technically any programming language that is not asm does that :')

    My problem is java itself, not its byte code. Wasm as advantage, imo, is that its not stuck to a single language like java is. .net blazor can build to wasm, but you could also use c++ to compile wasm applications :)

    • onlinepersona@programming.devOP
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      6 months ago

      I’m not sure why the WASM creator(s) didn’t take advantage of the existing java bytecode and JVM instead of reimplementing it. Might’ve sped up its adoption. Doesn’t matter to me though, as long as JS stops being the #1 in web development.

      This meme isn’t to be taken seriously

      Anti Commercial AI thingy

      CC BY-NC-SA 4.0

  • anton@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    0
    ·
    6 months ago

    The main difference is that WASM is an agnostic bytecode without a gc while the jvm is opinionated in a java way. It has a gc, focus on dynamic dispatch and it has knowledge of concepts like exceptions, classes and visibility.

    All this leaking of abstractions means languages like java and kotlin are well suited, scala has hit problems and c couldn’t be compiled to java bytecode.