What is Spring MVC and what are its top alternatives?
Spring MVC is a popular web framework based on the Model-View-Controller pattern, providing features like robust request mapping, flexible data binding, and integrated transaction management. However, it can be complex for beginners and may require a steep learning curve for customization.
Micronaut: Micronaut is a modern, JVM-based full-stack framework that features an ahead-of-time compilation, dependency injection, and minimal memory consumption. Pros include fast startup times and low memory footprint, but it may lack some of the features of Spring MVC.
Quarkus: Quarkus is a Kubernetes Native Java stack that offers a rapid development cycle, low memory usage, and high performance. It supports multiple programming models like imperative, reactive, and imperative with blocking. However, its ecosystem is still evolving compared to Spring MVC.
Play Framework: Play Framework is a reactive web framework for Java and Scala that emphasizes type safety, hot reloading, and stateless architecture. It has built-in support for WebSockets and Akka actors but may have a steeper learning curve for beginners.
Vert.x: Vert.x is a reactive toolkit for building reactive applications on the JVM with features like asynchronous programming, event bus, and reactive streams. It is well-suited for building high-performance, low-latency applications but may require a different mindset compared to Spring MVC.
Spark Framework: Spark is a micro web framework for Java that is lightweight, easy to use, and well-suited for building RESTful APIs. It has a simple and expressive syntax but may lack some of the advanced features of Spring MVC.
Dropwizard: Dropwizard is a high-performance Java framework for building RESTful API and web applications with features like metrics, logging, and configuration. It is well-suited for microservices architecture but may have a different philosophy compared to Spring MVC.
Ratpack: Ratpack is a toolkit for building modern web applications on the JVM with a focus on asynchronous and non-blocking programming. It offers high-performance routing, integration with RxJava, and reactive programming but may not have as large a community as Spring MVC.
Jooby: Jooby is a modular, microservices-focused web framework for Java and Kotlin that features declarative routing, dependency injection, and hot reload. It is well-suited for building microservices but may have a smaller ecosystem compared to Spring MVC.
Helidon: Helidon is a collection of Java libraries for building microservices with features like microprofile, reactive programming, and support for GraalVM. It offers a lightweight and flexible approach to building microservices but may require more configuration compared to Spring MVC.
Javalin: Javalin is a lightweight web framework for Java and Kotlin that provides a simple and modern API for building RESTful APIs and web applications. It is easy to get started with and has a low learning curve, but may not have as many features as Spring MVC.
Top Alternatives to Spring MVC
- Spring Boot
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration. ...
- Rails
Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern. ...
- Spring Framework
It provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. ...
- JSF
It is used for building component-based user interfaces for web applications and was formalized as a standard through the Java Community ...
- Vaadin
It is the fastest way to build web applications in Java. It automates the communication between your server and the browser and gives you a high-level component API for all Vaadin components ...
- React
Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project. ...
- Jersey
It is open source, production quality, framework for developing RESTful Web Services in Java that provides support for JAX-RS APIs and serves as a JAX-RS (JSR 311 & JSR 339) Reference Implementation. It provides it’s own API that extend the JAX-RS toolkit with additional features and utilities to further simplify RESTful service and client development. ...
- Spring
A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments. ...
Spring MVC alternatives & related posts
Spring Boot
- Powerful and handy149
- Easy setup134
- Java128
- Spring90
- Fast85
- Extensible46
- Lots of "off the shelf" functionalities37
- Cloud Solid32
- Caches well26
- Productive24
- Many receipes around for obscure features24
- Modular23
- Integrations with most other Java frameworks23
- Spring ecosystem is great22
- Auto-configuration21
- Fast Performance With Microservices21
- Community18
- Easy setup, Community Support, Solid for ERP apps17
- One-stop shop15
- Easy to parallelize14
- Cross-platform14
- Easy setup, good for build erp systems, well documented13
- Powerful 3rd party libraries and frameworks13
- Easy setup, Git Integration12
- It's so easier to start a project on spring5
- Kotlin4
- Microservice and Reactive Programming1
- The ability to integrate with the open source ecosystem1
- Heavy weight23
- Annotation ceremony18
- Java13
- Many config files needed11
- Reactive5
- Excellent tools for cloud hosting, since 5.x4
- Java 😒😒1
related Spring Boot posts
We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.
To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas
To build #Webapps we decided to use Angular 2 with RxJS
#Devops - GitHub , Travis CI , Terraform , Docker , Serverless
Is learning Spring and Spring Boot for web apps back-end development is still relevant in 2021? Feel free to share your views with comparison to Django/Node.js/ ExpressJS or other frameworks.
Please share some good beginner resources to start learning about spring/spring boot framework to build the web apps.
- Rapid development858
- Great gems652
- Great community606
- Convention over configuration484
- Mvc417
- Great for web348
- Beautiful code343
- Open source311
- Great libraries270
- Active record261
- Elegant108
- Easy to learn90
- Easy Database Migrations88
- Makes you happy82
- Free75
- Great routing62
- Has everything you need to get the job done54
- Great Data Modeling41
- MVC - Easy to start on38
- Beautiful38
- Easy setup35
- Great caching26
- Ultra rapid development time25
- It's super easy22
- Great Resources17
- Easy to build mockups that work16
- Less Boilerplate14
- Developer Friendly7
- API Development7
- Great documentation6
- Easy REST API creation5
- Quick5
- Intuitive4
- Great language4
- Haml and sass4
- Easy to learn, use, improvise and update4
- Metaprogramming2
- It works2
- Jet packs come standard2
- Easy and fast2
- Legacy2
- It's intuitive1
- Convention over configuration1
- Easy Testing1
- Cancan1
- Too much "magic" (hidden behavior)24
- Poor raw performance14
- Asset system is too primitive and outdated12
- Heavy use of mixins6
- Bloat in models6
- Very Very slow4
related Rails posts
Oof. I have truly hated JavaScript for a long time. Like, for over twenty years now. Like, since the Clinton administration. It's always been a nightmare to deal with all of the aspects of that silly language.
But wowza, things have changed. Tooling is just way, way better. I'm primarily web-oriented, and using React and Apollo together the past few years really opened my eyes to building rich apps. And I deeply apologize for using the phrase rich apps; I don't think I've ever said such Enterprisey words before.
But yeah, things are different now. I still love Rails, and still use it for a lot of apps I build. But it's that silly rich apps phrase that's the problem. Users have way more comprehensive expectations than they did even five years ago, and the JS community does a good job at building tools and tech that tackle the problems of making heavy, complicated UI and frontend work.
Obviously there's a lot of things happening here, so just saying "JavaScript isn't terrible" might encompass a huge amount of libraries and frameworks. But if you're like me, yeah, give things another shot- I'm somehow not hating on JavaScript anymore and... gulp... I kinda love it.
StackShare Feed is built entirely with React, Glamorous, and Apollo. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house Node.js rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our Rails web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a Heroku environment, we needed to split out our front-end application into a separate repo in GitHub. The driving factor in this decision was mostly due to limitations imposed by Heroku specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes.
Related to this, we need a way to "deploy" our frontend changes to various server environments without building & releasing the entire Ruby application. We built a hybrid Amazon S3 Amazon CloudFront solution to host our Webpack bundles. A new CircleCI script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in Redis so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build & release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!
#StackDecisionsLaunch #SSR #Microservices #FrontEndRepoSplit
Spring Framework
related Spring Framework posts
I would like to generate all the repetitive code in order to bootstrap my Java project. I need to define my own models. I want to be able to customize everything in what will be generated. JHipster is more popular but seems to be really related to the Spring Framework. Telosys supports multi-languages, multi-frameworks, and is highly customizable. Any feedback about these 2 tools?
What are the topics that are to be known in Java to get comfortable with SAP Hybris? Is Spring Framework compulsory for Hybris? I want a detailed tech stack of SAP Hybris. What are the free resources through which I can learn Hybris?
- Rich and comprehensive Request Life-cycle2
- Very Mature UI framework1
- Server Side component1
related JSF posts
Hello guys, my first time here, and for requesting advice.
I am a JavaScript Developer MERN Stack with a focus on Frontend Development. I wanna go more to Backend Development.
Which Language has a Solid Ecosystem and not so many changes like JavaScript Frontend, quite Frankly that's freaking me out nowadays!
In my Location Germany Industries, Finance, Utilities, Insurances, Retails, and Healthcare dominate Java in the Backend. In my case Java is the logical choice BUT, XML, old codebase, JSP/JSF , boring and verbose syntax without Syntactic Sugar, test Battle, and so on make me crazy.
I have Java, Python, Golang, and Node.js/TypeScript as a choice, but because of a lack of Backend knowledge, I can't make a decision. Which Language and Ecosystem should I learn and master for a long time, my Goal is to work with a selected stack for 10+ years and I don't do Data Science only Software Engineering.
Thanks for reading and Advice! Important! !!! I see via Email somebody send me an Advice, but unfortunately i can't see/read your Advice here :( Users like: Jose Manuel Ortega or nullStack65....
Hello guys! I would ask for your advice. Our situation is like that there will be a project to revamp workflows and introduce new services like mobile apps, machine learning, and some online services that would use cloud storage. We use JSF, JavaScript, Ajax, Spring, Oracle 12c running on Linux (VM) and providing online services to internal users and the public. But, we are not technically savvy enough to evaluate what tools should be introduced. Personally, I am evaluating whether to take this opportunity to change our practice/PM approach from Prince to Scrum/Agile (It seemed that DevOps is popular) ... Since we adopt ISO 27001 and ISO 20000, security is a crucial factor that we consider. Would you please help to recommend a list of tools and explain the reasons why you recommend them? Thanks in advance~!
- Java9
- Compatibility7
- Open Source6
- Components6
- Performance3
- Abstraction2
- Example packages2
- OSGI Support1
- Paid for more features3
related Vaadin posts
- Components834
- Virtual dom673
- Performance578
- Simplicity508
- Composable442
- Data flow186
- Declarative166
- Isn't an mvc framework128
- Reactive updates120
- Explicit app state115
- JSX50
- Learn once, write everywhere29
- Easy to Use22
- Uni-directional data flow21
- Works great with Flux Architecture17
- Great perfomance11
- Javascript10
- Built by Facebook9
- TypeScript support8
- Speed6
- Server Side Rendering6
- Scalable6
- Props5
- Excellent Documentation5
- Functional5
- Easy as Lego5
- Closer to standard JavaScript and HTML than others5
- Cross-platform5
- Feels like the 90s5
- Easy to start5
- Hooks5
- Awesome5
- Scales super well4
- Allows creating single page applications4
- Server side views4
- Sdfsdfsdf4
- Start simple4
- Strong Community4
- Fancy third party tools4
- Super easy4
- Has arrow functions3
- Very gentle learning curve3
- Beautiful and Neat Component Management3
- Just the View of MVC3
- Simple, easy to reason about and makes you productive3
- Fast evolving3
- SSR3
- Great migration pathway for older systems3
- Rich ecosystem3
- Simple3
- Has functional components3
- Every decision architecture wise makes sense3
- HTML-like2
- Image upload2
- Sharable2
- Recharts2
- Split your UI into components with one true state2
- Permissively-licensed2
- Fragments2
- Datatables1
- React hooks1
- Requires discipline to keep architecture organized41
- No predefined way to structure your app30
- Need to be familiar with lots of third party packages29
- JSX13
- Not enterprise friendly10
- One-way binding only6
- State consistency with backend neglected3
- Bad Documentation3
- Error boundary is needed2
- Paradigms change too fast2
related React posts
I was building a personal project that I needed to store items in a real time database. I am more comfortable with my Frontend skills than my backend so I didn't want to spend time building out anything in Ruby or Go.
I stumbled on Firebase by #Google, and it was really all I needed. It had realtime data, an area for storing file uploads and best of all for the amount of data I needed it was free!
I built out my application using tools I was familiar with, React for the framework, Redux.js to manage my state across components, and styled-components for the styling.
Now as this was a project I was just working on in my free time for fun I didn't really want to pay for hosting. I did some research and I found Netlify. I had actually seen them at #ReactRally the year before and deployed a Gatsby site to Netlify already.
Netlify was very easy to setup and link to my GitHub account you select a repo and pretty much with very little configuration you have a live site that will deploy every time you push to master.
With the selection of these tools I was able to build out my application, connect it to a realtime database, and deploy to a live environment all with $0 spent.
If you're looking to build out a small app I suggest giving these tools a go as you can get your idea out into the real world for absolutely no cost.
Your tech stack is solid for building a real-time messaging project.
React and React Native are excellent choices for the frontend, especially if you want to have both web and mobile versions of your application share code.
ExpressJS is an unopinionated framework that affords you the flexibility to use it's features at your term, which is a good start. However, I would recommend you explore Sails.js as well. Sails.js is built on top of Express.js and it provides additional features out of the box, especially the Websocket integration that your project requires.
Don't forget to set up Graphql codegen, this would improve your dev experience (Add Typescript, if you can too).
I don't know much about databases but you might want to consider using NO-SQL. I used Firebase real-time db and aws dynamo db on a few of my personal projects and I love they're easy to work with and offer more flexibility for a chat application.
- Lightweight4
- Fast Performance With Microservices1
- Java standard1
related Jersey posts
Spring
- Java230
- Open source157
- Great community136
- Very powerful123
- Enterprise114
- Lot of great subprojects64
- Easy setup60
- Convention , configuration, done44
- Standard40
- Love the logic31
- Good documentation13
- Dependency injection11
- Stability11
- MVC9
- Easy6
- Makes the hard stuff fun & the easy stuff automatic3
- Strong typing3
- Code maintenance2
- Best practices2
- Maven2
- Great Desgin2
- Easy Integration with Spring Security2
- Integrations with most other Java frameworks2
- Java has more support and more libraries1
- Supports vast databases1
- Large ecosystem with seamless integration1
- OracleDb integration1
- Live project1
- Draws you into its own ecosystem and bloat15
- Verbose configuration3
- Poor documentation3
- Java3
- Java is more verbose language in compare to python2
related Spring posts
Is learning Spring and Spring Boot for web apps back-end development is still relevant in 2021? Feel free to share your views with comparison to Django/Node.js/ ExpressJS or other frameworks.
Please share some good beginner resources to start learning about spring/spring boot framework to build the web apps.
I am consulting for a company that wants to move its current CubeCart e-commerce site to another PHP based platform like PrestaShop or Magento. I was interested in alternatives that utilize Node.js as the primary platform. I currently don't know PHP, but I have done full stack dev with Java, Spring, Thymeleaf, etc.. I am just unsure that learning a set of technologies not commonly used makes sense. For example, in PrestaShop, I would need to work with JavaScript better and learn PHP, Twig, and Bootstrap. It seems more cumbersome than a Node JS system, where the language syntax stays the same for the full stack. I am looking for thoughts and advice on the relevance of PHP skillset into the future AND whether the Node based e-commerce open source options can compete with Magento or Prestashop.