1. 程式人生 > >【2017 Google IO】Android 開發者關心的都在這!

【2017 Google IO】Android 開發者關心的都在這!

背景

美國時間 5月 17 日,Google
舉辦了成立以來一年一度的開發者大會,我更覺得是“產品釋出會”。各種炫酷科技,好玩的產品以及走在世界前沿的新技術。

今年的 Google I/0 2017 也不例外,除了一些高科技比如:Google Home、Google Lens
外,最令程式設計師關心的無非就是新一代的 Android 系統。

去年 I/O 大會帶來的是 Android 7.0 牛軋糖(Nougat),今年 Google 給我們帶來了全新一代的 Android
系統- Android 8.0 Oreo,奧利奧。

下面一起來看看都有哪些值得我們關注的:

畫中畫模式:

簡單的說就是多視窗的功能,比如一邊看視訊一邊網購一邊和女票聊天;

智慧剪貼簿:

不在是瀏覽器層面的“記住密碼”,在新系統中,當你開啟一個 app 需要輸入登入資訊(假如你曾經在 Chrome 輸入過賬號和密碼),這時候 智慧剪貼簿 將會自動提醒你貼上輸入。這樣的描述是無法體會到其中的強大之處, 只有親手操作使用才會有真實的感受。

後臺程序管理:

允許使用者限制後臺程序,這無疑會提升 Android 0 的續航能力。

基於機器學習的文字識別:

在 Android O 中,當用戶開啟任意一個文字,神經網路都能識別並瞭解到它是什麼,並幫助使用者自動選擇正確的內容。

再也不用擔心手指太粗、無法正確選中,總是喪心病狂戳螢幕啦,文字識別功能甚至可以幫使用者判斷開啟選中部分所需要的app:例如選中一段地址,谷歌地圖會提示彈出;選中一個郵件地址,Gmailapp也會提示彈出。

Kotlin 語言:

Kotlin 是一門支援多正規化、多平臺的現代靜態程式語言。

  • Kotlin 是一個基於 JVM 的新的程式語言,由 JetBrains 開發。
  • Kotlin 可以編譯成 Java 位元組碼,也可以編譯成 JavaScript,方便在沒有JVM的裝置上執行。
  • JetBrains,作為目前廣受歡迎的 Java IDE IntelliJ 的提供商,在 Apache 許可下已經開源其 Kotlin 程式語言。

  • 重點是:
    Kotlin 已正式成為 Android 官方開發語言。

作為壓軸出場的 Kotlin 語言,而且 Google 也任命其為 Android 的官方開發語言,作為 Android 開發工程師們,有必要深入瞭解一下 Kotlin。

Kotlin 的特性

很多人猜測這是一款和蘋果 Swift 一樣專為移動平臺優化的開發語言。其實,JetBrains 在 2010 年首次推出 Kotlin 程式語言,並在次年將之開源。

Android Studio 3.0 已經整合了對 Kotlin 的支援,不再需要額外安裝外掛。

JetBrains 表示,他們會繼續支援其它平臺。如果你還記得的話,去年曾有報道稱 Google Android 考慮採用蘋果的 Swift 語言,而 Swift 就被稱為是蘋果的 Kotlin。

相容性:

Kotlin 與 JDK 6 完全相容,確保 Kotlin 應用程式可以在較舊的 Android 裝置上執行,無任何問題。

它是一個執行在 Java 虛擬機器上的靜態型別程式語言。Kotlin 雖然與 Java 的語法不相容,但設計成可以與 Java 程式碼互操作,可複用現有的 Java 類庫。

Kotlin 工具在 AndroidStudio 中完全支援,與 Android 構建系統相容。

效能

Kotlin 應用程式執行速度與 Java 類似,非常類似的位元組碼結構。

隨著 Kotlin 對行內函數的支援,使用 lambdas 的程式碼通常比使用 Java 編寫的程式碼執行得更快。

互操作性

Kotlin 可與 Java 進行 100% 互操作,允許在 Kotlin 應用程式中使用所有現有的 Android 庫。

Kotlin 能夠與既有工具 / 框架如 Dagger、Spring、Vert.x 等整合,也能讓既有的基於 Java 的服務端與 Android 專案逐步遷移到 Kotlin。

Kotlin 可與 Java 語言無縫通訊。這意味著我們可以在 Kotlin 程式碼中使用任何已有的 Java 庫;同樣的 Kotlin 程式碼還可以為 Java 程式碼所用

佔用空間

Kotlin 有一個非常緊湊的執行時庫,可以通過使用 ProGuard 進一步減少。

在真實的應用程式中,Kotlin 執行時只添加了幾百種方法,並且小於等於 100K 的 .apk 檔案的大小。

編譯

Kotlin 支援高效的增量編譯,因此,對於清理構建來說,增加的構建通常與 Java 一樣快或更快。

簡潔和安全性

Kotlin 比 Java 更安全,能夠靜態檢測常見的陷阱。如:引用空指標;

Kotlin 比 Java 更簡潔,通過支援 variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation 等實現。

Kotlin 在程式碼中很少需要在程式碼中指定型別,因為編譯器可以在絕大多數情況下推斷出變數或是函式返回值的型別。這樣就能獲得兩個好處:簡潔與安全。

Google 的 Android 團隊稱讚 Kotlin 擁有出色的設計,是一種成熟的語言,能讓 Android 應用的開發更快更有趣。那麼我們作為 Android 開發者,怎能不把握技術的潮流呢。

如何學習:

I/O 大會後,各大 Android 討論群都沸沸揚揚的議論著 Kotlin 。有的開發者產生了焦慮:”java 都沒學好,現在又多出一門 Kotlin”。

其實大可不必焦慮,沒必要患得患失,更沒必要打亂自己的學習計劃。按照形勢來說,Kotlin 是必須要學的,但是並不是說 Java 就可以不學了。

從上面的 Kotlin 特性可以知道,Java 和 Kotlin 是互通的,並且在一定時間內 Kotlin 不可能完全替代 Java 進行開發的。

這個過渡期起碼得有個 2-3 年,就像當年谷歌放棄 Eclipse 選擇 Android Studio 一樣,雖然不再支援 Eclipse ,但是很多公司還有一些 老專案 必須得在 Eclipse 上維護開發一樣。

相信往後很長的一段時間,Android 專案還是以 Java 為主,Kotlin 為輔。學習 Kotlin 不是一件緊急的事,作為一個技術人,要有自己的判斷力,大可不必趁著這次 Kotlin 的火熱去學,只需要把學習 Kotlin 加入自己的計劃即可。

程式語言都應該在思想上互通的,有程式設計基礎的開發者學習一門新語言都是很輕鬆的。

另外,很多新技術新動態都是從外國來的,所以把英文學好,直接看官方文件是最好的學習方式。

學習新技術,首推官方文件

  • 官網文件
  • 官網
  • 國內中文文件
  • Kotlin 官方文件中文翻譯

gitbook.com/book/hltj/kotlin-reference-chinese

  • Kotlin 中文站首頁

推薦的書籍

  • 《Kotlin for Android Developers》

這本書是 Antonio Leiva 的一本書,展示了 Kotlin 如何用於從頭開始建立 Android 應用程式。

總結

用馬雲爸爸的一句話結束本文:

要學會擁抱變化。世界上唯一不變的東西就是一切都在時刻改變,因此不要懼怕改變。




歡迎關注我的微信公眾號,獲取最及時的推送。

這裡寫圖片描述

相關推薦

2017 Google IOAndroid 開發者關心

背景 美國時間 5月 17 日,Google 舉辦了成立以來一年一度的開發者大會,我更覺得是“產品釋出會”。各種炫酷科技,好玩的產品以及走在世界前沿的新技術。 今年的 Google I/0 2017 也不例外,除了一些高科技比如:Goog

2017-05-17WebForm

應用 用戶 運行機制 net js代碼 客戶 asp.net 執行 intern ASP.NET分為:ASP.NET WebForm和ASP.NET MVC 運行機制:C/S(客戶端應用程序)代碼在客戶端執行,僅僅去服務器上的數據庫存取數據 B/S(網站應用程序)程序代

2017-05-18WebForm的Repeater控件和一些簡單控件

tar bsp textbox span -1 使用 str .text 內容 一、Repeater控件 1、 <%@ %> - 這裏面寫一些聲明和引用的 <% %> - 編寫C#代碼的 <%= %> - 往界面上輸出一個變量的值 &l

2017-05-21WebForm跨頁面傳值取值、C#服務端跳轉頁面、 Button的OnClientClick屬性、Js中getAttribute和超鏈接點擊彈出警示框。

代碼 height delet update size 內存 客戶 bar win 一、跨頁面傳值和取值: 1、QueryString - url傳值,地址傳值 優缺點:不占用服務器內存;保密性差,傳遞長度有限。 通過跳轉頁面路徑進行傳值,方式: href="地址?ke

2017-05-22WebForm內置對象:Application和ViewState、Repeater的Command用法

操作數 傳值 rep 服務器 創建 bject bsp strong () 一、內置對象 1、Application 存貯在服務器端,占用服務器內存生命周期:永久 所有人訪問的都是這一個對象 傳值:傳的是object類型可以傳對象。 string s =TextBox1.T

2017-05-30WebForm文件上傳

clas pre ext config onf javascrip col cep con 用 FileUpload控件進行上傳文件。 <asp:FileUpload ID="FileUpload1" runat="server" /> 屬性 accept="

2017-06-01Linq基礎+Lambda表達式實現對數據庫的增刪改查

partial 表名 .net 之前 滿足 image nbsp word 提交 一、Linq to sql 類 高集成化的數據庫訪問技術 使用Linq可以代替之前的Ado.Net。省去了自己敲代碼的實體類和數據訪問類的大量工作。 實體類: 添加一個Linq to sql

2017-06-02Jquery基礎

false 之前 fad xmlns hide rip 給他 wid abs Jquery就是Js集成的一些方法包。 註意:Jquery的引入位置在<head></head>裏。 一、選擇器 1、Id選擇器 $("#div1") 2、Cl

2017-06-05Jquery.ajax

this response http insert builder ont htm image 解析json AJAX 是一種網頁數據異步加載技術 通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部

2017-06-20Linux應用開發工程師C/C++面試問題之一:Linux多線程程序的同步問題

依次 其它 如果 開發工程師 logs 特殊 另一個 特殊情況 發生 參考之一:Linux 線程同步的三種方法 鏈接地址:http://www.cnblogs.com/eleclsc/p/5838790.html 簡要回答: Linux下線程同步最常用的三種方法就是互斥鎖、

2017-07-01Linux應用開發工程師面試問題記錄之二:關於結構體的大小及內存對齊問題

偶數 而且 strong span net 但是 開發 f11 flag Tencent後臺服務器開發有一道題是計算一個結構體的sizeof的大小: struct strData { int m_Int; char m_Char; short m_Short; char

2017.10.28noip賽前集訓 | T1 差分

none urn algo 技術 mil turn 現在 one 輸入格式 T1 【題目描述】 (求區間疊加最大數)有 n 頭牛,每頭牛有個喝水時間,這段時間它將 . 獨 . 占一個 Stall。現在給出每頭牛 的喝水時間段,問至少要多少個 Stall 才能滿足它們的

2017 noip賽前學習記錄 · 我愛學習

nbsp 學習 spa 今天 str 有時 lca 試題 去年 今天莫名頹起了noip遊記。 看了一下去年的復賽試題,啊,我果然是只蒟蒻! 1、(2017-10-30) 要學一下 LCA+倍增 ,如果還有時間的話,再看一下 樹鏈剖分 吧。 2、(2017-10-31

2017.10.30noip賽前集訓 | T1 軍訓排隊模擬

printf 們的 amp can ast 老師 truct 什麽 struct T1 軍訓排隊 【題目描述】 今年招生招了 n 個班。每個班的小學弟小學妹,在操場上面向主席臺站成了一列。各個班的新生 隨便站成一列,因為他們不懂事,所以也沒有間隔一個固定的距離也沒有按照一

2017.11.07noip賽前集訓 | T1 遭遇DP

include () 跳過 img 情況下 情況 all algorithm true T1 遭遇 【題意】 ??座樓房,立於城中。 第??座樓,高度???。 你需要一開始選擇一座樓,開始跳樓。在第??座樓準備跳樓需要????的花費。 每次可以跳到任何一個還沒有跳過的樓上

2017-12-06winfrom 窗體自啟最大化,控件自適應

win con form width from int public osi convert 先將窗體windowstate屬性設置為Maximized public partial class Form1 : Form { public F

2017-12-12Winform----Datagirdview使用

cell for source 使用 ted att ring ssa 集合 1、數據綁定 DataGirdView.DataSource = list集合 2、復選框 獲取復選框選中狀態 for (int i = 0; i < dataGr

實例演示Android安全須知

Android;移動安全;四維創智軟件免費像是一種潮流,收費軟件生存空間變小,只能變向獲利。 於是..... app加入信息搜集,用戶行為收集,植入廣告,留後門。 為了利益,修改帶資金的app,竊取用戶資金。 app加入挖礦功能,挖黑金。 利用第三方sdk接口收集用戶信息。 app中插入廣告鏈接。 app中植

音視頻Android CallLib 開發指南

SDK 音視頻 開通方式音視頻服務開通,請參考音視頻開通方式說明。使用說明由於底層引擎技術不同,2.6.0 之後的音視頻 SDK 與 2.6.0 之前的 SDK 中的實時音視頻不能互通。音視頻 SDK 為商用收費功能,之前的 SDK 中的實時音視頻為免費測試功能,如果您還想使用之前的實時音視頻,可以使

輸出文件 Android 加密 模組原始碼分析

                                   Android6.0 加密模組解析