by Conmajia

PC上的JavaScript已经发展到ECMAScript 6(ES6),马上ES10都快出来了(虽然还是草案),但是硬件上的JS却很少听说。这几年手持设备/可穿戴设备的发展非常快,可以说快到令人发指。以ARM为主的嵌入式CPU几年前运行gingerbread都还卡的不行,现在已经845、855,3GHz主频起步,轻松秒杀一票PC了。既然硬件这么强,那么我就有了在嵌入式设备里玩JavaScript的可能,并且我坚信它一定是可行的,于是我找权威人士咨询了一下。

▲ 仙人指路让我省了不少劲(Sebestyen是ECMA的秘书长)

果然,这方面的工作早就开展起来了。不过也证明了我的想法是可行的。按图索骥,在联系了Hoddie和Luthi之后,我找到了用于嵌入式设备的JavaScript草案。这份草案在ECMA 2019备忘录中已经有了明确的agenda,让我突然有点兴奋。

TC53 – Smart Wearable Systems and Sensor-based Devices
Scope:
Internet of Things (IoT) is becoming a reality, and with it, the appearance of small intelligent devices linked together by large data networks to data centers collecting and analyzing “big data”. A sizable category of such intelligent devices are in form of so called wearables. Wearable sensor-based systems can comprise various types of small sensors, transmission modules and processing capabilities, and can thus capture various information ranging from monitoring of bodily activities to blood pressure, body temperature and heart rate in wearable devices, and external temperature, humidity, atmospheric pressure, location, and even altitude in small intelligent devices.

事实上,嵌入式设备的JS引擎目前全世界只有Peter Hoddie的Moddable公司一家在提供。不过他们起步很早,大约在2005年前后发布了第一个公开的用于硬件的JS引擎叫做XS3,基于ES3。但使用的厂家比较少,主要是Sony在用,代表产品PRS-500。

▲ 大法的另类电子书(注定扑街)

随后2010、2014年前后,XS5、XS6分别发布,可惜依然没什么代表性的产品。这可以理解,那会儿嵌入式设备的计算能力还是太若弱了,必须牺牲很大一部分资源来实现硬件JS。从第6版开始,XS慢慢发力,并实行了开源,加快发展步伐。

▲ 基于XS6的产品,我不知道这是什么玩意儿,看着像个wifi router

现在,到了最新的XS7之后,硬件JS已经非常强大了。除了跨平台支持win、mac、linux之外,还通过了几乎全部Test262。图片有点旧,最新版是99.8%/99.4%的comformance。新的XS7现在成为了TC-39的核心。

▲ 语言特性方面,已经通关了

XS不光可以运行在嵌入式设备上,还可以集成到PC里。这一点,让我觉得它将来的应用非常广泛。想象一下,一台自带“JS引擎”的手环、路由器、电脑,听着就很带感。

▲ XS的链接模型

最近,XS8也即将出现。显然TC-53就是它的雏形。根据介绍,async 和 await 都将粉墨登场,这对于MCU经典的setup-loop结构来说非常有用。不管是配置、读取传感器,还是上传数据等等操作,有了JS异步能力的加持,未来的嵌入式(可穿戴)设备开发必然如虎添翼。XS甚至还有更大的野心,想要在多核MCU上实现并行计算能力,支持 automics、shared memory 等等。并行的JavaScript,我他妈吹爆!

在嵌入式设备中使用 JavaScript 的前景的更多相关文章

  1. 在嵌入式设备中实现webrtc的第三种方式①

    最近两年,我对于网络知识,包括底层协议学习比较多,webrtc这种几乎是使用到了所有层面网络协议的技术也逐渐进入我的视野. 之前我提出了两种在嵌入式设备上实现webrtc的方式,一是用官方代码,然后改 ...

  2. 在嵌入式设备中实现webrtc的第三种方式③

    本系列的最后一篇,讲解收发音视频数据. 贴出最终效果: 其实很简单,直接调用writeFrame即可,如下图: 当然,这是部分代码,完整代码在下面,展开可见: 1 #include "com ...

  3. libmodbus库linux 嵌入式设备中的使用

    libmodbus库的交叉编译:1]到libmodbus官网https://libmodbus.org/download/下载安装包,内部自带configure文件,官网推荐v3.1.6稳定版.另外注 ...

  4. 嵌入式设备web服务器比较

    目录(?)[-] Boa Thttpd Mini_httpd Shttpd Lighttpd Goahead AppWeb Apache 开发语言和开发工具 结论 备注   现在在嵌入式设备中所使用的 ...

  5. 嵌入式设备web服务器

    操作系统:ubuntu10.04 前言:    为了提高对设备的易操作性,很多设备中提供pc机直接通过浏览器操作设备的功能.这就需要在设备中实现web服务器.    现在在嵌入式设备中所使用的web服 ...

  6. 嵌入式设备上的 Linux 系统开发

    转载:http://www.ibm.com/developerworks/cn/linux/embed/embdev/index.html   如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bo ...

  7. javascript高级编程3第二章:在html中使用javascript

    2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...

  8. JS高程2.在HTML中使用Javascript(1)

    1.使用<script>元素向HTML页面中插入Javascript HTML4.01中<script>标签有6个属性: (1)async:可选.表示立即下载脚本,不影响页面中 ...

  9. Javascript高级程序设计——在HTML中使用Javascript

    <script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...

随机推荐

  1. BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP

    BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP 题意:Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...

  2. 浅析ajax原理与用法

    1 ajax原理 Ajax(Asynchronous JavaScript and XML (异步的JavaScript和XML)),是一种快速创建 动态网页的技术,目的是显示动态局部刷新.通过XML ...

  3. jackson json转对象 json转集合 对大小写支持

    @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, isGetterVisibi ...

  4. appium 元素定位find_element_by_android_uiautomator方法使用

    若appium中给定的方法无法满足你的需求,刚好uiautomator中的方法可以满足你的需求时,你可使用find_element_by_android_uiautomator来调用uiautomat ...

  5. python接口自动化(十四)--session关联接口(详解)

    简介 上一篇cookie绕过验证码模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等等,这时候如何保持会话呢?这里我以jenkins平台为例,给小伙伴们在沙场演练一下. se ...

  6. ASP .NET SignalR起步

    在网站开发中,时常需要使用消息推送功能,http协议是无状态连接,我们需要一个类似桌面程序中socket保持服务器和客户端连接的技术.signalr就是这样一个技术,他能保持网站页面和服务器的一个长连 ...

  7. CentOS_关机与重启命令详解

    Linux centos关机与重启命令详解 Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过 ...

  8. sqlserver2014无法打开报Cannot find one or more components_修复方案

    前言:我跟网上大家的原因基本一样,就是好久没用sqlserver了,中间也对VS进行过卸载升级等,突然有一天发现,打开Sqlserver时打不开了,出了一个弹框:Cannot find one or ...

  9. FPGA高速ADC接口实战——250MSPS采样率ADC9481

    一.前言 最近忙于硕士毕业设计和论文,没有太多时间编写博客,现总结下之前在某个项目中用到的一个高速ADC接口设计部分.ADC这一器件经常用于无线通信.传感.测试测量等领域.目前数字系统对高速数据采集的 ...

  10. Windows Server 2016-DNS客户端新增功能

    域名系统(DNS)是包含TCP / IP的行业标准协议套件之一,DNS客户端和DNS服务器一起为计算机和用户提供计算机名称到IP地址映射名称解析服务. 在Windows Server 2016中,DN ...