在嵌入式设备中使用 JavaScript 的前景
by Conmajia
PC上的JavaScript已经发展到ECMAScript 6(ES6),马上ES10都快出来了(虽然还是草案),但是硬件上的JS却很少听说。这几年手持设备/可穿戴设备的发展非常快,可以说快到令人发指。以ARM为主的嵌入式CPU几年前运行gingerbread都还卡的不行,现在已经845、855,3GHz主频起步,轻松秒杀一票PC了。既然硬件这么强,那么我就有了在嵌入式设备里玩JavaScript的可能,并且我坚信它一定是可行的,于是我找权威人士咨询了一下。
果然,这方面的工作早就开展起来了。不过也证明了我的想法是可行的。按图索骥,在联系了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慢慢发力,并实行了开源,加快发展步伐。
现在,到了最新的XS7之后,硬件JS已经非常强大了。除了跨平台支持win、mac、linux之外,还通过了几乎全部Test262。图片有点旧,最新版是99.8%/99.4%的comformance。新的XS7现在成为了TC-39的核心。
XS不光可以运行在嵌入式设备上,还可以集成到PC里。这一点,让我觉得它将来的应用非常广泛。想象一下,一台自带“JS引擎”的手环、路由器、电脑,听着就很带感。
最近,XS8也即将出现。显然TC-53就是它的雏形。根据介绍,async 和 await 都将粉墨登场,这对于MCU经典的setup-loop结构来说非常有用。不管是配置、读取传感器,还是上传数据等等操作,有了JS异步能力的加持,未来的嵌入式(可穿戴)设备开发必然如虎添翼。XS甚至还有更大的野心,想要在多核MCU上实现并行计算能力,支持 automics、shared memory 等等。并行的JavaScript,我他妈吹爆!
在嵌入式设备中使用 JavaScript 的前景的更多相关文章
- 在嵌入式设备中实现webrtc的第三种方式①
最近两年,我对于网络知识,包括底层协议学习比较多,webrtc这种几乎是使用到了所有层面网络协议的技术也逐渐进入我的视野. 之前我提出了两种在嵌入式设备上实现webrtc的方式,一是用官方代码,然后改 ...
- 在嵌入式设备中实现webrtc的第三种方式③
本系列的最后一篇,讲解收发音视频数据. 贴出最终效果: 其实很简单,直接调用writeFrame即可,如下图: 当然,这是部分代码,完整代码在下面,展开可见: 1 #include "com ...
- libmodbus库linux 嵌入式设备中的使用
libmodbus库的交叉编译:1]到libmodbus官网https://libmodbus.org/download/下载安装包,内部自带configure文件,官网推荐v3.1.6稳定版.另外注 ...
- 嵌入式设备web服务器比较
目录(?)[-] Boa Thttpd Mini_httpd Shttpd Lighttpd Goahead AppWeb Apache 开发语言和开发工具 结论 备注 现在在嵌入式设备中所使用的 ...
- 嵌入式设备web服务器
操作系统:ubuntu10.04 前言: 为了提高对设备的易操作性,很多设备中提供pc机直接通过浏览器操作设备的功能.这就需要在设备中实现web服务器. 现在在嵌入式设备中所使用的web服 ...
- 嵌入式设备上的 Linux 系统开发
转载:http://www.ibm.com/developerworks/cn/linux/embed/embdev/index.html 如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bo ...
- javascript高级编程3第二章:在html中使用javascript
2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...
- JS高程2.在HTML中使用Javascript(1)
1.使用<script>元素向HTML页面中插入Javascript HTML4.01中<script>标签有6个属性: (1)async:可选.表示立即下载脚本,不影响页面中 ...
- Javascript高级程序设计——在HTML中使用Javascript
<script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...
随机推荐
- 集成支付宝SDK流程
5.2 SDK集成流程 5.2.1 iOS 解压接口压缩文件(文件名是 WS_MOBILE_PAY_SDK_BASE.zip),找到iOS的压缩文件(文件名是支付宝移动支付SDK 标准版(iOS).z ...
- Layer 使用
官网文档 http://layer.layui.com/mobile/api.html 1.需要添加jquery的引用然后是 loadExtentFile("css", " ...
- socketserver实现并发
socketserver实现并发原理:给每一个前来链接的客户端开启一个线程执行通信.也就是给每一个连接“配备”了一个管家. 下面用一个简单的示例来演示socketserver实现并发(一个服务端,两个 ...
- Python-定时爬取指定城市天气(二)-邮件提醒
目录 一.概述 二.模块重新划分 三.优化定时任务 四.发送邮件 五.源代码 一.概述 上一篇文章python-定时爬取指定城市天气(一)-发送给关心的微信好友中我们讲述了怎么定时爬取城市天气,并发送 ...
- XiaomiPushDemo【小米推送集成,基于V3.6.12版本】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录小米推送的集成,不能运行. 使用步骤 一.项目组织结构图 注意事项: 1. 导入类文件后需要change包名以 ...
- 【Python3爬虫】常见反爬虫措施及解决办法(三)
上一篇博客的末尾说到全网代理IP的端口号是经过加密混淆的,而这一篇博客就将告诉你如何破解!如果觉得有用的话,不妨点个推荐哦~ 一.全网代理IP的JS混淆 首先进入全网代理IP,打开开发者工具,点击查看 ...
- Spring+SpringMVC+MyBatis的pom.xml依赖
<!-- 集中定义依赖版本号 --> <!-- 已经依据maven仓库给出的版本兼容信息,调节好合适的spring.mybatis-spring.mybatis.pagehelper ...
- Git版本控制 —— IDE工具(IDEA)
本文介绍使用IDEA控制Git操作 关联本地Git客户端 首先要根据系统环境安装Git客户端 然后使用File --> Settings --> Version Control --&g ...
- angular开发环境搭建及新建项目
最近一个星期准备学习一下angular前端框架,因为之前在学习abp框架的时候,都要求前端要掌握angular,所以不得不回来恶补一下了,学习的过程有时间的话会记录在这里,方便以后复习. 闲言少叙,下 ...
- Python 中@property的用法
在绑定属性时,如果我们直接把属性赋值给对象,比如: p = Person() p.name= 'Mary' 我们先看个详细的例子(注意双下划线name和age定义为私有变量): class Perso ...