项目头像–下一个Java EE功能?

又是一年中的这个时候。 圣诞节假期快到了,Java Advent Calender也在不断填满。 今天要写我的惊喜帖子。 我是Markus ,也称为@myfear多年来我一直在与Java EE和一堆相关的服务器一起工作。 除了日常工作,我还开始通过Java EE 7版本更加积极地为Java EE专家组做出贡献。 一段时间以来,随着EE 7的出现,现在已经可以开始计划该平台的下一个修订版了,该版本很可能被称为Java EE8。Oracle进行了社区调查 ,他们希望从社区中获取意见。他们打算添加的某些功能的相对重要性。 首先,这应该鼓励有兴趣的读者参与并参加调查 。 其中的一个特别要点是有关对基于HTML 5的动态应用程序的支持。 尽管WebSocket和JSON Processing已经将其纳入Java EE 7中,但目前还有另一项功能,特别是GlassFish和WebLogic(通过Jersey )中的一些功能有待标准化。 服务器已发送事件(SSE)。 它已经是HTML5规范的一部分,将是标准化的很好的候选者。 但是Oracle还在进一步考虑,并询问是否有足够的支持和兴趣来真正标准化Java EE服务器上JavaScript的使用。 当这种问题开始出现在JavaOne 2012上时,在Nashorn上基本上被称为Node.jar 。 从今年9月起,我们知道了真实名称: Project Avatar

头像一览

Project Avatar提供了一个JavaScript服务层,用于支持REST,WebSockets和服务器发送的事件,并提供了丰富的客户端框架,该框架假定了非常少JavaScript知识。 服务端侧重于使用JavaScript构建数据服务,而可选客户端端侧重于支持HTML5和TSA(瘦服务器体系结构)。

项目头像(来源:avatar.java.net)

Avatar项目(来源: avatar.java.net

瘦服务器架构

随着HTML5,CSS3和快速JavaScript引擎的引入,现代浏览器已成为功能强大的平台。 随着所谓的单页应用程序(SPA)(也称为单页界面(SPI))的出现,现代用户界面的设计已从服务器端生成转移到适合单个网页的Web应用程序或网站。目的是提供类似于桌面应用程序的更流畅的用户体验。 SPA将逻辑从服务器移至客户端。 这导致Web服务器的角色演变为纯数据API或Web服务。 这种架构方法被称为“瘦服务器架构”,以表明复杂性从服务器转移到了客户端,同时降低了整体系统的复杂性。

阿凡达到底是什么?

但是,Avatar不仅限于TSA方法。 它主要包括三个部分。 该基础由即将推出的Java 8构建,并且包括称为NashornJavaScript实现。 最重要的是Avatar Runtime,包括一个附加的编译器层和一个基于Servlet API的服务器。 这些抽象使它可以在各种运行时中托管。 阿凡达应用程序由客户端“视图”,服务器端“服务”或两者组成。 重要的是,它们之间没有内在的耦合,这使视图可以与现有服务进行通信,并允许任何类型的客户端使用服务。 应用程序“归档”部署在服务器上,并进行编译以生成针对该应用程序定制JavaScript。 生成的用于视图JavaScript处理与DOM / UI的数据绑定以及对远程服务和本地存储的数据管理。 Avatar存档与Java EE Web存档有些相似。 它们由WEB-INF文件夹,根目录中的avatar.properties文件以及视图目录和/或服务目录组成。 Avatar支持文件系统目录或.zip(.war)文件。

服务器上剩下的一切–服务

服务扩展了REST,WebSocket或Push(SSE)抽象,并且其生命周期完全由框架处理。 服务实现可以利用内置的Node模块以及大多数第三方模块。 由于Nashorn支持直接调用Java代码,因此您也可以直接使用大多数Java库。

客户端–视图

视图是浏览器所需HTML。 它还包含自定义的“数据” HTML扩展名和简单JavaScript模型。 在将包含自定义生成JavaScript的完整SPA HTML文件发送到浏览器之前,(服务器端)编译器将转换这些视图。

一个简单的例子。

Oracle为Avatar提供了一套不错的示例和文档,基本上足以让您入门。 亲自尝试的第一件事是针对您的OS的JDK 8 Early Access Build 。 在撰写本文时,我尝试使用最新的Developer Preview b118。 安装后,您需要获取最新的GlassFish Open Source Edition 4.0服务器并将其解压缩到合适的位置。 通过将<jdk8> / bin放入PATH环境变量或将以下条目添加到<gf4> / glassfish / config asenv.bat / conf中,确保它与已安装的JDK 8一起运行。

set AS_JAVA=<jdk8>

不要继续下载最新的avatar-1.0-ea.zip并将其扩展到<gf4> / glassfish /目录。 之后,您需要设置AVATAR_HOME环境变量并将其指向<gf4>安装目录。 并确保将%AVATAR_HOME%\ glassfish \ bin添加到PATH环境变量中。

如果完成所有这些操作,则可以切换到工作区文件夹并发出以下命令,以使Avatar为您创建一个简单的示例应用程序:

avatar new --example=hello

它创建一个基本的“ hello”应用程序,该应用程序仅包含一个视图。 这是一个开始探索的好地方,之后您可以直接启动Glassfish实例,并像处理每个典型Java EE应用程序一样部署该应用程序:

asadmin start-domain

asadmin deploy hello
“您好示例”应用。

“您好示例”应用。

将浏览器指向http:// localhost:8080 / hello将显示该应用程序。 您可以直接编辑位于<workspace> /hello/view/src/hello.html的视图。 在服务器运行时,Avatar负责直接为下一个请求重新编译它。 这确保了快速发展。 此行为由avatar.properties文件中的“ debug = true”属性控制,可以针对生产型系统进行更改。 进一步,将其设置为false会导致在交付之前最小化所有.js和.css文件。

至少如果您首先下载并将所需的YUI压缩程序( jar下载 )首先添加到Avatar中。 由于许可证限制,它没有捆绑在一起。 只需将其放入<gf4> / glassfish / modules / avatar-ext / lib。 您可能需要首先创建该目录。

除了这个完全没有任何服务的非常简单的示例之外,还有更复杂的可用示例,其分发位于%AVATAR_HOME%/ Project-Avatar-examples /。 为了方便起见,有完整的example.ear可供直接部署和测试。 要访问示例,只需在示例名称前加上“ demo-”即可。 因此,可以通过http:// localhost:8080 / demo-rest /访问“ rest”示例。

TodoMVC-具有头像的示例应用

TodoMVC –具有头像的示例应用

您必须注意要在不同示例中展示的不同功能。 如果您想了解Avatar如何处理持久性,则可以仔细研究使用FileDataProvider保存项目的其余示例。 另一个有趣的示例是基于TodoMVC的应用程序( http:// localhost:8080 / demo-todo / )。 它展示了一个更复杂的视图,该视图也已样式化。

下一步是什么?

截止到今天,没人知道阿凡达会发生什么。 总体上,社区反馈并没有很大声或令人兴奋。 我想这是因为没有人真正知道该怎么做。 到目前为止,最大的缺点是,它仅与GlassFish一起运行,这将进一步限制采用率和社区利益。 鉴于事实,SSE并不是Java EE规范的一部分,这可能使得将其移植到其他应用服务器变得更加困难。 即使许可证( 具有Classpath Exception的GPL2 )应该允许它。 回到最初的调查以及有关指定服务器端JavaScript与Java EE集成的想法,您至少知道Oracle在谈论Avatar时在谈论什么。 继续进行调查,并告诉他们您对在Java EE中拥有这种东西的想法。

祝您节日快乐,新的一年充满和平与繁荣。

参考: Project Avatar –下一个Java EE功能? 从我们的JCG合作伙伴 Markus Eisele在Java Advent Calendar博客中获得。

翻译自: https://www.javacodegeeks.com/2013/12/project-avatar-the-next-java-ee-feature.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值