?
跨平臺技術(shù)的王者---Flutter的現(xiàn)在與將來,順帶點評一下React Native
大家好,這一期我們來談一下Flutter。Flutter是一門比較新的技術(shù),從去年推出到現(xiàn)在差不多一年多了。盡管現(xiàn)在還有很多需要繼續(xù)完善的地方,但是從發(fā)展速度來說,可以說用驚人來形容。當然了如果你知道它的東家是誰也就不奇怪了,因為它的大東家是谷歌。
那么Flutter是到底是干什么的呢?它總的一個設(shè)計理念,是為了給多平臺提供一種開發(fā)解決方案,你可以通過一套代碼,編譯出可以跑在多個操作系統(tǒng)平臺上的應(yīng)用來。
可以想見,如果這門技術(shù)趨于成熟的話,將會大大的改變當前各種操作系統(tǒng)上的開發(fā)格局。展望一下,你寫了一套程序,選擇對應(yīng)的平臺編譯以后,它既可以在windows平臺上跑,也可以在蘋果電腦系統(tǒng)上跑,也可以在Linux系統(tǒng)上跑,既可以在安卓手機系統(tǒng)上跑,也可以在蘋果手機系統(tǒng)上跑。
怎么樣?是不是很厲害?到目前,還沒有一種技術(shù)可以達到這個程度的。
比較接近的,像React Native,能擦點邊。但是,你依然需要xie大量的本地開發(fā)程序來支持跨平臺。
Flutter主打的編程語言是Dart, 如果你有C語言家族的編程基礎(chǔ), 比如c, c++, java, c#, JavaScript, Swift, kotlin等等語言的基礎(chǔ),學(xué)習(xí)Dart幾乎沒有門檻。
你可以想象一下,將來你只需要懂這一門編程語言,就可以寫出各種操作系統(tǒng)平臺上的應(yīng)用程序了,是不是會大大降低你的學(xué)習(xí)時間以及提高你的工作效率呢?你可以把大把的時間花在旅游,把妹,發(fā)呆上了。哈哈。
以當前的安卓手機開發(fā)和蘋果手機系統(tǒng)開發(fā)為例。
現(xiàn)在開發(fā)安卓應(yīng)用程序,你無法避免使用Java或者Kotlin來寫本地的代碼,對于蘋果手機應(yīng)用開發(fā)也是一樣的,不管用什么架構(gòu)來寫,Objective-C或者Swift這些本地代碼的開發(fā)是不可避免的。
但是在Flutter的架構(gòu)下,你只需要用Dart語言,就可以寫出一套代碼來在這兩個平臺上運行。
跟React Native相比,F(xiàn)lutter的最大優(yōu)勢就是它的靠山Google。相反,Reactive Native的靠山是組織松散的各個開發(fā)社區(qū),各種開發(fā)社區(qū)的劣勢就是沒有一個統(tǒng)一的行動,標準各式各樣?;ゲ患嫒荩?jīng)常遇到版本前后矛盾的尬尷局面。作為React Native技術(shù)的開發(fā)者, 你在選擇一些技術(shù)的時候,經(jīng)常那個感覺到無所適從,提心吊膽,那都是因為受過傷的。呵呵。
再反觀Flutter,開發(fā)和維護團隊來自Google,其代碼質(zhì)量有保障,接口標準有統(tǒng)一,文檔格式內(nèi)容不會有大的紕漏。
可以想見,以Google的谷歌的技術(shù)實力和野心,將來如果Flutter發(fā)展順利的話,將來很有可能會替代掉Android Studio和 XCode。
Flutter目前的劣勢就是這門技術(shù)太新了,只有一年左右的時間,要想發(fā)展成熟的話,至少需要未來的三到五年甚至更長的時間。
最近的一個來自谷歌的技術(shù)就是安卓系統(tǒng)的生態(tài)培養(yǎng),經(jīng)過一年又一年,到現(xiàn)在,安卓手機系統(tǒng)算是手機系統(tǒng)里面最大的一個。遠遠超出蘋果系統(tǒng)開發(fā)好幾倍。
可以說是在安卓手機系統(tǒng)處于頂峰的時候,谷歌又大膽的推出了Flutter這個跨平臺開發(fā)的大殺器。這足以顯示出谷歌作為一家科技創(chuàng)新公司的技術(shù)實力和偉大格局。
毋庸置疑,F(xiàn)lutter技術(shù)還有很長的路要走,有些功能還不完善。如果你要選擇用Flutter開發(fā),一定要做好調(diào)研,是否愿意承擔這些功能不完善可能帶來的問題, 到目前來看,這些有待完善的功能有如下幾個:導(dǎo)航處理,地圖服務(wù),相機訪問等等。目前這些功能可以通過一些插件來實現(xiàn), 這點跟React Native異曲同工,所幸的是這些插件都是由Flutter開發(fā)人員來開發(fā)和維護的,他們都來自Google。這點上,React Native插件就比不了了。
當然,只要是作為插件存在,就說明將來還會有很大的變動,等到真正集成到Flutter的SDK中以后才算穩(wěn)定了。
說到這里,我們可以感嘆一下React Native的開發(fā)者。因為React Native也有大量的插件,所不同的是這些插件都是由各個不同的社區(qū)來開發(fā)和維護的,當React Native的版本升級以后, 這些插件并沒有對應(yīng)的升級版本。假設(shè)即使只有一個插件在你的應(yīng)用中不能兼容最新的React Native版本,你們的項目開發(fā)可能會陷入災(zāi)難。
這也是React Native開發(fā)給人感覺非?;靵y的主要原因,在沒有更好的跨平臺技術(shù)選擇之前,F(xiàn)lutter也許是當前最好的選擇了。
就像前面提到的,這個更好的選擇源自于一個統(tǒng)一的開發(fā)團隊,相通的開發(fā)理念,只要這些穩(wěn)步地推進下去,作為使用這個技術(shù)的開發(fā)者來說,技術(shù)就可以一脈相承的學(xué)習(xí)和應(yīng)用下去,這樣子就沒有太多的痛點和陷阱。
有時候不可避免的,當某些插件無法滿足要求的時候,你就需要書寫本地代碼了。這一點跟其他的跨平臺技術(shù)沒有太大的區(qū)別。
雖然展望是美好的,但是在具體使用的時候可能會遇到這樣那樣的問題,這也是使用新平臺必然要付出的代價。
但是一旦說,如果狀態(tài)理想,你所在項目使用的技術(shù),正好能被Flutter SDK現(xiàn)有的功能覆蓋,你就會節(jié)省很多時間,從而降低你的開發(fā)成本和維護成本。
可以想見,在Flutter技術(shù)走向成熟之前,寫手機端的應(yīng)用最好還是用本地的代碼來開發(fā)。也就是說安卓的話就老老實實的用Java和Kotlin, iOS應(yīng)用的話就老老實實的用Swift和objecttive-c。
在界面支持方面,因為Google的因素,F(xiàn)lutter目前對于Android的Material Design, 也就是材料設(shè)計這一塊支持的比較好。而相比之下,對于iOS的Widget支持的就不是特別好。當然這只是一個時間上的問題了。我們相信,假以時日,隨著項目進度的不斷推進,F(xiàn)lutter團隊會很快的解決這個問題的。
還有一點,對于界面這一塊,沒有什么對和錯,實際上程序員是可以決定做成什么樣子的,你可以讓各個平臺跑的界面都類似,在安卓上跑IOS的界面,在iOS上跑安卓的界面,這都是由程序員或者項目團隊自己來決定的。
談了Flutte的現(xiàn)狀,我們看一下Fultter的將來。
最光明的前景就是Fultter的技術(shù)走向成熟,真正能夠讓軟件工程師通過這一項技術(shù)開發(fā)出一套代碼,通過編譯配置以后,可以運行在多套操作系統(tǒng)和平臺上。
以目前的開發(fā)速度,只要不出大的紕漏,按部就班的往前推進,在不久的將來,Google一定可以把Flutter平臺打造得非常完美,屆時又會改變軟件工程開發(fā)技術(shù)的格局了。
讓我們拭目以待吧。
好了,這期就先說這些,這里是丁哥開講,歡迎關(guān)注防止失聯(lián)。