看来 Google 已经决心使用 OpenJDK 开发 Android - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Makoshan
V2EX    Android

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

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

    最新 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
        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     Solana     1021 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 23:02 PVG 07:02 LAX 16:02 JFK 19:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86