What is Spring Boot and what are its top alternatives?
Spring Boot is a powerful and popular framework for building stand-alone, production-grade Spring-based applications. It provides a streamlined way to set up and configure Spring applications with minimal fuss, allowing developers to focus on their business logic. Key features of Spring Boot include auto-configuration, production-ready metrics and health checks, a wide range of plugins and extensions, and strong community support. However, some limitations of Spring Boot include potential performance overhead due to auto-configuration and the complexity of customization in more complex applications.
Micronaut: Micronaut is a modern, JVM-based framework for building microservices and serverless applications. Key features include minimal startup time, low memory consumption, and compile-time dependency injection. Pros include high performance, low memory overhead, and support for various cloud providers. Cons compared to Spring Boot include a smaller community and potentially less mature ecosystem.
Quarkus: Quarkus is a Kubernetes-native Java stack tailored for GraalVM and OpenJDK HotSpot, crafted from best-of-breed Java libraries and standards. Key features include fast boot time, low memory consumption, and seamless reactive programming. Pros include enhanced performance for cloud-native applications and seamless integration with Kubernetes. Cons compared to Spring Boot include a steeper learning curve and potentially less comprehensive documentation.
Vert.x: Vert.x is a reactive, polyglot application platform for the JVM that is designed for asynchronous, event-driven applications. Key features include high throughput, low latency, and support for clustered deployment. Pros include strong support for reactive programming and high scalability. Cons compared to Spring Boot include a different programming model that may require a paradigm shift for some developers.
Dropwizard: Dropwizard is a Java framework for developing ops-friendly, high-performance RESTful web services. Key features include out-of-the-box support for metrics, health checks, and logging. Pros include a lightweight and modular design that promotes simplicity and ease of use. Cons compared to Spring Boot include potentially less flexibility for complex applications and a smaller set of built-in features.
Play Framework: Play Framework is a high-velocity web framework for Java and Scala that combines productivity and performance. Key features include hot reloading, stateless and stateful web and API requests handling, and asynchronous programming support. Pros include a strong emphasis on developer productivity and support for reactive programming. Cons compared to Spring Boot include a different programming model and potentially less out-of-the-box functionality.
Jooby: Jooby is a modern, micro-framework for Java and Kotlin that is designed for simplicity and modern development practices. Key features include dependency injection, reactive programming support, and lightweight design. Pros include simplicity and ease of use, along with strong support for modern development practices. Cons compared to Spring Boot include a smaller community and potentially less ecosystem support.
Apache Struts: Apache Struts is an open-source framework for creating enterprise-ready Java web applications. Key features include support for various view technologies, data validation, and modular architecture. Pros include a long history of usage in enterprise applications and a large community. Cons compared to Spring Boot include potential complexity and a steeper learning curve for beginners.
Ninja Framework: Ninja Framework is a full-stack web framework for Java that emphasizes simplicity, flexibility, and ease of use. Key features include a command-line code generator, built-in support for REST APIs, and a lightweight design. Pros include ease of use for developers and strong support for building RESTful applications. Cons compared to Spring Boot include potentially less community support and a smaller ecosystem.
Ratpack: Ratpack is a set of Java libraries for building modern, fast, and efficient web applications. Key features include non-blocking I/O, high performance, and support for reactive programming. Pros include high performance and scalability for modern applications. Cons compared to Spring Boot include potentially less out-of-the-box functionality and a smaller user base.
Blade: Blade is a lightweight and elegant Java web framework that is designed for ease of use and high performance. Key features include RESTful routing, URL parameter binding, and support for template rendering. Pros include a simple and intuitive API design and strong performance characteristics. Cons compared to Spring Boot include potentially less community support and fewer built-in features.
Top Alternatives to Spring Boot
- 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. ...
- Django
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. ...
- JBoss
An application platform for hosting your apps that provides an innovative modular, cloud-ready architecture, powerful management and automation, and world class developer productivity. ...
- Spring MVC
A Java framework that follows the Model-View-Controller design pattern and provides an elegant solution to use MVC in spring framework by the help of DispatcherServlet. ...
- Play
Play Framework makes it easy to build web applications with Java & Scala. Play is based on a lightweight, stateless, web-friendly architecture. Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications. ...
- Dropwizard
Dropwizard is a sneaky way of making fast Java web applications. Dropwizard pulls together stable, mature libraries from the Java ecosystem into a simple, light-weight package that lets you focus on getting things done. ...
- Spring Cloud
It provides tools for developers to quickly build some of the common patterns in distributed systems. ...
- JHipster
It is a free and open-source application generator used to quickly develop modern web applications and Microservices using Spring Boot + Angular / React / Vue. ...
Spring Boot alternatives & related 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.
- Rapid development673
- Open source488
- Great community425
- Easy to learn379
- Mvc277
- Beautiful code232
- Elegant223
- Free207
- Great packages203
- Great libraries194
- Comes with auth and crud admin panel80
- Restful79
- Powerful78
- Great documentation76
- Great for web72
- Python57
- Great orm43
- Great for api41
- All included32
- Fast29
- Web Apps25
- Clean23
- Easy setup23
- Used by top startups21
- Sexy19
- ORM19
- The Django community15
- Allows for very rapid development with great libraries14
- Convention over configuration14
- King of backend world11
- Full stack10
- Great MVC and templating engine10
- Mvt8
- Fast prototyping8
- Its elegant and practical7
- Easy to develop end to end AI Models7
- Batteries included7
- Cross-Platform6
- Very quick to get something up and running6
- Have not found anything that it can't do6
- Zero code burden to change databases5
- Great peformance5
- Python community5
- Easy Structure , useful inbuilt library5
- Easy to use4
- Map4
- Easy to change database manager4
- Full-Text Search4
- Just the right level of abstraction4
- Many libraries4
- Modular4
- Easy4
- Scaffold3
- Node js1
- Built in common security1
- Great default admin panel1
- Scalable1
- Gigante ta1
- Cons1
- Fastapi1
- Rails0
- Underpowered templating26
- Autoreload restarts whole server22
- Underpowered ORM22
- URL dispatcher ignores HTTP method15
- Internal subcomponents coupling10
- Not nodejs8
- Configuration hell8
- Admin7
- Not as clean and nice documentation like Laravel5
- Python4
- Not typed3
- Bloated admin panel included3
- Overwhelming folder structure2
- InEffective Multithreading2
- Not type safe1
related Django posts
Simple controls over complex technologies, as we put it, wouldn't be possible without neat UIs for our user areas including start page, dashboard, settings, and docs.
Initially, there was Django. Back in 2011, considering our Python-centric approach, that was the best choice. Later, we realized we needed to iterate on our website more quickly. And this led us to detaching Django from our front end. That was when we decided to build an SPA.
For building user interfaces, we're currently using React as it provided the fastest rendering back when we were building our toolkit. It’s worth mentioning Uploadcare is not a front-end-focused SPA: we aren’t running at high levels of complexity. If it were, we’d go with Ember.js.
However, there's a chance we will shift to the faster Preact, with its motto of using as little code as possible, and because it makes more use of browser APIs. One of our future tasks for our front end is to configure our Webpack bundler to split up the code for different site sections. For styles, we use PostCSS along with its plugins such as cssnano which minifies all the code.
All that allows us to provide a great user experience and quickly implement changes where they are needed with as little code as possible.
Hey, so I developed a basic application with Python. But to use it, you need a python interpreter. I want to add a GUI to make it more appealing. What should I choose to develop a GUI? I have very basic skills in front end development (CSS, JavaScript). I am fluent in python. I'm looking for a tool that is easy to use and doesn't require too much code knowledge. I have recently tried out Flask, but it is kinda complicated. Should I stick with it, move to Django, or is there another nice framework to use?
related JBoss posts
related Spring MVC posts
Material Design for Angular Angular 2 Node.js TypeScript Spring-Boot RxJS Microsoft SQL Server Hibernate Spring MVC
We built our customer facing portal application using Angular frontend backed by Spring boot.
- Scala81
- Web-friendly architecture55
- Built on akka55
- Stateless50
- High-scalable47
- Fast46
- Open source40
- Java34
- High velocity27
- Fun24
- Lightweight9
- Non-blocking io8
- Developer friendly6
- Simple template engine5
- Scalability4
- Pure love3
- Resource efficient2
- Evolves fast, keep up with releases3
- Unnecessarily complicated1
related Play posts
Some may wonder why did we choose Grails ? Really good question :) We spent quite some time to evaluate what framework to go with and the battle was between Play Scala and Grails ( Groovy ). We have enough experience with both and, to be honest, I absolutely in love with Scala; however, the tipping point for us was the potential speed of development. Grails allows much faster development pace than Play , and as of right now this is the most important parameter. We might convert later though. Also, worth mentioning, by default Grails comes with Gradle as a build tool, so why change?
I use Play as the best Java framewrk for web development. It is easy to use and I was able to learn it quickly. Before I was using Apache Tomcat , but I would never go back. Play is preselecting for you popular and usefull libraries, you can use templating with Twirl, JPA, Injections and much more.
Dropwizard
- Quick and easy to get a new http service going27
- Health monitoring23
- Metrics integration20
- Easy setup20
- Good conventions18
- Good documentation14
- Lightweight14
- Java Powered13
- Good Testing frameworks10
- Java powered, lightweight7
- Simple5
- Scalable4
- Great performance, Good in prod3
- Open source2
- All in one-productive-production ready-makes life easy2
- Slightly more confusing dependencies2
- Not on ThoughtWorks radar since 20141
related Dropwizard posts
Grafana and Prometheus together, running on Kubernetes , is a powerful combination. These tools are cloud-native and offer a large community and easy integrations. At PayIt we're using exporting Java application metrics using a Dropwizard metrics exporter, and our Node.js services now use the prom-client npm library to serve metrics.
Java JavaScript Node.js nginx Ubuntu MongoDB Amazon EC2 Redis Amazon S3 AWS Lambda RabbitMQ Kafka MySQL Spring Boot Dropwizard Vue.js Flutter
UtilitiesGoogle Analytics Elasticsearch Amazon Route 53
DevOpsGitHub Docker Webpack CircleCI Jenkins Travis CI Gradle Apache Maven
Cooperation ToolsJira notion.so Trello
Spring Cloud
related Spring Cloud posts
Spring-Boot Spring Cloud Elasticsearch MySQL Redis RabbitMQ Kafka MongoDB GitHub Linux IntelliJ IDEA
related JHipster 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?