Since its inception, Microsoft Excel has changed how people organize, analyze, and visualize their data, providing a basis for decision-making for the flying billionaires heads up in the clouds who don’t give a fuck for life offtheline

  • nalyd@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    14
    arrow-down
    6
    ·
    1 year ago

    That’s not really what people mean when they’re talking about interpreted versus compiled languages. Java’s compilation step produces an intermediate language that still has to be interpreted before it’s executed.

    It turns Java code into something that can be interpreted faster, but not into something your processor directly understands. The key here is that it doesn’t produce an output that can be fed directly to the processor without additional work at runtime.

    • Phrodo_00@lemmy.world
      link
      fedilink
      English
      arrow-up
      8
      arrow-down
      1
      ·
      1 year ago

      If you go that detailed, then the jvm is JIT compiler, not an interpreter, so Java code still mostly runs natively on the processor. Java is quite fats achieving pretty close performance to C++, the only noticeable problems are on desktop because of the slow jam startup and slow GUI libraries compared to native ones.

      • nalyd@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        1 year ago

        I think you’re missing that all interpreters have a compilation step that produces machine code, that’s a requirement to produce programs.

        Java’s JIT compiler is the final compilation step of Java’s interpreting path running in a separate thread that turns the intermediate language to machine code. To be very clear though, the output of the standard javac compiler is not machine code that a processor understands. This is what makes Java not a compiled language. It depends on additional processes at runtime to turn the code you wrote into something a processor understands.

        On the performance front, well written Java is fast enough as long as you have sufficient resources for the overhead of JVM and as long as you don’t have strict latency requirements. That makes it good for a pretty wide variety of computing tasks, but, also not a good choice for a lot of others.

        • wolf@lemmy.zip
          link
          fedilink
          English
          arrow-up
          3
          ·
          1 year ago

          Factual errors:

          • Interpreters neither need nor usually have a compilation step
          • Even processors are nowadays virtual machines, modern hardware only understands microcode AFAIK

          Words which have a common understanding in the current compiler construction world, which you define in IMHO a non standard way

          • Compiler is commonly used to refer to tools which translate higher level languages (e.g. Java, C, Python, JavaScript) to a machine representation (e.g. JVM, Arm64, x86_64, MIPS…)
          • Even in academia Java is referred to as compiled/interpreted language (at the same time)

          Factual errors about Java:

          • We have ahead of time compilers for a very long time now (GraalVM etc)
          • There are chips which implement the JVM in hardware
        • Aceticon@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          I think you’re used to modern interpreted languages and are unaware of how the runtimes of interpreted languages used to work.

          Something like Basic (to use a properly old example) was constantly interpreting source code during the entire run.

          If I’m not mistaken Python was the first major interpreted language which by default interpreted the code into a binary format and then just ran the binary (and, if I remember it correctly, that wasn’t the case in its first version). By this point Java already JIT compilation in its VM for a while.

          I think you’re committing the error of comparing modern interpreted languages with how Java worked 2 decades ago.

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

      There is another compilation step inside the Java Virtual Machine which “compiles” the VM Assembly code to native code at runtime.

      This is what’s called JIT compilation and has been part of the standard Java Virtual Machine for about 2 decades and the default - at least server side - for almost as long (i.e. you have to explicitly pass a parameter to disable it at startup if you want the old runtime interpreted VM opcode behaviour).

      Source: I used to design and develop mission critical high performance distributed server systems in Java for banks since before 2008 and it definitelly is capable of handling it (the bottleneck tended to be the TB-size database, not the Java application).