4

在 JavaOne 2013 中,我参加了关于 Project Nashorn 的研讨会。我知道后很惊讶。从 JavaScript 调用 Java,反之亦然。

但是我仍然不清楚一个问题,即我们如何使用 Nashorn 来支持 JSF、ADF Faces 或 Wicket 等 Web 应用程序框架。如果有人给出任何指示,那将是非常可观的。

4

3 回答 3

3

Java 平台的脚本 API,特别是 Nashorn,为在 JVM 上开发 Web 应用程序提供了广泛的机会。像 node.js 和 vert.x 这样的框架作为服务器端框架的 JavaScript 偿付能力。是的,我们还在等待关于 node.jar 的消息——神秘的 Oracle 在 Java 平台上实现 node.js API 的项目。

在当今的现代 Web 应用程序中,我们应该将服务器端更多地视为服务提供者(RESTful 服务),而不是在服务器上生成 html 的呈现框架。但即使对于服务器生成的页面,您也不一定需要坚持使用 JSF、Wicket、ADF 等框架。使用 Nashorn/Rhino,您可以使用 JavaScript 模板在后端生成 html 标记。例如,LinkedIn已经描述了在浏览器和服务器上使用 JavaScript 编写的模板的好处。如果您的浏览器无法处理客户端模板,您可以优雅地降级并切换到服务器端呈现。

如果您正在寻找在服务器端 Web 框架中利用 JavaScript 的示例,您可以从Dust4j开始。不要被描述中的犀牛字眼所迷惑。Dust4j 不使用内部 Rhino 的 API。它使用 jsr223 API,因此如果您在带有 Nashorn 反向移植的 JDK8 或 JDK7上运行它,它应该可以工作。Dust4j 项目展示了如何将脚本集成到基于 JSP/Servlet/Filter 的应用程序中。

于 2013-07-19T04:52:24.740 回答
2

Nashorn 是 Java 虚拟机的 JavaScript 编译器和运行时。它本身不是一个 Web 应用程序框架,但可以在它之上构建一个。

因此,它不能替代 JSF 或 ADF。

于 2013-07-18T19:02:03.640 回答
0

Apache Wicket 提供了一种针对服务器发布 javascript 代码的功能,现在还允许访问会话/请求范围的对象。它不会取代 Web 框架本身,但允许您创建一个编程接口来在服务器上运行代码并修改 java 对象、计算值并返回计算结果。

Wicket 的 Nashorn 集成的文档可以在这里找到:https ://github.com/wicketstuff/core/wiki/NashornIntegration

如果你 fork git 存储库,你可以运行 nashorn 集成示例: https ://github.com/wicketstuff/core/tree/master/nashorn-parent/nashorn-examples

还有一点需要提一下:由于是任意代码执行,可能会导致安全问题,所以请确保只有登录用户才能访问该接口。

于 2016-04-06T09:21:30.860 回答