Oracle 在 JavaOne 大会期间宣布了 Project Avatar 的开源版本。Avatar 是一个 Web 应用程序框架,它关注于构建“现代 HTML5 应用程序”,但是需要应用程序开发者有“轻微的 JavaScript 知识”。
Project Avatar 最初是在 2011 年的 JavaOne 大会上宣布的,它的目标是在基于 HTML5 的客户端和云 Java EE 服务之间共享数据。在一个对 Oracle 的软件开发副总裁 Anil Gaur 的采访中,Gaur 提到了 Avatar 的意图是确保“Java 依然是构建 HTML5 应用程序最具生产力的环境”。Avatar 构建块的开发目标是满足新兴的云计算环境的需要,同时在 2012 年的 QCon NY 期间, Arun Gupta 将 Avatar 描述为一个“动态富客户端的完整解决方案”。
使用 Avatar 构建的应用程序需要在使用 Java 8 运行时环境且兼容 Java EE 7 的容器中才能运行。该框架的目标是通过提取客户端和服务器之间进行通信所必须的代码简化 HTML5 应用程序的开发。另外,视图层的组件能够使用部件(widget)和数据绑定简化前端 JavaScript 中的数据处理。框架鼓励开发者使用 Java EE 容器的表达式语言(Expression Language,EL)处理从服务器端返回的动态内容。根据项目文档,“EL 表达式的使用消除了在 JavaScript 中编写控制器逻辑从而使页面动态化的需要”。
Avatar 在服务器端的 JavaScript 代码中使用了 Java 8 的 Nashorn ECMAscript 实现。Avatar 脚本容器(Avatar.js)扩展了使用 JavaScript 编写的服务组件,对服务和应用程序上下文做了集成。驱动框架支持服务器端 JavaScript 的理念是“JavaScript 在企业 Web 开发中拥有大力扩张的作用”。该项目注意到“这个领域中的各种客户端框架现在让人感到困惑,并且它们正在以非常快的步伐扩张”,这就需要开发者必须拥有“非常强大的 JavaScript 技能集”。但是这种要求对于企业开发者而言是不太正常的。
该框架将自己的结构模式称为“瘦服务器架构(Thin Server Architecture)”,它的定义是将“Web 应用程序中的所有 UI 逻辑——模型、视图和控制器——都从服务器端移动到客户端”。在这个架构中,后端的责任将从“托管应用程序控制器逻辑”转移为“跨越 REST 和 WebSockets 这些基于浏览器的客户端可使用的标准协议”提供数据。
Avatar 客户端的设计目标是从应用程序的服务层逻辑中分离出视图组件的责任。项目声明说“视图和服务组件并不是紧耦合的,因此开发人员能够有选择地使用它们”。Avatar 的视图层是使用 HTML5 开发的,并且提供了实现“单页面应用程序”功能的速记符,但是仅需要“最少的 JavaScript 代码”。根据文档,开发者在构建视图的时候仅需要知道如何“复制并修改示例代码”。
评论