摘要: 2016 年在開發者圈子中許多新的技術和概念層出不窮,人工智能、機器學習、Progressive Web Apps 等等,各類語言、框架和工具的更新也是讓人看得眼花繚亂。2017 年,做爲開發者應該跟隨潮流仍是理性選擇新技術?
軟件開發行業繼續向前大步邁進。 在 2016 年,咱們看到了不少新版本的流行語言、框架和工具。它給了咱們更多的支持,也改變了咱們的工做方式。緊跟潮流是很難的,因此在每一年年末,咱們會給你介紹什麼是重要的,並且應該在將來十二個月內學習。javascript
1、趨勢
- 在 2016 年,咱們看到了 Progressive Web App 概念的興起。它表明了脫機工做的 Web 應用程序,並提供相似 Native App 的體驗。它們能夠添加到你的智能設備的主屏幕,甚至能夠給你發送推送通知,彌補了與本地移動應用程序的差距。咱們認爲,在 2017 年,PWA 將變得更加劇要,更值得探討。查看相關概述。
Progressive Web App(PWA) 是 Google 在 Web 平臺開始推廣的一個新概念,能夠理解爲是儘量藉助目前的新技術(好比 Service Worker,Push Notification 及其餘展示層的新技術)以加強 Web App 的體驗和功能,讓 Web App 的體驗無限接近 Native App。PWA 並不僅是在移動設備上使用,有現代瀏覽器存在的地方就能夠有 PWA。PWA 也不是 Chrome Only,現代瀏覽器基本都支持。php
- 如今每一個人都在談論聊天機器人。從運行它們的平臺到構建它們的框架,社區也正在忙於各類活動(閱讀介紹)。機器人是新的移動應用程序,若是你快點的話也能夠在你們都感到新奇時遇上浪潮。一旦新奇消退,機器人可能會被降級到一些無聊的角色,如自動客服。但不管怎樣,咱們均可以夢想嘛!
- 在 JavaScript 社區,有着使人難以置信的框架和工具的混合,幾乎每一個星期都會出現新的。直到最近,人們指望舊的工具將被新的替代,但這不是咱們在 2016 年看到的。相反,咱們看到了流行的框架交換想法以及採納由新誕生的框架提出的創新。因此在 2017 年,該選擇哪一個框架做爲主要 JS 框架不是很重要,它們的功能大可能是可比較的。
- 各地的公司和開發者都在積極地擁抱「雲」。雲是虛擬化的計算機基礎架構,可根據須要提供,並可從控制面板中徹底配置。目前三大雲提供商分別是 AWS,Google Cloud 和 Azure。因爲其持續的競爭價格一直在下跌,所以小公司和我的開發者也將其歸入預算中。熟悉雲工做流程將是 2017 年一筆不錯的投資。
- 機器學習在過去的十二個月中已經呈現爆炸式的增加。經過在今年 3 月份的 AlphaGo vs Lee Sedol 的歷史性比賽,它進入了主流。從原始數據中學習的智能計算機系統正在改變咱們與移動設備交互的方式。看上去,機器學習將是 2017 年更大的影響因子。
2、編程語言
- JavaScript 繼續着它使人難以置信的創新步伐。因爲 Web 瀏覽器的快速發佈計劃的推進,JS 標準每一年都會更新。下一個版本,ES2017 預計將於 2017 年中期完成。它將帶來許多 JS 開發人員渴望的特性 — 用於處理異步函數的
аsync/await
。感謝 Babel,即便在今天,你也能夠在每一個瀏覽器中編寫 ES2017。
- TypeScript 2.1 於 2016 年年末發佈,爲舊瀏覽器帶來了
async/await
,並改進了類型推斷。TypeScript 是一門編譯爲 JavaScript 的靜態類型語言。它增長了強大的功能,如經典的 OOP 模型和可選的靜態類型,使得巨大的代碼庫更容易維護。它是編寫 Angular 2 應用程序的首選語言,建議各位嘗試。這是關於它的快速入門指南。
- C# 7.0 預計在 2017 年發佈,做爲一門優秀的語言將會有更大的改進。當微軟推出開源 Visual Studio Code 編輯器 和 .Net Core 時,每一個人都感到驚訝。它們均可以在 Linux,Windows 和 macOS 上運行,並容許你用 C# 編寫快速、高效的應用程序(點擊這裏閱讀更多)。這些工具促成了一個充滿活力的社區。
- Python 3.6 將於今年 12 月發佈。它正在鞏固其做爲開發人員、IT 專業人員和科學家的腳本語言的選擇的地位。它適用於自動化、Web 開發、機器學習和科學計算。Python 2/3 的選擇對於社區來講是一個長達數年的鬥爭,可是如今你能夠自信地選擇 Python 3 並享受完整的庫支持。對於那些須要額外的性能的使用者,他們能夠看看 PyPy — 一個可啓用 Python 運行時的 JIT 替代品 。
- Ruby 2.3 今年早些時候發佈了,並帶來了性能改進。做爲通用腳本語言,Ruby 也是一個好選擇。 Ruby 3×3 的倡議已經公佈,這將使即將到來的 Ruby 3 比當前版本快 3 倍,並且會在更多的情景中打開使用 Ruby 的大門。
- PHP 7.1 是在 12 月發佈的,並帶來了細小的加強。 這是基於去年 7.0 版本中的主要性能改進,將 PHP 轉變爲構建 Web 應用程序的快速平臺。咱們建議把 PHP The Right Way 做爲良好的作法和構建 Web Apps 的現代作法。
- Java 9 預計在 2017 年發佈,並將帶來備受歡迎的新功能,例如用於評估代碼的 repl、對 HTTP 2.0 的支持和新的 API。有才能的 Java 開發人員和使用該語言開發項目的人對於這些特性有強烈的需求。若是 Java 不是你須要的,有一些基於 JVM 的語言,如 Kotlin 和 Scala,能夠去了解。
- Swift 3 於今年早些時候發佈。這是蘋果對現代編程語言的願景 — 簡化 iOS 和 macOS 上應用程序的開發。Swift 是開源的並且吸引了大量的社區。版本 4 計劃於 2017 年發佈,將改進語言特性和引入服務器 API,使其成爲編寫 Web Apps 和後端的一個不錯選擇。
學習其中的一門或多門:JS(ES2017),TypeScript,C#,Python,Ruby,PHP7,Java/Kotlin/Scalacss
3、前端
Web 平臺最近取得了兩個重大進展 — Web Assembly 和 Service Workers。它們爲構建快速和高效的 Web 應用程序打開了大門,並且彌補了與 Native App 之間的差距。Service Workers 尤爲是 Progressive Web Apps 的啓用技術,併爲 Web 平臺的通知提供支持,未來也還會有更多的 API。html
- Angular 2 於今年發佈。該框架由 Google 支持,很是受企業和大公司的歡迎。它具備大量的功能,使在從網絡到桌面和移動應用程序中編寫任何東西成爲可能。框架使用 TypeScript 編寫,這也是在框架中編寫應用程序的推薦語言。學習它有不少須要閱讀的內容,但咱們認爲在 2017 年學習 Angular 2 將是一個很好的投資。
- Vue.js 今年也發佈了 2.0 版本。它借鑑了 Angular,React 和 Ember 中的好想法,並將它們放入一個易於使用的包中。它也比前兩個更精簡和更快。建議各位都去嘗試一下,可參考入門教程。
- Ember 是 JavaScript 框架的另外一個堅決選擇。它支持數據綁定、自動更新模板、組件和服務器端渲染。與其競爭對手相比,它的一個好處是更成熟和穩定。重大更改的頻率要低得多,並且社區也重視向後兼容性。這使得該框架成爲生命週期長的應用的不錯選擇。
- 另外兩個值得一看的框架是 Aurelia 和 React。過去的一年中 React 的生態系統變得愈來愈複雜,所以很難向初學者推薦。但經驗豐富的開發者能夠將庫與 GraphQL,Relay,Flux 和 Immutable.js 組合成一個全面的全棧解決方案。
- 沒提到 Bootstrap 的前端匯老是不完整的。Bootstrap 4 目前正處於 Alpha 階段,預計在 2017 會正式發佈。值得關注的變化是新的通用卡片組件和 Flexbox 網格(查看與常規網格的對比),這使得框架更現代化並且讓用戶使用它工做更舒心。
- SASS 和 LESS 仍然是當今最流行的兩種 CSS 預處理器。雖然 vanilla CSS 最終對變量進行了支持,但 SASS 和 LESS 仍然優先對 mixins,函數和代碼組織進行支持。 若是尚未了解它們,可查看這裏的 SASS 和 LESS 快速入門指南。
學習如下一個或多個:Angular 2,Vue.js,Ember,Bootstrap,LESS/SASS前端
4、後端
後端有不少選擇,全部這一切都取決於你對編程語言或特定性能需求的偏好。Web 開發中的一個持續趨勢是遠離後端的業務邏輯,並將該層轉換爲由前端和移動應用程序使用的 API。但一個全棧框架一般是能更簡單、更快速地用於開發,而且是許多 Web Apps 的有效選擇。vue
- Node.js 是在瀏覽器外運行 JS 的主要方式。今年咱們看到它發佈了許多新版本,提高了性能以及添加對整個 ES6 規範的覆蓋。Node 具備快速構建 API、服務器、桌面應用程序甚至機器人的框架,以及建立能夠想象到的各類模塊的龐大社區。一些你可能想研究的框架:Express, Koa, Next, Nodal。
- PHP 首先是一門 Web 語言,而且有大量的 Web 框架可供選擇。因爲其出色的文檔和功能,Laravel 構造了一個積極的社區。Zend Framework 發佈了第 3 版,這標誌着這個面向業務的框架的巨大升級。Symfony 在今年也發佈了不少新的版本,使它做爲一個全棧解決方案成爲一個更好的選擇。
- 對於 Ruby,Rails 框架是首選。5.0 版本已於 2016 年發佈,爲 Web Sockets,API 模式等提供支持。Sinatra 也是小應用程序的不錯選擇,2.0 版本預計 2017 年發佈。
- Python 有以 Django 和 Flask 的形式組合的全棧/最小框架。Django 1.10 在 8 月發佈,爲 Postgres 引入了全文搜索和一個大修改的中間件層。
- Java 生態系統還有流行的 Web 框架可供選擇。Play 和 Spark 是兩個堅決的選擇,做爲獎勵,它們能夠與 Scala 一塊兒使用。
- 對於愛好者,還有 Phoenix 可供選擇,這是用 Elixir 語言編寫的,並試圖成爲一個功能徹底替代 Rails 的框架並且具備卓越的性能。若是 Elixir 是你想在 2017 年學習的語言之一,不妨嘗試 Phoenix。
學習其中之一:全棧後端框架,一個微框架java
5、數據庫
- PostgreSQL 今年發佈了兩個完整版本 — 9.5 和 9.6。它們帶來了期待已久的 UPSERT 功能(又名
ON DUPLICATE KEY UPDATE
)、更好的全文搜索和速度改進,這都歸功於並行查詢,更高效的複製、聚合、索引和排序。Postgres 適用於大規模、TB 級規模的數據集以及繁忙的 Web Apps,因此這些優化都很受歡迎。
- MySQL 8.0 將是該數據庫的下一個主要版本。正式版預計 2017 年發佈,將給系統帶來不少改進。MySQL 仍然是最受歡迎的數據庫管理系統,整個行業都受益於這些新版本。
- 對於 NoSQL 的粉絲,推薦 CouchDB。它是一個快速和可擴展的 JSON 存儲系統,公開了一個 REST-ful HTTP API。這個數據庫易於使用,性能卓越。PouchDB 是一個開源的 JavaScript 數據庫,徹底在瀏覽器中工做。可經過 Couch 同步數據。在應用程序離線的時候,能夠將用戶數據保存在本地,在網絡鏈接可用後自動同步。
- Redis 是最受歡迎的 Key-Value 數據庫。它體積小,快速並且通用性好。做爲 NoSQL 數據存儲或進程消息傳遞和同步通道,你能夠將其做爲智能內存緩存的替代方案。它提供了大量的數據結構可供選擇,而且即將到來的 4.0 版本將有一個模塊系統和改進的複製功能。
學習如下其中之一:Postgres,MySQL,CouchDB,Redisnode
6、工具
- Yarn 是由 Facebook 開發的 Javascript 包管理器。它是對 npm 命令行工具的升級,提供了更快的安裝,更好的安全性和肯定性構建。它仍然使用 npm 包註冊表做爲其後端,所以能夠訪問同一個 JavaScript 模塊的生態系統。Yarn 與 npm 使用的
package.json
格式相兼容。
- 兩個最受歡迎的開源代碼編輯器 — Visual Studio Code 和 Atom 在過去 12 個月中進行了不少難以想象的創新。這兩個項目都使用網絡技術構建,並吸引了大量的粉絲羣體。編輯器有針對大部分語言的語法檢查,linting 和重構工具的插件。
- Git 是最流行的源代碼版本控制系統。它是無服務器的,你能夠將計算機上的任何文件夾轉換爲存儲庫。若是你想共享代碼,有不少選擇,像 GitLab,Bitbucket 和 Github(固然還有碼雲)。2017年,建議熟悉 git 命令行,由於它會在比你想象中更多的場景派上用場。
- 桌面應用程序尚未死,即便 Web App 變得愈來愈強大。有時你須要強大的功能和 API,這是網絡平臺沒法提供的。使用諸如 Electron 和 NW.js 之類的工具,能夠經過使用 Web 技術編來寫桌面應用程序。你能夠徹底訪問操做系統和 npm 可用的廣度模塊。要了解這些工具的更多信息,請閱讀有關 Electron 和 NW.js 的教程。
- 軟件開發中的最近趨勢是讓開發人員負責本身的系統部署 — 也稱爲 DevOps,這能產生更快的發佈和更快地修復生產中的問題。具備運維經驗的開發人員會受到公司的高度重視,所以從如今開始熟悉能實現這一目標的技術將是巨大的進步。推薦的一些工具是 Ansible 和 Docker。擁有 Linux 命令行和基本的系統管理技能也會爲助你一臂之力。
嘗試其中的一個或多個:Yarn,Git,Visual Studio Code,Electron,Ansible,Dockerpython
7、技術
雲已經贏得了整個軟件行業,能夠看到大型公司關閉了他們的數據中心並且將其整個基礎設施遷移到了雲上。目前三個主要平臺是 AWS, Google Cloud 和 Azure。這三個平臺都有着功能強大,不斷擴展的功能集,包括虛擬機,數據庫託管,機器學習服務等。並且價格也正在迅速降低,因此雲是小公司和我的開發者能夠接觸到的。對於 2017 年,部署一個業餘的項目到這些提供商的平臺將會是一次很好的學習經歷。mysql
學習其中之一:雲部署,機器學習庫,VR 開發