自谷歌宣佈Kotlin成爲 Android 開發官方支持的語言後,Kotlin的 這門 JVM 語言火速成爲衆多開發者關注的焦點,「養碼場」社羣內的養碼人對此也聊意甚多。
html
兩個多月過去了,Kotlin這門開源語言的人氣不斷攀升,甚至出現了「Kotlin:征服硅谷的編碼語言」的言論。據場主瞭解到,此言論的原因是,近日,Google的核心Android開發團隊已經在生產代碼中使用Kotlin。html5
雖養碼人對此討論甚多,但大多數也是持觀望態度:不敢輕易使用,雖然背後站着JetBrains 和 Google 這兩個巨頭。java
場主特地找到了一篇針對「Kotlin答疑解惑」的文章,答疑者是資深Kotlin 開發者劉自鵬。他,現就任於美團點評企業平臺研發部,獨立開發了 Twobbble(已開源)。這是一個 Android 平臺的第三方 Dribbble 客戶端,它徹底基於 Material Design 設計,不過值得一提的是,Twobbble 徹底使用 Kotlin 進行開發。web
做爲一個較早使用 Kotlin 的開發者,劉自鵬踩過的坑可謂是是數不勝數,加上獨立開發這樣一款精緻的 App 的經驗,如下針對Kotiln、獨立開發以及如何開發出精緻的 App 等問題作出的解答,可能會對你深刻了解Kotlin有所幫助。編程
提問1: 安全
在你看來,除了生態,Kotlin在語言方面還有哪些設計不足?或者說在實際使用中還有哪些須要workaround的方式或者比較醜陋的方法才能實現你所想要的東西?微信
劉自鵬:app
目前個人使用過程都仍是比較順利的,沒有遇到這些點。設計得好很差,我可能沒辦法去評論,但缺點:語言不可能完美,總歸可能藏着,但依託於java的生態,咱們總能找到workaround。框架
提問2:函數
若是Kotlin來開發app,從開發週期,效率來考慮,原生開發,html5混,當下哪一種模式相對好一些,當下流行什麼樣的模式?
劉自鵬:
使用Kotlin來開發app,效率上已是較於原來有一個很大的提高了。 而hybrid主要優點是跨平臺,下降多平臺的開發成本。純原生開發最大的優點是更好的體驗,更強的交互。沒有辦法去說哪一種方案更好,由於這都是根據你的業務需求來的。
若是你的業務中有某個頁面,它須要和iOS保持一致,而且內容能夠快速隨着業務需求去變化,hybrid很適合,若是沒有相似的需求,而且你的應用很注重交互體驗,那原生顯然更好。
提問3:
Kotlin的忽然出現,感受有點始料未及。我從事Java也有多年,也一直在想找本身的第二語言,最近在學習Python。前一段時間看了go,scala,Erlang語言,感受學習起來都不是很容易。
我大概有4個問題:
一、Kotlin會是讓人比較容易上手的語言嗎?
二、對於有Java經驗的人,學習起來還有哪些瓶頸要克服?
三、對於Kotlin這門語言,會不會熱過一陣以後,就消聲匿跡了呢,它將來的發展,你感受怎麼樣?
四、還有App使用kotlin開發,會比Java有什麼優點嗎?
劉自鵬:
針對1、二問題:按Kotlin開發團隊的話來講,Kotlin是一門以java開發者的思惟來開發的語言,Java 到 Kotlin的過渡是至關平滑的,只要熟悉基本語法,你幾乎能夠直接用你原來開發Java的思想去開發寫Kotlin代碼,而你學習更多Kotlin的特性就可以讓你代碼寫起來更加輕鬆簡潔,因此真的沒有什麼要克服的,多學習一些它的特性吧。
第三個問題:Android開發一直處於低糖的狀態,其實很多Android開發者對現代語言早就如飢似渴了。Kotlin與Java完美的互操做這一點 爲Kotlin的社區支持提供了很好的基礎, 加上kotlin團隊一直以來對開發者需求的快速反應迭代,因此對於Kotlin,至少在Android這個細分領域,我很看好它的將來。
第四個問題:對比Java的優點有不少,好比語法更加簡潔、不囉嗦,更多的語法糖擴展函數,空安全,協程,經過擴展函數與lambda實現各類酷炫的高階函數,默認參數,智能類型轉換,以及更多的java所不具有的特性,總之它可以用更少的代碼完成更多的事,也就可以讓咱們後續的維護成本更低。
提問4:
沒有Java開發的經驗,直接用Kotlin做爲入門學習Android開發合適嗎?
劉自鵬:
能夠,可是不建議。爲何?
一、在你沒有編程基礎的狀況下去學Kotlin,由於語法特性多而靈活,並不會比別的語言容易。
二、如今Android開發的基礎教程,進階教程清一色是Java的。你若是不會,那麼你的學習過程會很吃力。
三、就如今的大環境來看,只會Kotlin的Android開發者可能找不到Android開發的工做。
提問5:
開發出精緻的 App,介紹一下都用那些技術框架,怎麼選擇?
劉自鵬:
這裏所說的精緻,主要是UI與交互層面的。 至於我的開發時,技術如何選型,首先多關注行業動態能夠看出哪些第三方項目是主流,這時你能夠去看這個項目的star數量,數量大證實使用者多,接着瞄一眼issues,看看問題解決得及不及時。
固然技術服務於業務,技術選型也要照顧到和你的業務是否契合。
提問6:
請問app界面怎麼作到交互性好,體驗好,不知道從哪一方面學習這些,模仿別人的界面會屬於侵權吧?
劉自鵬:
若是你只是練手,徹底照搬知名應用的設計沒有問題,可是若是你要發佈,建議原創。 我一直認爲做爲一個客戶端開發者,是有必要具有必定的ui設計能力與交互意識的。關於這點,若是你是Android開發者,能夠學習Mater...
另外,建議多觀察他人開發的設計優秀的App,吸收優勢。可常瀏覽Dribbble。
提問7:
我準備「入坑」使用 Kotlin ,你有什麼建議嗎?
劉自鵬:
我認爲 Kotlin 轉正是 Android 開發者的福音。建議其實沒什麼,Android 開發者轉用 Kotlin 過渡是很平滑的。總之,生命苦短,我用 Kotlin 。
Android 開發者:劉自鵬
就任於美團點評企業平臺研發部,較早使用 Kotlin 的開發者之一,Kotlin 項目 Twobbble 的做者,對 Material Design 有多年實踐,熱愛交互,專一應用層開發。
· END ·
長期關注「養碼場」的你
現邀請你進入「養碼場」技術交流社羣!
得到技術大牛分享的一線公司情報
技術問題管理問題薪資公積金問題
社羣裏都有技術過來人幫你解答!
本週「養碼場」一週職位更新啦!~
後臺回覆「000」
得到更多技術職位信息哦
本文分享自微信公衆號 - 養碼場(yangmachang0)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。