根据Espina的说法,Jooby的核心取向在于“简化”。“尽管Java是一种简单而易于学习的编程语言,但利用Java构建Web应用程序则是一项艰巨的挑战,”他通过一封邮件指出。“Java社区已经做出大量工作,旨在简化Web应用程序的开发流程……然而相较于Ruby或者Node,利用Java开发Web应用程序仍然比较困难。Jooby的出现正是为了弥合这一空白,并通过提供客观、简单且易于学习的微Web框架简化Java环境下的Web开发任务。”
Jooby的核心在于模块,这些模块的构建目的在于从外部库中提取功能。“这些模块非常精简且能够通过多种方式对外部库进行引导与配置,但它们并不会带来新的抽象层或者通过定制化API实现库内功能的访问。相反,它们可以直接依原样对各类库组件进行提取,”Espina表示。“这也是Jooby与其它Java Web框架之间的最大差别所在。”
Jooby提供多种默认选项以解决应用程序开发工作中的各类典型问题,例如数据库访问、验证、会话、模板引擎以及电子邮件等等。这使其拥有极为出色的易用性,Espina指出,“但与此同时,它也拥有相当优秀的灵活性与模块化程度,经验丰富的用户能够将不同模块进行混合与匹配,从而满足自身实际需要甚至编写自己的整合方案。”
Jooby当中的无状态应用程序开发机制使其能够在不造成任何重大影响的前提下实现规模扩展,特别是在开发人员配合头/JWT(即JSON Web Token)验证机制构建REST API的情况下。当然,在某些用例当中,开发人员可能需要保存用户信息。“对于这类用例,大家可以使用HTTP会话,”Espina解释称。
Jooby提供一套内存内HTTP会话,但开发人员也可以选择其它不同后端,例如Redis、HazelCast以及MongoDB。该HTTP会话的设计倾向为尽可能精简,同时要求开发人员认真考量是否要加以使用,因为其只允许匹配原语与字符串这两类数据。
这套框架拥有两套编程模式。其一为脚本编程模式,在这里开发人员能够将应用程序定义并编写为单一文件。而对于大型且复杂度较高的应用程序,Jooby支持MVC。“在这里,大家可以将自己的应用程序拆分为多个层,并创建一个或者多个控制器类,”Espina告诉我们。
Jooby面世至今已经有大约18个月了,而其1.0.0正式版本预计将在今年年初发布。面向Java 8以及更高版本,Jooby还能够与Nashorn项目协作,这意味着我们可以将Jooby扩展至JavaScript开发领域。“这是一套Java框架,因此其始终运行在JVM之上; 但从开发人员的角度来看,它也可以作为一套JavaScript框架发挥作用,”Espina指出,他还计划在未来逐步加入对其它JVM语言的支持能力。