JavaScript 正在蚕食着开发领域,抑或是开发领域正在蚕食着 JavaScript?
好吧,如果你相信 Parse 公司的联合创始人兼首席技术官 Kevin Lacker 的话,现在的情况就是这样的。
在本周于都柏林举办的 Web 峰会上,Lacker 在它的演讲中表示,强大、无处不在的 JavaScript,及其完善的生态系统,会使得这门语言在未来几年内成为应用、网站和服务器端开发的默认语言。
现代开发者在近 10 年间的开发过程中,不得不面对这三大主要平台:浏览器、服务器和本地/手机应用。JavaScript 已经成为事实上的 Web 标准语言。而 Lacker 认为 JavaScript 正在接手服务器端开发,马上就要将触手伸向安卓及 iOS 上的原生应用。
“在浏览器中几乎没什么可能打乱 JavaScript 一统天下的局面” Lacker 说到,“更有意思的是在服务器端开发领域。”
日益流行的 Node.js
Lacker 自己确实有利益在其中,因为 Parse 是一家著名的后台服务提供商,他们使用了服务器端的 JavaScript。Parse 公司在 2013 年被 Facebook 收购,并在最近几年内成为了 Facebook 开发过程的关键所在。
Java、C、Python、Ruby、PHP 以及大量 ASP.NET(及其他语言)的衍生物,已经成为后端处理中传统的服务器语言。
“运行在服务器上编程语言已经永远是一个碎片化的市场了。” Lacker 说。
Lacker 可能确实有其动机在推进 JavaScript 的发展,最近几年中 JavaScript 占领服务器端开发领域的趋势日益显著。
在服务器端安装 JavaScript 的趋势已经有一段时间了,超过 20 多种流行的框架运行在其上。SilkJS、MongoDB、Aptana、CouchDB、Domino(IBM)、SAP HANA XS Engine、TeaJS 以及 Opera 都在这段时间内推出了其服务器端的 JavaScript 框架,在技术领域广受欢迎。
然而在服务器端 JavaScript 领域中最耀眼的明星当属 Node.js。
“如果你想要找工作的话,赶紧学习 Node.js吧,” Lacker 说。“ Node.js 正在发生着不同寻常的变化,它正在颠覆传统的脚本开发。”
传统的脚本开发是这样的:你有两个不同的开发团队,一个后端一个前端。后端团队处理在服务器端的开发,使用的是需要编译的语言(相对脚本开发来说),比如 C# 或者 Java。而前端团队则是在使用 HTML、CSS、JavaScript,以及原生应用开发语言比如 Swift、Object-C 或 Java。
Lacker 的观点是,开发人员倾向于使用他们最熟悉的编程语言。而 JavaScript 的流行则意味着,现在的每个 Web 开发人员都能成为服务器端开发,而无须从根本上改变其编程方式。
“同一个工程师团队使用 JavaScript 和 Node.js,而不是 Java 和 JavaScript,” Lacker 说,“你有一个巨大的优势,因为你在使用你已经了解的东西。”
Netflix 和 Paypal 都在使用后端 Node.js、前端 JavaScript 的开发方法,Lacker 这样说到。
“每家公司总有人会写 JavaScript,几乎无一例外。” Lacker 说。“在服务器端驱动 JavaScript 前行的力量是不同的……它的优势在于你可以用更短的时间完成功能。”
原生应用缓慢地接受 JavaScript
Lacker 指出,在 JavaScript 正在蚕食开发领域这个论点中,最薄弱的环节就是应用生态环境。最优秀的高性能应用都是使用原生语言编写的——在安卓上是 Java,在 iOS 上则是 Object-C / Swift。
但是程序员们在盼望一个通用的开发语言。HTML5 加上 CSS 和 JavaScript 曾经被认为是这个通用开发语言,不过“混合”应用(基本上是把网站“封装”成原生应用)由于性能问题在近几年开始淡出这个舞台,。Lacker 认为第一代使用 JavaScript 创建原生应用(也就是混合应用)的工具——PhoneGap、Sencha、appMobi、Appcelerator——都还不错,不过并没有解决底层的问题。
Facebo 和 Parse 在尝试解决这个问题。React Native 是一个 JavaScript 框架,它尝试创建一套工具和方法,能够不借助原生语言,只用 Web 技术来创建动态的原生 app。Xamarin 则是另一家公司,提供了跨平台的原生应用开发工具,帮助开发者在 JavaScript 中调用 C#。(译者注:在 Xamarin 中,通过 WebView 控件使用 JavaScript 调用 C# 只是该框架的很小一部分功能,Xamarin 基本上还是使用 C# 而非 JavaScript 进行开发的。在原始版本中作者将 Xamarin 描述为 JavaScript工具,经评论提醒后已进行修正。)
参见:一次编写,多处运行:React Native 引领通用 App 开发潮流
“在这个核心领域的编程语言有可能发生改变的原因之一就是人们在这些语言的部署和应用上投入了大量的精力。” Lacker 说。
对于开发者来说,在当下使用 JavaScript 创建一个完全沉浸式的、动态的原生应用依然很困难。如果你提议说使用 JavaScript 来编写一个街机风格的游戏,那会招来人们的嘲笑。JavaScript 在硬件加速、游戏引擎(比如 iOS 上的 Metal)以及图形支持能力等方面都还没有准备好。
JavaScript 作为全平台的主导语言
Web 开发者(依然是开发者中最多的一支)被绑在了 JavaScript 上。到目前为止它还没有任何竞争对手。Google 的 Dart 语言曾经试图挑战 JavaScript 的地位,不过 Google 意识到这不太可能成功,于是把 Dart 设计成能够被编译为 JavaScript 的语言(就像 CoffeeScript 或者 GorillaScript)。
Lacker 的主要观点之一,就是 JavaScript 的生态环境能够使得 JavaScript 变得更好,随之而来的就是大型商业公司会逐步使用 JavaScript。生态环境使得产品越来越好,而越来越好的产品意味着占领市场。
“其他的编程语言并没有显现出这种增长的势头。” Lacker 说到。
JavaScript 市场的增长证明了 Lacker 的这一观点。
4 月份,在 Stack Overflow 的一份调查中显示,54.8% 的开发者在使用 JavaScript。Node.js 同样占有了 13.3% 的席位。7 月,一家名为 Devpost 的公司指出,HTML 和 JavaScript 目前是在学生开发者当中最受欢迎的语言(数据来自其黑客马拉松网络)。最近,Stack Overflow 做出了一份编程语言的情感分析。令人惊讶的是,JavaScript 在讨厌比例的排行榜上并没有排到很高。
“JavaScript 程序员的生态环境,以及 JavaScript 的工具正在占领这个市场。市场也会反哺产品,让它变得越来越好。这正是 JavaScript 逐步蚕食着开发领域的原因。” Lacker 说。
本文的原始版本错误地将 AngularJS 认为是服务器端语言,现在本文已经更正了该问题。
标题图片:“The Real JavaScript Robot”,来自 Flickr 用户 Ben Alman,CC协议