文档章节

RingoJS翻译官网之RingoJS简介

山林之野
 山林之野
发布于 2017/07/13 23:01
字数 948
阅读 872
收藏 2

输入图片说明

多线程的运行在Java虚拟机(JVM)上的JavaScript

Ringo 是一个构建在Java虚拟机上的Javascript平台,设计用于服务端应用的编写。它允许多样化的编程风格,比如I/O部分。RingoJS具有大量的内置模块,并且遵循CommonJS标准。

可以直接把Java类引用到RingoJS中

它可以直接的使用任何Java的标准类(JDK里面的所有类),或者是你自己写的类,放在它的类路径中(后面的翻译将会介绍),就可以直接使用。给人感觉,与Java的无缝连接。这使得RingoJS可以很容易的把现有的Java环境,或者是现有的Java代码拿过来用。而不需要繁琐的研究各种转化方法。

RingoJS 是一个JavaScript平台

JavaScript的ECMA规范这样描述JavaScript:“an object-oriented programming language for performing computations and manipulating computational objects within a host environment”。每个用JavaScript编写的引用都需要一个宿主环境来运行,这个宿主环境中,提供必要的类的Api。RingoJS呢,就提供了这样的环境,而且还内置了大量的模块,让程序编写变得更加容易。作为“通用编程语言”的体系,JavaScript可用于解决广泛的问题,而RingoJS强化了这种解决问题的能力。使用RingoJS,可以很方便的写出命令行工具,以及复杂的Web应用,甚至是使用JavaUI技术的图形化界面的应用。

与Javascript不同的是,RingoJS没有自己的引擎。它用的是完全以Java实现的JavaScript——Mozilla Rhino。Mozilla Rhino最初在NetScape的时期就出现了,一直保留到现在。其基本思想是,把Javascript项目编译成为Java字节码,然后在Java虚拟机上面运行。Mozilla Rhino,也提供了使用Java标准类库和任何自定义Java类的方法。这使得Mozilla Rhino很方便的把现有的Java类库放到JavaScript应用中使用。例如:RingoJS打包好Java的I/O类,直接放在Javascript中使用。

RingoJS在服务器或者一个专门的机器上执行Javascript,不是在WEB浏览器环境中。这是与Html上的Javascript的主要不同之处。它是基于CommonJS模块的。如果你懂得Node.js的模块,那么你也就懂得如何用RingoJS写一个模块。模块,就是封装了Javascript方法和变量,使得能独立于其他模块一种技术。

多线程的JavaScript

典型的命令行应用或者是Web应用不需要用到多线程。 那种一般的Javascript用的是事件循环,实现多线程的效果。而RingoJS直接借助JVM让Javascript并行运行。为了使各个线程独立,每个运行的模块或者项目都被打包在一个Worker中。Worker是项目执行的上下文环境,而且拥有自己的模块和数据。这样使得各个Worker能相互独立,并且还支持典型多线程的协作修改数据功能。RingoJS的Worker有借鉴W3C的Web Worker APIs,使用异步消息来相互进行通讯。也包括,每个Ringo Worker 都保证运行在一个单线程中,也就意味着线程只在代码执行的过程中存在。每个Worker通过构造器以及原型来实现数据的共享。实际上,这个全局对象扮演着一个只读的角色。

谁在支持RingoJS

Ringo是被很多人一起编写的,是在大约2010由Hannes Wallnöfer发起的。目前,还可以在队伍成员列表(https://github.com/orgs/ringo/people)中看到那些程序员。澳大利亚广播公司ORF是RingoJS的一个大用户。

© 著作权归作者所有

共有 人打赏支持
山林之野
粉丝 2
博文 6
码字总数 4027
作品 0
武汉
程序员
私信 提问
lodash 1.0.2 发布, JavaScript 实用工具库

lodash 1.0.2 发布,下载地址如下: Source code (zip) Source code (tar.gz) 详细信息请查看 lodash Github 页面: https://github.com/lodash/lodash/tags lodash 是一个 JavaScript 实用工......

oschina
2015/03/31
1K
6
Lodash 3.7.0 发布,JavaScript 实用工具库

lodash 3.7.0 发布,此版本更新内容如下: Added _.get, _.method, _.methodOf, & _.set Added support for assigning ES6 symbols to , , & Avoided a JIT bug in Safari on iOS 8.1 ARM64......

oschina
2015/04/17
1K
4
lodash 3.0.1 发布,JavaScript 实用工具库

lodash 3.0.1 发布,此版本现已提供下载(ZIP),更新内容如下: Ensured coerces floating-point & params to integers Fixed lazy , , & Fixed regression with DOM elements lodash 是一个......

oschina
2015/02/01
1K
1
lodash 3.9.0 发布,JavaScript 实用工具库

lodash 3.9.0 发布,此版本更新内容如下: Added _.gt, _.gte, _.lt, & _.lte Added support for an to Avoided using in source comments to improve browserify build times Ensured work......

oschina
2015/05/20
1K
1
lodash 3.5.0 发布,JavaScript 实用工具库

lodash 3.5.0 发布,此版本更新内容如下: 添加字符串A & 声明方法 当 filter 应用之后确保延迟 drop 能正常运行 优化 curried 方法性能 此版本现已提供下载:https://github.com/lodash/lod...

oschina
2015/03/09
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

闲话高并发的那些神话,看京东架构师如何把它拉下神坛

高并发也算是这几年的热门词汇了,尤其在互联网圈,开口不聊个高并发问题,都不好意思出门。高并发有那么邪乎吗?动不动就千万并发、亿级流量,听上去的确挺吓人。但仔细想想,这么大的并发与...

James-
5分钟前
0
0
Emacs 系列:让我们拥抱 Emacs 和 org 模式

导读 我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。长期以来,我一直对如何组织安排事情感到沮丧。我也有用过 GTD 和 ZTD 之类的方法,但是像邮件或是大型文件这样的事务真的很...

问题终结者
6分钟前
0
0
解析Node.js通过axios实现网络请求

本次给大家分享一篇node.js通过axios实现网络请求的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 1、使用Npm 下载axios n...

前端攻城老湿
19分钟前
1
0
深入浅出之React-redux中connect的装饰器用法@connect

这篇文章主要介绍了react-redux中connect的装饰器用法@connect详解,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 通常我们需要一...

前端攻城小牛
20分钟前
1
0
详解css BEM书写规范

BEM是基于组件的web开发方法。其思想是将用户界面分隔为独立的块,从而使开发复杂的UI界面变得更简单和快,且不需要粘贴复制便可复用现有代码。BEM由Block、Element、Modifier组成。选择器里...

前端小攻略
36分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部