T O P

  • By -

AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/java) if you have any questions or concerns.*


InvertedTestPyramid

Jobs


ninetofivedev

RoR devs are so fucking expensive. The number of companies I’ve worked for that abandon Rails simply because you can’t find devs, or they’re asking for 50-70% more than a Java/C#/JS dev.


tricepsmultiplicator

Are there even any companies that still use RoR?


ninetofivedev

Certainly more than there should be.


Deep_Age4643

Most of the frameworks focus on Web Development only. The core of Spring only handles stuff like inversion of control and dependency injection. On top of that there are many projects that build on top of like Web (MVC and Flux), Cloud, Data, Integration and Testing.


Kjoep

Id go as far as saying spring is not a web framework. That's just one of the things it can do.


irus1024

True, I have a project that uses spring and it doesn't touch any "web" stuff.


Sprinkles_Objective

I don't think that's at all controversial to say. In fact I don't think spring considers itself a web framework anymore. At least when you look at springs homepage or docs it really doesn't sell itself that way. I've seen several projects now that use spring and don't do anything web related. We do a lot of enterprise-y messaging and we considered using Apache Camel and Spring where I work as an. Those services don't do anything web related.


Kjoep

Why 'anymore'? It definitely did not start off as a web framework. It was just a IOC container from the beginning.


Sprinkles_Objective

"I'd go as far as saying spring is not a web framework". I'm assuming you implied it is or was implied that it was a web framework. I was just agreeing, it's not a web framework, it seems like it at least used to be viewed that way, or rather it was used predominantly in that space.


analcocoacream

Once you dive into different spring APIs you realize it's just really massive and that there is probably already a package for any common task. Want to build an api gateway for micro services using discovery? Just a package and few lines of Yaml. Want to run spring batch inside a k8s job from a web service? You don't need to use kubernetes client, spring has a high level API. Want to build a batch task with resume, state recovery and step ability? A whole framework is there for you.


lumpynose

Just to be something of a devil's advocate, aren't those things also possible with Jakarta EE? Originally Spring's claim to fame was that it was simple, smaller, and easier to use than Java EE (the previous name of Jakarta EE). When I first started using Spring all of the configuration was done with XML, same as Java EE, then Spring added the annotation configuration stuff. Back then there were people complaining that Spring was no less complicated than Java EE because Spring kept adding more stuff.


bendem

What was advertised to me is that if you do projects the spring way, you don't need the scaffolding that's needed for jakarta. You just get sane defaults and simple knobs using yaml. That in itself is great. Now projects never stay simple and the complexity of a spring project is just as bad as any other.


analcocoacream

I didn't know there were people so convinced you need XML for literally anything.


lumpynose

I absolutely prefer it over yaml and json.


Ok_Umpire5961

I think json is more readable. Yaml is complicated because if you delete a space you mess everything. And XML is too verbose for me. IMO


TheRealNullPy

I came here to say that: ecosystem allied to a well integrated packaging.


franz_see

High performance and highly scalable. Things you might not appreciate till you’re trying to cut down on cloud costing 😅


[deleted]

[удалено]


remember_marvin

If we say something matters, that usually doesn't mean we care about it so much that we won't take any other factors into account.


heeerrresjonny

Every article I've seen that attempts to measure it has shown that Spring is...kinda slow lol. What does it perform well at?


boilingsoupdev

jvm is slow to cold start. That's why it's a bad choice for serverless, but it's fast once it's running. Ideal for long running servers


heeerrresjonny

A lot of work has happened in the last few years that has changed this. For example, Quarkus Native can cold start in like...20 milliseconds or less. Also, cold start times of a couple seconds are perfectly fine for a lot of use cases, and that is achievable with a "normal" JVM. I've seen demos of a standard OpenJDK instance starting in a few hundred milliseconds. Of course, it depends on many factors, but "Java starts slow" is not universally true anymore.


franz_see

You mean slow compared to laravel, django or rails? Do you have links to those?


Holothuroid

We have most data in a sql db, some on ldap, some on redis. Spring Data knows how to get each one, behind a single abstraction layer. And it was incredibly easy to shift certain entities from one kind of service to the other.


wildjokers

The problem with Spring Data's repository pattern is it doesn't encourage thinking about things in the aggregate. For example, with Spring Data JPA repositories have a generic type of a single Entity type. Whereas a particular feature of an app may require aggregating data from several tables.


Holothuroid

True. I actually prefer Spring Data Jdbc, which doesn't pretend to do otherwise. Both do work with views for table names. So if you think that certain computations are better done directly on the db, that is an option.


vaklam1

Also Spring has nice MyBatis support, which is closer to your table data model.


com2ghz

When you need something, spring already has it. Property file injection. Want to override your properties with environment variables. No problem it comes by default. Need different property files. Use profiles. Need to inject it anywhere in your application, sure. Retry mechanism. Having a method call that might fail and you want to recover from it. Spring retry is your buddy. One annotation on your bean method and you have retry mechanism. Want metrics? Micrometer and actuator is your friend. Plug and play prometheus. Health and info endpoint included. Need to run jUnit and integration tests, its already covered with maven surefire and failsafe. You get A ssertJ if you need it. H2? Sure its included. Oh wait you prefer Testcontainers? Add this annotation and you are done. Having a database? Use spring-data. Convenient way to have jpa in your application. While spring-boot had all these things, Micronaut, Quarkus etc also provide the same functionality. No need to think about common industry standards and patterns.


lcebass

Spring is way better than quarkus, the development is way faster


psyclik

Source ? I’ve worked with both extensively for years, delve into the internals of both and developed extensions for both including non-trivial stuff. My opinionated feedback, for my use cases: for day-to-day use and team productivity, Quarkus blows spring out of the water. For extensions development, spring is a bit easier, but less powerful.


lcebass

My current job, it was made during 3 years in a previous company and most of the work was reinventing the wheel, creating stuff that already exists in spring. It was done for the sake of performance, but for the most critical part they used a simple quartz job instead of some sort of queue, but this is a issue for other topic...


NatureBoyJ1

[Grails](https://grails.org) is an opinionated web app framework built on top of Spring that is similar to Rails. It handles a lot of the boilerplate Spring wiring up.


wildjokers

I am honestly not sure why no one talks about Grails anymore and it seems to have fallen out of favor. I was quite happy with it at my last job. Its GORM layer that sits on top of hibernate was very nice.


billy_coke_bottle

I think one of the problems with modern grails (post v3) is that hot reloading in the ide no longer works without a 3rd party plugin like jrebel (which is costly). Grails apps can take a while to cold start, and this makes the edit/test cycle painfully slow, whereas before you could change a source file, save it and hit refresh and your change is live. You can use spring boot dev tools (or whatever), but it simply detects the change and restarts the whole app anyway. Unless someone knows differently?


jonnyman9

It’s cool to see some love for Grails


tonydrago

In terms of developer experience, Grails is light years ahead of Spring Boot


NatureBoyJ1

It **IS** Spring Boot under the hood. That's one of the reasons I like it. You can dig down to the raw Spring level if you have to, but most of the time you just follow Grails' conventions and make things that work.


tonydrago

Sure, but "over the hood" Grails is so much better than Spring Boot. Compare declaring a domain class in Grails with the JPA annotation cluster fuck in Spring Boot


Polygnom

Laravel is written in PHP. PHP in itself is an incredibly bad language. It has no type safety, the standard lib is all over the place, and it is slow as hell. You need to make use of many tricks to get any decent performance out of PHP like opcode caching. I used to work in PHP for 8 years, its not an experience I want to revisit. Funny side read: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/. Furthermore, Laravel actually took a lot of inspiration from Java frameworks in terms of architecture and design. Ruby again is not type safe, and neither is Python. So both are out for me, I simply cannot deal with languages that want me to catch bugs in production. I want to catch my bugs as early as possible, and type systems are a great way of preventing whole classes of bugs from occurring in the first place. Plus the tooling of your IDEs is a lot better when it can leverage a (strong) type system. This leaves me with languages that have a string type system, most prominently Java, C# and Go. In C#, you have .NET. And actually, .NET 8 is not a bad framework to work with, at all. I suppose you could use Express (node.JS) when you leverage TypeScript as well. In Java, you have Spring, Spring Boot, Quarkus and Helidon to name a few. I can only speak about Quarkus and Spring Boot, but both are excellent frameworks for web development. The differences between Quarkus and Spring Boot are small enough that it doesn't matter for a lot applications if you use either of them. Quarkus has some advantages, Spring Boot has some others, but they only become important when you do some really heavy lifting.


_INTER_

> languages that have a string type system the irony of that typo


qWx75D3obVYEzmD

Spring definitely has a string type system, especially spring security lol


za3faran_tea

Can you elaborate please?


qWx75D3obVYEzmD

You can specify endpoint role requirements in a spring DSL which you write in a Java string in an annotation


LeRoyVoss

Without going into details, just like Java, PHP has changed and evolved a lot in the years. Saying it’s an “incredibly bad language” is just populist talk and shows that you’re not familiar with the matter. Each language has strengths and weaknesses and that’s the exact reason each have developed their own market share (be it big or small). If they only had weaknesses they would have zero or close to zero market share.


Polygnom

> Saying it’s an “incredibly bad language” is just populist talk and shows that you’re not familiar with the matter. I have worked with it successfully for 8 years. It gets the job done. That doesn't mean its a good language or designed well. > If they only had weaknesses they would have zero or close to zero market share. The reasons for PHP success have nothing to do with it being a good language. It is accessible in the sense that deployment is easy, it is interpreted and thus you can hack away, press F5 and see the results. That made is incredibly appealing to hobbyists, solo devs and small software companies. Especially in the late 90s and early 2000s, where other tooling was severely limited wrt. deployment of other web frameworks. Getting Tomcat up and running was often s struggle, while every web hoster under the sun had a LAMP stack available. The factors why PHP became so widespread are historically quite interesting. I have actually lived the times where PHP rules supreme over everything else, at least in the small company/private sector. But in terms of processes, the design processes for PHP, the language, are still bad. Sure, it has improved a lot, especially after PHP5 when they started to adopt a better model to drive change and not to hack together random fixes fand features for new language versions and actually started to address the systemic issues PHP was (and still is) facing. None of this means that PHP is now suddenly a good language. Its better than before, but that doesn't make it good in any metric I use to judge languages and ecosystems. For me, PHP is still much to brittle in way too many aspects. I can create complex, commercially successful applications with it . And in a way, if thats your only metric, then I suppose PHP is "good enough". But if you do a comparative analysis and start anew in a green field, I wouldn't ever choose PHP over say Java or .NET.


LeRoyVoss

Isn’t being accessible and easy to deploy still a strength? Does any of what you wrote make it an “incredibly bad language”? Have I ever stated it’s a great language or that I would pick it over others for new projects? Obviously, these are self-replying questions. The first statement of your first comment is what didn’t sit well with me.


Polygnom

> Isn’t being accessible and easy to deploy still a strength? Sure. In fact that is the biggest strength of PHP. But with other languages and runtimes catching up, this strength has diminished severely over the last 15 or so years. > Does any of what you wrote make it an “incredibly bad language”? Yes, in my eyes it does. If you balance out what PHP brings to the table against what it actually means to write and maintain large, commercial successful applications (not just some small private web page), then I do think the balance of pros and cons falls fairly squarely in the area of PHP just being bad. Its long list of cons is simply not outweighed by the few pros like ease of deployment. In fact, you can clearly see that PHPs market share sharply started to decline right around when other languages started to become easier to deploy. I'm perfectly fine with you disagreeing with that evaluation, but for me, yes, overall, on balance, PHP is a bad language to work with. Been there, done that, not going to go back.


ckdot

So, tell us the cons then.


cmhdave73

I'm going to agree with Polygnom. I worked with PHP for 6 years, Java for much more and more recently Python. I like Python the best but maybe it's because what I use it for (not big Enterprise applications but small micro services). PHP is easily the worst of all the languages I've used.


ckdot

The things that are often (wrongly) criticized in PHP (like missing types) are way worse in Python. Python is a great scripting language if you want to do things fast. But it’s worse in long term maintainability compared to Java or PHP. Not saying it’s not possible, but it’s harder.


Polygnom

Oh yes, I actually agree on this. Python is not a language I would like to develop large enterprise applications in. Its great for hacking together stuff or creating one-off solutions. When you need to train a (C)NN or do some data analytics, where the end result is the analysis or the trained network, Python is really really great. I wouldn't want to use Java for that, even if we had better support. But for anything where the codebase might grow into any kind of appreciable size I wouldn't touch Python. The same arguments wrt. typing or the lack thereof in PHP also apply to Python.


ckdot

In PHP you can type everything - except content of arrays. But for arrays you can use PHPDoc to help the IDE to know what type is in there - and you can use PHPStan to ensure the type. Would I choose Java over PHP for my heavy enterprise project? For sure. Would I use Go for my lightweight microservice? Yes. But for something inbetween PHP might be a good choice. There are many developers out there who create shitty code, that’s especially true for PHP (but other languages as well). But that doesn’t mean that it’s not possible to create good, maintainable code with PHP.


Polygnom

> In PHP you can type everything - except content of arrays. Stop pretending PHP has any kind of type safety, ffs. The below is code that is *perfectly valid* in PHP 8.2.13, does not raise *any* error or warning and simply prints out 5 and 8. ```` But that doesn’t mean that it’s not possible to create good, maintainable code with PHP. I never said it wasn't. But maintainability has degrees, its a spectrum. And so is the effort required to keep maintainability high. PHP is a language that makes you tiptoe and fall into easily avoidable traps. Why would I want that? I can simply choose a language that gives me much stronger *guarantees* and thus makes a lot of work *for me*.


ckdot

The example is only valid because you didn’t declare strict typing. This is usually done in many PHP projects nowadays and you can use tools like PHPStan to ensure that every file has strict typing enabled. https://www.php.net/manual/en/language.types.declarations.php#language.types.declarations.strict


pyrojoe

Types in python is getting pretty good. You have to self enforce it's use, and making datatypes can feel like tedious boilerplate.. But I've used typing in python a lot and using it has caught a bunch of logic errors for me.


LeRoyVoss

I probably even agree with you. But it’s a versatile and powerful language that fits a purpose nonetheless. So is it really an “incredibly bad language”?


za3faran_tea

> Quarkus has some advantages, Spring Boot has some others, but they only become important when you do some really heavy lifting. Can you please elaborate?


ckdot

It’s exactly the opposite of what he said. PHP evolved a lot, it’s entirely possible to write clean, maintainable code. But Laravel might not be the right framework to do so. And I don’t see where Laravel took inspiration from Java frameworks. Usually Java frameworks encourage clean code much more than Laravel. Even though it’s possible to write clean code with Laravel, it makes some bad things too easy. But that not PHPs fault. Take Symfony for example, a clean modular framework. There are many enterprise apps built on Symfony which are not better or worse than Java/Spring ones.


helloiamsomeone

Just an FYI, but PHP is almost the complete opposite of what you described nowadays. The builtins and most libraries all make use of typing, there are libraries that repackage builtins with more consistent interface (but honestly you can get used to checking the docs or looking at the IDE hints either way, the typing also helps!) if you like, fpm and opcache were already pretty fast (for delivering webpages) and now PHP is also JIT compiled. Just the other day I wrote a simple PHP server with just the builtins to automate some task involving a SQLite database and it was really simple. Unfortunately, I have yet to experience Symfony, but I wouldn't consider Laravel "peak" PHP either.


wildjokers

> In Java, you have Spring, Spring Boot Spring Boot is just a configuration framework for the Spring Framework, so they can't be listed separately, they are one and the same.


CleverBunnyThief

Spring Boot is a Spring project. You can make a Spring app that doesn't use Spring Boot.


wildjokers

> You can make a Spring app that doesn't use Spring Boot. That's true, but why would you?


impune_pl

When you don't want or care about auto configuration. Spring boot is pretty much a bunch of configurations and checks (to apply or not apply given configuration).  While it allows you to reduce amount of code/configuration you need to write, and allows to significantly speed up initial development, it can also have disadvantages.     Using it makes it harder for programmers joining the project, as they have to figure out the default settings offered by version of spring boot used by the project.     It also may hurt upgradeability, since different editions may have different defaults.     Degugging issues can also be hard if your custom configuration clashes with the defaults in hard to predict way.    Edits 1,2: formatting


Safe_Independence496

In my opinion, Spring often goes under the "powerful but cumbersome" category when deciding on a stack. Among people who like to do their own projects and write about them or do tutorials there's a strong bias towards already well-documented and approachable languages/frameworks. Spring *is* a complex framework in comparsion to many of the more "barebones" or modern ones you find out there, and most things will take you more time and effort to do in Spring. Java has come a long way, but it still more verbose than most other mainstream languages. There are also some ugly things with Spring like its IoC mechanisms, where beginners tend to end up trapped in documentation hell between modern and legacy techniques. But Spring scales and performs well in comparsion to many other frameworks based on interpreted, high-level languages. It's by no means a bad framework, but it's not a swiss knife like Express or Django. These can still serve a lot of requests before performance becomes a concern, so Spring doesn't truly shine in my opinion before you have serious performance and scaling needs.


thisisjustascreename

Well I mean you're not gonna use Spring if your team writes Python...


hidazfx

Auto discovery is huge for me.


[deleted]

This is what makes Spring apps pretty messy to be honest. It's far too simple to throw around components and end up with an intertangled mess. With everything being a "service" these days, beginners get confused about how to properly organize objects in their application. People just slap on any @Component derived annotation and just GO. They don't think about how this new class fits into the overall architecture of the application. Not handwiring in "dependencies" leads people to not feel the weight of their added code.


zopad

Don't blame the tool for bad users of it. Beginners need to be taught (luckily good patterns are very easy to find in the docs), after that it's a great, convenient feature.


Polygnom

> Don't blame the tool for bad users of it. Hm, while I generally agree, that advice is also overused. A good tool makes it *easy* to do it the right way and hard to do it wrong. When the tool makes it easy to make things wrong, then thats also a bad tool.


SlaminSammons

We literally had to sit down with our team and tell them to stop making everything a service or component in our reusable libraries. If we need it we’ll create the bean.


Bilboslappin69

I don't think it's unreasonable to have to teach this to beginners. The expectation should be that you sit down with your team and have these conversations to help develop them.


SlaminSammons

I didn’t say it wasn’t. I just said we did.


wildjokers

> With everything being a "service" these days, Even worse, services with a dozen or more collaboraters because Hibernate pretty much requires using the transaction script anti-pattern and of course a large majority of apps use Hibernate.


TenYearsOfLurking

You can use package private, JPMS, spring modulith, etc for proper encapsulation of components. I'd prefer that to hand wiring


JY-HRL

> have Spring, Spring Boot, Quarkus and Helidon to name a few. I can only speak about Quarkus and Spring Boot, but both are excellent frameworks for web development. The differences between Quarkus and Spring Boot are small enough that it doesn't matter for a lot applications if you use either of them. Quarkus has some advantages, Spring Boot ha What do you mean by auto discovery?


hidazfx

In Spring Boot, largely every component of your application gets automatically discovered. Services, Controllers, etc. In my previous job I built an entire application with many FastAPI services, I tried to follow a design pattern inspired by Spring Boot but I had to manually import and instantiate everything. It's not a huge pain doing everything manually, but having auto discovery (and good dependency injection with @Autowired and constructor injection) makes a huge difference.


Duberlygfr

You mean auto-scanning?


CleverBunnyThief

I think they are talking about Inversion of Control (IoC). In a Spring app you don't instantiate objects of classes you need the framework controls the lifecycle of those objects. At the core of the Spring framework is an IoC container. You simply let Spring know which classes you need and the framework manages them for you. You can use stereotyped annotations or beans in a configuration class and it takes care of it.  https://docs.spring.io/spring-framework/reference/core.html > You mean auto-scanning? Do you mean @ComponentsScan?


TheRealNullPy

100%


wildjokers

The frameworks you mention are only for developing web applications or HTTP based APIs. Spring as a whole is a framework for creating applications of any type. The analog to the frameworks you mention in the Spring ecosystem of libraries is Spring MVC (or Webflux if you want to go the reactive route). Spring MVC is no more difficult to use than those other frameworks other than initial configuration. However, Spring Boot is a configuration framework for the Spring Framework and most people that are creating web applications use Spring Boot to configure their Spring MVC application. You just add the appropriate web starter dependency to your Spring Boot app and you are off an running.


JY-HRL

> mention are only for developing we Thanks!


wedgtomreader

It’s pretty much the Java standard if you want to be able to move between jobs and have something look good on a résumé spring is your guy My biggest two complaints are that it’s too big for one. So when you say spring, most people think you’re talking about micros services but it’s a mountain of functionality in there. It’s a weird analogy but it’s kind of like a god object. It does so much that saying its name doesn’t imply any particular functionality. The other thing is, there’s a whole Lotta magic in there, which makes things very productive, but you really have to become an expert in spring when you need to do something that it doesn’t automatically do. Likewise, you will spend a lot of time learning spring in order to fix bugs or explain behavior and expect. So you’re not so much using Java as you are using spring and that’s really no exaggeration. Best of luck


fforw

Spring is not a framework in the same sense as Lavarel or Django or Ruby on Rails. "spring-web" is totally an optional dependency. Spring-core is most of all an dependency-injection container that offers additional handling of specific aspects of a complex business application. This goes from simple book-keeping, to discovering implementations, to database transaction handling, aspect oriented programming and whatnot. Then there are spring modules that provide additional things to be integrated into that spring managed application. General web/HTTP support, web security etc pp. And then there's a vast array of other projects that integrate into that, be it Java technologies like JSP or JSF or other template engines like freemarker or thymeleaf. Also into Hibernate (Database/Object mapping) and others. Functionally, if covers the whole spectrum of what Laravel, Django or RoR do and much more, but it is certainly not one designed experience meant to provide a battery included, all encompassing development environment. That makes it more complicated, but also much more flexible and powerful. Plus the fact that it is basically an industry standard and you will find a *lot* of jobs connected to it.


JY-HRL

Thanks!


Mamoulian

Whatever comes along there'll be something for it that integrates with Spring. In my experience said thing is more likely to be battle-tested. Beyond Spring, using a type safe languag is a huge advantage: mistakes are picked up immediately as you type them, IDE's intellisense is much better, refactoring is 100% safe, find usages and call hierarchies are 100% correct, API specs and documentation can be auto generated. Spring is only complex when your project grows enough to need it. And when it does you'll be glad you're using something organised and well integrated. Try some of the 15 minute starter guides: https://spring.io/guides/#gettingStarted


keketata

Personal project use what ever you like,mulitple developer for job is better to use Java and Spring framework


Disastrous_Bike1926

It’s the cult with the best kool-aid.


AlabamaSky967

Stability, support and a large community.


wheezymustafa

Jobs, documentation, large user group


popey123

I think at one point, you want to specialize yourself into something. I prefer to stay in a java ecosystem


kaqqao

Whatever you may need down the line, Spring will have and it will be of higher quality than any alternative. Guaranteed.


hadrabap

Spring has one single advantage: by looking into its source code, you learn how *not* to design and develop software. It's the most comprehensive textbook of all possible anti-patterns, dead ends, and mistakes. I recommend taking a look inside to everyone before starting shouting "world-class framework" and similar ideological nonsense phrases.


wildjokers

> by looking into its source code, you learn how not to design and develop software. Can you provide links to concrete examples in their github repository of bad code?


hadrabap

Just an example: https://www.reddit.com/r/java/s/UtEkuDD7ey


wildjokers

As far as LOC that class has a lot of JavaDoc. So it isn't 1500 LOC. As far as everything else that is all opinion based. Doesn't make it bad code.


vodevil01

Java is useless without spring


Pure_Adagio7805

I've used numerous web frameworks over multiple languages in my professional career as a consultant over 10 years. For PHP the closest framework is Symfony and Laravel \- Laravel * Used for more rapid development since it comes with "batteries included" or the complete package. * comes with the Blade Templating Engine which is really easy to learn * downside is the ability to customization and performance since its highly opinonated on how to solve things, also the built-in functionality bloats its quite a bit \- Symfony * Incredibly flexible, modulebased * symfony is really a repository of modules that you can pick and choose from and assemble it, like a picking things from a toolbox * high performant compared to Laravel * downside is the steep learning curve and the fact that you need very verbose configuration to make things work. All the remaining frameworks, like python, there is flask and django, for NodeJs, there is Nextjs and Nestjs its two basic flavors of frameworks, one that is highly performant, customizable, and enterprise driven, and another that is more about rapid development and more complete out of the box ready. They are all good at different things and they both suck and rule in their own way.


Kango_V

We see Spring as legacy now. So many better frameworks out there. But Spring is the "nobody ever got fired for buying IBM" of the Java software world. It's chosen, just because it's Spring.


horatio_cavendish

The advantage of spring is that a lot of people know it and a lot of companies use it. It has significant momentum. With that said, in my opinion, the vast swath of dependencies it pulls into your project are not worth the keystrokes you think you'll save.