V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Makoshan
V2EX  ›  Android

看来 Google 已经决心使用 OpenJDK 开发 Android

  •  
  •   Makoshan · 2016-06-12 10:05:24 +08:00 · 16515 次点击
    这是一个创建于 3084 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最新 Android Studio 2.2 Preview 3 的更新介绍:

    With Android Studio 2.2, you may have noticed the larger download sizes than previous versions of Android Studio; this is because we now bundle a build of OpenJDK with the IDE to address various font rendering and stability issues.

    第 1 条附言  ·  2016-06-13 17:11:45 +08:00
    看来 Java 已经变成敏感词汇
    53 条回复    2016-06-13 18:00:49 +08:00
    DoraJDJ
        1
    DoraJDJ  
       2016-06-12 10:29:30 +08:00
    this is because we now bundle a build of OpenJDK with the IDE to address various font rendering and stability issues.

    它们内带 OpenJDK 的原因只是解决字体渲染和稳定性问题吧,跟 JB 家的其他东西一样
    Neveroldmilk
        2
    Neveroldmilk  
       2016-06-12 10:30:45 +08:00
    那最好,之前用 OpenJDK 开发 Android ,搞得要死要活的。
    notgod
        3
    notgod  
       2016-06-12 10:39:04 +08:00
    谷歌应该使用 go 重构
    然后 go 语言 瞬间变的比 java 还流行 然后.....
    daya
        4
    daya  
       2016-06-12 10:40:31 +08:00 via Android
    @notgod 我也想看到谷歌这样做,😄
    kappa
        5
    kappa  
       2016-06-12 11:39:27 +08:00   ❤️ 1
    @notgod Go 做 UI ?那按现在的情况真得要死要活了。。
    notgod
        6
    notgod  
       2016-06-12 11:41:04 +08:00
    @kappa 理解能力感人
    按你的理解 openjdk 做 ui java 做 ui
    ?
    9hills
        7
    9hills  
       2016-06-12 11:42:28 +08:00
    this is because we now bundle a build of OpenJDK with the IDE to address various font rendering and stability issues

    是解决 Android Stdio 这个 IDE 本身的问题。。。。
    21grams
        8
    21grams  
       2016-06-12 11:51:24 +08:00
    android studio 是用 java 做的?
    Neveroldmilk
        9
    Neveroldmilk  
       2016-06-12 11:53:50 +08:00
    嗯,不内置 JDK , linux 上面关联问题一堆一堆的。
    Neveroldmilk
        10
    Neveroldmilk  
       2016-06-12 11:54:04 +08:00
    @21grams 你不知道么?
    Khlieb
        11
    Khlieb  
       2016-06-12 12:03:05 +08:00 via Android
    上次谷歌好像就是因为 JDK 的问题被甲骨文告了
    plqws
        12
    plqws  
       2016-06-12 12:15:15 +08:00
    如果只是纯粹地为了解决一个字体渲染什么的问题, Jetbrains 全家桶应该也会同时有这些更新吧。
    bk201
        13
    bk201  
       2016-06-12 13:48:05 +08:00
    楼上比 java 还流行简直脑洞大,java 又不是靠安卓流行的.
    DT27
        14
    DT27  
       2016-06-12 14:18:36 +08:00
    赶紧出个新语言把 java 淘汰吧!
    kaneg
        15
    kaneg  
       2016-06-12 14:26:12 +08:00
    @21grams Android Studio 就是 Google 在 Intellij IDEA Community 版本的基础上增加了开发 Android 的插件。做 Android 的人应该对 Intellij 的东西不陌生吧
    Neveroldmilk
        16
    Neveroldmilk  
       2016-06-12 14:38:23 +08:00
    @plqws Jetbrains 又没跟 Oracle 闹翻,没必要捆绑 Oracle java 全家桶。
    Neveroldmilk
        17
    Neveroldmilk  
       2016-06-12 14:39:21 +08:00
    @bk201 你这话可知说对了一半,这两年 java 大热的一个重要原因就是 Android 。如果 android 全线迁移到比如 C++上, java 开发人员要少一大批。
    jamiesun
        18
    jamiesun  
       2016-06-12 14:46:37 +08:00
    @Neveroldmilk google 选 java 的原因就是因为开发者多,在没有 android 之前, java 已经在服务端市场俯瞰众生了。 android 得了 java 的红利, android 也促进 java 的繁荣进一步拉大与其他语言的距离。 android 离开 java ,只会减少 android 开发者,不会撼动 java 的地位。
    Neveroldmilk
        19
    Neveroldmilk  
       2016-06-12 16:58:29 +08:00
    @jamiesun 没觉得 Android 离开 Java 活不下去, Android 只是用了最基本的 java 语法,并且体系架构和 J2SE 、 J2EE 什么的架构完全是两套体系,很多包都不兼容。再说了, Android 的 app 性能受拖累的一个重要原因就是虚拟机。我觉得 Android 早点拥抱 C++只会对 google 有好处,毕竟现在手机性能还没到浪费代码执行效率的地步。
    SourceMan
        20
    SourceMan  
       2016-06-12 17:02:23 +08:00 via iPhone
    又吵起来了吗
    tobyxdd
        21
    tobyxdd  
       2016-06-12 17:11:18 +08:00 via Android
    @plqws 那也未必 毕竟 Android studio 是 google 自己 fork 出来的 jb 没必要同步
    tczzjin
        22
    tczzjin  
       2016-06-12 17:12:24 +08:00
    都不考虑 c++开发成本和学习成本吗...
    2225377fjs
        23
    2225377fjs  
       2016-06-12 17:25:41 +08:00
    @Neveroldmilk 话说就真的觉得 C++就比 Java 快啊。。? Java 语言执行速度本质上和 C++是同一个量级的,加上 Java 有很多顶级大神写的库(尤其是 Concurrent 库), C++以及其他语言可是没有的额。。这些加起来然后用来完成相同的逻辑功能, C++还不一定有 Java 快呢。。 Java 这方面只不过是 GC 比较让人诟病而已,说到 GC ,任何 GC 类型的语言,都只不过是在工业级层面上来走 Java 的老路而已,跟着 Java 学,就开始说超越 Java 了,也是醉了(比如 Go 啥的)。
    2225377fjs
        24
    2225377fjs  
       2016-06-12 17:30:34 +08:00
    @Neveroldmilk IOS 之所以在体验上秒了大多数市面上安卓机器,更大程度上是因为 Apple 家的硬件强大,而不是语言对 Java 的优势。。。做游戏的同志对这方面应该能有比较强的感受。安卓上各种 4,8,10,12 核就 TM 扯淡的,被 Apple 家的处理器吊打。
    xuhaoyangx
        25
    xuhaoyangx  
       2016-06-12 18:04:31 +08:00
    一些人真的是脑洞打开, Block 掉为好。 C++作为 Android 开发,完全没必要,做 APP 开发个人觉得语言要好用上手简单为好。
    Neveroldmilk
        26
    Neveroldmilk  
       2016-06-12 18:13:07 +08:00
    @tczzjin
    @2225377fjs
    google 自己也是出于摇摆状态,否则就不会弄出来个半吊子 NDK+JNI 的别扭 C++开发模式了。我是 C++出身,对于要用 JNI 这种多此一举的方式非常反感。
    Neveroldmilk
        27
    Neveroldmilk  
       2016-06-12 18:14:04 +08:00
    @xuhaoyangx 没用过 NDK 开发别信口胡说好么?如果 google 想提供纯粹的 Java 开发模式,弄出 JNI 这种两头不讨好的 C++调用方式干什么?
    zhicheng
        28
    zhicheng  
       2016-06-12 18:15:37 +08:00
    Android 不可能使用编译型编程语言,这不是市场问题,也不是流行不流行的问题,就连微软这个操作系统巨头也解决不了不同 ISA 的二进制兼容。 iOS 的硬件和软件发布都控制在苹果手里,所以用什么编程语言不重要。
    Neveroldmilk
        29
    Neveroldmilk  
       2016-06-12 18:18:26 +08:00
    @zhicheng 那你给解释一下 NDK+JNI 是怎么回事好么?
    afpro
        30
    afpro  
       2016-06-12 18:23:04 +08:00
    @Neveroldmilk 这有什么好解释的 JNI 是 JAVA 的一部分 很多库(lua 、游戏引擎)等依赖这个功能 所以 google 搞了 NDK 简化交叉编译 只能说你想多了骚年……
    zhicheng
        31
    zhicheng  
       2016-06-12 18:23:16 +08:00
    @Neveroldmilk 不是所有的程序都是用 NDK 写的。 Android 只是给了一个机制。如果你用 NDK 写,要么增加应用体积,要么降低可移植性。
    nicevar
        32
    nicevar  
       2016-06-12 18:26:01 +08:00
    不要听各种大神告诉你 java 和 c++速度差不多的,这种话条件限制太多,要是遇到过 java 解决不了的性能问题只能搬出 c++来处理情况你就明白了
    google 短期内不会用其他语言来代替的,多大的代价,要启用新语言至少要并存很长一段时间,就像 iOS 的 swift 跟 oc 一样
    lightening
        33
    lightening  
       2016-06-12 18:26:41 +08:00
    @2225377fjs Java 做 UI 有个问题就是 GC 的触发是不可预测的,然后 GC 时要 stop the world , UI 就会卡顿一下。
    ObjC 以前搞了 GC ,后来看着不行,又回到 ARC 了。 Swift 设计的时候也考虑了这个问题,坚决使用 ARC 。
    xuhaoyangx
        34
    xuhaoyangx  
       2016-06-12 18:33:30 +08:00
    @Neveroldmilk
    请问我说了什么让你这么生气 。我不就说了开发 APP 的语言尽量好用容易上手么, C++作为主要开发语言我觉得当然没必要,开发难长麻烦。当然我用过的 NDK 也就做视频开发时用过。
    jason19659
        35
    jason19659  
       2016-06-12 18:35:51 +08:00   ❤️ 1
    某些程序员,不知道比谷歌高到哪里去了
    wuxqing
        36
    wuxqing  
       2016-06-12 18:45:31 +08:00
    简单测试的, java 确实不比 C++慢。但是,实际上还是差距很大的。我们有一套 java 写的地图渲染引擎,实在太慢,然后花了 2 周( 2 人)把 java 代码简单改写成 c++,两者语法很像,基本上是简单翻译。速度提升了 10 倍以上。
    2225377fjs
        37
    2225377fjs  
       2016-06-12 19:39:56 +08:00
    @wuxqing 那是慢在 Java 的系统调用以及与外部系统的集成上,尤其是与非 Java 环境的外部系统集成,纯粹实现算法,业务逻辑, C++执行速度并没有优势。
    @lightening 3,4 百 M 级别的程序,基本不用考虑 GC 问题的,如果安卓环境的硬件水平能达到 Apple 家的水准,安卓体验也是可以上去不少的,不过这个难度比较大,最近几个项目对比发现,安卓生态环境的硬件水平跟 Apple 的比起来真是弱的掉渣了,差距不是一点点。
    lightening
        38
    lightening  
       2016-06-12 19:54:41 +08:00
    @2225377fjs 可是 Android app UI 的主线程就是有这个 GC 触发导致 UI 短暂卡顿的问题。除了做 UI , GC 在其他情况往往是不造成问题的。 Chris Lattner (Swift 的主要设计者) 就专门说过这个问题, Java 式 GC 的主要问题就是在 UI 响应上的 unpredictable 。
    wuxqing
        39
    wuxqing  
       2016-06-12 20:00:06 +08:00
    @2225377fjs 地图渲染引擎有多少系统调用?基本上都是算法和业务逻辑
    edgar
        40
    edgar  
       2016-06-12 20:46:46 +08:00
    JetBrains 在 Linux 和 Mac OS X 下前段时间开始就自带 JRE 了。 https://intellij-support.jetbrains.com/hc/en-us/articles/206544879
    shui14
        41
    shui14  
       2016-06-12 21:17:56 +08:00
    go for andr 手动斜眼
    kappa
        42
    kappa  
       2016-06-12 21:46:46 +08:00
    @notgod 能把 OpenJDK 和 Go/Java 放在一个层面上考量也真是不容易。。
    tyfulcrum
        43
    tyfulcrum  
       2016-06-12 21:57:31 +08:00 via iPhone
    @zhicheng Tizen 就是用 llvm 的 bitcode 分发的,技术可行性没问题。
    Wakeupzombie
        44
    Wakeupzombie  
       2016-06-12 22:07:48 +08:00
    @notgod 想得美
    Gcourage
        45
    Gcourage  
       2016-06-12 22:19:40 +08:00 via iPhone
    openjdk 与 Oracle 的, Java 差距大吗?性能还是什么考量,导致前期是用 Oracle
    zhicheng
        46
    zhicheng  
       2016-06-12 22:33:33 +08:00
    @tyfulcrum “技术上” 我也可以用 QEMU 执行不支持的 ISA 代码,实现一个 JIT 引擎把代码转成目标机器码。你猜,为什么正规军没这么做呢?
    tyfulcrum
        47
    tyfulcrum  
       2016-06-13 04:09:06 +08:00 via iPhone
    @zhicheng Tizen 又不是玩具系统,商业原因导致占有率低罢了。原因也许是 Android 刚开始开发的时候 llvm 和 clang 还不成熟,或者也有 Dan Bornstin 自己技术习惯的因素?毕竟他给自己的标签是虚拟机专家(Virtual Machinist)。
    youxiachai
        48
    youxiachai  
       2016-06-13 09:10:52 +08:00
    @Gcourage lz 是搞错了..你也别带错节奏啊.........

    google 搞 open jdk 已经是前几个版本搞 jack 已经开始了..不然怎么支持 java 8 的一些特性..

    lz 是完全不懂这个..看个简介..就想歪了..
    Makoshan
        49
    Makoshan  
    OP
       2016-06-13 09:47:43 +08:00
    OpenJDK 采用 GPL V2 协议,允许在商业上使用,而且 Google 也是 OpenJDK 的重要贡献者,这次直接内置到 IDE 意图更加明显,是要试图避免 Oracle 的诉讼。 Go 和 React Natice 不是都已经支持 Android 开发,自己试试就知道坑有多多,生态和工具链健全才是吸引开发者的点 ,Swift 再好,大部分 iOS 开发者还不是继续用 OC
    kideny
        50
    kideny  
       2016-06-13 10:00:36 +08:00
    安卓和 java 结婚 7 年,吵着要离婚。安卓的岳父 oracle 说:“离婚可以,你先陪我女儿的青春损失费”。安卓想在离婚前,先找好打炮的对象。结果 java 还是每天晚上让安卓爽,安卓犹豫不决。这婚,是离还是不离?
    liyvhg
        51
    liyvhg  
       2016-06-13 10:14:02 +08:00
    @kideny 哈哈哈哈哈哈, 好具体形象
    hooluupog
        52
    hooluupog  
       2016-06-13 10:39:00 +08:00
    这回帖里错误的观点和自己脑补出的东西很多,不知道为啥都热衷于 yy 这种事情。
    chocotan
        53
    chocotan  
       2016-06-13 18:00:49 +08:00
    oracle 诉讼的好像是自己实现了一套不兼容的 jvm 吧,就跟当年的微软一样
    openjdk 也是 oracle 家的,可以去 openjdk 官网上看 jdk9 的开发进度:)

    前一阵子搜过 openjdk 和 oraclejdk 的不同,个人得出的结论是 oraclejdk 比 openjdk 多一些闭源的工具,其它没区别
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1512 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:10 · PVG 01:10 · LAX 09:10 · JFK 12:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.