{"slug": "spring", "name": "Spring", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 6, "commenters": 30, "warners": 11, "score": -1.374, "rising": -0.64, "first": "2025-11-15", "latest": "2026-10-15", "why": "I am a Java dev and Spring user for about 10 years now.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 9, "compare": 4, "warn": 11}, "spark": [0, 0, 0, 0, 4, 0, 1, 0, 0, 1, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "I am a Java dev and Spring user for about 10 years now.", "kind": "", "icon": true, "domain": "spring.io", "github_repo": null, "official_url": "https://spring.io", "pricing": "", "aliases": ["Spring", "Spring Framework"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 791632928, "item_id": 49477058, "url": "https://news.ycombinator.com/item?id=49477058", "by": "fmjrey", "date": "2026-08-28", "version": null, "stance": "recommend", "quote": "This is what made Spring so successful", "excerpt": "I had first-hand experience with the way java developers avoid XML config. In my early days I wrote some javabean mapper framework but it wasn't liked by my peers becaused it was driven by XML. Back then EJB, Struts, and many web/enterprise frameworks used XML for config, so it was a no brainer to continue the trend. However the DX of XML in Java wasn't that great I have to admit. This is what made Spring so successf", "context": "", "use_case": "Java enterprise config", "switched_from": "", "story": "Where to for Clojure and Enterprise Web Applications"}, {"id": 770152704, "item_id": 48134544, "url": "https://news.ycombinator.com/item?id=48134544", "by": "tomaytotomato", "date": "2026-05-14", "version": null, "stance": "recommend", "quote": "I am a Java dev and Spring user for about 10 years now.", "excerpt": "I am a Java dev and Spring user for about 10 years now. If you want to learn how Spring framework and Spring boot works, the best thing to do is build your own library and then learn to add it to a new spring boot service. https://www.baeldung.com/spring-boot-custom-starter Depending on which AI tool you are using, you can also get it to debrief what it is doing and what layer of the Spring architecture it is using (", "context": "Java developer, Spring user for about 10 years", "use_case": "Java backend framework", "switched_from": "", "story": "A Claude Code and Codex Skill for Deliberate Skill Development"}, {"id": 761429617, "item_id": 47589351, "url": "https://news.ycombinator.com/item?id=47589351", "by": "andor", "date": "2026-03-31", "version": null, "stance": "recommend", "quote": "Spring dependency injection is mainly based on types.", "excerpt": "Manual dependency injection is fine, but it doesn't scale. Especially when you start refactoring things and dependencies need to be moved around. The other issue is dynamic configuration. How do you handle replacing certain dependencies, e.g. for testing, or different runtime profiles? You could try to implement your own solution, but the more features you add, the closer you'd get to a custom DI framework. And then ", "context": "", "use_case": "", "switched_from": "", "story": "Spring Boot Done Right: Lessons from a 400-Module Codebase"}, {"id": 761272384, "item_id": 47579524, "url": "https://news.ycombinator.com/item?id=47579524", "by": "functional_dev", "date": "2026-03-30", "version": null, "stance": "recommend", "quote": "Agreed, Spring Framework is quite simple", "excerpt": "Agreed, Spring Framework is quite simple... just look here - https://vectree.io/c/spring-framework", "context": "", "use_case": "", "switched_from": "", "story": "Spring Boot Done Right: Lessons from a 400-Module Codebase"}, {"id": 761245601, "item_id": 47577850, "url": "https://news.ycombinator.com/item?id=47577850", "by": "RickJWagner", "date": "2026-03-30", "version": null, "stance": "recommend", "quote": "Spring just made things easy.", "excerpt": "I used to work for Red Hat middleware, and I love JBoss. Bickering is not why Spring did so well. Spring just made things easy. It also had only one implementation, so you couldn\u2019t be confused because a deployment descriptor worked on one platform and not another. Some random blog post on setup always worked when Spring was in use. If you were following a WebLogic cookbook, good luck on Websphere. In the end, Easy al", "context": "", "use_case": "Java application framework", "switched_from": "", "story": "Eclipse GlassFish: This Isn't Your Father's GlassFish"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 801781184, "item_id": 50111324, "url": "https://news.ycombinator.com/item?id=50111324", "by": "nocman", "date": "2026-10-15", "version": null, "stance": "warn", "quote": "At least it was the \"Simple\" version.", "excerpt": "WOW. I went googling, sorta hoping this was a joke, but nope, there it is: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.html I've been away from that world for a while, but still. At least it was the \"Simple\" version. LOL.", "context": "", "use_case": "", "switched_from": "", "story": "Celebrating 70 Years of Fortran"}, {"id": 795406480, "item_id": 49712905, "url": "https://news.ycombinator.com/item?id=49712905", "by": "msluyter", "date": "2026-09-15", "version": null, "stance": "warn", "quote": "I've generally thought that was a result of frameworks - Spring, for example.", "excerpt": "I haven't really been in the java space for a while now, but I recall there being a fair bit of criticism[1][2] of checked exceptions over the years. [1] https://www.javacodegeeks.com/2026/01/javas-checked-exceptions-the-20-year-experiment-that-failed.html [2] https://reflectoring.io/do-not-use-checked-exceptions/ WRT magic, I've generally thought that was a result of frameworks - Spring, for example. In the past, my", "context": "", "use_case": "", "switched_from": "", "story": "Java 27"}, {"id": 785925840, "item_id": 49120365, "url": "https://news.ycombinator.com/item?id=49120365", "by": "MrBuddyCasino", "date": "2026-07-31", "version": null, "stance": "warn", "quote": "Do I love Spring? No.", "excerpt": "Today it is a great language with a runtime that is unequaled. For heavy duty business backend server load, it is the standard choice, and rightfully so. Do I love Spring? No. Do I prefer Typescript for my little side projects? Yes.", "context": "", "use_case": "Java backend", "switched_from": "", "story": "JEP 401: Value Objects (Preview) merged to OpenJDK master"}, {"id": 773244704, "item_id": 48327794, "url": "https://news.ycombinator.com/item?id=48327794", "by": "mannyv", "date": "2026-05-29", "version": null, "stance": "warn", "quote": "I wouldn't pick Spring or any other dependency injection framework because they inevitably lead to impossible-to-debug performance issues", "excerpt": "The only thing I can think of is to ask the AI \"why this instead of that?\" Every architectural decision is a tradeoff between something and another. Every technology choice is also a tradeoff. If you understand the reasons for the choices you'll start understanding architecture. Sometimes it starts with requirements (ie: what you're trying to do), or what your deployment environment looks like, your hosting provider,", "context": "", "use_case": "Java applications", "switched_from": "", "story": "Ask HN: Any advice on how to learn good software architecture practices?"}]}], "who": [{"by": "tomaytotomato", "context": "Java developer, Spring user for about 10 years", "url": "https://news.ycombinator.com/item?id=48134544", "date": "2026-05-14"}, {"by": "eltados", "context": "solo developer", "url": "https://news.ycombinator.com/item?id=48030129", "date": "2026-05-05"}, {"by": "einrealist", "context": "Java developer since version 1.4", "url": "https://news.ycombinator.com/item?id=47419176", "date": "2026-03-17"}, {"by": "aronishchal", "context": "senior developer and consultant, 15+ years", "url": "https://news.ycombinator.com/item?id=46867492", "date": "2026-02-02"}, {"by": "kpalang", "context": "Java engineer seeking remote work", "url": "https://news.ycombinator.com/item?id=46862558", "date": "2026-02-02"}, {"by": "ardadk", "context": "remote-only developer job seeker in Europe", "url": "https://news.ycombinator.com/item?id=46481878", "date": "2026-01-03"}], "tags": [], "use_cases": ["java backend framework", "java application framework", "java enterprise config", "java backend", "java applications", "building izeria"], "compared": [{"slug": "quarkus", "name": "Quarkus", "co": 4, "switched_from": 0, "switched_to": 1}, {"slug": "postgresql", "name": "PostgreSQL", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "spring-boot", "name": "Spring Boot", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "mysql", "name": "MySQL", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "node-js", "name": "Node.js", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "docker", "name": "Docker", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "micronaut", "name": "Micronaut", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=47534003", "title": "Spring Boot Done Right: Lessons from a 400-Module Codebase", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=47416548", "title": "Java 26 is here, and with it a solid foundation for the future", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=49441513", "title": "Where to for Clojure and Enterprise Web Applications", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49119063", "title": "JEP 401: Value Objects (Preview) merged to OpenJDK master", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46857487", "title": "Ask HN: Who wants to be hired? (February 2026)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50104726", "title": "Celebrating 70 Years of Fortran", "mentions": 1}], "sentiment_by_month": {"2025-11": {"warn": 2}, "2025-12": {"neutral": 2}, "2026-01": {"neutral": 1}, "2026-02": {"neutral": 2}, "2026-03": {"compare": 1, "neutral": 1, "warn": 4, "recommend": 4}, "2026-04": {"neutral": 1}, "2026-05": {"neutral": 1, "warn": 2, "recommend": 1}, "2026-06": {}, "2026-07": {"compare": 1, "warn": 1}, "2026-08": {"neutral": 1, "compare": 1, "recommend": 1}, "2026-09": {"warn": 1, "compare": 1}, "2026-10": {"warn": 1}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 801781184, "item_id": 50111324, "url": "https://news.ycombinator.com/item?id=50111324", "by": "nocman", "date": "2026-10-15", "version": null, "stance": "warn", "quote": "At least it was the \"Simple\" version.", "excerpt": "WOW. I went googling, sorta hoping this was a joke, but nope, there it is: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/config/SimpleBeanFactoryAwareAspectInstanceFactory.html I've been away from that world for a while, but still. At least it was the \"Simple\" version. LOL.", "context": "", "use_case": "", "switched_from": "", "story": "Celebrating 70 Years of Fortran"}, {"id": 795645361, "item_id": 49727835, "url": "https://news.ycombinator.com/item?id=49727835", "by": "sagenschneider", "date": "2026-09-16", "version": null, "stance": "compare", "quote": "I was testing the additive pipeline style of OfficeFloor against the mutative handler style of Spring", "excerpt": "Yep, this all actually started because of experimenting with my own open source project https://officefloor.net (giving full disclosure) I was testing the additive pipeline style of OfficeFloor against the mutative handler style of Spring. I was looking to see what factors could be used to allow AI to make long on going changes (experiment is 60 changes to an end point, where all add functionality and every 4th chang", "context": "", "use_case": "", "switched_from": "", "story": "ImpactGate: A merge gate that scores the structural decay AI adds"}, {"id": 795406480, "item_id": 49712905, "url": "https://news.ycombinator.com/item?id=49712905", "by": "msluyter", "date": "2026-09-15", "version": null, "stance": "warn", "quote": "I've generally thought that was a result of frameworks - Spring, for example.", "excerpt": "I haven't really been in the java space for a while now, but I recall there being a fair bit of criticism[1][2] of checked exceptions over the years. [1] https://www.javacodegeeks.com/2026/01/javas-checked-exceptions-the-20-year-experiment-that-failed.html [2] https://reflectoring.io/do-not-use-checked-exceptions/ WRT magic, I've generally thought that was a result of frameworks - Spring, for example. In the past, my", "context": "", "use_case": "", "switched_from": "", "story": "Java 27"}, {"id": 791632928, "item_id": 49477058, "url": "https://news.ycombinator.com/item?id=49477058", "by": "fmjrey", "date": "2026-08-28", "version": null, "stance": "recommend", "quote": "This is what made Spring so successful", "excerpt": "I had first-hand experience with the way java developers avoid XML config. In my early days I wrote some javabean mapper framework but it wasn't liked by my peers becaused it was driven by XML. Back then EJB, Struts, and many web/enterprise frameworks used XML for config, so it was a no brainer to continue the trend. However the DX of XML in Java wasn't that great I have to admit. This is what made Spring so successf", "context": "", "use_case": "Java enterprise config", "switched_from": "", "story": "Where to for Clojure and Enterprise Web Applications"}, {"id": 791599714, "item_id": 49474982, "url": "https://news.ycombinator.com/item?id=49474982", "by": "d_t_w", "date": "2026-08-28", "version": null, "stance": "compare", "quote": "CDI is clearly derived from many years of innovation by Spring", "excerpt": "Hello, I'm the author. Clojure has some limited support for Java annotations, it's just that support is a bit ungainly, and that introduces enough difficulty that it leads to frameworks like Quarkus having no real adoption in the Clojure community. Quarkus also relies on byte-code rewriting which may also cause difficulty for Clojure, but that's an aside. Better annotations support wouldn't necessarily improve the ea", "context": "", "use_case": "", "switched_from": "", "story": "Where to for Clojure and Enterprise Web Applications"}, {"id": 786283840, "item_id": 49142740, "url": "https://news.ycombinator.com/item?id=49142740", "by": "dminik", "date": "2026-08-02", "version": null, "stance": "neutral", "quote": "", "excerpt": "It's clearly still very popular. https://survey.stackoverflow.co/2025/technology#1-web-frameworks-and-technologies", "context": "", "use_case": "", "switched_from": "", "story": "JEP 401: Value Objects (Preview) merged to OpenJDK master"}, {"id": 785925840, "item_id": 49120365, "url": "https://news.ycombinator.com/item?id=49120365", "by": "MrBuddyCasino", "date": "2026-07-31", "version": null, "stance": "warn", "quote": "Do I love Spring? No.", "excerpt": "Today it is a great language with a runtime that is unequaled. For heavy duty business backend server load, it is the standard choice, and rightfully so. Do I love Spring? No. Do I prefer Typescript for my little side projects? Yes.", "context": "", "use_case": "Java backend", "switched_from": "", "story": "JEP 401: Value Objects (Preview) merged to OpenJDK master"}, {"id": 780696064, "item_id": 48793504, "url": "https://news.ycombinator.com/item?id=48793504", "by": "argentinian", "date": "2026-07-05", "version": null, "stance": "compare", "quote": "jdbcClient from Spring framework", "excerpt": "Is it very similar to the relatively new jdbcClient from Spring framework? https://www.danvega.dev/blog/spring-jdbc-client", "context": "", "use_case": "", "switched_from": "", "story": "What ORMs have taught me: just learn SQL (2014)"}, {"id": 773244704, "item_id": 48327794, "url": "https://news.ycombinator.com/item?id=48327794", "by": "mannyv", "date": "2026-05-29", "version": null, "stance": "warn", "quote": "I wouldn't pick Spring or any other dependency injection framework because they inevitably lead to impossible-to-debug performance issues", "excerpt": "The only thing I can think of is to ask the AI \"why this instead of that?\" Every architectural decision is a tradeoff between something and another. Every technology choice is also a tradeoff. If you understand the reasons for the choices you'll start understanding architecture. Sometimes it starts with requirements (ie: what you're trying to do), or what your deployment environment looks like, your hosting provider,", "context": "", "use_case": "Java applications", "switched_from": "", "story": "Ask HN: Any advice on how to learn good software architecture practices?"}, {"id": 770152704, "item_id": 48134544, "url": "https://news.ycombinator.com/item?id=48134544", "by": "tomaytotomato", "date": "2026-05-14", "version": null, "stance": "recommend", "quote": "I am a Java dev and Spring user for about 10 years now.", "excerpt": "I am a Java dev and Spring user for about 10 years now. If you want to learn how Spring framework and Spring boot works, the best thing to do is build your own library and then learn to add it to a new spring boot service. https://www.baeldung.com/spring-boot-custom-starter Depending on which AI tool you are using, you can also get it to debrief what it is doing and what layer of the Spring architecture it is using (", "context": "Java developer, Spring user for about 10 years", "use_case": "Java backend framework", "switched_from": "", "story": "A Claude Code and Codex Skill for Deliberate Skill Development"}, {"id": 769016816, "item_id": 48063551, "url": "https://news.ycombinator.com/item?id=48063551", "by": "vhodges", "date": "2026-05-08", "version": null, "stance": "warn", "quote": "the complexity merchants showed up and ruined the party", "excerpt": "EJB, Spring, Ant, Struts (I'm getting old - Like Hot Java Alpha 3 and Java applets old), maven, pom files, etc. I used to love Java but the complexity merchants showed up and ruined the party. 1.5 was just coming out when I stopped doing Java dev. Kotlin might pull me back into the fold though for when I can't use Go.", "context": "", "use_case": "", "switched_from": "", "story": "Just Fucking Use Go"}, {"id": 768482065, "item_id": 48030129, "url": "https://news.ycombinator.com/item?id=48030129", "by": "eltados", "date": "2026-05-05", "version": null, "stance": "neutral", "quote": "The site has been built with some pretty unremarkable tech stack Java / Spring / Mysql / HTMX", "excerpt": "I've been working on Izeria for a few months now and I'm looking for some feedback. I built it because I wanted to go beyond the same popular spots and want to discover and and reconnect with my local area I've been testing it around my home in Edinburgh and it's been fun to go for a walk or cycle and discover local historical spots and hidden gems I never knew existed. I am a solo developer and I'm planning to take ", "context": "solo developer", "use_case": "building Izeria", "switched_from": "", "story": "Izeria.com a website/app to discover spots and gamify visiting your local area"}, {"id": 766803376, "item_id": 47925211, "url": "https://news.ycombinator.com/item?id=47925211", "by": "protsenko", "date": "2026-04-27", "version": null, "stance": "neutral", "quote": "More than 6 years I worked with Spring on Java", "excerpt": "More than 6 years I worked with Spring on Java, but last year was different - I switched to Kotlin, and I absolutely loved it. With power of Kotlin I could produce maintainable code without one million null pointer validation and able to write idiomatic and laconic code. I have a lot of material on best practices for Spring Data JPA but for Java, it took a time to write about Kotlin, it's probably the biggest article", "context": "", "use_case": "Java backend framework", "switched_from": "", "story": null}, {"id": 761429617, "item_id": 47589351, "url": "https://news.ycombinator.com/item?id=47589351", "by": "andor", "date": "2026-03-31", "version": null, "stance": "recommend", "quote": "Spring dependency injection is mainly based on types.", "excerpt": "Manual dependency injection is fine, but it doesn't scale. Especially when you start refactoring things and dependencies need to be moved around. The other issue is dynamic configuration. How do you handle replacing certain dependencies, e.g. for testing, or different runtime profiles? You could try to implement your own solution, but the more features you add, the closer you'd get to a custom DI framework. And then ", "context": "", "use_case": "", "switched_from": "", "story": "Spring Boot Done Right: Lessons from a 400-Module Codebase"}, {"id": 761272384, "item_id": 47579524, "url": "https://news.ycombinator.com/item?id=47579524", "by": "functional_dev", "date": "2026-03-30", "version": null, "stance": "recommend", "quote": "Agreed, Spring Framework is quite simple", "excerpt": "Agreed, Spring Framework is quite simple... just look here - https://vectree.io/c/spring-framework", "context": "", "use_case": "", "switched_from": "", "story": "Spring Boot Done Right: Lessons from a 400-Module Codebase"}, {"id": 761245601, "item_id": 47577850, "url": "https://news.ycombinator.com/item?id=47577850", "by": "RickJWagner", "date": "2026-03-30", "version": null, "stance": "recommend", "quote": "Spring just made things easy.", "excerpt": "I used to work for Red Hat middleware, and I love JBoss. Bickering is not why Spring did so well. Spring just made things easy. It also had only one implementation, so you couldn\u2019t be confused because a deployment descriptor worked on one platform and not another. Some random blog post on setup always worked when Spring was in use. If you were following a WebLogic cookbook, good luck on Websphere. In the end, Easy al", "context": "", "use_case": "Java application framework", "switched_from": "", "story": "Eclipse GlassFish: This Isn't Your Father's GlassFish"}, {"id": 761189696, "item_id": 47574356, "url": "https://news.ycombinator.com/item?id=47574356", "by": "rockyj", "date": "2026-03-30", "version": null, "stance": "warn", "quote": "gives you a dozen of footguns", "excerpt": "And at the same time, gives you a dozen of footguns. This is just a list for the gotchas in the \"@Transactional\" annotation - https://dev.to/closeup1202/8-spring-transactional-pitfalls-that-break-production-and-how-to-catch-them-all-258f Now read up on all the dozen of annotations. But yeah, we did not want to \"re-invent the wheel\".", "context": "", "use_case": "", "switched_from": "", "story": "Spring Boot Done Right: Lessons from a 400-Module Codebase"}, {"id": 760470082, "item_id": 47529380, "url": "https://news.ycombinator.com/item?id=47529380", "by": "well_ackshually", "date": "2026-03-26", "version": null, "stance": "recommend", "quote": "Even large projects like Spring are Kotlin first nowadays.", "excerpt": "Mind you, Kotlin/Native (which is what gets used when you're compiling for iOS) doesn't have access to the JVM. However, the Kotlin community is fundamentally all about open source, whereas Apple & iOS Devs have an allergy to it. The quality and quantity is already miles above the vast majority of what's in the Swift ecosystem. https://klibs.io has all the native compatible libs. And if you're targeting a platform wh", "context": "", "use_case": "", "switched_from": "", "story": "Swift 6.3 Released"}, {"id": 759539664, "item_id": 47471229, "url": "https://news.ycombinator.com/item?id=47471229", "by": "computerdork", "date": "2026-03-21", "version": null, "stance": "warn", "quote": "Spring makes it so we're using IOC everywhere, but it's just adding unnecessary complexity.", "excerpt": "Yeah, for me at least, personally believe inversion of control should be used more surgically instead of blanketing the system with it. On the one hand, freeing your application layer from direct dependencies with the lower-level objects conceptually seems like a good idea, but think in practice, this is hardly ever helpful especially when used for every dependency. At least from my experience, seems like we don't ch", "context": "", "use_case": "Java dependency injection", "switched_from": "", "story": "Java Is Fast. Your Code Might Not Be"}, {"id": 758732528, "item_id": 47420783, "url": "https://news.ycombinator.com/item?id=47420783", "by": "materielle", "date": "2026-03-17", "version": null, "stance": "warn", "quote": "I will never invest even 5 minutes in learning that horrible Spring framework", "excerpt": "As a Go developer, this is right on the mark. I\u2019ve been hearing good things about Java lately, so I decided to check out the language for the first time since 2012 or something. And I was impressed! The language maintainers have added so many great features while maintaining backwards compatibility. And slowly but surely improved the JVM and garbage collection. So after toying around for a bit, I decided to write som", "context": "Go developer", "use_case": "", "switched_from": "", "story": "Java 26 is here, and with it a solid foundation for the future"}, {"id": 758715009, "item_id": 47419688, "url": "https://news.ycombinator.com/item?id=47419688", "by": "KronisLV", "date": "2026-03-17", "version": null, "stance": "warn", "quote": "I've gone through the XML hell, was not fun", "excerpt": "> Nowadays you basically don't code Java, you code Spring Boot. And that has all the bad things you think when people say \"Java\". Subjective experience, but largely agreed. Vague rant that summarizes my own experience: major version updates kind of suck, even if Spring Boot is still better than regular Spring (I've gone through the XML hell, was not fun, even less so with a separate Tomcat instance that we had to dep", "context": "", "use_case": "", "switched_from": "", "story": "Java 26 is here, and with it a solid foundation for the future"}, {"id": 758706816, "item_id": 47419176, "url": "https://news.ycombinator.com/item?id=47419176", "by": "einrealist", "date": "2026-03-17", "version": null, "stance": "neutral", "quote": "I adopted Spring when version 1.2 was released.", "excerpt": "I have been using Java since version 1.4. Both the language and its ecosystem have come a long way since then. I endured the height of the EJB phase. I adopted Spring when version 1.2 was released. I spent hours fighting with IDEs to run OSGi bundles. I hated building UIs with Swing/AWT, many of which are still in use today and are gradually being replaced by lovely JavaFX. When I look at code I wrote around 12 years", "context": "Java developer since version 1.4", "use_case": "Java application framework", "switched_from": "", "story": "Java 26 is here, and with it a solid foundation for the future"}, {"id": 758247121, "item_id": 47390445, "url": "https://news.ycombinator.com/item?id=47390445", "by": "PaulHoule", "date": "2026-03-15", "version": null, "stance": "compare", "quote": "SYSGEN is the old 360's answer to the Spring Framework but less dynamic", "excerpt": "leftpad. It's a rich document to read in terms of thinking about those times and how it is like today. For instance when it comes to text parsing people very much use regex or something like lex or yacc and you can count on regex in the standard library. There is the fact of having a system of distribution like the original CPAN https://www.cpan.org/ which is independent of many other technologies such as namespaces ", "context": "", "use_case": "", "switched_from": "", "story": "Mass-Produced Software Components"}, {"id": 749879878, "item_id": 46867492, "url": "https://news.ycombinator.com/item?id=46867492", "by": "aronishchal", "date": "2026-02-02", "version": null, "stance": "neutral", "quote": "Java EE, Spring, Spring Security, REST", "excerpt": "Location: Europe Remote: Yes Willing to relocate: No Technologies: Java EE, Spring, Spring Security, REST, HTML/CSS, JavaScript, JQuery, Node.js, Python, Jaspersoft Studio, Eclipse, Tomcat, MySQL, Oracle, Git R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1lMjbMfEHKdCETFNXcV3Q4dRuGsyp1F1q3zFEt4Nv_s4/edit?usp=sharing Email: nishchalaro[at]gmail[dot]com I am a senior developer and consultant with over 15 years in the in", "context": "senior developer and consultant, 15+ years", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (February 2026)"}, {"id": 749800929, "item_id": 46862558, "url": "https://news.ycombinator.com/item?id=46862558", "by": "kpalang", "date": "2026-02-02", "version": null, "stance": "neutral", "quote": "Spring Framework from 3 to 4 and then to 5", "excerpt": "Location: Estonia Remote: Yes, remote only Willing to relocate: No Technologies: Java, Kotlin, PostgreSQL, Docker, K8s, CD/CI, Vue/Nuxt, Bash R\u00e9sum\u00e9/CV: - https://www.linkedin.com/in/kaurpalang/ - https://github.com/kpalang Email: kaur.palang@brightcodecompany.com As a Java engineer both by trade and by passion, I have had the opportunity to build and maintain many kinds of applications. My latest role has provided m", "context": "Java engineer seeking remote work", "use_case": "Java app framework", "switched_from": "", "story": "Ask HN: Who wants to be hired? (February 2026)"}, {"id": 743710052, "item_id": 46481878, "url": "https://news.ycombinator.com/item?id=46481878", "by": "ardadk", "date": "2026-01-03", "version": null, "stance": "neutral", "quote": "Spring", "excerpt": "Location: Europe Remote: Yes, remote only Willing to relocate: No Technologies: Python, TypeScript, Go, Node.js, Spring, LLM\u2019s, React, Next.js, PostgreSQL, Firebase, Docker, R\u00e9sum\u00e9/CV: https://docs.google.com/document/d/1Ta0x4QKMKEdeTP12gBN4kGY7f1RtLHku/edit?usp=drive_link&ouid=117515574214916051091&rtpof=true&sd=true Email: dev.ardadk@gmail.com GitHub: https://github.com/ardadk LinkedIn: https://www.linkedin.com/in/", "context": "remote-only developer job seeker in Europe", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (January 2026)"}, {"id": 739400032, "item_id": 46212502, "url": "https://news.ycombinator.com/item?id=46212502", "by": "NortySpock", "date": "2025-12-09", "version": null, "stance": "neutral", "quote": "The Spring RTS FOSS engine is an engine, but does not provide the game assets", "excerpt": "The Spring RTS FOSS engine is an engine, but does not provide the game assets or game-specific code. Recoil is a fork of the Spring engine (background: Spring made backward incompatible changes; Recoil forked to retain backward compatibility). Beyond All Reason uses the Recoil engine and supplies its own game code, shaders, and assets. https://recoilengine.org/articles/choose-recoil/ https://recoilengine.org/ (list o", "context": "", "use_case": "RTS game engine", "switched_from": "", "story": "30 Year Anniversary of WarCraft II: Tides of Darkness"}, {"id": 737743937, "item_id": 46108996, "url": "https://news.ycombinator.com/item?id=46108996", "by": "twikeybelgium", "date": "2025-12-01", "version": null, "stance": "neutral", "quote": "Stack: Java + Spring, Go, PostgreSQL", "excerpt": "Twikey | Gent, Belgium (Hybrid) | Full-time | Senior Back-end Engineer Twikey builds software for automating recurring payments: digital contract and mandate signing, SEPA direct debit processing, invoicing logic, and integrations with European banks and accounting systems. We\u2019re growing and looking for a Senior Back-end Engineer to help improve and extend the core of our platform. You\u2019ll work with the CTO and a smal", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who is hiring? (December 2025)"}, {"id": 736526818, "item_id": 46032926, "url": "https://news.ycombinator.com/item?id=46032926", "by": "mschuster91", "date": "2025-11-24", "version": null, "stance": "warn", "quote": "I personally had the misfortune of having to deal with MySQL [1], Commons [2], Spring [3]", "excerpt": "> The more I think about it, the more I believe that C, C++ or Odin's decision not to have a convenient package manager that fosters a cambrian explosion of dependencies to be a very good idea security-wise. Ambivalent about Go: they have a semblance of packaging system, but nothing so reckless like allowing third-party tarballs uploaded in the cloud to effectively run code on the dev's machine. The alternative that ", "context": "", "use_case": "", "switched_from": "", "story": "Shai-Hulud Returns: Over 300 NPM Packages Infected"}, {"id": 735006640, "item_id": 45937915, "url": "https://news.ycombinator.com/item?id=45937915", "by": "fjwufajsd", "date": "2025-11-15", "version": null, "stance": "warn", "quote": "It looks eerily familiar to Spring DI framework, yikes.", "excerpt": "I'm not familiar with AngularJS so I did a quick google: https://angular.dev/guide/di#where-can-inject-be-used It looks eerily familiar to Spring DI framework, yikes.", "context": "", "use_case": "", "switched_from": "", "story": "Async Mutexes"}]}