为什么 Android 的 Java 源代码实现与相同类的常规 Java 实现不同?



我决定开始为Android编码。在做出这个决定之前,我花了很多时间提高我的Java技能,希望它也能帮助我进行Android开发。

今天,在打开一些类(例如HashMap(后,我看到Android实现与"常规"实现不同。

有人可以向我解释为什么与 GUI 和触摸无关的类需要在 Android 中以不同的方式实现吗?为什么不使用已经存在的相同类?

我寻找答案,但没有找到。如果已经问过这个问题,我将很高兴获得它的链接并锁定帖子。

这一切都与版权、许可和大公司试图保护他们的"地盘"有关。

背景是Java最初是由Sun Microsystems开发的专有代码库。 提供给开发人员的 Java 类库源代码由专有许可证保护。

2007年,OpenJDK 6作为开源发布。 Google研究了OpenJDK,并与Sun就许可进行了谈判,但他们决定最好根据已发布的Java语言规范和Java SE javadocs进行洁净室重新实现。 除此之外,这让谷歌能够重新审视用户界面框架,以及对移动平台至关重要的其他API。 最终的结果远远优于Sun的Java ME产品。

但孙和谷歌之间的关系仍然很友好。

然后甲骨文与Sun合并,企业文化发生了变化。 甲骨文和谷歌之间发生了一场大诉讼,这破坏了甲骨文和谷歌在Java生态系统中进行重大合作的任何机会。

有关更多背景信息,请阅读以下维基百科文章:

  • Java编程语言:历史。
  • 安卓:历史。
  • 甲骨文美国公司诉谷歌公司

不同的 SDK(甚至来自同一个发布者(可以有不同的类实现,但是标准类在大多数情况下的行为应该是相同的。几年前,差异甚至更大。

最新更新