8

在 Java 8 和 Nashorn 的上下文中,我看到经常提到两个项目。

Avatar.js项目 Avatar

这些项目的关系是什么?

Avatar.js 的文档很少。据我所知,它提供了在 JVM 上执行节点应用程序的可能性。

Project Avatar 似乎建立在 Avatar.js 之上。然而,范围似乎是为 Java EE 7 提供替代的 Web 框架。是否也可以使用 Project Avatar 执行节点程序(如 grunt)?

4

3 回答 3

10

更新: 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 兼容的模块。

正如您所指出的,这两项举措都缺乏文档,并且都处于起步阶段。时间和社区参与将显示他们最适合的地方。

于 2014-03-10T17:37:30.410 回答
7

确实有 Avatar.js 包含在 Project Avatar 中。通过查看 Project Avatar 的 Maven POM 文件,我发现可以通过 java.net Maven 存储库获得 Avatar.js 的二进制分发。

基于这个发现,我在这里写了一篇博客文章如何使用 Avatar.js 运行简单的 Node.js 应用程序: 在 JVM 上使用 Nashorn 和 Java 8 运行 Node.js 应用程序

OSX 的步骤在这里重复:

  1. 从 java.net Maven 存储库下载 avatar-js.jar。当前版本在这里: https ://maven.java.net/content/repositories/public/com/oracle/avatar-js/0.10.25-SNAPSHOT/ 示例文件:avatar-js-0.10.25-20140313.063039-43。罐
  2. 从 java.net Maven Repo 下载本机库 avatar-js.dylib。当前版本在这里: https
    ://maven.java.net/content/repositories/public/com/oracle/libavatar-js-macosx-x64/0.10.25-SNAPSHOT/ 示例文件:libavatar-js-macosx-x64- 0.10.25-20140312.062209-35.dylib
    对于 Linux,您可以从 ../libavatar-js-linux-x64/0.10.25-SNAPSHOT/ 下载相应的 .so 文件,
    对于 Windows,您可以从 .. 下载相应的 .dll 文件/libavatar-js-win-x64/0.10.25-SNAPSHOT/
  3. 将本机库重命名为 avatar-js.dylib 并将 jar 重命名为 avatar-js.jar 并将两者放在一个名为 dist 的目录中。
  4. 在名为 app.js 的文件中创建一个简单的 Node.js 应用程序。
  5. 运行命令:java -Djava.library.path=dist -jar dist/avatar-js.jar app.js
于 2014-03-20T23:25:05.863 回答
3

Project Avatar确实在Avatar.js 之上;该代码使用 Maven 集成到我们的构建中。(你找到的罐子,Johann,是旧的,因为我们不再使用它——我只是用核弹,谢谢)。

是的,我们知道我们的文档需要更多的工作。目前,我们专注于充实服务器端 JavaScript 框架。该服务层提供了一个运行时调整,可以轻松创建 REST、WebSocket 和服务器发送事件端点。

于 2014-03-20T17:28:47.710 回答