android sdk下的Java源码与JDK的Java源码的区别在哪?

今天在看双向链表LinkedHashMap代码时,在AS开发环境下跟踪的是JDK_1.7的源码,在大致明白了他的部分功能后,又切到android_sdk 的源码上,android-sdk中也有一个LinkedHashMap类,但是功能代码却不相同,google为何要在sdk中重写Java代码而不直接引用呢,开源部分是不涉及版权的,是因为sdk中重写的Java类是做了优化的吗,没时间细看,请关注过类似问题的同学帮助解答,不甚感激。
关注者
86
被浏览
4870
Android 使用的Java 库是Apache的Harmony, 与官方Java库接口相同,里面实现不一样。

就在06年的时候Sun公司宣布会将JDK开源,但是直到2009年4月才正式发布,而Android已经在2008年发布第一步部智能手机了。所以Google最早的时候使用了当时Apache的Java开源实现Harmony项目。

说到这个Harmony可是大有来头,2005年的时候Java并不是开源的,当是Apache搞了一个提案,就是Harmony项目,目标是开发出一个独立并且与现有 JDK 兼容的 Java SE 实现,它是开源的并且Apache授权对开发者友好,于是得到了飞速发展。


可惜Sun公司一直不承认Harmony,前不久Harmony那一帮人怒了,给Oracle放狠话说再不承认我我就抵制Java7,结果反倒把Google吓坏了,于是就出现了google宣布切换到openjdk上这条新闻。

2017/3/13 补充:在Android N上,已经切换到OpenJDK了;基本可以认为Android SDK下的源码与JDK相同。(OpenJDK与SunJDK的差别可以看R大的回答:Java官方(Oracle/Sun)发布的JDK,和开源项目OpenJDK,里面包含的JVM是否相同? - RednaxelaFX 的回答 - 知乎