abcbuzhiming
V2EX  ›  Android

请教高手, Android 对 JVM 生态圈的兼容极限在哪里?

  •  1
     
  •   abcbuzhiming · Apr 8, 2021 · 15025 views
    This topic created in 2042 days ago, the information mentioned may be changed or developed.
    最近才意识到,实际上当年 Google 仅仅是把 Java 的 api 接口搬了过来,接口下面的代码完全重新写了一遍,虚拟机也是完全自己实现。这样的东西从标准来说应该不能算 JDK,本质其实是语法像 java 语言的全新语言。在当时确实可以把 java 生态圈里的很多东西,直接拿来用。

    但是,我的疑惑是,这样的实现,它的技术极限在哪里,Google 是否真的做到了二进制级别的兼容?
    12 replies  •  2021-04-09 11:49:43 +08:00
    guyeu
    guyeu
    Apr 8, 2021
    1
    显然没有,语法层面的兼容都没有做到,所以很多库会同时有 jre 版本和 android 版本。另外,Google 也复用了一大堆 JDK 的原始代码,后来因为官司问题都替换成了自己的实现而已。
    abcbuzhiming
    abcbuzhiming
    OP
    Apr 8, 2021
    2
    @guyeu 能不能举个同时有 jre 版本和安卓版本库的例子
    guyeu
    guyeu
    Apr 8, 2021
    3
    @abcbuzhiming #2 最著名的大概就是 guava 了
    iminto
    iminto
    Apr 8, 2021
    4
    @guyeu 这个例子不应该被认为是 API 不兼容导致,它的安卓版本是做了内存方面的优化和编码风格的改变,虽然某些 API 确实输出上有不同,但是 android 在语法层面应该认为是兼容某个特定 JRE 的。
    ychost
    ychost
    Apr 8, 2021
    5
    Guava 还好,后面 JDK 都借鉴了相关 api 比如 Optional,Future 之类的
    wobuhuicode
    wobuhuicode
    Apr 8, 2021
    6
    我记得 12 年刚学安卓 2.X 开发的时候,很多底层就是 JDK 的,好像安卓 4.4 之后才全部换过来。
    bigbyto
    bigbyto
    Apr 8, 2021
    7
    应该是取决于 android 的虚拟机。 很久没接触安卓,像早期的 dalvik 虚拟机,dex 是由 jvm bytecode(class 文件)转译过去的,因此一些新的 jvm 特性(如 invokedynamic 指令)需要等待安卓的虚拟机进行兼容,才能在代码中使用 lambda 表达式。
    guyeu
    guyeu
    Apr 8, 2021
    8
    @iminto #4 的确,guava 的 android 和 jre 版本更多在于编码风格和特定于 android 的优化。android 在编写和编译的层面也兼容某一个特定的 java 版本,可以说合法的 java 代码就是合法的 android 代码。不同的是运行时。
    cjh1095358798
    cjh1095358798
    Apr 8, 2021
    9
    android 符合 jvm 规范
    ikas
    ikas
    Apr 8, 2021
    10
    android 就是一个独立的平台,本身也是事实分裂了 java 生态,并且 android 的虚拟机不符合 jvm 规范,安卓跑的是 dex,jvm 跑的是 class, java 代码是先编译成 class,然后再转换成 dex.
    ikas
    ikas
    Apr 8, 2021
    11
    置于兼容,他根本不需要符合 jvm,同样也不需要去完整兼容,事实也是,他现在 java8 兼容完整了吗?
    chenyu8674
    chenyu8674
    Apr 9, 2021
    12
    java 程序员随便学两下就可以去写 Android,算不算另一种形式的“兼容”
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4154 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 08:58 · PVG 16:58 · LAX 00:58 · JFK 03:58
    ♥ Do have faith in what you're doing.