[翻譯]用Dart塑造Android未來


明天回家,今天下午瞅時間翻譯了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應用上的新編程語言的神秘面紗來開啟一段新的旅程~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM