为什么没有针对Windows / Mac / Linux的本地Java解释器?


38

在我看来,将Javascript用于一般的服务器端脚本编写任务非常有用,因为它具有与Perl和Python差不多的功能。但是AFAIK没有用于主要机器体系结构的通用Java解释器。我想另一个问题可能是缺少库,但是如果有口译员在场,这些库肯定会出现。Google的V8可能是一个起点。有人认为我们会很快看到吗?


1
顺便说一句:如今,几乎没有人“解释” JavaScript,几乎所有浏览器都会及时将其编译为本地代码。
约阿希姆·绍尔

2
从某种意义上说,Windows中有一个解释器-请参见Jscript。它不完全是Java Script,但是很接近。
nhinkle

1
事情的声音表明Windows 8将在某种程度上内置该功能,因为您可以构建用于本机桌面使用的JS应用程序。
钻机

Answers:


67

Node.js正是您所需要的……等等。

除了作为JavaScript运行时之外,它还提供用于常见操作的API,例如文件系统访问(浏览器上的JavaScript并不需要)和网络IO。

它是为构建网络应用程序而开发的(非常棒!),但是它实际上是一个通用的JavaScript运行时,您可以使用它来构建所需的任何东西。此外,它基于V8。


1
嗯,是的,我只想到了网络应用程序的节点,因为从主页上可以清楚地看出它们的用途。
MebAlone

5
@MebAlone:这是他们的主要目的,是的。但是node.exe(或仅node在Unix-y平台上)基本上是一个简单的JavaScript运行时。node myJavaScript.js运行myJavaScript.js,您还需要运行时系统提供什么?(好的,您需要调试和库,但是Node.js也涵盖了这些;-))。一个很好的指示是,许多项目使用JavaScript脚本(当然是在Node.js中运行)作为其构建系统。
约阿希姆·绍尔

1
NodeJS在Google的V8上运行。您可以使用V8做任何您想做的事。因此,即使NodeJS不适合您,V8也可能适合。
Andrew T Finnell,2012年

2
@Andrew:据我所知,V8不附带任何二进制文件,仅提供源文件。因此,您必须自己构建它(或找到第三方二进制文件)。如果您不关心节点,那么很容易忽略这些库,而是将节点用作纯JavaScript运行时。我看不到如何使用V8轻松实现这一目标。
约阿希姆·绍尔

节点中非联网应用程序的一个示例是CoffeeScript模块,该模块可以在命令行中运行以将您的coffeescript文件编译为javascript。
Spoike

76

如Joachim所述,node.js正是您所需要的。

与Python尤其是Perl相比,这种类型的东西似乎并不为人所知,但这也许只是因为JavaScript并未被广泛认为是非常好的。

在此处输入图片说明


2
好的部分弥补了Javascript正在进行的所有其他事情……还有CoffeeScript。哦,CoffeeScript
Spoike

4
在一堆书上为Kinect +1。我有一个确定的指南坐在显示器下方,以稍微提高显示器的高度。
Phil

3
-1,尽管有有趣的照片,但该答案从本质上讲是一种说“糟透了”的奇特方式,并且并没有真正起到任何作用。
GrandmasterB 2012年

3
不,他根本不是在说什么。
Michael B

1
大声笑,权威指南-根本不是一本JavaScript书,而是一本有关Web浏览器DOM的书,开头有一点js。
gbjbaanb 2012年

28

自从至少Windows 2000开箱以来,Windows Script Host就包含了JScript(javascript)引擎,使您可以使用javascript执行sysadmin任务。

http://en.wikipedia.org/wiki/Windows_Script_Host

也可以使用WScript.Shell ActiveX / COM对象将其嵌入Windows应用程序中。


啊,很酷!
MebAlone

3
WSH还允许您使用多种其他脚本语言(如vb);如果我没记错的话,可以安装更多(en.wikipedia.org/wiki/…)。你也可以用它来脚本其他的Windows应用程序,如媒体播放器,Word等
frozenkoi

5

除了node.js之外,还有gjs,这是一个面向GNOME的运行时,可以访问GNOME,GTK和GLib库等。我相信您可以与任何支持GObject自省的库一起使用。

Gjs在GNOME3桌面中广泛使用。


2

有一个为Java应用程序(称为Rhino)编写的javascript解释器,它似乎旨在用javascript编写服务器代码,但是让它作为java代码执行。

就个人而言,我认为使用Node.js会更好,因为它很棒。快速入门,您做得比阅读(免费)NodeBeginner本书要糟得多。


为了完整起见:Rhino不会使Javascript作为Java代码执行,它是Javascript解释器,即它在JVM环境中执行Javascript。值得注意的是,与像V8这样的更底层的解释器相比,它不是很快。
克苏鲁

好免费的书。
Andrew_1510 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.