我决定开始为Android编码。在做出决定之前,我花了很多时间来提高自己的Java技能,希望它也可以帮助我进行Android开发。
今天,在打开一些类(例如HashMap)之后,我发现Android实现与“常规”实现不同。
有人可以向我解释为什么与GUI和触摸无关的类需要在Android中以不同的方式实现吗?为什么不使用已经存在的同一个类?
我搜索了一个答案,但没有找到答案。如果已经问过这个问题,我将很高兴获得它的链接并锁定帖子。
全部涉及版权,许可和大公司试图保护其“地盘”。
背景是Java最初是由Sun Microsystems开发的专有代码库。提供给开发人员的Java类库源代码已获得专有许可证的保护。
2007年,OpenJDK 6作为开源发布。 Google考察了OpenJDK,并与Sun商讨了许可问题,但他们认为最好基于已发布的Java语言规范和Java SE javadocs进行无尘室重新实现。除其他外,这使Google可以重新审视用户界面框架以及其他对移动平台至关重要的API。最终结果是大大优于Sun的Java ME产品。
但是Sun与Google之间的关系仍然很亲切。
然后,Oracle与Sun合并,并且企业文化发生了变化。甲骨文和谷歌之间发生了一场大官司,这破坏了甲骨文和谷歌在Java生态系统中进行重大合作的任何机会。
有关更多背景,请阅读以下维基百科文章:
不同的SDK(甚至来自同一发布者)可以具有不同的类实现,但是对于大多数情况,标准类的行为应相同。多年前的差异甚至更大。