最全[译] google会背叛并杀死Android吗?,2024年最新Golang入门视频教程

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Android是目前为止世界上最流行的平台,支持超过20亿台移动设备。毫无疑问,这是一个巨大的成功。

尽管如此,我怀疑Android的发展前景可能不如过去那么乐观。

我第一次产生这种想法大约始于一年前。当时谷歌宣布Kotlin编程语言将正式支持Android开发。 这个公告引发了Android开发者们极大的热情,但我却无法加入这一浪潮。

我试图去了解Kotlin将如何与Android互惠互利,但我所能看到的仅仅是一个已经分散、混乱的开发生态系统的进一步碎片化。

我曾希望谷歌会与我们分享更多的信息,但他们没有。他们只是说Kotlin得到了官方的支持,因为它是“更好的”开发语言,会集中精力推广它,并将Kotlin示例添加到了官方文档中。

一个最直接明显的问题 -Java在Android上的路线图是什么? - 仍未得到答复。

我为什么会写这篇文章:

有些时候,我想与我博客的读者们分享一些悲观的想法。 所以,我写了一篇文章:通过一系列的量化分析来说明Kotlin的引入可能会对Android产生副作用。 令人惊讶的是,这篇文章吸引了不少读者的关注并收到了很多反馈。

我分析了这些反馈,并指出大家对于JetBrains为什么要发明和推广Kotlin似乎存在着误解。 许多开发人员专注于技术方面,却忘记了JetBrains如果没有明确的商业模式就不会在Kotlin上投入如此巨大的资源。没问题,我也是这样写的。

下一步我想分享一些我认为Google会采用Kotlin的原因,但我陷入了数月的困境。

最开始我认为Google采用Kotlin是因为他们与Oracle在Android上使用了Java这一问题上存在持续的法律纠纷。我觉得Kotlin可以帮助谷歌摆脱这个纠纷。然而,在详细研究了甲骨文与谷歌的诉讼之后,我觉得我想错了。

我的心中逐渐产生了另一种更可怕的假设 - 谷歌采用Kotlin并伤害我们以更好地对抗甲骨文的诉讼。

接下来我将与你们分享我这个可怕的推测。

请记住,这篇文章是我系列文章中的第三篇。 它建立在我的第一篇文章的内容基础上,这篇文章解释了谷歌为什么采用Kotlin,第二篇文章总结了甲骨文与谷歌的诉讼。 我假设你已经阅读了本系列的前两篇文章。

Google negotiated Java license with Oracle:

甲骨文与谷歌官司中的一个令人惊讶又觉得有趣的证据是软件工程师Tim Lindholm给“Android之父”安迪鲁宾发送的一封电子邮件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请允许我解释下这里到底发生了什么事情:

也就是说,Alan Eustace认为从Android里移除Java API 是很难威胁到Safra Katz的。 但是我们认为在谈判中提出Java API 的替代方案是有价值的,这样我们就能获得使用Java API 的更好的条款和价格。 在我们看来,Obj-C提供了一种可信的替代方案。 我们想知道的是你为什么讨厌这个想法的原因,不管你认为我们在理解这个方案时错过了什么。

这里提到了两个人:Google高级执行官Alan Eustace和Oracle的高级主管Safra Katz。 这封电子邮件的日期大约是在Oracle收购Sun后大约六个月的时间,在Oracle起诉谷歌之前大约两个月。

在我对Oracle与Google诉讼的评论中,我提到Google肯定知道Java API是受版权保护的,并且获得了Sun的许可。事实证明,在Sun被收购之后,他们还与甲骨文进行了谈判。

请注意Google是如何威胁Oracle要从Android中移除Java API 的。 他们并不打算真正这么做,但他们认为这样的威胁可以让他们获得更好的Java使用许可证条款和价格。 现在请记住这个策略。

这封电子邮件中最引人注目的部分是:

(拉里和谢尔格)实际上要求我们去做的是调查替换Android和Chrome中的java语言的技术方案。 我们已经完成了其中一些,并认为他们都很糟糕。

我在解释Google为什么采用Kotlin时,描述了谷歌的一位中层管理人员和一位高管之间关于是否采用Kotlin的虚拟对话。 我用它来告诉你,谷歌之所以采用Kotlin是因为它“更好”或者“开发者社区要求他们这么做”这种想法是荒谬的。我还表示,Kotlin的采用可能需要Google的高层管理人员,甚至是董事会的批准。

现在你知道了,谷歌创始人拉里佩奇和谢尔盖布林甚至在甲骨文起诉谷歌之前就直接参与了Android中使用了Java语言这个问题。 今天,当Google处于数十亿美元的诉讼中时,我认为Google公司里的人是不会讨论Kotlin是一种“更简洁的编程语言”这个话题的。

我们得出结论,我们需要根据我们的需求通过谈判协商来获得Java的使用许可协议。

但是,但是,但是…谷歌这么多年来一直说Java API是不受版权保护的。 他们说,贪婪的甲骨文没有理由起诉他们!那么他们为什么会得出结论:他们需要通过谈判来获得Java的使用许可协议呢?难道是谷歌急于向甲骨文捐赠数亿美元,或者是他们向我们和法院撒谎吗?

谷歌曾经在诉讼中辩护称他们认为API的版权将“终结我们今天所知的软件行业”。 事实证明,早在甲骨文起诉Google之前,API就有了版权概念,正因为如此,软件行业才会发展至今。

OpenJDK:

Tim Lindholm在撰写上述电子邮件的时候OpenJDK已经三岁了。 Google是可以将这个开源的Java API实现集成到Android中的。 但是,顶级的Google高管寻找到了Java的替代品,并试图操纵Oracle高管给予他们折扣。 本电子邮件中甚至没有提到要把OpenJDK作为选项。

为什么谷歌不直接免费使用Oracle的开源OpenJDK,而是去与甲骨文谈判获得Java API的使用许可证?

OpenJDK是根据GPL + Classpath Exception获得许可的,而Android主要是在Apache下获得许可的。 将OpenJDK整合到Android并不能帮助到谷歌,谷歌高管对此非常了解,因此在这次讨论中甚至没有提出这个选择。

然而,大约六年之后,随着Android Nougat的发布,OpenJDK被引入了Android。 是什么让Google改变主意?

OpenJDK和Android的许可协议都不会改变,所以OpenJDK并不是Google的安全选择。 只是在那个时候,谷歌已经实在是没有办法去说服美国联邦巡回上诉法院相信Java API是没有版权的。最高法院拒绝了谷歌的请求,要求审理此案。与此相比,与OpenJDK相关的风险不再那么大,所以Google决定整合它。

但是请不要误会 - 谷歌与Android中的OpenJDK相关的风险仍然很大。

首先,甲骨文可以向法院请求Android Nougat版本之后的系统禁止使用OpenJDK,甲骨文肯定会赢得诉讼,并获得禁令。 即使谷歌能够说服法庭需要进行另一项单独的审判来确定Android Nougat版本之后的系统的侵权损害赔偿,甲骨文很可能不会退缩。

虽然谷歌有机会摆脱Android中的OpenJDK,但它不可能仅凭这一点就希望能打赢数十亿美元的官司并掌控Android的未来。

所以,谷歌看上了Kotlin。

Kotlin如何帮助Google:

还记得Google在2010年与Oracle进行Java许可证谈判时使用的策略吗? 他们试图证明他们可以把Android迁移到别的技术上,希望甲骨文能够给予他们折扣。 今天,我们知道它并不像预期的那样有效。

我的一个推测是:谷歌想通过Kotlin来进行一次炒作,借此来证明他们这次是认真的。这样的话,如果谷歌决定与甲骨文达成和解,这可能是和解谈判的一个很好的筹码,甚至可能是唯一的筹码。因为就这起诉讼而言,谷歌似乎落于下风。

我个人认为这个解释的可能性非常低。甲骨文明确表示,他们希望获得公平的Android份额,但谷歌曾用Android做过的所有事情都表明他们不会让任何人参与进来。看起来甲骨文和谷歌的地位相差太远,无法成为一个可行的解决方案选项。

即使Kotlin只是一个谈判的的筹码,谷歌仍然需要证明他们可以将Android从Java迁移到Kotlin。

除非…

从理论上讲,谷歌可以重新实现Kotlin API以消除Android对Java API的依赖。 如果Java API不再使用,Google将能够从Android中删除OpenJDK。

Android会在删除OpenJDK后放弃对Java应用程序的支持吗? 我不这么认为。

以Facebook为例,他们的代码库中很可能早就已经积累了一百万行Java代码。 将如此庞大的项目迁移到Kotlin将是一项非常困难和长期的工程,这将耗资数百万美元。 在可预见的未来,我认为Facebook不会达到这个水平。Google是不可能放弃对类似于Facebook等其他应用程序的支持的,因此它别无选择,只能继续使用Java来支持Java应用程序。

在删除OpenJDK之后,Andorid可以在编译之前将Java编译为Kotlin,或直接编译为使用Kotlin API的代码,从而解决Java API缺失的问题。这实现起来并不困难。

所以,谷歌采用Kotlin是为了从Android平台移除有争议的Java API。

Google的世界末日场景:

据我所知,如果甲骨文胜诉,理论上,他们可以在Android中获得份额,无论它是否会继续使用Java API。

甲骨文表示,Google侵犯了他们的版权,并创造了一个基本上将Java从移动市场中淘汰的竞争产品。 即使谷歌此时删除侵权部分,法院仍可以判定谷歌需要对甲骨文核心业务的长期损害负责。在这种情况下,即使侵权行为停止,甲骨文也可以获得Android的份额。

这对谷歌来说是一个世界末日的场景,因为甲骨文将获得Android的份额,谷歌将无法做任何事情。

除非…不会再有Android。

Fuchsia:

关于Android的一个最神秘的话题是Google的新“秘密”操作系统Fuchsia是否真的打算取代Android。

如果Fuchsia真的取代了Android,这对于Android生态系统的参与者来说影响将是巨大的,但Google不会与我们分享任何信息。我和其他许多Android开发人员向Google的官方代表询问了Android和Fuchsia的路线图,但据我所知,没有人能够回答这个问题。

所以,让我回答一下关于Android的一个大问题:什么是Fuchsia?

Fuchsia是谷歌给自己买的的一份保险。如果谷歌最终被判侵权,甲骨文将获得Android生态系统或利润的份额,那么Google将杀死Android并迁移到Fuchsia。

但是,Fuchsia要想取代Android,至少必须满足三个前提条件:

  1. Fuchsia必须拥有足够多熟练的开发人员,以形成开发者生态系统。
  2. 必须有设备能够真正运行Fuchsia。
  3. Fuchsia必须支持Android应用程序。

我相信取代一个世界上最流行的操作系统将远不止于以上三个条件。 我选择专注于这三个先决条件的原因是:他们中的每一个都是强制性的,而且可能需要很长的时间才能实现。

所以,即使谷歌决定杀死Android转而去支持Fuchsia,我们仍然会有好几年的时间,因为在短时间内无法实现上述目标。

除非… Google今天已经在努力满足这些条件。

Flutter:

Flutter是谷歌新发布的移动开发SDK,支持Android和iOS。它是用一种名为Dart的语言编写的,它在底层不使用Java API。

Steve Yegge(一个将会盗取谷歌的Android系统的人)曾在他的帖子中说过这样一段话:

谷歌是不会被竞争对手所超越的,他们回答说:“哦,是吗?你是不可能与我们竞争的,因为我们要与自己竞争!”,于是他们推出了Flutter,说这是一种与原生Android竞争的技术栈,但是他们没有完完全全的做到这一点,只是Android团队拒绝承认罢了。

这篇文章精确地表达了Flutter所处的荒谬环境。也就是说,我不认为Google确实在与自己竞争。

那么,让我回答另一个与Android相关的问题:Google为什么启动并推广Flutter?

Flutter也是用于编写Fuchsia应用程序的官方SDK,这不是什么秘密。 如果他们决定在有朝一日杀死Android而选择Fuchsia,鉴于谷歌需要建立一个由熟练的开发人员组成的生态系统,那么让Android开发人员提前了解Fuchsia上的应用程序开发是有道理的。

Project Treble:

谷歌的Project Treble的官方文档的开头有这样一段话:

The Android 8.0 release includes Project Treble, a major re-architect of the Android OS framework designed to make it easier, faster, and less costly for manufacturers to update devices to a new version of Android. Treble is for all new devices launching with Android 8.0 and beyond (the new architecture is already running on the Developer Preview for Pixel phones).

因此,Google投入了相当大的资源,以减少设备制造商们更新设备至新版本的Android系统的成本。 哇,Google对这些原始设备制造商真的是太好了。

你已经知道会发生什么,对吧?

事实上,我可以向您解释Google是如何抓住每一次机会去为OEM厂商提供帮助的。 我可以告诉你,原始设备制造商停止发布旧设备的更新与Treble无关。 我甚至可以告诉你,Treble并不是真的与这一切有关。

说回到Fuchsia。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值