Java 程式設計師最愛 Kotlin?

Java 程序員最愛 Kotlin?

Java 程序員最愛 Kotlin?

現在技術每天都在發展,開發框架和庫的新版本層出不窮,支持的功能也越來越多。目前最流行的一個是編程語言Kotlin,另一個是JS庫React Native。Kotlin是一種靜態類型的開源編程語言,是Android移動應用開發方面的一顆耀眼的新星。React Native是個JavsScript庫,可以用於創建Android、iOS和UWP上的原生應用——所以是時候比較下哪個更好用了。

Java 程序員最愛 Kotlin?

React Native是什麼?

React Native是個JavsScript庫,是React家族的新一代成員,用於創建用戶界面。它由Facebook和社區共同開發,最初是用在Instagram上。

它發佈已經五年了,最新的穩定版發行於2017年11月28日。通過React Native,你可以創建Android、iOS和UWP上的原生應用。React Native最大的好處是,用Objective-C或Java建立的應用和React Native建立的應用幾乎沒有區別——所以也可以用它代替Kotlin。

但就像任何語言一樣,React Native也有優缺點。

React Native的優點

高效率

如果能迅速看到做出的界面效果,那麼設計和佈局的效率就會更高。正因為如此,React Native有個非常好用的功能叫做“熱加載”,它能讓代碼中的改動立刻反映到iOS和Android應用中。就像預覽功能一樣!

這個功能可以將修改代碼後的等待時間降到零,也能節約開發時間。

性能

React Native使用原生的控件和模塊,這樣能提高性能。

React Native與iOS或Android的目標(原生)組件交互,將代碼直接、獨立地渲染成原生API。這樣做使得它運行在UI之外的另一個線程上,從而能提高性能。關鍵之處是,React使用原生API。像使用WebView渲染代碼等其他解決方案雖然可能有各自的優點,但都會犧牲性能。

不斷增長的社區

上面說過,React Native是個開源項目,也就是說任何人都可以為這個框架做貢獻。這也意味著你有更多的途徑獲得那些大牛程序員的經驗,如果遇到任何問題,那麼很有可能從社區和專家那裡得到幫助。

現成的組件能提高開發速度

React Native的另一個強大的功能就是“現成的組件”。你不需要從頭自己寫組件,React Native已經提供了一堆組件供你使用。這些組件非常適合製作各種簡單功能,這讓開發過程更簡單、更快。

省錢

React Native不僅能節省時間,還能省錢。

除了縮短開發過程之外(也是另一種React省錢的方式),React Native可以讓JavaScript開發者針對多個操作系統創建應用,並把原生代碼的必要性降低到最小。

這種方法更便宜,更節省預算,因為不需要為不同的目標設備僱傭不同的開發者或開發團隊,一個開發者就能開發兩個平臺。也就是說,在一個應用上投入更少的資源和成本,同時縮短開發進程。

更小型的團隊

在上一條的基礎上,如果一個開發者能同時開發iOS和Android,那麼就能實際上減小團隊的大小。除了不需要學習兩種不同的語言之外,它也能讓團隊小型化。

與Android、iOS各一個團隊相比,只擁有一個React Native團隊可以促進更好的溝通。選擇React Native,最大的需求就是一個好的JavaScript開發者,它就能同時為兩個平臺(iOS和Android)編寫代碼。

的確有一些情況下,那些需要更多原生功能的應用會用到原生開發者的幫助,但大多數情況下,一個小團隊就夠了。小團隊管理起來更容易。

可靠、穩定的應用

用React Native創建的應用無需擔心它的穩定性和可靠性。它的數據綁定非常簡單,其數據流禁止子元素影響到父元素的數據。如果開發者想要改變任何對象,他必須修改對象的狀態,並相應地進行更新,也就是說只有允許改變的組件才會被更新。像Facebook、Instagram、Airbnb、Skype和許多大公司都在使用React Native!這件事本身就說明React Native創建的應用質量、可靠性和穩定性都很好。

支持多個操作系統,只需少量原生代碼

讓一個應用在多個操作系統上運行的功能非常好。先不說這樣做的簡單性,因為你可能並不會用到React Native的所有高級特性,至少你只需寫一個應用就能得到兩個。

我認為這必須是React Native的好處之一。

比混合原生應用更好

React Native是真正的原生應用,而不像其他混合工具,它們只是提供一個原生的殼,裡面還是基於瀏覽器的應用而已。由於React Native使用的是原生控件,最終產品的外觀會非常真實,就像是真正使用原生技術創建的一樣。如果你不知道某個應用是用什麼技術構建的,你就完全沒辦法分辨出一個應用是用React Native構建,還是用Android或iOS自己的語言構建。

React Native的缺點

現成控件的小集合

現成控件是React Native最重要的優點之一。

但很可惜它只包含少量的幾個控件。它仍是個非常新的開發框架,儘管現成控件的數量以後會有大幅度增加,但目前控件的數量還非常少。因此開發者只能用它創建非常簡單的應用。

需要原生代碼

本文前面提到過,在使用React Native開發時可能依然需要少量的原生代碼。這似乎有些矛盾,因為對於使用React Native開發的人來說,選擇React Native的最初目的可能就是避免編寫Android或iOS的代碼。因此這一部分也必須留出預算,特別是當應用需要訪問設備的攝像頭或其他板載硬件的時候。極少數情況下,這些原生代碼的工作量甚至會抹殺React Native帶來的好處,如小型團隊、節省時間、節約成本等。

應用程序性能不如純粹的原生應用

如果只是個小應用,那完全沒問題,你能享受到所有React Native的好處。但如果需要高級功能,那麼性能就比不上為各個平臺專門創建的應用了。

組件質量

前面說過為數不多的一些現成組件。但這並不是死衚衕,因為還有各種第三方組件庫可供選擇。但第三方組件的質量和可靠性就得憑運氣了。由於這些組件不是官方開發的,它們可能會包含大量的bug和小問題。改正這些問題可能會花費大量的時間,可能自己從頭開始寫一個還更省時間,這再次抹殺了React Native跨平臺的優勢。

陡峭的學習曲線

如果你不熟悉React框架和JavaScript,那麼學習React Native可能會有點困難,特別是與其他跨平臺開發方式相比。JSX是個JavaScript語法擴展,可以在JavaScript中混合HTML。這對於一般人來說並不好理解,因此它的學習曲線很陡峭,會打擊學習的積極性。

JavaScript基礎庫導致的低安全性

我們知道React Native是個JavaScript庫。如果你想在需要極高安全性的應用上使用React Native,如銀行移動應用或個人財務引用,就需要格外注意細節問題,因為JavaScript的脆弱性廣為人知。必須非常小心那些可能會對應用的核心功能造成傷害的惡意代碼。

特別是在使用任何第三方擴展的時候。

內存管理

同樣,由於React Native是基於JavaScript的,它並不適合需要大量計算的應用。從內存使用和管理的角度來看,應用的性能和速度會降低,而且浮點數計算的處理更沒有效率。

與React Native對比,我們來看看Kotlin的優缺點。

Java 程序員最愛 Kotlin?

Kotlin是什麼?

Kotlin是Google為Java虛擬機創造的編程語言,由Google提供支持,JetBrains負責開發。這種語言非常高效,而且為Android開發者面臨的各種問題提供多種解決方案。Kotlin是一種靜態類型的開源編程語言,非常適合服務器端Web應用開發。它能減少bug,提高代碼可讀性,縮短開發時間,是Android移動應用開發方面的一顆耀眼的新星。

由於它還很新,許多人還不信任它的社區支持情況,但JetBrains(Kotlin的開發者)的官方文檔非常完善,而且結構清晰。因此任何人都很容易學習Kotlin。

但Kotlin是否能比React Native更好?我們來看看。

Kotlin的優點

易維護性

Kotlin由JetBrains支持,而JetBrains正是最好的IDE的開發者。因此JetBrains不可能會放棄對Kotlin的支持。而且,Kotlin已經被多種開發環境支持,包括Andorid Studio。因此如果你選擇Kotlin,就等於選擇了可能在未來被多種工具和IDE支持的巨人。

更少的代碼

考慮下編寫代碼。像寫任何其他東西一樣,一條鐵律就是“寫得越少,犯錯越少”。Kotlin的代碼不僅非常精確,而且非常清晰。這樣犯錯誤的可能性就更小,從而帶來更穩定的產品代碼。只需寫少量代碼就能達到相同的功能。

可讀性

Kotlin是一門成熟的語言,它最初出現於2011年,在最終發佈之前已經經歷了多個測試階段。它是由程序員開發的編程語言,而它的開發者們已經為開發者們解決了很多問題。他們在最新的版本中解決的問題之一,就是他們讓最新版本與前面的所有版本兼容。在Android上要想兼容所有舊版本是我遇到的最痛苦的問題,所以相信我,Kotlin值得信賴。

兼容現有代碼

Kotlin與Java的互操作性是我推薦Kotlin的另一個理由。Kotlin能與Java合作得非常好,包括所有相關的工具和框架,從而提供了非常豐富的生態系統。

那這與Kotlin和React Native的比較有什麼關係?

對於初學者而言,Java學習資料和在線幫助非常豐富。任何用Kotlin做不到的事情都可以用Java實現。有人說這是個新的學習曲線,而我認為這是個Kotlin建立偉大的開發者社區的絕佳機會。

為什麼?因為喜歡Java的人可以沒有任何難度地遷移到Kotlin,從而為Kotlin社區做出貢獻。由於Java和Kotlin代碼有互操作性,你總會找到解決辦法。

而React Native就沒有這麼幸運了。

Kotlin的缺點

團隊培訓

對於不熟悉Java的人(許多人認為自己熟悉,但其實並沒有),我覺得Kotlin是個缺點。畢竟Kotlin和Java之間有一些區別,因此對於他們來說還是有學習曲線的。這些開發者會對切換語言有一種抵抗。我能預見到,必須在培訓上投入成本,並投入更多時間讓Android開發團隊能切換到Kotlin。

編譯速度慢

一些開發者報告說,Kotlin的一大缺點就是編譯速度太慢。有時候,Kotlin的編譯速度並不慢,但有時候卻非常慢。

較小的社區

儘管Kotlin潛力很大,儘管它在迅速成長為強大的語言,目前它的開發者社區還非常小。這就是說學習Kotlin的資料很少,會有很多問題無人回答,即使是對於熟悉Java的人來說。

Java 程序員最愛 Kotlin?

結論

使用React Native對於適合它的項目非常容易,但我認為,它畢竟是個JavaScript庫,儘管非常好用、非常耀眼。但作為一門語言,依然無法超越Kotlin。

你認為如何?你認為Kotlin和React Native哪個更好?歡迎在評論中討論。

作者:Dev Shankar Ganguly,BacancyTechnology的數字市場執行官。

原文:https://hackernoon.com/top-pros-cons-comparison-react-native-vs-kotlin-2a0dfd1df3e3

“徵稿啦!”

CSDN 公眾號秉持著「與千萬技術人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時間以技術人的獨特視角描述技術人關心的行業焦點事件,更有「技術頭條」專欄,深度解讀行業內的熱門技術與場景應用,讓所有的開發者緊跟技術潮流,保持警醒的技術嗅覺,對行業趨勢、技術有更為全面的認知。

如果你有優質的文章,或是行業熱點事件、技術趨勢的真知灼見,或是深度的應用實踐、場景方案等的新見解,歡迎聯繫 CSDN 投稿,聯繫方式:微信(guorui_1118,請備註投稿+姓名+公司職位),郵箱([email protected])。


分享到:


相關文章: