What’s new in grails framework 5?

Puneet Behl
Puneet BehlSenior Software Engineer at Object Computing, Inc.
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
1
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
2
About Puneet
Puneet Behl is the Grails Development Lead at Object
Computing, Inc.
He is very enthusiastic about the Grails and Micronaut
frameworks, Groovy, Docker, and open source
technologies.
If you’d like to get in touch, feel free to say hello on
twitter.com/puneetbhl
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
3
AGENDA
● Introducing Grails Framework 5
● Upgrading
● Build and Infrastructure
● What Does Micronaut Integration Mean for You?
● Recent Updates
● The Road Ahead
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
4
Introducing
Grails
Framework 5
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
5
Dependent Libraries
● Apache Groovy 3
● Gradle 7.2
● Micronaut 3
● Spring framework 5.3
● Spring Boot 2.6
● Spock 2.0-groovy-3.0
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
6
Deprecations
The dot-based configuration access (i.e., grailsApplication.config.a.b.c) is
deprecated.
We recommend you use grailsApplication.config.getProperty(key, type).
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
7
JUnit5
● Running JUnit4 tests on JUnit Platform
● Annotation in org.junit.jupiter.api
● Assertions in org.junit.jupiter.api.Assertions
● @BeforeEach and @AfterEach
● @BeforeAll and @AfterAll
● junit-vintage-engine in runtime classpath
● Migrate from JUnit4
(https://junit.org/junit5/docs/current/user-guide/#migrating-from-junit4 )
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
8
Grails Gradle Plugin
The Grails Gradle Plugin was originally part of Grails Core; it has now been moved to a
separate repository.
The Grails Gradle plugin might not advance with the same speed as Grails Core. So, we
have added a separate Gradle property, grailsGradlePluginVersion
, to decouple it
from Grails Core version.
apply plugin:"org.grails.grails-web"
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
9
Semantic Versioning 2.0
Starting with version 4.0.0, the Grails framework follows semantic versioning 2.0.0 to make
the release process more predictable and simple.
https://semver.org/
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
10
Grails Plugins
● Most Grails plugins that work with Grails framework 4 should work with Grails
framework 5 as well.
● Building configuration instead of plugins.
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
11
JCenter and Bintray Shutdown
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
12
Publishing Plugins
● The Grails Gradle Publish plugin is removed
● The Grails Profile Publish plugin is removed
● Instead use Gradle maven-publish plugin
● Include/update plugin in the Grails Plugin Portal
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
13
The Grails Wrapper Update
In June, the Grails Framework Artifactory instance was updated. As a result, the old Grails
wrapper now fails under certain conditions because the URL it uses to retrieve information is
no longer supported.
https://grails.org/blog/2021-06-10-grails-wrapper-update.html
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
14
Upgrading
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
15
Upgrading
● Grails framework 3 is EOL (end of life), so it's a good time to update your applications
and plugins
● Migrate tests from JUnit4 to JUnit5
● Change grailsVersion=5.1.0
● Remove any reference to jcenter()
● Update to Gradle 7.2
○ Run gradle help --scan
○ Execute gradle wrapper --gradle-version 7.2
● Gradle scope changes
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
16
Apache Groovy 3
● No more JDK warning with JDK 11 or higher
● Java 16 support
● New Parrot parser
● GDK additions: Several new extension methods
● Release Notes (https://groovy-lang.org/releasenotes/groovy-3.0.html#releasenotes)
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
17
GORM 7.1
● Apache Groovy 3
● Spring 5.3
● Spring 2.5.5
● Hibernate 5.5.7 (https://hibernate.org/orm/releases/5.5/ )
● MongoDB Driver Sync 4
(https://mongodb.github.io/mongo-java-driver/4.0/upgrading/)
● Neo4J Driver 4
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
18
Upgrading - Spring Boot Changes
● Hibernate Validator 6.2
(https://in.relation.to/2021/01/06/hibernate-validator-700-62-final-released/ )
● Environment Variable Prefix
● Metrics and endpoints
● Java 16
● Jetty 10 Support
● Configuration Changes
(https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Configuration-C
hangelog)
● Spring Boot 2.5 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
19
Upgrading - Spring Changes
● Official support for Apache Groovy 3
● What's New in Spring Framework 5.x
https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Fr
amework-5.x
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
20
Gradle 7.2
● Use mavenCentral()
or maven { url "https://repo.grails.org/grails/core" }
● The scope “provided” is removed.
● Apache Groovy 3
● Removal of Compile and Runtime Configurations
● Use maven-publish instead of maven
● Duplicate Strategy
● Upgrading from Gradle 5.x
https://docs.gradle.org/7.2/userguide/upgrading_version_5.html
● Gradle 7.2 Release Notes https://docs.gradle.org/7.2/release-notes.html
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
21
Gradle Scope Changes
compile api/implementation
compileOnly compileOnly
runtime runtimeOnly
testCompile testImplementation
testRuntime testRuntimeOnly
provided compileOnly/api
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
22
Micronaut 3
● The javax.inject annotations are no longer a transitive dependency. Micronaut now
ships with the Jakarta inject annotations. Either replace all javax.inject imports with
jakarta.inject, or add a dependency on javax-inject to continue using the older
annotations:
implementation("javax.inject:javax.inject:1")
● https://micronaut.io/2021/08/18/micronaut-framework-3-released/
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
23
Build and
Infrastructure
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
24
Build and Infrastructure
● Configured Gradle Enterprise (https://ge.grails.org) to improve Gradle build
● Moved from Travis to Github Workflows
● The artifacts are published to Maven Central
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
25
What Does
Micronaut
Integration
Mean For
You?
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
26
The Powerful Micronaut Declarative HTTP Client
● implementation("io.micronaut:micronaut-http-client")
@Client("https://start.grails.org")
interface GrailsAppForgeClient {
@Get("/{version}/profiles")
List<Map> profiles(String version)
}
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
27
Testing Security in the Application
when: 'login'
UserCredentials credentials = new UserCredentials(username: 'sherlock', password:
'elementary')
HttpRequest request = HttpRequest.POST('/api/login', credentials)
HttpResponse<BearerToken> resp = client.toBlocking().exchange(request, BearerToken)
resp = client.toBlocking().exchange(HttpRequest.GET('/api/announcements')
.header('Authorization', "Bearer ${resp.body().accessToken}"),
Argument.of(List, AnnouncementView))
then: 'announcement list'
rsp.status.code == 200
rsp.body() != null
((List)rsp.body()).size() == 1
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
28
Grails and Micronaut Kafka
import io.micronaut.configuration.kafka.annotation.KafkaClient
import io.micronaut.configuration.kafka.annotation.Topic
@KafkaClient
interface AnalyticsClient {
@Topic('analytics')
Map updateAnalytics(Map book)
}
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
29
Micronaut Features That Do Not Work With Grails
● Tracing
● Metrics
● Security
● CORS
● Open API
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
30
Recent
Releases
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
31
Grails Database Migration Plugin 4.0.0-RC2 Released
● Support Liquibase 4.6
● Liquibase Extension Upgrade Guide
(https://docs.liquibase.com/tools-integrations/extensions/extension-upgrade-guides/h
ome.html)
● Release Notes (https://github.com/liquibase/liquibase/releases/)
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
32
Grails 5.0.3 Released
● Bug-fixes and Improvements
● Make Grails 5 compatible with Gradle 7.2
● Fixed some bug around grails.factories file
● Release Notes (https://github.com/grails/grails-core/releases/tag/v5.0.3)
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
33
Log4J2 - CVE-202144228
● Grails®
framework blog post (https://grails.org/blog/2021-12-14-log4j2-cve.html)
● CVE-202144228 (https://nvd.nist.gov/vuln/detail/CVE-2021-44228)
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
34
The Road
Ahead
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
35
Grails Framework 5.1
● Spring Boot 2.6.1
● Micronaut 3.2
● Hibernate 5.6
● MongoDB Driver 4.4
● Better support with Gradle 7.2
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
36
● Improvements to the Grails CLI
● Spring Security Core Grails Plugin
Upcoming Changes
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
37
2GM Quarterly Town Hall Meeting
Each Town Hall Meeting is led by a panel of 2GM users, developers, and advocates.
Everyone in the 2GM communities is welcome and encouraged to participate.
https://objectcomputing.com/resources/events/2gm-town-hall
Next Meeting - Friday, January 7, 2022
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
38
Grails Foundation™
● A not-for-profit organization that supports and collectively leads the open source Grails
project.
● Supported by a Technology Advisory Board that ensures the Framework continues to
reflect and serve its diverse and growing user community.
● The Board meets quarterly to discuss and make recommendations regarding the Grails
framework roadmap and technical direction.
● For more information, check out https://grails.org/foundation/index.html.
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
39
Thank You
Community involvement is vital for the success of Grails framework. We appreciate the
Grails community for the support and feedback throughout this journey.
We are excited about this latest release. Please, upgrade your applications to Grails
framework 5. We would love to hear about your experience, and if you need any help with
your upgrade, we are here to support(https://grails.org/support.html) you.
Ⓒ
2021 Grails Foundation. All rights reserved. grails.org
40
Merry
Christmas!
1 of 40

Recommended

Grails Un Framework Web Agile by
Grails Un Framework Web AgileGrails Un Framework Web Agile
Grails Un Framework Web AgileNabil Adouani
4.3K views39 slides
How to GraphQL by
How to GraphQLHow to GraphQL
How to GraphQLTomasz Bak
1.2K views14 slides
Building Modern APIs with GraphQL by
Building Modern APIs with GraphQLBuilding Modern APIs with GraphQL
Building Modern APIs with GraphQLAmazon Web Services
953 views43 slides
React & GraphQL by
React & GraphQLReact & GraphQL
React & GraphQLNikolas Burk
909 views51 slides
GraphQL: Enabling a new generation of API developer tools by
GraphQL: Enabling a new generation of API developer toolsGraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer toolsSashko Stubailo
1.8K views35 slides
Introduction to GraphQL by
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQLSangeeta Ashrit
487 views25 slides

More Related Content

What's hot

GraphQL Introduction by
GraphQL IntroductionGraphQL Introduction
GraphQL IntroductionSerge Huber
3.4K views25 slides
REST vs GraphQL by
REST vs GraphQLREST vs GraphQL
REST vs GraphQLSquareboat
487 views23 slides
Graphql Intro (Tutorial and Example) by
Graphql Intro (Tutorial and Example)Graphql Intro (Tutorial and Example)
Graphql Intro (Tutorial and Example)Rafael Wilber Kerr
1.3K views44 slides
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs) by
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Hafiz Ismail
7.5K views52 slides
Better APIs with GraphQL by
Better APIs with GraphQL Better APIs with GraphQL
Better APIs with GraphQL Josh Price
858 views52 slides
Introduction to GraphQL by
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQLBhargav Anadkat
807 views31 slides

What's hot(20)

GraphQL Introduction by Serge Huber
GraphQL IntroductionGraphQL Introduction
GraphQL Introduction
Serge Huber3.4K views
REST vs GraphQL by Squareboat
REST vs GraphQLREST vs GraphQL
REST vs GraphQL
Squareboat487 views
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs) by Hafiz Ismail
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Hafiz Ismail7.5K views
Better APIs with GraphQL by Josh Price
Better APIs with GraphQL Better APIs with GraphQL
Better APIs with GraphQL
Josh Price858 views
Neo4j GraphDay Seattle- Sept19- neo4j basic training by Neo4j
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j630 views
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon... by luisw19
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
luisw192K views
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ... by Amazon Web Services
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Amazon Web Services10.7K views
REST vs. GraphQL: Critical Look by Nordic APIs
REST vs. GraphQL: Critical LookREST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical Look
Nordic APIs1.2K views
GraphQL vs REST by GreeceJS
GraphQL vs RESTGraphQL vs REST
GraphQL vs REST
GreeceJS3.1K views
Grails GORM - You Know SQL. You Know Queries. Here's GORM. by Ted Vinke
Grails GORM - You Know SQL. You Know Queries. Here's GORM.Grails GORM - You Know SQL. You Know Queries. Here's GORM.
Grails GORM - You Know SQL. You Know Queries. Here's GORM.
Ted Vinke10.5K views

Similar to What’s new in grails framework 5?

Grails 4: Upgrade your Game! by
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Zachary Klein
143 views65 slides
What's New for GitLab CI/CD February 2020 by
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020Noa Harel
637 views15 slides
Grails 3.0 Preview by
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Previewgraemerocher
8.6K views49 slides
GitBucket: Open source self-hosting Git server built by Scala by
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scalatakezoe
4.4K views39 slides
GeoServer Developers Workshop by
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
7.1K views81 slides
gitopsthekubernetesway-201026090439.pdf by
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfsaraichiba2
3 views44 slides

Similar to What’s new in grails framework 5?(20)

Grails 4: Upgrade your Game! by Zachary Klein
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
Zachary Klein143 views
What's New for GitLab CI/CD February 2020 by Noa Harel
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
Noa Harel637 views
Grails 3.0 Preview by graemerocher
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Preview
graemerocher8.6K views
GitBucket: Open source self-hosting Git server built by Scala by takezoe
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
takezoe4.4K views
GeoServer Developers Workshop by Jody Garnett
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
Jody Garnett7.1K views
gitopsthekubernetesway-201026090439.pdf by saraichiba2
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
saraichiba23 views
Gitops: the kubernetes way by sparkfabrik
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
sparkfabrik2.1K views
Spring Projects Infrastructure by Roy Clarkson
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
Roy Clarkson537 views
Spring Projects Infrastructure by Gunnar Hillert
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
Gunnar Hillert1.2K views
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update by Angela Byron
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateDrupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Angela Byron469 views
Contributing to Grails by GR8Conf
Contributing to GrailsContributing to Grails
Contributing to Grails
GR8Conf654 views
JBoss EAP 7 & JDG 7 최신 기술 소개 by Ted Won
JBoss EAP 7 & JDG 7 최신 기술 소개JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개
Ted Won840 views
WTF is GitOps and Why You Should Care? by Weaveworks
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
Weaveworks198 views
WTF is GitOps & Why Should You Care? by All Things Open
WTF is GitOps & Why Should You Care?WTF is GitOps & Why Should You Care?
WTF is GitOps & Why Should You Care?
All Things Open166 views
CIP Developing Curator Tool Wizards by Edwin Rojas
CIP Developing Curator Tool WizardsCIP Developing Curator Tool Wizards
CIP Developing Curator Tool Wizards
Edwin Rojas174 views
How to plan and define your CI-CD pipeline by ElasTest Project
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipeline
ElasTest Project844 views
Gitlab ci e kubernetes, build test and deploy your projects like a pro by sparkfabrik
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
sparkfabrik3.2K views
How to manage Kubernetes at scale with just git by Weaveworks
How to manage Kubernetes at scale with just git How to manage Kubernetes at scale with just git
How to manage Kubernetes at scale with just git
Weaveworks174 views
State of GeoServer by Jody Garnett
State of GeoServerState of GeoServer
State of GeoServer
Jody Garnett3.2K views
Flux is incubating + the road ahead by LibbySchulze
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
LibbySchulze290 views

Recently uploaded

NTGapps NTG LowCode Platform by
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform Mustafa Kuğu
141 views30 slides
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...Bernd Ruecker
50 views69 slides
Scaling Knowledge Graph Architectures with AI by
Scaling Knowledge Graph Architectures with AIScaling Knowledge Graph Architectures with AI
Scaling Knowledge Graph Architectures with AIEnterprise Knowledge
53 views15 slides
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院IttrainingIttraining
80 views8 slides
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc
77 views29 slides
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
50 views23 slides

Recently uploaded(20)

NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu141 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by IttrainingIttraining
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc77 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue50 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue65 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue46 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue119 views
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue96 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays40 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10369 views
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue46 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue46 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely56 views

What’s new in grails framework 5?

  • 1. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 1
  • 2. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 2 About Puneet Puneet Behl is the Grails Development Lead at Object Computing, Inc. He is very enthusiastic about the Grails and Micronaut frameworks, Groovy, Docker, and open source technologies. If you’d like to get in touch, feel free to say hello on twitter.com/puneetbhl
  • 3. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 3 AGENDA ● Introducing Grails Framework 5 ● Upgrading ● Build and Infrastructure ● What Does Micronaut Integration Mean for You? ● Recent Updates ● The Road Ahead
  • 4. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 4 Introducing Grails Framework 5
  • 5. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 5 Dependent Libraries ● Apache Groovy 3 ● Gradle 7.2 ● Micronaut 3 ● Spring framework 5.3 ● Spring Boot 2.6 ● Spock 2.0-groovy-3.0
  • 6. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 6 Deprecations The dot-based configuration access (i.e., grailsApplication.config.a.b.c) is deprecated. We recommend you use grailsApplication.config.getProperty(key, type).
  • 7. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 7 JUnit5 ● Running JUnit4 tests on JUnit Platform ● Annotation in org.junit.jupiter.api ● Assertions in org.junit.jupiter.api.Assertions ● @BeforeEach and @AfterEach ● @BeforeAll and @AfterAll ● junit-vintage-engine in runtime classpath ● Migrate from JUnit4 (https://junit.org/junit5/docs/current/user-guide/#migrating-from-junit4 )
  • 8. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 8 Grails Gradle Plugin The Grails Gradle Plugin was originally part of Grails Core; it has now been moved to a separate repository. The Grails Gradle plugin might not advance with the same speed as Grails Core. So, we have added a separate Gradle property, grailsGradlePluginVersion , to decouple it from Grails Core version. apply plugin:"org.grails.grails-web"
  • 9. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 9 Semantic Versioning 2.0 Starting with version 4.0.0, the Grails framework follows semantic versioning 2.0.0 to make the release process more predictable and simple. https://semver.org/
  • 10. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 10 Grails Plugins ● Most Grails plugins that work with Grails framework 4 should work with Grails framework 5 as well. ● Building configuration instead of plugins.
  • 11. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 11 JCenter and Bintray Shutdown https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
  • 12. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 12 Publishing Plugins ● The Grails Gradle Publish plugin is removed ● The Grails Profile Publish plugin is removed ● Instead use Gradle maven-publish plugin ● Include/update plugin in the Grails Plugin Portal
  • 13. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 13 The Grails Wrapper Update In June, the Grails Framework Artifactory instance was updated. As a result, the old Grails wrapper now fails under certain conditions because the URL it uses to retrieve information is no longer supported. https://grails.org/blog/2021-06-10-grails-wrapper-update.html
  • 14. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 14 Upgrading
  • 15. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 15 Upgrading ● Grails framework 3 is EOL (end of life), so it's a good time to update your applications and plugins ● Migrate tests from JUnit4 to JUnit5 ● Change grailsVersion=5.1.0 ● Remove any reference to jcenter() ● Update to Gradle 7.2 ○ Run gradle help --scan ○ Execute gradle wrapper --gradle-version 7.2 ● Gradle scope changes
  • 16. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 16 Apache Groovy 3 ● No more JDK warning with JDK 11 or higher ● Java 16 support ● New Parrot parser ● GDK additions: Several new extension methods ● Release Notes (https://groovy-lang.org/releasenotes/groovy-3.0.html#releasenotes)
  • 17. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 17 GORM 7.1 ● Apache Groovy 3 ● Spring 5.3 ● Spring 2.5.5 ● Hibernate 5.5.7 (https://hibernate.org/orm/releases/5.5/ ) ● MongoDB Driver Sync 4 (https://mongodb.github.io/mongo-java-driver/4.0/upgrading/) ● Neo4J Driver 4
  • 18. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 18 Upgrading - Spring Boot Changes ● Hibernate Validator 6.2 (https://in.relation.to/2021/01/06/hibernate-validator-700-62-final-released/ ) ● Environment Variable Prefix ● Metrics and endpoints ● Java 16 ● Jetty 10 Support ● Configuration Changes (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Configuration-C hangelog) ● Spring Boot 2.5 Release Notes https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes
  • 19. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 19 Upgrading - Spring Changes ● Official support for Apache Groovy 3 ● What's New in Spring Framework 5.x https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Fr amework-5.x
  • 20. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 20 Gradle 7.2 ● Use mavenCentral() or maven { url "https://repo.grails.org/grails/core" } ● The scope “provided” is removed. ● Apache Groovy 3 ● Removal of Compile and Runtime Configurations ● Use maven-publish instead of maven ● Duplicate Strategy ● Upgrading from Gradle 5.x https://docs.gradle.org/7.2/userguide/upgrading_version_5.html ● Gradle 7.2 Release Notes https://docs.gradle.org/7.2/release-notes.html
  • 21. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 21 Gradle Scope Changes compile api/implementation compileOnly compileOnly runtime runtimeOnly testCompile testImplementation testRuntime testRuntimeOnly provided compileOnly/api
  • 22. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 22 Micronaut 3 ● The javax.inject annotations are no longer a transitive dependency. Micronaut now ships with the Jakarta inject annotations. Either replace all javax.inject imports with jakarta.inject, or add a dependency on javax-inject to continue using the older annotations: implementation("javax.inject:javax.inject:1") ● https://micronaut.io/2021/08/18/micronaut-framework-3-released/
  • 23. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 23 Build and Infrastructure
  • 24. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 24 Build and Infrastructure ● Configured Gradle Enterprise (https://ge.grails.org) to improve Gradle build ● Moved from Travis to Github Workflows ● The artifacts are published to Maven Central
  • 25. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 25 What Does Micronaut Integration Mean For You?
  • 26. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 26 The Powerful Micronaut Declarative HTTP Client ● implementation("io.micronaut:micronaut-http-client") @Client("https://start.grails.org") interface GrailsAppForgeClient { @Get("/{version}/profiles") List<Map> profiles(String version) }
  • 27. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 27 Testing Security in the Application when: 'login' UserCredentials credentials = new UserCredentials(username: 'sherlock', password: 'elementary') HttpRequest request = HttpRequest.POST('/api/login', credentials) HttpResponse<BearerToken> resp = client.toBlocking().exchange(request, BearerToken) resp = client.toBlocking().exchange(HttpRequest.GET('/api/announcements') .header('Authorization', "Bearer ${resp.body().accessToken}"), Argument.of(List, AnnouncementView)) then: 'announcement list' rsp.status.code == 200 rsp.body() != null ((List)rsp.body()).size() == 1
  • 28. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 28 Grails and Micronaut Kafka import io.micronaut.configuration.kafka.annotation.KafkaClient import io.micronaut.configuration.kafka.annotation.Topic @KafkaClient interface AnalyticsClient { @Topic('analytics') Map updateAnalytics(Map book) }
  • 29. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 29 Micronaut Features That Do Not Work With Grails ● Tracing ● Metrics ● Security ● CORS ● Open API
  • 30. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 30 Recent Releases
  • 31. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 31 Grails Database Migration Plugin 4.0.0-RC2 Released ● Support Liquibase 4.6 ● Liquibase Extension Upgrade Guide (https://docs.liquibase.com/tools-integrations/extensions/extension-upgrade-guides/h ome.html) ● Release Notes (https://github.com/liquibase/liquibase/releases/)
  • 32. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 32 Grails 5.0.3 Released ● Bug-fixes and Improvements ● Make Grails 5 compatible with Gradle 7.2 ● Fixed some bug around grails.factories file ● Release Notes (https://github.com/grails/grails-core/releases/tag/v5.0.3)
  • 33. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 33 Log4J2 - CVE-202144228 ● Grails® framework blog post (https://grails.org/blog/2021-12-14-log4j2-cve.html) ● CVE-202144228 (https://nvd.nist.gov/vuln/detail/CVE-2021-44228)
  • 34. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 34 The Road Ahead
  • 35. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 35 Grails Framework 5.1 ● Spring Boot 2.6.1 ● Micronaut 3.2 ● Hibernate 5.6 ● MongoDB Driver 4.4 ● Better support with Gradle 7.2
  • 36. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 36 ● Improvements to the Grails CLI ● Spring Security Core Grails Plugin Upcoming Changes
  • 37. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 37 2GM Quarterly Town Hall Meeting Each Town Hall Meeting is led by a panel of 2GM users, developers, and advocates. Everyone in the 2GM communities is welcome and encouraged to participate. https://objectcomputing.com/resources/events/2gm-town-hall Next Meeting - Friday, January 7, 2022
  • 38. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 38 Grails Foundation™ ● A not-for-profit organization that supports and collectively leads the open source Grails project. ● Supported by a Technology Advisory Board that ensures the Framework continues to reflect and serve its diverse and growing user community. ● The Board meets quarterly to discuss and make recommendations regarding the Grails framework roadmap and technical direction. ● For more information, check out https://grails.org/foundation/index.html.
  • 39. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 39 Thank You Community involvement is vital for the success of Grails framework. We appreciate the Grails community for the support and feedback throughout this journey. We are excited about this latest release. Please, upgrade your applications to Grails framework 5. We would love to hear about your experience, and if you need any help with your upgrade, we are here to support(https://grails.org/support.html) you.
  • 40. Ⓒ 2021 Grails Foundation. All rights reserved. grails.org 40 Merry Christmas!