在 Java 8 和 Nashorn 的上下文中,我看到经常提到两个项目。
这些项目的关系是什么?
Avatar.js 的文档很少。据我所知,它提供了在 JVM 上执行节点应用程序的可能性。
Project Avatar 似乎建立在 Avatar.js 之上。然而,范围似乎是为 Java EE 7 提供替代的 Web 框架。是否也可以使用 Project Avatar 执行节点程序(如 grunt)?
更新: Project Avatar 于 2015 年2 月 12 日正式停止。
Avatar.js 是非正式称为“node.jar”的开源版本(请参阅avatar-js 邮件列表中的这篇文章)。换句话说,它是一个与 NodeJS 兼容的 API,在 Nashorn 上运行。Project Avatar 似乎是 Oracle 对 NodeJS API 的回应,它提供了一个替代平台,该平台还通过 Avatar.js 提供与 NodeJS API 和生态系统的兼容性。
因此,并不是说 Project Avatar 是基于 Avatar.js 构建的,而是说“Avatar.js 是 Project Avatar 的一个组件。Nashorn 是用于运行两者的 JavaScript 引擎”。(再次,从这篇文章)。
Avatar.js主页当前有一个已知可运行的模块列表,包括“grunt”。看起来,Project Avatar 目前包含一个作为“avatar-js.jar”的 Avatar.js 构建,如在当前最新提交中找到的那样,尽管它已经 4 个月大了。所以我认为答案是肯定的,Project Avatar 的当前版本将允许您运行与 Node 兼容的模块。
正如您所指出的,这两项举措都缺乏文档,并且都处于起步阶段。时间和社区参与将显示他们最适合的地方。
确实有 Avatar.js 包含在 Project Avatar 中。通过查看 Project Avatar 的 Maven POM 文件,我发现可以通过 java.net Maven 存储库获得 Avatar.js 的二进制分发。
基于这个发现,我在这里写了一篇博客文章如何使用 Avatar.js 运行简单的 Node.js 应用程序: 在 JVM 上使用 Nashorn 和 Java 8 运行 Node.js 应用程序
OSX 的步骤在这里重复:
java -Djava.library.path=dist -jar dist/avatar-js.jar app.js
Project Avatar确实在Avatar.js 之上;该代码使用 Maven 集成到我们的构建中。(你找到的罐子,Johann,是旧的,因为我们不再使用它——我只是用核弹,谢谢)。
是的,我们知道我们的文档需要更多的工作。目前,我们专注于充实服务器端 JavaScript 框架。该服务层提供了一个运行时调整,可以轻松创建 REST、WebSocket 和服务器发送事件端点。