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