JavaScript並非世界上最優美的編程語言。正因如此,一個世界級的專家寫了一本關於這個語言的「精粹 」的書。這本書的名字是「深度挖掘javascript的亮點」,由於優秀的東西被埋的至關深。即使如此,它仍是迅速地稱爲世界上最受歡迎的語言之一。這種受歡迎是應得的,由於儘管這種語言存有缺陷,可是javascript提供給開發者其它語言不能給予的重要的優點。有一些優點是在瀏覽器的開發商贊成了Javascript(好吧,技術上的ECMAScript)做爲web語言的標準後產生的。其它的是固有的web應用編程模型以及更沒有經過什麼加強改進。然而,儘管原生態的應用程序統治了web應用在移動設備上的地位,可是JavaScript的優點正在逐步轉向移動設備。最終它會主宰嗎?javascript
最近的TIOBE社區列表將JavaScript列爲在全部編程語言中的第六位而且還在持續上升。TIOBE方法的排名傾向於支持老舊的,更加成熟的語言,而不太擅長去追隨潮流。相比之下,Redmonk排名方法將JavaScript放在第一的位置上。Redmonk方法某種程度上會偏向於有着強大開源社區的語言,可是同時在實質上會反映如今的趨勢和興趣點。咱們本身的開發者經濟概覽已經代表HTML5/Javascript的聯合已是移動端開發者所採用的第二流行的語言,幾乎55%的人使用。僅僅以微小的優點輸給57%的人使用java。然而,儘管咱們發現HTML5和Javascript的組合在優先選擇的人羣上爲(19%),在這個方陣上遠遠落後於Java(29%)。這看起來會在將來幾年顯著提升。[你怎麼認爲呢?咱們已經有了一個新的調查,因此看看這個調查而後讓咱們知道你的見解]html
這並非一個標準的「網贏」的說法。我並不認爲瀏覽器或者是基於網絡視圖的應用程序最後會統治移動設備。即便使用並且增加但不會是常態。若是未來真的開放web標準來統治移動設備那麼他們須要從文檔對象模型(DOM)開始。DOM不是構建應用程序,而是文檔的基礎。固然你能夠最初圍繞一個平臺設計一個用於文檔的應用程序,可是你會舉步維艱。看一眼如今的框架,容許你爲移動瀏覽器或網絡視圖設計的至關高性能的應用程序:React.js 、 Famo.us 和lonic。這三者的共同點就是儘量少用DOM。
是的,有太多的 WebGL(或者說 HTML5 Canvas 必備),可是這些都是低級別的 APIs。你所需的是大的、多是多字節的、好的框架爲開發大多數應用來建立一個優秀的平臺。這不太適合 web 應用編程模型,其中最新的程序代碼是放在一個遠程的服務器上,尤爲不適用在一個移動的環境中。能在一個大的好的存儲在本地的WebGL上建立一個混合型的應用是真的,並且只是從遠程的服務器上獲取程序特定的代碼。可是爲何要使用瀏覽器呢?爲何不僅是 javaScript 能優於其餘的在硬件圖形加速器(提示:Qt 提供不錯的產品)的跨平臺框架。一個高級別的 API 在語言之間的橋接上是不會有那麼多的開銷的。或許在涉及訪問特定功能的時候也是欠缺限制。
如今有幾個符合這一描述的很是有趣的新選擇。 React Native 和 NativeScript.。它們以不一樣的方式運行,可是兩者都是用 JavaScript 來構建一個原生態 UI 的應用程序。Appcelerator 的 TiNext 可能也是頗有意思的,即便它們多年來被屢次談論卻未曾公開一個版本,所以讓咱們耐心等待並一睹它的風采。vue
蘋果已經恢復了JavaScript 在移動端的優點。阻止了大多數開發人員在移動端採用一個敏捷、web 樣式持續交付模型的冠一個關鍵事情就是 Apple 在代碼下載上的禁令。若是沒有這種迭代模式的顯著放緩,對比測試會更加困難。這實際上就意味着開發者,尤爲是初學者,會學的慢些。直到最近,惟一獲取更快的迭代的方式就是首先從 Android 開始,開發一個混合的應用程序,由於 Apple 使得JavaScript 稱爲在 webview 代碼下載規則中的一個異常。在第一種狀況下,它意味着大多數早期的採納者正在遠離這個平臺。不幸的是第二種狀況下 UX 的取捨實在是太大了,大多數開發者由於用戶用程序故障或者切換到本地去走那條路線。可是在 ios7 中爲運行 JavaScript 增長了 JavaScriptCore 接口,並且最新的 ios 開發者程序許可證條款中,他們修改了代碼下載異常的規則包括 JavaScriptCore。
這從安全的角度上講是有道理的。Apple 能審計和更新他們的運行時間,然而若是他們容許地第三方運行時下載代碼,他們就沒有有效地監控安全問題。由於 JavaScript 是 Apple 的惟一腳本選項而且他們不容許下載代碼到本地,JavaScript 在恢復特權地位–做爲那些想快速迭代的惟一選擇。JavaScript 的可用性引起了一些努力,像 React 和 NativeScript 和 Apple 對代碼下載政策的放寬把握已經完美地對外公佈。java
Web 提倡者有時候代表基於 web 的開放標準最終會勝利,由於開放一直都會贏。然而,Linux 就是一個明顯的例子,這是一個開放的迅速發展的卻沒有委員會統一標準的生態系統。React,Facebook 彷佛成了開源項目中快速構建的一個開發者生態系統。已經有了一個圍繞 React.js 快速成長的委員會,這明顯給他們帶來了領先的機會。可是在 Telerik 的 NativeScript 團隊正與 Google 共同工做,所以Angualr2.0 須要被無縫集成。Google 打算支持非 DOM 的環境,無論 web 標準是否朝向它。微軟和谷歌可能須要一段很長的時間來支持他們在將來瀏覽器將實施的的標準。可是他們在共同朝着 TypeScript 努力,使構建一個負複雜一點的帶有 JavaScript (證實是編譯器在發現類型不匹配上比人聰明)應用程序更加簡單。
Apple 已經爲他們的新 Swift 語言創建了許多至關使人印象深入的工具,尤爲是互動場景(interactive playground)。然而,Facebook 在 React Native 上依據即刻反饋和高頻即時編碼可能已經有了更好的編碼體驗。蘋果將會繼續迭代他們的工具,開發者社區如今已經增長了這些新的 JavaScript 環境工具。Android 可能技術上是開源的,可是它在社區建設上卻不是開放的。谷歌正在獨自加強 Android 的平臺和工具。大概真的是開放的開發者社區纔會勝利,而真正基於社區的開源可以比基於開源標準的開放迭代更快。爲此,「本地的 UX 使用 JavaScript 去創建」環境並取得成功,這樣的平臺確定不會失敗。應用仍是會依據平臺的外觀和感受,並採用新的特定平臺的 API 去創建。
這個時候,看起來好像很是開放的JavaScript開發者社區將要贏得勝利了,由於他們製做的APP具備本地平臺的的外觀,感受和性能,除了須要有Web開發的經驗。封閉平臺以往一直取勝是由於那時候的APP須要爲他們封閉的生態系統定製。目前,開放的web標準仍是輸的。若是手機瀏覽器廠商能贊成新標準,讓他們製做的應用能具備本地應用那樣的體驗,那麼他們就必定會取得勝利。ios
你認爲JavaScript將會掌控移動開發的將來嗎?仍是Java,Objective-C和Swift繼續它們的領導地位? 那物聯網,它的後端會經過Node.js嗎?經過調查,讓咱們知道你用什麼來創建你的APP吧。web
原文連接編程