【问题标题】:Avatar.js and Project AvatarAvatar.js 和项目 Avatar
【发布时间】:2014-04-12 22:35:48
【问题描述】:

在 Java 8 和 Nashorn 的背景下,我看到两个项目经常被提及。

Avatar.jsProject Avatar

这些项目的关系是什么?

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

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

【问题讨论】:

    标签: java java-8 nashorn avatarjs project-avatar


    【解决方案1】:

    更新:项目头像是officially halted 2015-02-12。

    Avatar.js 是非正式称为“node.jar”的开源版本(参见 avatar-js 邮件列表中的 this post)。换句话说,它是一个与 NodeJS 兼容的 API,在 Nashorn 上运行。 Project Avatar 似乎是 Oracle 对 NodeJS API 的回应,它提供了一个替代平台,该平台还通过 Avatar.js 提供与 NodeJS API 和生态系统的兼容性。

    因此并不是说 Project Avatar 是基于 Avatar.js 构建的,而是说“Avatar.js 是 Project Avatar 的一个组件。Nashorn 是用于运行这两者的 JavaScript 引擎”。 (再次,来自this post)。

    Avatar.js homepage 当前有一个已知可运行的模块列表,包括“grunt”。看起来,Project Avatar 目前包含一个作为“avatar-js.jar”的 Avatar.js 构建,如在当前的 latest commit 中找到的,尽管它已经 4 个月大了。所以我认为答案是肯定的,当前版本的 Project Avatar 将允许您运行与 Node 兼容的模块。

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

    【讨论】:

    • 感谢您的澄清。目前 Avatar.js 甚至没有二进制发行版,构建过程看起来相当复杂(涉及 Python 和 C++)。因此我的问题是:如果我获得了 Project Avatar 的分发,我是否会“免费”获得 Avatar.js。具体来说:我有办法在 JVM 上运行普通节点程序(如 grunt)吗?
    • @jbandi 我已经更新了答案,以更好地回答我误读的第二个问题。
    【解决方案2】:

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

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

    此处重复 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.jar
    2. 从 java.net Maven 下载原生库 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

    【讨论】:

    • 谢谢。在 Linux 上将 .so 重命名为 dist/libavatar-js.so
    • 我不明白他们为什么需要本机库来支持这一点......太糟糕了,对我来说有点取消资格。另外,这个项目好像很久没有收到更新了……
    • @StijndeWitt 项目头像已停止:blogs.oracle.com/theaquarium/entry/project_avatar_update
    • @jbandi 我也很怀疑,但您的链接清楚地证实了这一点。感谢发布!
    【解决方案3】:

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

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

    【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多