Need advice about which tool to choose?Ask the StackShare community!
Rails vs Spring: What are the differences?
What is Rails? Web development that doesn't hurt. Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.
What is Spring? Provides a comprehensive programming and configuration model for modern Java-based enterprise applications. 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.
Rails and Spring can be categorized as "Frameworks (Full Stack)" tools.
"Rapid development", "Great gems" and "Great community" are the key factors why developers consider Rails; whereas "Java", "Open source" and "Great community" are the primary reasons why Spring is favored.
Rails and Spring are both open source tools. It seems that Rails with 43.6K GitHub stars and 17.5K forks on GitHub has more adoption than Spring with 30.6K GitHub stars and 19.6K GitHub forks.
Airbnb, Twitter, and Instacart are some of the popular companies that use Rails, whereas Spring is used by MIT, Zillow, and Intuit. Rails has a broader approval, being mentioned in 2321 company stacks & 796 developers stacks; compared to Spring, which is listed in 319 company stacks and 184 developer stacks.
So currently I have experience in Node.js, but just to expand my stack knowledge and for getting backend developer roles, I thought of learning another backend-related language/framework. I have heard about Django, Golang, and Spring. I am mostly trying for backend API roles, and far as I've heard, Django REST framework can be a pain to work with. I've heard there are issues with Golang for package management (like how recently the Gorilla web toolkit is archived) and as for Spring, it's a vast ecosystem to learn so not sure if it's worth investing in. I would like to know which tool/framework to learn, which can help me get high-paying jobs and has a lot of scopes, and also which is great for making REST APIs. Any other tool that can do the job better than these three is also welcome!
Try thats, is really lightweight and little bit similar like node, before you jump on djanggo stuff, hopefully it's helpful https://fastapi.tiangolo.com/
Hello, I am trying to learn a backend framework besides Node.js. I am not sure what to pick between ASP.NET Core (C#) and Spring Boot (Java). Any advice, any suggestion is highly appreciated. I am planning to build only Web APIs (no desktop applications or something like that). One thing to mention is that I have no experience in Java or C#. I am trying to learn one of those 2 and stick to it.
UPDATE: The project I am trying to build is a SaaS using microservices that supports multi tenancy.
I'd recommend to learn Spring as it is very widespread in the industry and provides a lot of easy integration into most of the common backend tech stacks. Rather than learning Java you could look into Kotlin. It's a very consistent, stable and well-thought language in my opinion and not as verbose as Java. Many problems can be solved with Kotlin in a clear and elegant way while also always having the option to use data structures and libs in JVM. It is also has a very good support in Spring.
I have worked in a Spring environment for many years and I still love working with it. Super quick to get a base application running and get coding, thanks to Spring Boot's easy and straight forward integration with Tomcat. However, I will try and answer this question from another perspective: look at topics such as popularity of the language, average statistics on community contribution to their repositories and hiring availability from companies. If you are going down the API route for backend, leverege on your experience in the Node world by looking into ExpressJS (or even NestJS). The JavaScript world is really excellerating at a lightning speed, and I could recommend exploring those worlds a bit more, should it be a comfort level for you. However, my biased answer is tryout Java, followed by Spring afterwards. No disrespect to any .NET developers out there, as there are a few topics in there which are fantastically implemented.
I'm really interested in building minimalistic web products with extra stuff like Stripe, MongoDB, solidity, WebAssembly and three.js.
Want to choose my backend lang but am unable to choose, my requirement is:
- fast dev
- minimal
- easy to learn
- good for saas
- huge community
- scalable
- fast and interactive
- good job market (not important)
If you want an ’easy-to-learn’ and ‘fast dev’ environment I would go with React.js, Node.js, and Firebase. This is probably one of the easiest tech stacks to develop and offers great scalability without creating a complicated database structure. Furthermore, it’s almost hard to develop a react application that isn’t lightning fast.
Should I continue learning Django or take this Spring opportunity? I have been coding in python for about 2 years. I am currently learning Django and I am enjoying it. I also have some knowledge of data science libraries (Pandas, NumPy, scikit-learn, PyTorch). I am currently enhancing my web development and software engineering skills and may shift later into data science since I came from a medical background. The issue is that I am offered now a very trustworthy 9 months program teaching Java/Spring. The graduates of this program work directly in well know tech companies. Although I have been planning to continue with my Python, the other opportunity makes me hesitant since it will put me to work in a specific roadmap with deadlines and mentors. I also found on glassdoor that Spring jobs are way more than Django. Should I apply for this program or continue my journey?
I would recommend you change and get the easy path, but there's no easy path. When you are working in something like development you have to learn every day, stick with a specific niche, learn from others to apply to yours, and improve to be a specialist. If Spring and Java are technologies you're not enjoying, why are you going to waste your time with them? If you check the market, the higher salaries are in the specialization. For example, I was sticking with Erlang and Elixir in high volume, high availability, and concurrent systems. Don't check the number of works about Python, Java, or whatever else, you only need one job, and you have no idea about the quality of these. Most of the demanding jobs for Java, Python, and PHP are usually not covered because they request a lot and pay too less. Believe me, there are not a lot of Erlang and Elixir jobs and I always found one. And finally, don't expect too much from big companies, they are all glamorous from the outside, but they are usually a deception when you start working for them.
Hi Mohamed, I love Django for its "batteries included" philosophy, meaning that you get the backend for free and a lot of stuff for database abstraction. But often you just need some kind of webserver backend logic and Django is oversized for that purpose. In that case I go with Flask which has a modular approach so that you need to gather the parts yourself that you need. If you come from a Python background I think there is a lot to explore with Python for the web and it very well into the data science landscape.
I am wondering which language would you guys suggest learning if productivity & "future-proofing" is the focus?
I have now 2 years of experience with React Native & Firebase and 3 years of experience with Next.js and ExpressJS. As I like the idea of separating backend & frontend I think as a solo developer the MVC approach will get you way further and overall I started second guessing the whole js ecosystem and its quality.
What I am currently considering the most is Django, even if I am giving up major productivity I think the opportunities Python offers with AI/ML & scrapping are way superior then Rails. I would like to know how much productivity would get lost by deciding on Django.
Python is simple to read. Easy to use and import libraries. It is widely used in many different application domains. It is very easy to learn compared to other languages.
Considering your background is in front end technology; why not try some other language that can help you become more well rounded? Besides, there are always more and more python jobs.
Django is very easy to learn. If you use Django, I recommend the Django-Rest-Framework. This will save you a lot of time. But you need to understand some Python first. I think Python is as simple as: interpreted, dynamically typed language where you use lists and dictionaries a lot.
Hi all. I want to rewrite my system. I was a complete newbie 4 years ago and have developed a comprehensive business / finance web application that has been running successfully for 3 years (I am a business person and not a developer primarily although it seems I have become a developer). Front-end is written in native PHP (no framework) and jQuery with backend and where many processes run in MySQL. Hosted on Linux and also sends emails with attachments etc. The system logic is great and the business has grown and the system is creaking and needs to be modernised. I feel I would stick with MySql as DB and update / use Django / Spring or Laravel (because its php which I understand). To me, PHP feels old fashioned. I don't mind learning new things and also I want to set the system up that it can be easily migrated to Android/iOS app with SQLite. I would probably employ an experienced developer while also doing some myself. Please provide advice -- from my research it seems Spring/Java is the way to go ... not sure. Thanks
PhP might be old fashionned but Laravel is really great. I've tried nodeJs backend with express, python with flask and a little bit of serverless, and quite frankly, laravel was by far the best in my opinion. It has a lot of official packages that speeds up development (from authentification to serverless deployement), it also uses Eloquent ORM that support Mysql databases. Finally it works great with VueJs for the front end development.
I recommend ExpressJS or NestJS as BackEnd and React as Front-End and PostgreSQL as the database. The reason is as follows. First of all, since it is a financial system, various services will exist, and each service must be well connected and combined with each other. The organic combination of small services that work very well is the foundation of a great system. For this, it is best to use Node.js based, and I think ExpressJS or NestJS is the best choice. We recommend choosing React or Vue as the FrontEnd. PostgreSQL is currently the best performing database. These three combinations have many examples, and their superiority has been confirmed by my implementation in many projects already. If you are interested in my advice and have any questions, please feel free to contact me.
On my end for me it's better to choose Laravel. It has very good documentation and easy to code. The framework supports MVC and you can create either monolithic or API only. The community is also big. If you combined a Domain Driven Development (DDD) and Test Driven Development (TDD) on Laravel then it will be a superb.
Since you are using PHP more natural is Python - it can handle high traffic - Python is very effective in coding. Python is superset of Java and C++ - True Object Oriented and have very clear syntax (Spring is hard to learn and debug - you can be confused many times). It is human readable you can code 2-4 times faster with small speed sacrifice. Jinja2 is more faster/flexible Django - whatever Django is better with ORM. Flask is just proposal - many other options of web servers.
I've inherited a monolithic Rails app for an MVP product. We're planning to slowly migrate away from RoR to build the remaining parts of the app. App requirements: - Video streaming w/ audio - Real time chat - User authentication & roles - Payment system Performance, scalability, and attracting dev talent(s) are important to our team.
I'm considering the microservices approach, SSR + CSR & caching with Next.js (prefer Svelte-kit but it's in beta). I also prefer to keep this a full JS household. What other JavaScript frameworks/libs would you recommend? Keep in mind the existing RoR will not be deprecated. We'll be consuming the APIs and slowly moving away from them until they can safely be deprecated.
Moving from Rails will reduce development velocity (if you want to have easy support and update the app) and will require more skilled (expensive) developers to support it.
Without previous experience (5+ years) do not suggest moving to node.js. That code will easily become hard to learn and support.
You always can implement microservices with Ruby, but this approach should be considered only after Series-A and when you will have more than 5 developers and dedicated SRE/DevOps.
I see it's been some time since this was posted, but I'm glad you are migrating to Next.js 🎉!
Me personally, I would run an Express.js backend so that frontend and backend logics don't feel blurred, especially if you want to attract more developers to your project. Keeping frontend separated from the backend makes for a healthier workspace ecosystem and often confuses people less. Furthermore, implementation is a lot easier and later on as you move from RoR to an Express.js server there won't be too much confusion as to how certain parts mesh together.
Based on the features you're looking at I would consider using websockets (WSS or Socket.IO) for the chat application or rolling that with features from WebRTC, which you would need to support video streaming anyways. For authentication you could look at Auth0 which has some very nice libs for authentication or you could rig up your own stitching individual OAuths (Google, Facebook, etc.) along with a simple User/Pass signup that you manage in your database. For payment I would consider using Stripe, it's very popular in the JS ecosystem right now, has lots of documentation and features, and is also pretty cost-effective.
I know it's been some time since you have posted this and you have already made some decisions, but if you (or anyone else reading this) has any question feel free to let me know :)
Hello Guys
I am a newbie here and not very well experienced with different stacks. I have primarily programmed in C lang/C++ and am somewhat proficient in it.
I am now considering taking up Spring as a new framework to learn to get into Web dev as I know a little Java. But I have concerns about choosing it and am confused with JavaScript frameworks.
Could you please tell me which stack should I choose from?
What is your objective here? It sounds like this is not to solve a particular issue, but is about learning? If so, do you have a preference for things used on the front-end or the backend? That decision would typically lead down a JAVA-oriented path or a JavaScript-oriented path.
If you decide to learn JAVA, then Spring + Spring-boot is a very relevant framework. A competitor is Microprofile + Quarkus. The Quarkus part is newer, but gaining a lot of traction.
Javascript is not a framework, it's programming language that can run in browser or as server side application developed with node.js framework.
Hi everyone! I'm starting a personal project that I've been postponing for a little while and I'm starting with the backend first.
It's an app that needs to query open APIs (It could go up to a hundred APIs) and do filtering and other manipulations onto the data and then store it in my own database. So basically, the end result medium/long term is a lot of data!
Besides filtering/storing data from other APIs, the API will interact with my client application. I should note that the client app attempts to give real-time information.
Question: I would want to launch the API within 6 months as I'm also planning to make it available for other devs through platforms like RapidAPI. With all being said, my question is twofold:
Which backend framework would allow me to do these operations with the best response time possible?
Which framework would be the easiest to deal with deployment on AWS?
Background:
I have a background in Spring since I'm using it at work, I have none in Rails and Django but I don't mind trying something new as long as the learning curve isn't crazy. I know python but not Ruby. Beginner on AWS and choose that one after some research.
Thank you very much, sorry it was a bit long. Cheers
The most relevant part is the central architecture more than the specific backend. For me, it makes sense to go for an event-driven solution. In this case, an event is emitted on every new data, and one or more listeners react to it. In AWS, you can easily get this by storing your data in DynamoDB, which is pretty fast, and have as many lambdas working on the received data (here you can find more details). This way, you keep your worker(s) busy fetching data while others consolidate it. I wouldn't get too crazy on the lambdas, and I'd start with one as there will be only one client by your description. My only concern is how similar the APIs you're consuming are. Depending on that, it may be easier to have different lambdas by target API. My only note on the backend language is that if you want low latency, I'd discard Python and Ruby and choose Go (I know that is not in the list, but given that you're open to learning a new language, you could give it a try). It is easy to learn, has excellent performance, and is the only Lamdba runtime with an X (1.X) in the supported language, making it a great choice.
Which is better of Laravel, Rails and Django for creating great products quickly?
Which is better for creating open source apps that others might want to contribute to?
I want a mature tool for creating web apps that qualifies for:
- Quick prototyping
- Easy to get to production level for backend
- Maintainable and buildable by one person alone
- Enforces conformity, so others can easily read and contribute to the code, making successfully open sourcing possible
- Works well with React
- Has a mature and fairly stable ecosystem for the basics (auth, storage, db, image handling, backups, change history, etc.
- Has an ecosystem that will still be alive in 10 years, responding to changes.
I would have to learn Ruby, Python or PHP for each, so that factors in too.
I'm proficient in React and Node.js, but I feel the node backend ecosystem is too immature with a million different ways to do everything, and too many decisions to make, too much wiring to get everything to work together, and too many packages that end up not being supported a few months down the line.
Which would you choose for me to learn?
Comparing them end-to-end, Rails comes the most productive in my opinion. But there are bolder parameters you may consider. i.e. no one switches from Django to Rails to improve productivity and vice versa (probably from Laravel to one of those two).
The language's productivity also matters, which both Ruby and Python are better for that.
There is a philosophical difference between #Django and #Rails :
Django supports the "Explicit over Implicit" idea, making it easier for newcomers to understand what's going on. This idea also has downsides. This allows beginners to start working with Django without even learning Django and best practices and defer learning by using references like Stackoverflow.com, which is not a good idea because you potentially don't know things that you don't know! Also, you may find many different project styles.
On the other hand, Rails support the "Convention over configuration" and Scaffolding idea. It's easier for a Rails developer to be added to a new project or just review a random Rails project. Everything has a default and also it has some downsides as well. e.g. As a beginner, everything feels like magic in Rails, and you don't understand what is going on and how Rails understand while you didn't "explicitly" say what do you want sometimes.
Conclusion: Rails and Django are more productive and you can build projects on your own quickly (many giant startups launched this way!).
Node.JS isn't immature, also sometimes shows better performance comparing the mentioned alternatives. But if you suffer from "a million different ways to do everything" and "many decisions to make", Take Ruby on Rails for sure.P.S: for learning RoR I suggest the book/video from Michael Hartl.
I picked Django because we use it at work. But honestly, if you don't know any of them, I would look at the jobs around where you live and learn the one that either has the most jobs posted or if you can look at the trends the one that is growing the number of jobs the most.
All three would satisfy your needs and all three are good choices. Dotnet core would also be a good choice, again if there are jobs in your area for said technologies. If you literally don't care about this for employment, learn them all and just do it in alphabetical order :)
Note: I think you are wrong about Node being too immature - there are also MOSTLY standards for everything you want to do on the backend that have not changed for many years.
Rails uses too much magic and sugar. Laravel is something from the previous century. I'd say Django can be well balanced choice. I have extensive experience with all three. So, this advice based on practical projects
I recommend Ruby/Rails. I write the text in question answer form:
Quick prototyping
Yes you can use the prototyping in Rails or not. And this can be realized by adding any of testing framework like Cucumber or RSpec for example. Writing the test you can work on the application prototype without a change real code in production, or even development environment.
Easy to get to production level for backend
Yes it is easy, you are able to use the capistrano gem with its modules, if required, to deploy application to production within a day.
Maintainable and buildable by one person alone
Since the Rails gets on itself the main code part of a data processing, you are able easily to generate the required code with build-in Rails or external gem generators, and to merely maintain the your code, if you would cover it with a test of selected test framework.
Enforces conformity, so others can easily read and contribute to the code, making successfully open sourcing possible
As far as I said you can barely control a contribution to your project with using the test covering frameworks, to keep conformity the project.
Works well with React
You can use React along with any JS NPM module easily using webpacker gem.
Has a mature and fairly stable ecosystem for the basics (auth, storage, db, image handling, backups, change history, etc.
Of course the Rails framework is supported by many three-side gems, which can be found at rubygems, that support the authentication (devise), storage feature (fog), db (pg/mysql/sqlite3), image handling (rmagick), backups (backup), change history (history)
Has an ecosystem that will still be alive in 10 years, responding to changes.
Ruby/Rails with the RubyGem ecosystem is actively envolving and not plan to be collapsed and abandned with of development both Ruby language and Rails framework.
So, you can freely and fearlessly start using the Rails framework as server side base for your project.
DJango after a little practice, with migrations and support to a lot of libraries and modules is very efficient to create small projects.
Edit: Between Laravel, Django or RoR (Ruby on Rails)
Graphul is an Express inspired web framework using a powerful extractor system. Designed to improve, speed, and scale your microservices with a friendly syntax, Graphul is built with Rust. that means Graphul gets memory safety, reliability, concurrency, and performance for free. helping to save money on infrastructure.
A developer and project manager from our team X says the following about our use of Rails at i22:
"We use Rails to build stable and flexible backend systems. Rails is extremely good for managing data structures and quickly setting up new systems. It is the perfect base for most use cases."
I asked the same Team X member why the team prefers to work with Ruby on Rails, rather than Python and Django:
"Because Python is a scripting language and from my point of view not suitable for building stable web services. Python is for me rather good for scripts and fast small tools. Not for stable business applications. And if I want it fast I prefer Go."
In 2017, we decided to move away from Backbone and embrace a relatively new tool which was taking the industry by storm, React
. Since Backbone was no longer actively maintained and its popularity was falling, it made sense to adopt a tool that was on the rise and promised improved performance, developer experience and delivery speed. In addition, it became easier to hire Frontend Engineers as the talent pool greatly increased. Nowadays, React is the framework of choice across Vinted.
Typescript
entered the picture at a later stage. We placed our initial bet on Flow but it soon became obvious that the industry prefers Typescript. In 2019, we migrated to Typescript and never looked back. Having a strongly typed language in our frontend brought confidence to the engineers and greatly reduced the number of bugs.
Next.js
is the newest addition to the stack. Vinted is currently a Rails
monolith and React on Rails is used to render views. In order to transform Vinted to a single-page application (SPA) and split backend from frontend, we decided to adopt Next.js. Among the options considered, Next.js offered the most comprehensive feature set, good support for Server Side Rendering (SSR) and a vibrant community. We also expect that splitting the client-side would lead to improved developer experience and faster builds.
I was considering focusing on learning RoR and looking for a work that uses those techs.
After some investigation, I decided to stay with C# .NET:
It is more requested on job positions (7 to 1 in my personal searches average).
It's been around for longer.
it has better documentation and community.
One of Ruby advantages (its amazing community gems, that allows to quickly build parts of your systems by merely putting together third party components) gets quite complicated to use and maintain in huge applications, where building and reusing your own components may become a better approach.
Rail's front end support is starting to waver.
C# .NET code is far easier to understand, debug and maintain. Although certainly not easier to learn from scratch.
Though Rails has an excellent programming speed, C# tends to get the upper hand in long term projects.
I would avise to stick to rails when building small projects, and switching to C# for more long term ones.
Opinions are welcome!
Starting a new company in 2020, with a whole new stack, is a really interesting opportunity for me to look back over the last 20 years of my career with web software and make the right decision for my company.
And, I went with the most radical decision– which is to ignore "sexy" / "hype" technologies almost entirely, and go back to a stack that I first used over 15 years ago.
For my purposes, we are building a video streaming platform, where I wanted rapid customer-facing feature development, high testability, simple scaling, and ease of hiring great, experienced talent. To be clear, our web platform is NOT responsible for handling the actual bits and bytes of the video itself, that's an entirely different stack. It simply needs to manage the business rules and the customers experience of the video content.
I reviewed a lot of different technologies, but none of them seemed to fit the bill as well as Rails did! The hype train had long left the station with Rails, and the community is a little more sparse than it was previously. And, to be honest, Ruby was the language that was easiest for developers, but I find that most languages out there have adopted many of it's innovations for ease of use – or at least corrected their own.
Even with all of that, Rails still seems like the best framework for developing web applications that are no more complex than they need to be. And that's key to me, because it's very easy to go use React and Redux and GraphQL and a whole host of AWS Lamba's to power my blog... but you simply don't actually NEED that.
There are two choices I made in our stack that were new for me personally, and very different than what I would have chosen even 5 years ago.
1) Postgres - I decided to switch from MySql to Postgres for this project. I wanted to use UUID's instead of numeric primary keys, and knew I'd have a couple places where better JSON/object support would be key. Mysql remains far more popular, but almost every developer I respect has switched and preferred Postgres with a strong passion. It's not "sexy" but it's considered "better".
2) Stimulus.js - This was definitely the biggest and wildest choice to make. Stimulus is a Javascript framework by my old friend Sam Stephenson (Prototype.js, rbenv, turbolinks) and DHH, and it is a sort of radical declaration that your Javascript in the browser can be both powerful and modern AND simple. It leans heavily on the belief that HTML-is-good and that data-* attributes are good. It focuses on the actions and interactions and not on the rendering aspects. It took me a while to wrap my head around, and I still have to remind myself, that server-side-HTML is how you solve many problems with this stack, and avoid trying to re-render things just in the browser. So far, I'm happy with this choice, but it is definitely a radical departure from the current trends.
I have used both the tools . Both of them are super awesome , very reliable and their learning curve is also super easy. But, the reason I choose Ruby on Rails over Django is the fact that the dependency injection is super easy in Rails than Django. What I mean is the fact that, Django requires a lot of import statement to do a lot of work, which remembering is not so easy and even after that you may need to write a lot of code. But Ruby on Rails uses gem to add addition feature or dependency in the project. Which requires just copying the gem statement from github and pasting it in the Gemfile, then running bundle install(these days just bundle works super fine). And there you are with the new feature in your app. You can see this with the example of Authentication, where in Django you require several steps like adding class based views and many more, but in rails it's just as easy as installing the 'devise' gem . And if you want to make it beautiful use bootstrap_template gem to make it look prettier. Now with Rails 6 , Rails is a total developer's fervent friend because it has come up with features like Action Mail and Action Text.
Since I came from python I had two choices: #django or #flask. It felt like it was a better idea to go for #django considering I was building a blogging platform, this is kind of what #django was made for. On the other hand, #rails seems to be a fantastic framework to get things done. Although I do not regret any of my time spent on developing with #django I want to give #rails a try some day in the future for the sake of curiosity.
As a small team, we wanted to pick the framework which allowed us to move quickly. There's no option better than Rails. Not having to solve the fundamentals means we can more quickly build our feature set. No other framework can beat ActiveRecord in terms of integration & ease-of use. To top it all of, there's a lot of attention paid to security in the framework, making almost everything safe-by-default.
When I started on this project as the sole developer, I was new to web development and I was looking at all of the web frameworks available for the job. I had some experience with Ruby on Rails and I had looked into .net for a bit, but when I found Laravel, it felt like the best framework for me to get the product to market. What made me choose Laravel was the easy to read documentation and active community. Rails had great documentation, but lacked some features built in that I wanted out of the box, while .net had a ton of video documentation tutorials, but nothing as straightforward as Laravels. So far, I am happy with the decision I made, and looking forward to the website release!
Pros of Rails
- Rapid development860
- Great gems653
- Great community607
- Convention over configuration486
- Mvc418
- Great for web349
- Beautiful code345
- Open source312
- Great libraries271
- Active record262
- Elegant109
- Easy to learn91
- Easy Database Migrations89
- Makes you happy83
- Free76
- Great routing63
- Has everything you need to get the job done54
- Great Data Modeling42
- Beautiful38
- MVC - Easy to start on38
- Easy setup36
- 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
- Great language4
- Intuitive4
- Haml and sass4
- Easy to learn, use, improvise and update4
- Metaprogramming2
- It works2
- Jet packs come standard2
- Easy and fast2
- Legacy2
- Convention over configuration1
- It's intuitive1
- Easy Testing1
- Cancan1
Pros of 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
Sign up to add or upvote prosMake informed product decisions
Cons of Rails
- 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
Cons of Spring
- Draws you into its own ecosystem and bloat15
- Verbose configuration3
- Poor documentation3
- Java3
- Java is more verbose language in compare to python2