Fork me on GitHub

明天回家,今天下午瞅时间翻译了Cyril Mottier的另外一篇有关Android前景的文章。

原谅地址是:http://cyrilmottier.com/2014/06/12/shaping-the-future-of-android-with-dart/,大家可以查看一下。

全文翻译内容如下:

在过去的这周中,有大量关于一些新型现代的编程语言的讨论、微博(Tweets)、博客、文章等。不容置疑,这些突然而起的漩涡因苹果公司在WWDC 2014上揭开了名叫Swift的崭新语言的神秘面纱而激起。在过去两周的假期中,我读到了大量关于Swift编程语言的东西,它的语法,它的特性、它的OC(Objective-C)互通性等等。但是我也看到一些人从开发人员的角度宣扬Android相比于iOS已经过时了。为什么?因为它是基于Java的。

坦诚地说,我认可他们的说法。我宣扬Google应当抛弃Java而转向其它语言已经时间不短了。情况是:我觉得Google一直在开发一种替代编程语言,至少和Apple秘密开发Swift一样久了。所以呢?这种现代编程语言是什么呢?一些人觉得Go语言很匹配这种传言,但我个人认为Dart更恰当一些。在假期中,我阅读和学习了大量关于Dart的东西。在我看来,在许多层面,Dart比Go更适合Android:它更成熟,基于虚拟机(就像Java一样),更适合Google生态系统,并且,在保持语言简单性的同时,它有了极其简单的学习弧线。对于Google而言,的确是时候将Dart成为Android,乃至,从全球而言,成为公司本身的未来。

Java在退休室中已有位置

我爱Java。真的。但是Java正在变老,已老到该退休了。即便Java 8被认为是其编程语言历史上最大的变革之一,Java依然携带着许多的弊端、局限性和问题。这些问题中大多数从第一天开始就一直在那儿,并且,将由于语言向后兼容的天性而持续存在。另一方面,Dart从被创建的第一天开始就一直牢记简单的一点:修复这些普遍且复现的问题。Dart在编程流中解决了许多麻烦,并且给开发人员创建了极其强大且流畅的API。下面是Dart语言的一些基础却现代的特性列表:

  1. 非原始类型。Dart中,一切皆是对象。甚至bool,等价于Java中的boolean,也是一个对象。纯面向对象编程语言应该是完全关乎对象的。Java中的原始类型仅仅是实现的细节。
  2. 大幅简化的冗杂语法。创建编译期已知的公开常量可能通过关键字const来完成。不再有public static final。关键字public和private不再是语言的一部分。变量、方法和类的可见性基于Dart的命名规范:一切默认为public。如果实体名以”_”开头,那么它就是private的。
  3. 已命名和工厂构造函数。Java要求构造器依据类名命名,例如Rectangel。如果创建了Rectangle(int left, int top, int right,int bottom)和Rectangle(int left, int top,int width, int height),那么你将以编译期错误结束。因为Java使用参数来分辨构造器。解决这个问题的一种方式是创建一个静态工厂方法。Dart以允许你创建已命名(和可选的工厂)构造函数的方式方法修改了这个问题。
  4. 现代参数传递:Dart支持按位和已命名参数。他们是可选的,并且具有默认值。
  5. 还有:混合类型(mixins),隐式接口,isolates(简单的并发模型)。

是开发人员而非律师制造软件

Google和Oracle在Android平台上Java的使用已经斗了好久。Google VS Oracle案很可能是计算历史上最重要的案例之一。我们目前似乎正处在两大巨型公司之间的和平时代……或者是冷战。不必再说对于Google而言继续依靠竞争对手管理的编程语言过于危险。他们显然不能负担得起继续遭受官司的伤害。

控制语言,使之发展

为了能够向前发展,Google必须完全控制他们正在使用的编程语言。例如,Java  8成为微小的圣杯已经有段时间了。在过去我们听到了许多关于它的东西。而且,大量特性和增强已经被延期了。现在,Java 8拥有了一些诸如闭包的特性。我们有可能在Android平台上不会拥有这些特性太久……

通过控制他们使用的语言,Google可以在无论任何必要的时候持续地在所有平台(移动,网页和服务器)上维护和改进这种语言。Apple在过去和现在都依旧完美地如此对待OC和Swift。例如,他们仅仅通过改进OC的方式在3年前就引入了闭包的概念。时间再近一点,ARC和字面值引入进来。Apple现在控制这门语言。他们可以使之发展并且在恰当的时候这样做。Google对于Dart处于相同的位置,就像Dart官网所陈述的那样:

Dart是个开源项目,由Google和别的地方贡献力量。—Dart官网:www.dartlang.org/...

理论上讲,这段话表明任何个人都可以通过访问源码和提交补丁和增强来参与这门语言。实际上,就像Android开源项目一样,只有Google控制Dart,因为它是唯一一家有充足资源来维护这个项目并使之前进的公司。个人层面来讲,只要Google保持Dart开源并倾听其它的贡献者的声音,我对Google控制这门语言完全表示OK。

一门语言控制所有

通过引进Android平台的Dart,Google将填平Google开发生态系统上唯一残留的鸿沟。Dart已经允许开发人员为网页和服务器创建应用。将Dart导向Android将是这座大厦的最后一块基石。的确,这将使Dart成为运行在所有主要平台上的唯一编程语言:移动,网页和服务器,且是所有软件公司都想达成的“一次编译,到处运行”的座右铭的更进一步。

最后,Dart是简化Google开发语言投入的一次机遇。的确,Google在过去一直在使用多种不同的语言:C++,Python,Java,Javascript等。Dart语言会是联合所有语言以使Google产品/服务的SDK更加协调紧凑的十字路口。

发射Dart升空的火箭

Dart很优秀,且已出现多年。不幸的是,它还没有达到被认为是网页开发中的必然语言的临界规模。这主要是因为这样一种事实:网页开发人员似乎并不认为Dart带来了足够的改进提升以使这种转变是值得的。使Dart成为Android平台的默认语言将会是推动自身到下一层次并最终使其成为编程语言景观中的一流公民的最优一步。

要求开发人员使用一门崭新的语言在起初的时候总是很难推动的。然而,当你知道你要将要学习的语言能够用于其它平台的时候,这将是非常鼓舞人心的。作为一名Android开发人员,我将非常乐意在Android上使用Dart,而且能够在任何想要的时候轻易地创建一个小的网站。

总结

推动Dart到Android上显然表示Google将不得不努力工作以解决诸如性能、兼容性和互通性等问题。在Dart起初是为桌面网页浏览器开发的前提下,如何确保Dart能够像受限设备上的Java一样运行高效呢?如何确保新的基于Dart的应用能够在多数设备上运行呢?通过只将DartVM嵌套在Android 4.5(这仅仅是个猜测,我不知道下一下Android开发版本。也是是5.0……事实上我并不在乎。我想要的仅仅是一个拥有一些新的很酷的ART特性的Android版本)之上的设备?通过dart2dex程序将应用转化成Dex?如何促使人们在Dart中使用Java API或在Java中使用Dart API? 所有的这些问题都很难解决,但这正是Google的优势所在:找到所有这些问题的方案。如果你像我一样觉得Android应该转向Dart,你可以在这个Dart bug追踪器(http://dartbug.com/19266)上加星标。Google I/O大会在即, 我期待着6月25号的主题演讲上倾听Google揭露Android未来的一切东西。Google,是时候勇敢起来了。让我们通过抛弃Java、揭开Dart作为Android应用上的新编程语言的神秘面纱来开启一段新的旅程~

posted on 2014-09-26 16:20  SilentKnight  阅读(2311)  评论(4编辑  收藏  举报