# 介绍

# Grails 简介

Java 领域中众多现有的 Web框架 都相对比较复杂,并且大多没有很好的遵循 DRY(不重复自己)规则。

像 Rails 和 Django 这样的动态框架帮助了我们以更现代化的方式思考 Web应用程序。Grails 构建于这些概念之上,并极大地降低了在 Java 平台上构建web应用程序的复杂性。但是,它的不同之处在于,它构建在 Spring 和 Hibernate 等已有的 Java技术栈之上。

Grails是一个全栈框架,它试图通过一些核心技术及其相关插件来解决 Web 开发中的诸多难题,比如:

  • GORM - 一个易于使用的 ORM 库,支持 SQL、MongoDB、Neo4j 等
  • 用于渲染 HTML 和 JSON 的视图技术
  • 基于 Spring Boot 的控制器
  • 有数百个插件的插件系统
  • 灵活的 profiles 可创建 与AngularJS,React 等应用程序
  • 基于 Gradle 的可交互的命令行环境和构建系统
  • 一个已配置为热加载的内置 Tomcat 容器

通过 Groovy 语言的强大功能和领域特定语言(DSLs)的广泛使用,所有这些都很容易使用。本文将带您入门 Grails 并使用它来构建web应用程序。

最后,Grails 不是一个单独的项目,而是由多个子项目组成的。下表总结了生态系统中的一些其他关键项目以及文档链接。

项目 描述
GORM for Hibernate SQL 关系数据库的 ORM 框架
GORM for MongoDB MongoDB 文档数据库的 ORM 框架
GORM for Neo4j Neo4j 图形数据库的 ORM 框架
JSON Views 在服务器端渲染 JSON 的视图技术
Groovy Server Pages 在服务器端渲染 HTML 和其它标签 的视图技术
Async Framework 异步编程抽象,支持 RxJava、GPars 等

# Grails 4 的新特性

本节介绍 Grails 4 中引入的所有新特性。

# 依赖升级

Grails 4 中以下依赖包进行了升级:

  • Groovy 2.5.6
  • GORM 7 and Hibernate 5.4 (当前新应用的默认Hibernate版本)
  • Spring Framework 5.1.5
  • Spring Boot 2.1.3
  • Gradle 5.1.1
  • Spock 1.2

# Micronaut 父级 Context

Micronaut 现在是 Grails 的父应用程序上下文,因此许多 Micronaut 特性可以使用,包括 Micronaut 的 HTTP Client 和 Kafka Client。

Micronaut 也被用于改进 Grails 应用程序的启动和减少总体内存消耗(以及 Spring Boot 2.1 中的相关改进)

关于 Micronaut 可以减少总体内存消耗这一点,笔者尚未找到证据证明,有大神了解这一点可以到 Gitee 上通过 ISSUE 或 评论 告知,非常感谢!