為什么 JavaScript 會在移動端中勝出?

JavaScript并不是世界上最優(yōu)美的編程語言。正因如此,一個世界級的專家寫了一本關(guān)于這個語言的“精粹 ”的書。這本書的名字是“深度挖掘javascript的亮點(diǎn)”,因?yàn)閮?yōu)秀的東西被埋的相當(dāng)深。即便如此,它還是迅速地稱為世界上最受歡迎的語言之一。這種受歡迎是應(yīng)得的,因?yàn)楸M管這種語言存有缺陷,但是javascript提供給開發(fā)者其它語言不能給予的重要的優(yōu)勢。有一些優(yōu)勢是在瀏覽器的開發(fā)商同意了Javascript(好吧,技術(shù)上的ECMAScript)作為web語言的標(biāo)準(zhǔn)后產(chǎn)生的。其它的是固有的web應(yīng)用編程模型以及更沒有通過什么增強(qiáng)改進(jìn)。然而,盡管原生態(tài)的應(yīng)用程序統(tǒng)治了web應(yīng)用在移動設(shè)備上的地位,但是JavaScript的優(yōu)勢正在逐步轉(zhuǎn)向移動設(shè)備。最終它會主宰嗎?

此處應(yīng)有圖片

</div>

流行然而并不優(yōu)先

  • 最近的TIOBE社區(qū)列表將JavaScript列為在所有編程語言中的第六位并且還在持續(xù)上升。TIOBE方法的排名傾向于支持老舊的,更加成熟的語言,而不太擅長去追隨潮流。相比之下,Redmonk排名方法將JavaScript放在第一的位置上。Redmonk方法某種程度上會偏向于有著強(qiáng)大開源社區(qū)的語言,但是同時在實(shí)質(zhì)上會反映現(xiàn)在的趨勢和興趣點(diǎn)。我們自己的開發(fā)者經(jīng)濟(jì)概覽已經(jīng)表明HTML5/Javascript的聯(lián)合已經(jīng)是移動端開發(fā)者所采用的第二流行的語言,幾乎55%的人使用。僅僅以微小的優(yōu)勢輸給57%的人使用java。然而,盡管我們發(fā)現(xiàn)HTML5和Javascript的組合在優(yōu)先選擇的人群上為(19%),在這個方陣上遠(yuǎn)遠(yuǎn)落后于Java(29%)。這看起來會在未來幾年顯著提高。[你怎么認(rèn)為呢?我們已經(jīng)有了一個新的調(diào)查,所以看看這個調(diào)查然后讓我們知道你的看法]

JavaScript在瀏覽器上飛向自由

  • 這并不是一個標(biāo)準(zhǔn)的“網(wǎng)贏”的說法。我并不認(rèn)為瀏覽器或者是基于網(wǎng)絡(luò)視圖的應(yīng)用程序最后會統(tǒng)治移動設(shè)備。即使使用而且增長但不會是常態(tài)。如果將來真的開放web標(biāo)準(zhǔn)來統(tǒng)治移動設(shè)備那么他們需要從文檔對象模型(DOM)開始。DOM不是構(gòu)建應(yīng)用程序,而是文檔的基礎(chǔ)。當(dāng)然你可以最初圍繞一個平臺設(shè)計一個用于文檔的應(yīng)用程序,但是你會舉步維艱。看一眼現(xiàn)在的框架,允許你為移動瀏覽器或網(wǎng)絡(luò)視圖設(shè)計的相當(dāng)高性能的應(yīng)用程序:React.js 、 Famo.us 和lonic。這三者的共同點(diǎn)就是盡可能少用DOM。

  • 是的,有太多的 WebGL(或者說 HTML5 Canvas 必備),但是這些都是低級別的 APIs。你所需的是大的、可能是多字節(jié)的、好的框架為開發(fā)大多數(shù)應(yīng)用來創(chuàng)建一個優(yōu)秀的平臺。這不太適合 web 應(yīng)用編程模型,其中最新的程序代碼是放在一個遠(yuǎn)程的服務(wù)器上,尤其不適用在一個移動的環(huán)境中。能在一個大的好的存儲在本地的WebGL上創(chuàng)建一個混合型的應(yīng)用是真的,而且只是從遠(yuǎn)程的服務(wù)器上獲取程序特定的代碼。但是為什么要使用瀏覽器呢?為什么不只是 javaScript 能優(yōu)于其他的在硬件圖形加速器(提示:Qt 提供不錯的產(chǎn)品)的跨平臺框架。一個高級別的 API 在語言之間的橋接上是不會有那么多的開銷的。或許在涉及訪問特定功能的時候也是欠缺限制。

  • 現(xiàn)在有幾個符合這一描述的非常有趣的新選擇。 React Native 和 NativeScript.。它們以不同的方式運(yùn)行,但是二者都是用 JavaScript 來構(gòu)建一個原生態(tài) UI 的應(yīng)用程序。Appcelerator 的 TiNext 可能也是很有意思的,即使它們多年來被多次談?wù)搮s不曾公開一個版本,因此讓我們耐心等待并一睹它的風(fēng)采。

JavaScript異常

  • 蘋果已經(jīng)恢復(fù)了JavaScript 在移動端的優(yōu)勢。阻止了大多數(shù)開發(fā)人員在移動端采用一個敏捷、web 樣式持續(xù)交付模型的冠一個關(guān)鍵事情就是 Apple 在代碼下載上的禁令。如果沒有這種迭代模式的顯著放緩,對比測試會更加困難。這實(shí)際上就意味著開發(fā)者,尤其是初學(xué)者,會學(xué)的慢些。直到最近,唯一獲取更快的迭代的方式就是首先從 Android 開始,開發(fā)一個混合的應(yīng)用程序,因?yàn)?Apple 使得JavaScript 稱為在 webview 代碼下載規(guī)則中的一個異常。在第一種情況下,它意味著大多數(shù)早期的采納者正在遠(yuǎn)離這個平臺。不幸的是第二種情況下 UX 的取舍實(shí)在是太大了,大多數(shù)開發(fā)者因?yàn)橛脩粲贸绦蚬收匣蛘咔袚Q到本地去走那條路線。但是在 ios7 中為運(yùn)行 JavaScript 增加了 JavaScriptCore 接口,而且最新的 ios 開發(fā)者程序許可證條款中,他們修改了代碼下載異常的規(guī)則包括 JavaScriptCore。

  • 這從安全的角度上講是有道理的。Apple 能審計和更新他們的運(yùn)行時間,然而如果他們允許地第三方運(yùn)行時下載代碼,他們就沒有有效地監(jiān)控安全問題。因?yàn)?JavaScript 是 Apple 的唯一腳本選項(xiàng)并且他們不允許下載代碼到本地,JavaScript 在恢復(fù)特權(quán)地位–作為那些想快速迭代的唯一選擇。JavaScript 的可用性引發(fā)了一些努力,像 React 和 NativeScript 和 Apple 對代碼下載政策的放寬把握已經(jīng)完美地對外公布。

開放會贏嗎?

  • Web 提倡者有時候表明基于 web 的開放標(biāo)準(zhǔn)最終會勝利,因?yàn)殚_放一直都會贏。然而,Linux 就是一個明顯的例子,這是一個開放的迅速發(fā)展的卻沒有委員會統(tǒng)一標(biāo)準(zhǔn)的生態(tài)系統(tǒng)。React,F(xiàn)acebook 似乎成了開源項(xiàng)目中快速構(gòu)建的一個開發(fā)者生態(tài)系統(tǒng)。已經(jīng)有了一個圍繞 React.js 快速成長的委員會,這明顯給他們帶來了領(lǐng)先的機(jī)會。但是在 Telerik 的 NativeScript 團(tuán)隊(duì)正與 Google 共同工作,因此Angualr2.0 需要被無縫集成。Google 打算支持非 DOM 的環(huán)境,不管 web 標(biāo)準(zhǔn)是否朝向它。微軟和谷歌可能需要一段很長的時間來支持他們在未來瀏覽器將實(shí)施的的標(biāo)準(zhǔn)。但是他們在共同朝著 TypeScript 努力,使構(gòu)建一個負(fù)復(fù)雜一點(diǎn)的帶有 JavaScript (證明是編譯器在發(fā)現(xiàn)類型不匹配上比人聰明)應(yīng)用程序更加簡單。

  • Apple 已經(jīng)為他們的新 Swift 語言建立了許多相當(dāng)令人印象深刻的工具,尤其是互動場景(interactive playground)。然而,F(xiàn)acebook 在 React Native 上依據(jù)即刻反饋和高頻即時編碼可能已經(jīng)有了更好的編碼體驗(yàn)。蘋果將會繼續(xù)迭代他們的工具,開發(fā)者社區(qū)現(xiàn)在已經(jīng)增加了這些新的 JavaScript 環(huán)境工具。Android 可能技術(shù)上是開源的,但是它在社區(qū)建設(shè)上卻不是開放的。谷歌正在獨(dú)自增強(qiáng) Android 的平臺和工具。大概真的是開放的開發(fā)者社區(qū)才會勝利,而真正基于社區(qū)的開源能夠比基于開源標(biāo)準(zhǔn)的開放迭代更快。為此,“本地的 UX 使用 JavaScript 去建立”環(huán)境并取得成功,這樣的平臺肯定不會失敗。應(yīng)用還是會依據(jù)平臺的外觀和感覺,并采用新的特定平臺的 API 去建立。

  • 這個時候,看起來好像非常開放的JavaScript開發(fā)者社區(qū)將要贏得勝利了,因?yàn)樗麄冎谱鞯腁PP具有本地平臺的的外觀,感覺和性能,除了需要有Web開發(fā)的經(jīng)驗(yàn)。封閉平臺以往一直取勝是因?yàn)槟菚r候的APP需要為他們封閉的生態(tài)系統(tǒng)定制。目前,開放的web標(biāo)準(zhǔn)還是輸?shù)摹H绻謾C(jī)瀏覽器廠商能同意新標(biāo)準(zhǔn),讓他們制作的應(yīng)用能具有本地應(yīng)用那樣的體驗(yàn),那么他們就一定會取得勝利。

你是用什么來制作的?

  • 你認(rèn)為JavaScript將會掌控移動開發(fā)的未來嗎?還是Java,Objective-C和Swift繼續(xù)它們的領(lǐng)導(dǎo)地位? 那物聯(lián)網(wǎng),它的后端會通過Node.js嗎?通過調(diào)查,讓我們知道你用什么來建立你的APP吧。

原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,813評論 25 708
  • 介紹 最近出現(xiàn)的 React Native 再次讓跨平臺移動端開發(fā)這個話題火起來了,曾經(jīng)大家以為在手機(jī)上可以像桌面...
    cosWriter閱讀 2,330評論 0 12
  • ? 如今的新婚夫婦結(jié)婚有一套自己的婚紗照,顯然已經(jīng)是標(biāo)配了,越來越多的新婚夫妻為了紀(jì)念一生中這難得的時刻,都不惜重...
    我不是博客閱讀 516評論 0 1
  • 今天是一年一度的體檢日,今年單位的體檢地點(diǎn)定在海口市瓊山區(qū)濱江路的美年健康體檢中心,這是我們沒有來到的地方。 多年...
    浮塵過隙閱讀 215評論 0 0
  • 念念不忘,必有回響,但是真的有回響嗎? 扔一顆石子,平靜的湖水,必然會引起漣漪,漣漪或大或小,還是引起了漣漪對嗎?...
    女青mua閱讀 274評論 0 0