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
原文连接编程