Remix.run Logo
robmccoll a day ago

Does this app take 5 minutes to start? That's so much dynamic Spring magic. Also, how do you keep track of control flow when anything at anytime could have been overridden by something else? It seems like tracing and debugging this thing would be like exploring someone else's codebase every time.

switchbak a day ago | parent | next [-]

The class loading magic means you need to be exceptionally careful about things that would otherwise be very innocuous. It’s the rule, not the exception - that your average spring boot app will be doing tons of expensive stuff at startup. Most of which is unnecessary and was not even intended.

The JVM doesn’t need this kind of thing either, and it gets a bad wrap from the J(2)EE days, and the “simple” replacement that Spring was supposed to be.

No doubt there’s some benefits to be had, but I don’t think the trade-offs are worth it, especially at larger scales.

krzyk a day ago | parent | prev | next [-]

Who cares about startup times if apps is started only when new version is deployed?

And 5 minutes is a bit long, maybe someone is doing some database operations during start?

robmccoll a day ago | parent [-]

I care because every second of that startup time is lost productivity and focus. For me and any developer on my team. Hot reload only works if no class or method has changed so that's not a solution. I've worked on codebases of similar size and complexity in many languages, and the developer experience of a compile and restart that takes less than five seconds is game changing.

tracker1 a day ago | parent [-]

I can imagine a full build of the project(s) in TFA are on the order of several minutes to build/run the first, and maybe every time. I remember working on projects before SSDs were common that would take on the order of a half hour or more... the layers of abstraction were so that you literally had to thread through 15+ projects in two different solutions in order to add a single parameter for a query and it would take a couple weeks to develop and test.

That said, I did catch up on my RSS feeds during that job.

guzfip a day ago | parent | prev | next [-]

> It seems like tracing and debugging this thing would be like exploring someone else's codebase every time.

Oh man, just wait till you start sprinkling some AOP in there. My debugger is damn near useless sometimes as I try to follow bizarre paths between parts of my code.

robmccoll a day ago | parent [-]

Totally! But it doesn't have to be this way.

smrtinsert a day ago | parent | prev [-]

The article talks about a specific solution they came up with. No way is this a representative example, they discard a typical pattern way at the top.