| ▲ | sidcool a day ago |
| Hacker news likes to dunk on Spring Boot, but its usage in enterprises is very very high. |
|
| ▲ | dzonga a day ago | parent | next [-] |
| it doesn't mean that usage of something being very high is a clever idea. lots of people take meth - so are you gonna take meth too. ```@EnableConfigurationProperties(CasConfigurationProperties.class)
@EnableScheduling
@ConditionalOnFeatureEnabled(feature = CasFeatureModule.FeatureCatalog.SimpleMFA)
@AutoConfiguration
@Import({
CasSimpleMultifactorAuthenticationComponentSerializationConfiguration.class,
CasSimpleMultifactorAuthenticationConfiguration.class,
CasSimpleMultifactorAuthenticationEventExecutionPlanConfiguration.class,
CasSimpleMultifactorAuthenticationMultifactorProviderBypassConfiguration.class,
CasSimpleMultifactorAuthenticationRestConfiguration.class,
CasSimpleMultifactorAuthenticationTicketCatalogConfiguration.class,
CasSimpleMultifactorAuthenticationWebflowConfiguration.class
})
public class CasSimpleMultifactorAuthenticationAutoConfiguration {
}``` this is what we mean by "JavaCulture" - java | JVM really wonderful things but the culture is what sets these things back someone can't just go in and understand things - they have to understand a bunch of notations too. then if you work at a place and try do things differently the same people will tell you to revise your PR cz it ain't software engineering (or it won't scale) |
| |
| ▲ | mindcrime a day ago | parent | next [-] | | That's a ridiculously extreme example, IME. Having been working with Java for 25+ years, I've never seen anything like that in code written by a shop I worked at, FWIW. And as a corollary I'm about 100% certain that you could find some equivalent extreme case to use as an example to dunk on any language/platform. this is what we mean by "JavaCulture" - java | JVM really wonderful things but the culture is what sets these things back Maybe there are still some Java shops out there living like this. But to me, this is a 20 year old outdated notion. shrug | | |
| ▲ | theflyinghorse a day ago | parent [-] | | You have worked at some outstanding java shops then! In my experience the article is precisely representative of Java culture even today | | |
| ▲ | throwawey1234 a day ago | parent | next [-] | | I also have 20+ years of experience and haven't seen that type of code either. I am however struggling to understand an over engineered Rust "micro" service at work. There's no language or framework that is free from this. Maybe it's because I have not worked in typical enterprise companies? Spring Boot can be a really quick way to get things done. My current job is not in enterprise, but we use Spring Boot for most of our services, and rarely have issues related to Spring itself. We have micro services handling many transactions per minute and starts up within 10 seconds. The CPU usage is low and decent memory usage, even on the small pod sizes that we use. There are ways to reduce the startup, but we do not have the need. The code is easy to reason about and new hires are productive within a short time. | |
| ▲ | mindcrime a day ago | parent | prev [-] | | Let's not go too far! I've seen some crap code, granted. But for the most part, the crap code I've seen is, I believe, stuff written by people who would have written crap no matter what language they were working in. That said, I have in fact also had some outstanding and talented colleagues over the years as well. A point that's probably worth reflecting on, so thanks for the reminder. |
|
| |
| ▲ | theflyinghorse a day ago | parent | prev | next [-] | | This is still relatively tame! I've seen stuff where there are layers of annotations some of which will spawn docker containers effectively bringing docker compose into java application as part of the set up. Some containers would need to come up, do a quick file change, then die and the the rest of configuration proceeded (this was for an automated test tool). Entirely stupid, could have been written with just couple classes of Java and a docker compose. But it is a culture. It is a culture that I think ultimately will destroy Java. | | |
| ▲ | tracker1 a day ago | parent [-] | | FWIW, I think .Net Aspire is pretty interesting along a similar vein. I mostly just rely on shell scripts and docker-compose configuration(s) for dev though. |
| |
| ▲ | sidcool 14 hours ago | parent | prev | next [-] | | This is an extreme example, same can be conjured up for any framework, Node or Django or Rails. | |
| ▲ | a day ago | parent | prev | next [-] | | [deleted] | |
| ▲ | _ZeD_ a day ago | parent | prev [-] | | dude, that is a configuration. it is completely declarative and lives in the best place, near your code, not on some other inaccessible repository. what have you preferred? a json file? a yaml one? I had them, and I find the annotations are more readable than other solutions. | | |
|
|
| ▲ | geodel a day ago | parent | prev | next [-] |
| Huh, Enterprise usage of Blackberry was very very high and then it was not. And at one point SOA, SOAP/WSDL/XML usage was very very high and now I am told in my very enterprise job I'd be fired if I dared bring those names up. Usage being high doesn't say anything about quality or suitability of a product specially in enterprise settings. |
| |
| ▲ | sidcool 14 hours ago | parent [-] | | Honestly, it does. Enterprise software does need high reliability. |
|
|
| ▲ | dukeyukey a day ago | parent | prev | next [-] |
| Even in startups, lots of places are on Spring Boot (albeit more often using Kotlin over Java). |
| |
| ▲ | bberrry a day ago | parent [-] | | My favorite stack, Kotlin with Spring Boot. A real delight to work with |
|
|
| ▲ | the_gipsy a day ago | parent | prev | next [-] |
| Cuisine Magazine likes to dunk on McDonalds, but its the most popular choice of dining. |
|
| ▲ | tonyedgecombe a day ago | parent | prev | next [-] |
| Yes but enterprise software is some of the worst software you will encounter. |
| |
|
| ▲ | nilamo a day ago | parent | prev | next [-] |
| I'm not that deep into Java, but I was under the impression that things like Quarkus were starting to replace Spring in enterprise use... |
| |
| ▲ | nogridbag a day ago | parent | next [-] | | We have a medium sized Quarkus app (~200kLOC) and Quarkus has been fantastic. Startup in JVM mode for our app is around 10 secs. Not blazing fast - but likely much faster than a typical Java enterprise app. I'm sure a few of those secs are spent doing things like pulling authz policies from github or due to having several thousand hibernate entities. | |
| ▲ | sidcool 14 hours ago | parent | prev | next [-] | | Quarkus, Micronaut etc. are doing well. But Spring Boot is the giant of Java ecosystem. | |
| ▲ | theflyinghorse a day ago | parent | prev [-] | | It will take some time for Quarkus to become a significant enough presence in the market share. In my experience, for the majority of Java shops Spring Boot does just fine because it worked before and it will probably work in the future. |
|
|
| ▲ | fiftyacorn a day ago | parent | prev | next [-] |
| it saves a lot of reinventing the wheel |
| |
| ▲ | rockyj a day ago | parent [-] | | 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-t... Now read up on all the dozen of annotations. But yeah, we did not want to "re-invent the wheel". | | |
| ▲ | throwawey1234 an hour ago | parent | next [-] | | Half of those are not really an issue with the annotation and seem a bit contrived. Thankfully the company that wrote the article has a linter/warning product to help avoid those pitfalls. | |
| ▲ | fiftyacorn a day ago | parent | prev [-] | | Im comparing against node equivalent ORMs and find spring consistently better. Yeah ive got to read up on annotations - but when it comes to transactions its always worth revisiting them to check for changes | | |
| ▲ | tracker1 a day ago | parent [-] | | Meh... await using cn = await pool.connect();
const records = await cn.query<MyType>`
SELECT ...
FROM ...
WHERE ...
`;
for await (const record of records) {
...
}
Oh, spring is so much better... | | |
| ▲ | throwawey1234 an hour ago | parent [-] | | Spring version: var records = jdbcClient
.sql("select * from posts")
.query(Post.class)
.toList();
records.forEach(p -> ...);
|
|
|
|
|
|
| ▲ | smrtinsert a day ago | parent | prev [-] |
| And startups not in the SV echo chamber. They happily exist and make money without worrying about supply chain attacks and js engine of the week. |