SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Ⓒ
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!

Weitere ähnliche Inhalte

Was ist angesagt?

An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
Vadym Lotar
 

Was ist angesagt? (20)

Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Airflow presentation
Airflow presentationAirflow presentation
Airflow presentation
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Selenium Interview Questions and Answers For Freshers And Experienced | Edureka
Selenium Interview Questions and Answers For Freshers And Experienced | EdurekaSelenium Interview Questions and Answers For Freshers And Experienced | Edureka
Selenium Interview Questions and Answers For Freshers And Experienced | Edureka
 
Spring framework core
Spring framework coreSpring framework core
Spring framework core
 
IBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and DockerIBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and Docker
 
VictoriaMetrics: Welcome to the Virtual Meet Up March 2023
VictoriaMetrics: Welcome to the Virtual Meet Up March 2023VictoriaMetrics: Welcome to the Virtual Meet Up March 2023
VictoriaMetrics: Welcome to the Virtual Meet Up March 2023
 
Gradle
GradleGradle
Gradle
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Spring ppt
Spring pptSpring ppt
Spring ppt
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
 
Attacking GraphQL
Attacking GraphQLAttacking GraphQL
Attacking GraphQL
 
Git commands
Git commandsGit commands
Git commands
 

Ähnlich wie What’s new in grails framework 5?

gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
saraichiba2
 
Contributing to Grails
Contributing to GrailsContributing to Grails
Contributing to Grails
GR8Conf
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
Weaveworks
 

Ähnlich wie What’s new in grails framework 5? (20)

Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
 
What's New for GitLab CI/CD February 2020
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
 
Grails 3.0 Preview
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Preview
 
GitBucket: Open source self-hosting Git server built by Scala
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
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
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
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Contributing to Grails
Contributing to GrailsContributing to Grails
Contributing to Grails
 
JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
WTF is GitOps & Why Should You Care?
WTF is GitOps & Why Should You Care?WTF is GitOps & Why Should You Care?
WTF is GitOps & Why Should You Care?
 
CIP Developing Curator Tool Wizards
CIP Developing Curator Tool WizardsCIP Developing Curator Tool Wizards
CIP Developing Curator Tool Wizards
 
How to plan and define your CI-CD pipeline
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
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
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
 
GraalVM and Oracle's Documentation Trends.pdf
GraalVM and Oracle's Documentation Trends.pdfGraalVM and Oracle's Documentation Trends.pdf
GraalVM and Oracle's Documentation Trends.pdf
 
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
How to manage Kubernetes at scale with just git
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 

Kürzlich hochgeladen (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

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!