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

标签 java android implementation

我决定开始为 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 和 Google 之间的关系仍然很融洽。

然后甲骨文与 Sun 合并,企业文化发生了变化。甲骨文和谷歌之间发生了一场大官司,这使得甲骨文和谷歌在 Java 生态系统中的任何重大合作机会都破灭了。

有关更多背景信息,请阅读以下 Wikipedia 文章:

  • Java Programming Language: History .
  • Android: History .
  • Oracle America, Inc. v. Google, Inc.
  • 关于java - 为什么 Android 的 Java 源代码实现与相同类的常规 Java 实现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433647/

    相关文章:

    java - Android 4.4 ConsumerIr.transmit 变得疯狂

    java - Hibernate 字段或构造函数或两者的验证注释?

    java - Android,有没有API可以从邮箱(本地/网络)读取邮件?

    algorithm - 如何使用KDTrees实现最近邻搜索?

    byte - crc16实现java

    java - 使用类的对象调用另一个类的方法

    java - 如何从sqlite数据库android获取一个值?

    Java - 从字符串中获取名称

    java - 如何使用 Gson 将 JSONArray 转换为 List?

    xml - android: 简单的 LinearLayout 和 fill_parent 问题