Demystifying GenAI and ChatGPT
-- harness the practical and pragmatic parts of AI
-- you don't have to run your own models and LLMs
-- call out to OpenAI straight from your Kotlin/Java SpringBoot codebase
-- the real magic is finding a good use-case
-- most of what you hear and see out there today isn't a good use for LLMs in the first place
I don't know if anyone on the @quarkusio core team will read this, but here is the thing. Your framework is way too good to hide it under the "cloud-native" umbrella. The way to increasing adoption in the broader Java community is to make it more visible that Quarkus is just as capable of building good old fully-featured monoliths, as is of blazing-fast microservices.
Below are two identical barebones starting projects in #Quarkus and #SpringBoot, respectively. Notice, how Spring follows the (to my understanding) more common 3-level nested approach (domain, organization, project), while Quarkus omits the project level entirely.
I am trying to address those differences to a Spring developer, thus I'd like to know, was that an intentional decision, or some sort of internal RedHat convention that the @quarkusio team just stuck with?
2010 - my first encounter with Spring. Did that professionally until 2019.
2019-2023 - Discovered Go and it became my daily driver.
2022-2023 - Picked up Java again, via Quarkus. Enjoyed it a lot, but still kept pushing for Go.
2024 - Reunited with Spring Boo. Had to admit that Go is a dead-end for the things im working on.
Go is fantastic, but not great for the good old monolithic line-of-business apps on our agenda.
Once again, #TDD and #HexagonalArchitecture meant that when I hooked up the "real" timer broadcaster (using WebSockets), everything just worked.
Only took 35 lines of WebSocket code and 10 lines of #SpringBoot configuration code and a few #htmx attributes on the HTML page. (Not counting the separate transformer code that generated the HTML.)
This is a great option for a long-time Java dev that doesn't want to spring (ahem) into JS. Great option esp for adding some interactivity to legacy JSP/Struts or similar. Lots of #php folks are using htmx as well.
🎉 Thrilled to announce the official release of my new book 'Modern frontends with htmx'! Discover how to master #htmx with #SpringBoot and #Thymeleaf for rich, interactive web applications. Say goodbye to JavaScript complexity!
Spring Boot 3.2 is officially here 🍃 Support for Virtual Threads, RestClient, JdbcClient, and improvements to certificate management, OCI image builds, and observability!
Say goodbye to Java 8 and Java 11. They served us well, but it's time to move on! Java 21 rocks! 🚀
I think of doing a web app for managing your personal comic-book collection. It should let you add titles with essential data (writer(s), artist(s), editor, cover art, ratings (with stars), reviews...), read, edit, and delete those data.
It would be made with #Java+#SpringBoot, server-side rendered with a templating engine (#Thymeleaf), and use a #MySQL DBMS. This way you could run it locally, self host privately and/or share everywhere. FOSS licensed of course.
A few years back, I wrote a #Java Magazine article with an accompanying Github repo to explore using #Gradle modules to express & enforce #hexagonalarchitecture
Today I attended a talk by Damir Murat where he explained a demo project, Klokwrk, where he explores a code folder structure to express #DDD. He calls it Strategic Structure, referring to Strategic DDD with domains and bounded contexts. It's quite detailed, and I like this approach.
Looks like I need to update and publish my #Java and #SpringBoot#HexagonalArchitecture project that uses Maven modules (I have a strong aversion to Gradle).
(I also adopt Application & Domain layers for the inside of the hexagon, as well as not having ports as Java interfaces on the inbound/driving/primary side.)