• @Sheltac
    link
    361 year ago

    Interesting, I always thought it had to do with Android’s ungodly software stack which at some point involves, of all things, fucking java.

    • @[email protected]
      link
      fedilink
      English
      -21 year ago

      Android doesn’t use Java at a byte-code level and never has, as far as I can tell. Source code was written in Java since mobile developers were so used to it but Android never ran the JVM, they do their own thing with Java source.

      You can dislike Java syntax but the software stack on Android wasn’t Java’s.

      • @Sheltac
        link
        211 year ago

        Wait, thats is very different from what I read back in the day. I know there was a point at, I dunno, android 5 where they started doing something different with java, but my impression was that android always ran a JVM of sorts. And frankly, given how it performs even on the highest-end devices, that was really easy to believe.

        I guess I need to do some research now.

        • @bluefirex
          link
          361 year ago

          No you’re correct. Android does run a JVM, just not Oracle’s. That has always been the case. Back in the day it was Dalvik, nowadays it’s ART.

          • @Sheltac
            link
            91 year ago

            There you go, that’s exactly what I was thinking. Thanks!

        • @[email protected]
          link
          fedilink
          English
          81 year ago

          Pretty sure it was Dalvik virtual machine that Java was compiled to byte code for before 4.4 when they deprecated Dalvik for Android Runtime (ART), fully dropping Dalvik in 5.

          • @[email protected]
            link
            fedilink
            71 year ago

            @fartsparkles @Sheltac Android always ran dalvik bytecode and never Java bytecode
            The change to Art was just a replacement of the “VM”, but didn’t change what byte code was run. It’s similar to how Hotspot improved the Java VM while also not fundamentally changing that it’s running Java bytecode.

      • @[email protected]
        link
        fedilink
        101 year ago

        Dalvik/ART is essentially the same idea. It uses dalvik byte code, much in the same way the JVM operates.

        There’s some complexity (it’s designed to do different things, and the whole Oracle lawsuits added some wrinkles) but it’s not so different as you imply.

      • @[email protected]
        link
        fedilink
        21 year ago

        They compile Java Bytecode to Dalvik Bytecode and run that on the Android Runtime which is a tiered JIT compiler.

        It still inherits the issues of Java such as the GC, no stack allocated value types, poor cache locality, etc. Although tbf the GC on Android is pretty fucking good these days and doesn’t pause the world anymore.

    • @Aux
      link
      -81 year ago

      Java is only used for software development, there’s nothing Java during run time.

        • @Aux
          link
          01 year ago

          ART what?

          • @[email protected]
            link
            fedilink
            41 year ago

            ART is the equivalent of a JVM. It doesn’t implement all the apis, the compiled bytecode differs, it’s optimized for mobile but that doesn’t make it not a JVM.

            That’s why the NDK exists: so you can build and run C++ code natively.

            • @Aux
              link
              -51 year ago

              Python VM is Java by your logic. If you don’t understand IT, you shouldn’t really talk on IT topics.

              • @[email protected]
                link
                fedilink
                21 year ago

                I can use the exact same apache jars on my Android project and my Java server.

                That’s not Python. That’s very clearly java code.

                The implementation of the contract is different but that’s not the same as not being Java.

                • @Aux
                  link
                  11 year ago

                  You can’t use the same JARs in runtime.

                  • @[email protected]
                    link
                    fedilink
                    01 year ago

                    You absolutely can pull the same jars into server and android projects.

                    Sometimes you need a different one for Android to avoid NoClassDefFoundErrors but you’re totally able to grab a jar and stick it directly into both sides.

          • @hark
            link
            01 year ago

            Thou art wrong.

      • @eek2121
        link
        21 year ago

        This is not true. See above.

        • @Aux
          link
          -41 year ago

          It IS true! See the above indeed. In short - there’s no Java anything during runtime and never was.

          • 🧋 Teh C Peng Siu DaiB
            link
            11 year ago

            How would you define what’s “Java” then. The language used by source code, or the compiled bytecode, or the runtime?

            • @Aux
              link
              -41 year ago

              I don’t define anything, there are Java standards which define source code, binary code and runtime behaviour compatibility. That makes it possible to run Java apps on non-Oracle JVMs, use non-Oracle tools, etc. Android doesn’t have anything Java outside of source code. And even Java source code is not 100% compatible. It’s just not Java at all and never was. You can’t even use many open source Java libraries on Android because they are not Android compatible at the source level.