成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

Google Inbox 是如何跨平臺重用代碼的?

2014-11-28 13:29:02來源:酷殼作者:

開發一個移動應用在當下并不是一件容易的事情。如果想要獲得最多的用戶,你的應用通常需要覆蓋 iOS, Android, 和 Web 三大平臺。這就意味著同一個應用需要開發三個版本,使用 Objective-C 或者 Swift 開發 iOS 版本……

開發一個移動應用在當下并不是一件容易的事情。如果想要獲得最多的用戶,你的應用通常需要覆蓋 iOS, Android, 和 Web 三大平臺。這就意味著同一個應用需要開發三個版本,使用 Objective-C 或者 Swift 開發 iOS 版本,使用 Java 開發 Android 版本,使用 JavaScript/CSS/HTML5 開發 Web 版本。工作量增大的同時也意味著有更多的 bug 需要修復。

這個問題也是 Google 在開發 Google Inbox 時致力要解決的。在最近發布的這款應用中,Google 使用了一些工具實現了70%的代碼跨平臺復用。

\

Google Inbox 覆蓋 iOS, Android, Web 三個平臺,它們使用的是同一個后臺代碼邏輯,只是前端的用戶體驗和平臺相關特性的實現有所不同。Google 自主開發了一套輔助工具將 Android 版本的 Java 代碼邏輯編譯為 Objective-C (針對 iOS 平臺) 和 JavaScript (針對 Web 瀏覽器)。 Java 到 JavaScript 的編譯由 Google Web Toolkit SDK 完成,Java 到 Objective-C 的編譯則由 J2ObjC (j2objc.org)來完成。

J2ObjC 是一個開源項目,由 Google 在2013年發布。Google Sheets (Google Docs 中的電子表格部分) 也使用了 J2ObjC,而 Google Inbox 則是目前使用 J2Objc 最多的 Google 項目。

Google Inbox 復用的代碼邏輯包括:對話 (conversations),提醒 (reminders),聯系人 (contacts)。還有網絡相關功能和離線同步。這些代碼邏輯的復用節省了大量的時間和成本。

在產品設計時,Google 將這些可復用功能劃分為抽象的邏輯概念,比如:提醒的邏輯放在 “reminder.java” 中,可以被 Android UI 調用。對 iOS 版本而言,J2ObjC 將 “reminder.java” 編譯成 Objective-C 代碼,再由 iOS UI 調用。

Google 沒有跨平臺編譯 UI 部分的代碼,因為不同平臺的UI特性各有不同,盲目統一會導致非常糟糕的用戶體驗。代碼復用只是針對可以共享的后臺邏輯,前端的UI實現是完全原生 (native) 的。這與 Xamarin (一個基于 Microsoft C# 的跨平臺移動開發工具) 提出的概念類似。

跨平臺代碼復用通常會帶來一些性能上的問題。Garrick Toubassi,Engineering Director 和 Google Inbox 項目組成員,對此表示: “性能上的影響如果有的話,也可以說是微不足道的。我們做過大量的性能測試。因為沒有加入額外的中間層來處理跨平臺兼容性,所有代碼最后都是平臺原生代碼。J2ObjC 編譯生成的目標代碼和 Java 源代碼擁有大致相同的對象數量和對象圖譜復雜度 (object graph complexity) ”。

Google 使用的整套方法解決了跨平臺移動開發中的一個很重要的問題,同時也推進了安卓先行 (Android-first) 的移動開發策略。

主站蜘蛛池模板: 丰宁| 长宁区| 司法| 德保县| 舟曲县| 南澳县| 宁南县| 和静县| 道真| 烟台市| 海兴县| 翁源县| 平安县| 桑植县| 务川| 马山县| 红原县| 保定市| 邛崃市| 武山县| 永康市| 万山特区| 麟游县| 叶城县| 博湖县| 黎平县| 如皋市| 陈巴尔虎旗| 迁安市| 刚察县| 威海市| 两当县| 金门县| 垣曲县| 丰顺县| 甘孜| 库尔勒市| 永康市| 巩义市| 绍兴县| 商都县|