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就是它的雏形。根据介绍,asyncawait 都将粉墨登场,这对于MCU经典的setup-loop结构来说非常有用。不管是配置、读取传感器,还是上传数据等等操作,有了JS异步能力的加持,未来的嵌入式(可穿戴)设备开发必然如虎添翼。XS甚至还有更大的野心,想要在多核MCU上实现并行计算能力,支持 automicsshared 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_4872_[Shoi2017]分手是祝愿_概率与期望

    BZOJ_4872_[Shoi2017]分手是祝愿_概率与期望 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这 ...

  2. 事务处理中如何获取同一个connection 对象

    运用线程内部的map属性,将对象绑定到ThreadLocal中: 具体实现: 1.新建一个绑定Connection对象的单例类 public class ConnectionBind { privat ...

  3. C语言memcpy函数的用法

    介绍 memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, const void *sr ...

  4. PHP全栈学习笔记13

    php与ajax技术 web2.0的到来,ajax逐渐成为主流,什么是ajax,ajax的开发模式,优点,使用技术.(ajax概述,ajax使用的技术,需要注意的 问题,在PHP应用ajax技术的应用 ...

  5. Vue 进阶之路(七)

    之前的文章我们对 vue 的列表输出做了介绍,本章我们来看一下 vue 的组件 component. <!DOCTYPE html> <html lang="en" ...

  6. 微服务(入门一):netcore安装部署consul

    环境准备  vs开发环境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul  1.从官网下载consul到本地,选择系统对应的版本进行下载到本地,下载地址:h ...

  7. Java3y文章目录导航

    由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航. 想要获取最新原创的技术文章欢迎关注我的公众号:Java3y 文章目录导航:https://github.com/Z ...

  8. .netcore2.1 使用postgresql数据库,不能实现表的CRUD问题

    PostgreSQL对表名.字段名都是区分大小写的.为了兼容其他的数据库程序代码的编写,推荐使用小写加_的方式,例如:swagger_info 我们使用.netcore连接postgresql数据库时 ...

  9. ArcGIS API for JavaScript 4.9 & 3.26 发布与新特性

    应该是中文首发?我只想说:更新太TMD快了 QAQ Part I -- JsAPI 4.9 主题1:在2D中默认启用WebGL渲染 在要素图层.CSV图层.流图层中是使用WebGL渲染的,这个任务由M ...

  10. Linux(CentOS 7)安装测试svn服务

    1.yum install subversion,通过yum安装svn服务 2.svnserve --version,查看是否安装成功 3.mkdir -p /home.svn,创建svn仓库目录 4 ...