Hi Henrique,

While I can't address Gradle's initial, large download of dependencies, I
think we can make the dev server "feel" faster and make it more apparent
when something is causing a slow start.  I've opened
https://github.com/apache/grails-core/pull/16536 as a way to immediately
launch a server that responds on the server port with a progress bar that's
shown until the application starts up.  It will be a useful development
tool to make people aware of why their startup is taking so long.  It's
extensible and by default the db migration plugins contribute their status
to the progress so long running migrations can be easily determined.  This
is obviously only meant to be used in development at this time, but
technically it could run in any environment.

-James

On Mon, Oct 5, 2026 at 11:15 AM Henrique Lobo Weissmann <[email protected]>
wrote:

> Hi James,
>
> about the distribution, this only happens on the first time we start
> Grails. Sometimes it takes A LOT of time, which may cause a bad first
> impression for new comers. I have this experience really often when demoing
> Grails for the first time on some presentations I do.
>
> I remember that in Grails 1.x (and I think 2.x also) we had a lot of
> dependencies which came preloaded on the framework on the lib folder, so it
> was (my memories may be wrong) really quick to start working: but those
> were older times when broadband Internet was not so common.
>
> Em seg., 5 de out. de 2026 às 11:45, James Daugherty via dev <
> [email protected]> escreveu:
>
> > I intend to respond to the actual question of this thread in a separate
> > reply, but to respond to Henrique on performance ...
> >
> > Work has already started on improving the start up time, Grails 8 is
> > delivering numerous improvements here:
> > 1. parallel bean initialization - we have to ditch bean overriding to do
> > this.  Grails 8 is the first release working toward this and I think the
> > majority have been addressed.  Once we split our dependencies out better,
> > we can start making use of `@Bean(bootstrap = BACKGROUND)`
> >
> >
> https://medium.com/@semitaho/boost-spring-startup-speed-background-bean-initialization-in-spring-6-2-47c56d813521
> > seems to give a reasonable summary of this.  This will be huge when we
> can
> > switch to this.  Your work will scale with your processor at this point.
> > 2. compile time optimizations - we started generating "indexes" of
> compile
> > time data already in Grails 8.  Taglibs are a good example here.  We have
> > current plans to bring this across the application - url mappings, etc.
> > All of the runtime based calculations can then be compile time based and
> > will be a significant application boost (not just startup)
> > 3. gradle improvements - I started in Grails 7 rewriting a large portion
> of
> > the Grails Build & Gradle code. We have continued that work gradually,
> but
> > eventually the Grails Gradle Plugin will be fully lazy with no
> > afterEvaluate calls & support the configuration cache.  As we begin to
> > adopt more caching features of Gradle, steps will run less, which means
> the
> > time goes to zero for values not changed.  This affects multi-project
> > builds the most. If you used Grails 6 and went to Grails 7, you should
> have
> > already noticed this benefit when running tests as most of my work
> > prevented unneeded reruns of tasks.
> > 4. multi project builds - I've argued for a while now that we should have
> > better tooling to support multi-project builds.  I'd go further to say
> that
> > most Grails projects, or at least ones of any significant size, should be
> > multi project builds.  Gradle's support for incremental groovy
> compilation
> > is not great and hasn't improved, but its support for multi-project
> builds
> > is.  On large code bases, splitting your code into separate projects
> > significantly impacts the performance of application start up.  If your
> > actual app has 10 base projects instead of one monolith, think of it this
> > way: no changes to those 10 base projects means no recompilation,
> > processing of assets, etc.
> > 5. better support for AOT / CRaC (https://openjdk.org/projects/crac/) /
> > Native - Scott has already been contributing numerous changes to support
> > these technologies.  As they are adopted in Grails, you should see
> > significant performance benefits on startup.  Project Leyden (
> > https://openjdk.org/projects/leyden/) is the upstream Java project
> focused
> > on this problem.
> > 6. I'm sure I've forgotten others, but these were the ones I could think
> of
> > off the top of my head.
> >
> > Concerning the distribution, the first download of dependencies will
> likely
> > always be slow since they are downloaded & pulled into the Gradle cache
> on
> > the first pull.  Every pull after that shouldn't be slow though since
> it's
> > cached locally.  I've never had anyone raise this as a concern, and I'm
> > interested to know if this is a "first time" issue or an ongoing issue.
> >
> > -James
> >
> >
> > On Mon, Oct 5, 2026 at 9:49 AM Henrique Lobo Weissmann <
> [email protected]
> > >
> > wrote:
> >
> > > I think this is a good idea James, specially if Groovy 6 could bring
> > > improved startup times (specially on development mode). One of the main
> > > issues while showing Grails to new users is the startup time on
> > development
> > > mode on the CLI.
> > >
> > > Going further James, I have a suggestion: is there anything we could do
> > to
> > > improve this startup time on development mode, maybe provide more libs
> on
> > > the Grails distribution to avoid the fetch of these dependencies from
> the
> > > Internet?
> > >
> > > Em dom., 4 de out. de 2026 às 22:04, James Fredley <
> > > [email protected]>
> > > escreveu:
> > >
> > > > Hi everyone,
> > > >
> > > > The 8.0.0 vote is out, which is is an AWESOME accomplishment.
> > > >
> > > > While that finishes, I want to discuss what we do next, before we
> spend
> > > > time on the wrong branch.
> > > >
> > > > Proposal: do not release an 8.1.x on Spring Boot 4.2 in Q1 2027. Ship
> > > > 8.0.x, move straight to 9.0.x on Groovy 6 (snapshots already exist),
> > and
> > > > pick up Spring Boot 4.2 in a 9.1.x release after that GA is out.
> > > >
> > > > The schedule would look like this:
> > > >
> > > > - 8.0.0 on Spring Boot 4.1 and Groovy 5 - now
> > > > - 9.0.0 on Spring Boot 4.1 and Groovy 6 targets late November or
> early
> > > > December. Those snapshots are already running.
> > > > - I expect Spring Boot 4.2 GA around Christmas or early January
> rather
> > > > than the usual late November window.  4.1 landed in June, about a
> month
> > > > late.  Spring Boot 4.2.0-M2 shipped on 24 September. The 4.2.0-RC1
> > > > milestone is 29 of 30 issues closed
> > > > (https://github.com/spring-projects/spring-boot/milestone/433). The
> > > > 4.2.0 GA milestone is open, but Spring has not set a due date
> > > > (https://github.com/spring-projects/spring-boot/milestone/434).
> > > > - After Spring Boot 4.2 GA, we release 9.1 on top of 9.0 in Q1 2027
> > > > - 8.1 stays on the shelf unless we find a real reason to release it.
> > > >
> > > > Two release trains are driving this. We still cut a Grails major when
> > > > Spring Boot cuts a major. Groovy now looks like it will cut a major
> > > > about once a year, and that will also be a Grails major. I do not
> think
> > > > we should also keep chasing each Spring Boot minor on the old Groovy
> > > > line. Cleaner cutoff: a Grails line stays on the Spring Boot minor it
> > > > shipped with, and the next Spring Boot minor lands on the new Groovy
> > > major.
> > > >
> > > > The merge cost is the main reason to skip an 8.1 release. Spring Boot
> > > > 4.2 changes will not apply cleanly to the Groovy 6 work already on
> > > > 9.0.x. They will apply to 9.1, which is where we want them. Doing
> that
> > > > upgrade for an 8.1 release and again for 9.1 is the same work twice.
> > > > Those changes might get merged to the wrong line, replayed, or
> dropped.
> > > > We could try to keep lines working on both Spring Boot 4.1 (Grails
> > 8.0.x
> > > > and 9.0.x) and 4.2(Grails 8.1.x and 9.1.x), but that is not worth it
> > for
> > > > a line most people will leave quickly or skip entirely.
> > > >
> > > > 9.0 should be a short release. If it lands in late November or early
> > > > December, 9.1 can follow soon after the Spring Boot 4.2 GA in Q1
> 2027.
> > > > Users will likely move to latest Groovy, especially with the
> > performance
> > > > boost.
> > > >
> > > > This does not end 8.0.x. Patch releases on 8.0.x continue as usual.
> The
> > > > only question is whether we spend a minor release moving Groovy 5
> onto
> > > > Spring Boot 4.2.
> > > >
> > > > Does this match what others expect for the next few months?
> > > >
> > > > Reasons that would change my mind: users who cannot move to Groovy
> 6, a
> > > > compatibility promise we have already made, or a merge approach that
> is
> > > > cheaper than it looks.
> > > >
> > > > Thanks,
> > > > James Fredley
> > > > VP, Apache Grails
> > > > PMC Chair
> > > >
> > >
> > >
> > > --
> > > *Henrique Lobo Weissmann*
> > > Diretor Técnico - itexto
> > > Telefone / WhatsApp - +55 31 9 9226 0459
> > >
> > > https://itexto.com.br
> > >
> >
>
>
> --
> *Henrique Lobo Weissmann*
> Diretor Técnico - itexto
> Telefone / WhatsApp - +55 31 9 9226 0459
>
> https://itexto.com.br
>

Reply via email to