【编者按】本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是《jQuery UI 实践》 一书的作者。

本文系 OneAPM 工程师编译呈现,以下为正文的第二部分。点此阅读第一部分。

本地移动 apps

在2015年,出现了一种新的基于 JavaScript 的移动应用开发类别:JavaScript Native。与基于 Cordova 或 PhoneGap 的应用不同,JavaScript 本地应用使用平台的本地控制与范型建立用户界面,无需涉及浏览器或 web 视图。

JavaScript Native 框架试图提供一种两全其美的方式建立 iOS 与 Android 应用:使用 JavaScript 编写程序逻辑(而不是 Java,Swift 等),使用平台的本地用户界面 API 建立适应原生 OS 的应用,从而实现可能的最佳性能。

使用 JavaScript 打造的移动 apps 举例,点此获得源代码。

React Native 与 NativeScript是2015年最早公开发布的两个 JavaScript Native 框架,后来者还包括 Fuse 与 tabris.js。自然,不同的框架提供了不同的功能。比如说,React Native 允许重用 React JavaScript 框架,而 NativeScript 允许直接调用 iOS 与 Android APIs。但是,他们都具备使用 JavaScript 搭建真正本地 apps 的高级方法。

尽管使用 JavaScript 建立本地 apps 的想法对 web 开发者而已相当诱人,但与 Cordova 之类的框架相比,JavaScript Native 框架也存在如下的一些缺陷:

  • 由于 JavaScript Native 框架不使用浏览器,你必须学习用于搭建界面的框架相关的 APIs,而不是像打造 Cordova 应用那样简单地使用 HTML 语言。

  • 由于 JavaScript Native 应用是本地应用,在建立较为大型的应用时,内存管理是需要额外考虑的问题,这与建立本地 iOS 与 Android 应用时如出一辙。

  • 最后,由于 JavaScript Native 框架非常新兴,可参考的案例与教程都很有限。与那些经历多年发展的框架相比,这些框架还很不成熟。

就这些框架在2016年的发展,笔者采访了来自 React Native 团队的 Christopher Chedeau (aka Vjeux)以及 NativeScript 的产品经理 Valio Stoychev。两者都不谋而合地关注于稳定性。

“就 React Native 而言,我们已经度过了早期的新鲜阶段,现在正进入的这个阶段要求我们变得更加牢靠。你可以发现,在性能工具优化、核心 APIs 提升,错误消息优化以及边缘案例修复方面,我们投入了大量的努力。这样,Facebook 内外的工程师才能随心所欲地打造更加高质量的移动 apps。“ ——Facebook,Christopher Chedeau (Vjeux)。

”随着用户基础的不断扩张,我们要为用户确保一个鲁棒的框架,才能在此基础上打造切实可行的应用。因此,我们打算继续在性能及调试工具方面努力,从而提高 NativeScript 开发者的体验。此外,另一重心是与 Angular 2 团队的合作,预计将贯穿2016年。” ——Telerik,Valio Stoychev。

JavaScript Native 2016年展望

对 JavaScript Native 平台而言,2016年的重点是提升稳定性与采纳率。随着 React Native 与 NativeScript 等框架不断巩固其功能集,预计围绕这些框架的工具也会越来越多,比如 Telerik 用于搭建 NativeScript 应用的 Telerik Platform。

当然,时间会告诉我们,2015年 JavaScript Native 应用的大热能否在2016年转化为大规模的使用。但是,使用这些框架成功打造的大量高质量应用(查看 React Native 案例展示及 NativeScript 案例展示)似乎在暗示,用 JavaScript Native 方法打造应用的模式将会流行很长一段时间。

对需要结合本地 UIs 与本地应用的公司而言,JavaScript Native 框架相比于使用 Xcode 与 Objective-C/Swift 打造 iOS 应用以及使用 Android Studio 与 Java 打造 Android 应用,提供了更加强有力的选项,尤其是考虑到多数公司的开发者都具备一定 JavaScript 开发能力。

总而言之,JavaScript Native 应用对 JavaScript 开发者而言是令人激动的全新战场。JavaScript 开发者不再需要学习本地编程语言就可以编写本地移动应用。然而,本地移动应用并不是 JavaScript 渗入的唯一领域——在传统的桌面应用领域,JavaScript 也有涉足。

Desktop 应用

习惯上,如果想搭建一个 Windows 或 Mac 应用,你会使用 WPF 与 Windows Forms 之类的平台特定工具或 Java、Adobe Air 之类的跨平台接口。但是,与本文中讨论的其他软件生态系统一样,基于 JavaScript 的解决方案正慢慢地侵入这一版图。

该领域内首个基于 JavaScript 的解决方案是 Node-WebKit,由 Intel 创建并于2011年底实现开源。Node-WebKit 现在又称为 NW.js,因为它已经从 WebKit 切换为 Chromium。NW.js 的实现方式与 Cordova 有些类似,只不过它针对的是桌面应用。

NW.js 最早由 Intel 开发,于2011年公开发布。

NW.js 会将 web 应用打包至本地 shell,同时提供访问本地桌面 APIs,诸如文件选择器、窗口菜单等功能。这种组合允许你使用基于统一标准的 web 技术打造 Windows,OS X 以及 Linux 桌面应用。

如果快进一两年,你会发现 NW.js 并非使用这种基础架构的唯一框架。2015年4月,GitHub 宣布推出 Electron,一款相似的用于创建跨平台应用的框架。

GitHub 于 2015年4月宣布推出 Electron

Electron 最早作为 Atom(GitHub 的 web 端文本编辑器)的 shell 开发出来,之后经过拆分更易于在其他项目中使用。因为 GitHub 的支持,Electron 的流行度突飞猛进,现在在 GitHub 上有超过2万颗星(很快赶上 NW.js 的2.5万颗星)。

2015年,作为 Microsoft 全新跨平台 Visual Studio Code IDE 背后的引擎,Electron 再次登上头条。此外,浏览一下社群创造的 Electron 资源列表,就会了解 Electron 在开发社群是多么受欢迎。

桌面应用 2016年展望

与本文讨论过的许多技术相似,用于搭建桌面应用的这些跨平台 JavaScript 工具的未来似乎前途无量。有了 GitHub、Microsoft 甚至 Slack 这些先例——Slack 其实并非基于 NW.js 或 Electron 搭建,但是也使用了 web 技术创建本地应用——其他公司可以信心满满地使用 web 技术搭建桌面应用。预计,在2016年,NW.js、Electron 之类的项目将会创建出更多的桌面应用。

2016年 JavaScript 的新领域

尽管本文讨论的话题似乎有些分散——服务器端代码、移动 apps 以及桌面应用,叙述的主体却是基本一致的:短短几年时间里,在这些环境中运行 JavaScript 从不可想象演进为大势所趋。在不到十年时间里,JavaScript 从用于处理图片翻转的小儿科语言,进化为可能是世界上最流行的编程语言。JavaScript 的未来,似乎无可限量。

2007年,Jeff Atwood 发出豪言:”任何能用 JavaScript 编写的应用,最终都会由 JavaScript 写就。“这句话简直如先知一般准确。事实上,JavaScript 已经延伸到许多本文未曾涉及的领域,例如通过 Johnny-Five 这类项目运行在硬件,甚至在苹果最近宣布的用于 Apple TVs 的 tvOS 中成为创建本地应用的一等公民。

促使 JavaScript 不断成长的一大原因,是人们对使用单一开发模型打造多种范型软件的渴望。大多数公司,尤其是小公司,都无法雇佣足够数量的开发者,以满足人们当前使用的不计其数的操作系统与设备类型的需求。甚至在 Facebook 这种规模的公司,这也是一大问题,正如 Christopher Chedeau 所说:

”在我眼中,开发者世界的一大悲哀是社群依据语言(甚至是生态系统)进行划分。 JavaScript、Java、Objective-C、Python 以及 C++ 等。实际上,这导致了资源的巨大浪费,因为针对每个生态系统,都要开发类似的一套工具,诸如包管理器,IDE,核心函数库,知识库等。

举个具体的例子吧,在 Facebook,每个功能我们都必须实现三次:Web 版,iOS 版以及 Android 版。更糟的是,由于一个工程师往往难于同时掌握这些生态系统,我们通常需要三个人来实现一个功能。这真是悲哀。

为了解决该问题,我首先想到的是,我们需要一种单一的语言或生态系统。有了 React Native,我们更趋向于 JavaScript 语言,但从宏观的角度看,哪一种语言并不重要。重要的是,只保留一种语言。“ —— Facebook,Christopher Chedeau。

随着 JavaScript 迅速地在移动、桌面、服务器、硬件领域获得青睐,它已经成为唯一可能让此美好愿景成为现实的语言。时间会告诉我们,JavaScript 的极速增长能否在2016年持续下去。不过,JavaScript 工具在软件生态系统的快速普及似乎预示着 JavaScript 无可限量的未来。

基于此,笔者将用 Brendan Eich 的名言作为本文的结尾:“永远相信 JS(Always bet on JS)。”

本文系 OneAPM 工程师编译呈现。OneAPM Browser Insight 是一个基于真实用户的 Web 前端性能监控平台,能够帮大家定位网站性能瓶颈,网站加速效果可视化;支持浏览器、微信、App 浏览 HTML 和 HTML5 页面。想技术文章,请访问 OneAPM 官方技术博客。

本文转自 OneAPM 官方博客

原文地址:http://developer.telerik.com/featured/what-to-expect-from-javascript-in-2016-beyond-the-browser/

转载于:https://www.cnblogs.com/oneapm/p/5413541.html

2016年度 JavaScript 展望(下)相关推荐

  1. 一个菜逼程序员的2016年度总结

    最近看到阮一峰老师的2016年度总结,菜逼程序员我也想记录下自己的这一年. 从学校走出来 15年6月从学校走出来,和几个大学死党同学规划毕业旅行是大西北,作为一个重庆的山上娃娃,见到沙漠,戈壁,雅丹, ...

  2. 阿尔法特磁悬浮制冷机组荣获“2016年度中国数据中心优秀节能产品”殊荣

    摘要:3月3日,以"创新,发展,跨越"为主题的"2016年度第八届中国数据中心行业表彰大会"在北京隆重举行,并同期揭晓了"2016年度中国优秀数据中心 ...

  3. 解读GAN及其 2016 年度进展

    作者:程程 链接:https://zhuanlan.zhihu.com/p/25000523 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 摘要 本文主要包括两方面 ...

  4. 反骨仔的 2016 年度全文目录索引

    反骨仔的 2016 年度全文目录索引 序 这是博主去年所发文章的目录汇总,虽然含金量不高,即便技术不高,但始终勇于献丑,敢于弄斧到班门. [备注]推荐:表示推荐数 ≥ 50,非自荐:强烈推荐:表示推荐 ...

  5. 【喜报】2016 年度最受欢迎中国开源软件TOP20出炉——JEECG、JEEWX双入围!

    2017年伊始,捷报开年--由开源中国主办,博文视点协办的 "2016 年度最受欢迎中国开源软件评选" 已经落下帷幕,投票结果新鲜出炉! 在各位JEECG社区开源爱好者以及 粉丝的 ...

  6. Linux省级精品课程申报,2016年度省级精品在线开放课程开始申报啦!

    原标题:2016年度省级精品在线开放课程开始申报啦! 重要通知 日前,省教育厅发布实施"湖北省普通本科高校省级精品在线开放课程立项建设工作"的通知,要求各普通本科高校于12月15日 ...

  7. 2016 年度码云热门项目排行榜 TOP 50

    原文地址:http://www.oschina.net/news/80909/2016-oschina-git-top-50?from=timeline&isappinstalled=0 阿里 ...

  8. 高德公布2016年度交通报告:十大堵城上榜

    CNET科技资讯网 1月10日 北京消息:今日,高德地图联合交通运输部科学研究院.清华大学戴姆勒可持续交通研究中心.阿里云.清华同衡规划设计研究院.第一财经数据新媒体等权威机构正式发布了<201 ...

  9. 电大本科计算机应用基础课程考核,2016年度春中央电大本科计算机应用基础学习知识网考操作技巧题及其规范标准答案.doc...

    2016年度春中央电大本科计算机应用基础学习知识网考操作技巧题及其规范标准答案.doc -一.操作题1.请在考生文件夹下完成如下操作(1)通过"资源管理器"窗口,在考生文件夹下建立 ...

最新文章

  1. redis geohash 学习笔记
  2. (理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
  3. 斩获23项冠军,日均调用破万亿!百度交出年度AI成绩单:语音语言领衔技术突破,国产自研成大趋势...
  4. Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)
  5. 计算机硬件 OR CX 1,计算机硬件第三章ppt
  6. 【机器学习】机器学习模型验证,这3个 Python 包可轻松解决95%的需求!
  7. 剑三服务器文件在哪里,剑三服务器同步设置在哪
  8. cserialport 循环发送信号_C++信号处理
  9. Java8 Stream详解~归约(reduce)
  10. .net下samus Mongo-Cshap 引擎中的find原生查询
  11. 恢复mysql数据--使用frm和ibd文件
  12. 视频教程-基于VUE和Hplus通用后台管理系统(前端篇)-Vue
  13. date日期格式化 java,Java日期格式化常用方法
  14. RTU设备功能及选型
  15. Lumion 9.0 建筑日景快速渲染实例教程
  16. 免费版xshell下载地址
  17. 金融风险管理 思维导图
  18. 【SCI】英文论文投稿经验分享
  19. 三个思维结构:黄金圈法则、金字塔结构、PREP结构
  20. 今天开始学JAVA了!

热门文章

  1. 深入浅出 Javascript API(二)--地图显示与基本操作 转
  2. 进程间通信之消息队列
  3. SQL*Plus命令
  4. (转载)UI接口分层自动化测试框架设计思想
  5. 指针结构体函数-事实上能够这样具体理解
  6. 用jquery写一个属于自己的音乐播放器
  7. css z-index
  8. SpringMVC(一):环境搭建
  9. Loading页的实现代码
  10. 【spring容器启动】之bean的实例化和初始化(文末附:spring循环依赖原理)