基礎設施:終將上雲
現在雲服務越來越普及了,不光是創業公司在使用雲服務,連一些很保守的公司,和一些對很重視安全的公司都開始上雲了,2020年上雲的勢頭將更猛,各種體積的公司、各種類型的公司都會向雲遷移。
容器化:Kubernetes 將會更酷
在容器編排領域,主角包括 Kubernetes, Docker Swarm, Mesos。
Kubernetes 目前的優勢很明顯,增長勢頭強勁。
雲是分佈式環境,而 Kubernetes 是操作系統(分佈式的 Linux)。
2020年 Kubernetes 會更加強大,將成為雲環境的脊柱。
軟件架構:微服務成為主流
這是 Google 統計的微服務趨勢圖。
微服務的快速升溫的主要原因是其非常適合雲環境和快速開發的特性。
開發:Python 將吞噬世界
機器學習、數據分析、數據處理、web 開發、企業級開發 ……,Python 無處不在。
TIOBE 統計結果顯示:Python 已經成為 Java、C 之後的第3大受歡迎語言。
而且增長勢頭相當猛,2019年從 5% 漲到了 10%。
2020年 Python 會繼續快速發展,縮小與Java和C的差距。
Python 為啥飆升?主要是因為學習門檻低,有非常優秀的社區,被數據科學領域喜歡。
企業級開發:Java 和 JVM 為王
從上面 TIOBE 那張圖中已經看到 Java 的主導地位。
JVM 已經成為很多語言的運行環境,例如 Kotlin, Scala, Clojure, Groovy。
Oracle 對 Java 收費了,但幸好還有 OpenJDK 供我們免費使用,很多公司會提供企業級的支持。
由於大小和速度的原因,JVM 語言不適合如今的 Serverless 模式,但目前在企業級穩定性和信任程度上,還沒有比 Java 更好的替代者,所以幾年內 java 仍將領先。
Java 企業級開發:Spring
曾經 Spring 與 JavaEE 有著激烈的競爭,目前 Spring 完勝,因為其開發方式更加積極、對環境的變化響應更快。
2020年 spring 仍是 no. 1 的框架。
目前有2個正在開發的項目,極具吸引力,使Java更小、更靈活,從而使Java成為 Serverless 的一個好的選擇。
他們是:Micronaut 和 Quarkus。
開發:Rust, Swift, Kotlin, TypeScript 會有一個突破
曾經很多人認為不再需要新的語言了,Java, C, C++, JavaScript, Python 已經足夠滿足所有的需求了。
然而很多有趣的語言出現了,例如 Rust, Swift, Kotlin, TypeScript。
原因是之前的主流語言對新的硬件特性不能很好的利用,例如多核、更快的網絡、雲環境。
還有一個因素在於這些現代的語言更加關注開發者的體驗,可以更快更簡單的開發。
這是開發者喜愛的語言調查結果。
最近,微軟和亞馬遜都對 Rust 很感興趣,會提供支持和贊助。
Kotlin 也成為了 Java 的有利競爭者,Google 在 Android 中對 Kotlin 進行了官方支持。
Angular 使用 TypeScript 作為其主要的開發語言,替代了原始的 JavaScript。
React 和 Vue 也都開始支持 TypeScript。
Web:JavaScript 繼續主導
以前,前端開發是在後端框架中完成的,例如 JSF, Ruby on Rails, Django, Laravel,然後在服務端渲染出來。
2014年被 AngularJS 改變了,之後大量優秀的web框架出現了,例如 Angular 2+, React, Vue.js, Meteor.js。
JavaScript 框架領域的創新性極強,而且隨著微服務架構的升溫,JavaScript 框架會繼續主導前端開發領域。
JavaScript Web 框架:React 領先
React 帶來了很多新鮮的創新的前端開發思想,例如事件源、虛擬DOM、單向數據綁定、基於組件的開發等等。
Google 從中吸取了經驗,廢除了 AngularJS,重新開發了 Angular2+。
Angular 也是一個堅實的框架,尤其是在企業開發中,Google 仍將繼續大力支持。
Vue 也是非常優秀的,被很多機構和社區支持。
APP 跨平臺混合開發:React Native
這個領域已經有很多選擇,例如:Xamarin、Ionic、React Native、Flutter。
Facebook 基於成熟的 React 框架開發的 React Native 取得了高度成功。
Google 推出了 Flutter,提供了更好的性能,但是,需要使用非主流語言 Dart。
2020年 React Native 會繼續主導此領域。
API:REST
這個領域除了傳統的 REST,也有其他選擇,Google 的 gRPC,和 Facebook 的 GraphQL。
gRPC 是 Google 開發的強大的遠程方法調用技術,使用 Protobuf 替代了 JSON 作為消息格式。
Facebook 開發的 GraphQL 用作聚合層,避免了頻繁的 REST 調用。
2020年,REST 依舊是 API 的主導,gRPC 和 GraphQL 提供輔助功能。
數據庫:SQL 主導,分佈式 SQL 崛起
曾經很多人大炒 NoSQL,說 NoSQL 比 SQL 更好,將替代 SQL,但現在,大家都意識到離不開SQL。
數據庫排行榜:
top 4 都是 SQL 數據庫,這是因為 SQL 提供了穩定的 ACID 事務保障,這是很多商業應用所需要的。
NoSQL 數據庫提供了水平擴展能力,但忽略了 ACID。
SQL 的 ACID、NoSQL 的水平擴展,都是我們需要的,所以 NewSQL 興起了,也就是 Distributed SQL。
大數據計算:Spark 繼續閃耀
Spark 已經替代了 Hadoop 成為企業分佈式批處理的王者。
Spark 瞄準了 Hadoop Map-Reduce 的弱點,例如用內存處理代替高成本的落盤操作。
Spark 也有明顯的不足,對 CPU 和內存的耗費很高,在雲環境中,賬單較大。
很多公司希望能有新的框架能減少他們的賬單,但很可惜,現在還沒有。
大數據流處理:Flink
以前實時流處理是不可能的,Spark Streaming 通過微型批處理提供了近似實時的流處理能力。
Apache Flink 改變了世界,提供了實時流處理能力。
直到 2019,Flink 還沒有競爭過 Spark,但阿里扭轉了局勢。
2020,Flink 將成為實時處理領域的第一選擇。
Flink 的不足與 Spark 一樣,極其消耗資源,企業的成本較高。
字節碼:WebAssembly 會開始大量應用
JavaScript 最大的限制就是慢,還有就是單線程,無法利用現在硬件的優勢,例如多核、GPU。
所以,很多計算密集型的應用,例如遊戲、3D圖形,就無法運行在瀏覽器上。
Mozilla 主導開發了 WebAssembly,是服務於瀏覽器的底層字節碼格式,可以支持其他開發語言運行與Web,例如當前已經支持 C++, Rust。
閱讀更多 Java小馬哥 的文章
關鍵字: TypeScript Java Rust