Go vs Spring Boot

Need advice about which tool to choose?Ask the StackShare community!

Go

11.4K
9.6K
+ 1
3K
Spring Boot

13.7K
11.6K
+ 1
841
Add tool

Go vs Spring Boot: What are the differences?

Go: An open source programming language that makes it easy to build simple, reliable, and efficient software. Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language; Spring Boot: Create Spring-powered, production-grade applications and services with absolute minimum fuss. 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.

Go can be classified as a tool in the "Languages" category, while Spring Boot is grouped under "Frameworks (Full Stack)".

"High-performance", "Simple, minimal syntax" and "Fun to write" are the key factors why developers consider Go; whereas "Powerful and handy", "Easy setup" and "Java" are the primary reasons why Spring Boot is favored.

Go and Spring Boot are both open source tools. Go with 60.5K GitHub stars and 8.37K forks on GitHub appears to be more popular than Spring Boot with 39.8K GitHub stars and 25.8K GitHub forks.

According to the StackShare community, Go has a broader approval, being mentioned in 901 company stacks & 606 developers stacks; compared to Spring Boot, which is listed in 333 company stacks and 615 developer stacks.

Decisions about Go and Spring Boot
Timm Stelzer
Software Engineer at Flexperto GmbH · | 18 upvotes · 113.7K views

We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.

As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:

Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.

PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.

We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.

Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.

Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.

See more

With Python + Django it was so much faster to create a typical website like this. Using Go would take to long to launch the initial version. For example, Python could handle complex data type with less line of code. Django also has many built-in libraries and a huge ecosystem of libraries that can be easily used to build a feature.

See more
Hampton Catlin
VP of Engineering at Rent The Runway · | 7 upvotes · 67.2K views

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.

See more
Pros of Go
Pros of Spring Boot
  • 511
    High-performance
  • 375
    Simple, minimal syntax
  • 343
    Fun to write
  • 289
    Easy concurrency support via goroutines
  • 261
    Fast compilation times
  • 183
    Goroutines
  • 173
    Statically linked binaries that are simple to deploy
  • 144
    Simple compile build/run procedures
  • 129
    Backed by google
  • 125
    Great community
  • 46
    Garbage collection built-in
  • 40
    Built-in Testing
  • 36
    Excellent tools - gofmt, godoc etc
  • 33
    Elegant and concise like Python, fast like C
  • 28
    Awesome to Develop
  • 22
    Flexible interface system
  • 21
    Used for Docker
  • 21
    Great concurrency pattern
  • 18
    Deploy as executable
  • 17
    Open-source Integration
  • 14
    Fun to write and so many feature out of the box
  • 11
    Its Simple and Heavy duty
  • 11
    Easy to read
  • 10
    Powerful and simple
  • 9
    Go is God
  • 9
    Safe GOTOs
  • 9
    Easy to deploy
  • 7
    Hassle free deployment
  • 7
    Rich standard library
  • 7
    Concurrency
  • 7
    Best language for concurrency
  • 7
    Easy setup
  • 6
    Used by Giants of the industry
  • 6
    Simplicity, Concurrency, Performance
  • 6
    Clean code, high performance
  • 6
    High performance
  • 6
    Single binary avoids library dependency issues
  • 5
    Simple, powerful, and great performance
  • 5
    Cross compiling
  • 4
    Garbage Collection
  • 4
    Excellent tooling
  • 4
    Very sophisticated syntax
  • 4
    Gofmt
  • 4
    WYSIWYG
  • 3
    Kubernetes written on Go
  • 2
    Keep it simple and stupid
  • 1
    Widely used
  • 0
    No generics
  • 0
    Operator goto
  • 127
    Powerful and handy
  • 121
    Easy setup
  • 111
    Java
  • 83
    Spring
  • 79
    Fast
  • 39
    Extensible
  • 32
    Lots of "off the shelf" functionalities
  • 27
    Cloud Solid
  • 21
    Caches well
  • 19
    Many receipes around for obscure features
  • 18
    Modular
  • 18
    Productive
  • 17
    Integrations with most other Java frameworks
  • 16
    Spring ecosystem is great
  • 16
    Fast Performance With Microservices
  • 14
    Community
  • 13
    Auto-configuration
  • 11
    Easy setup, Community Support, Solid for ERP apps
  • 11
    One-stop shop
  • 10
    Easy to parallelize
  • 9
    Cross-platform
  • 9
    Easy setup, good for build erp systems, well documented
  • 8
    Easy setup, Git Integration
  • 8
    Powerful 3rd party libraries and frameworks
  • 2
    Kotlin
  • 2
    It's so easier to start a project on spring

Sign up to add or upvote prosMake informed product decisions

Cons of Go
Cons of Spring Boot
  • 38
    You waste time in plumbing code catching errors
  • 23
    Verbose
  • 22
    Packages and their path dependencies are braindead
  • 15
    Dependency management when working on multiple projects
  • 12
    Google's documentations aren't beginer friendly
  • 10
    Automatic garbage collection overheads
  • 7
    Uncommon syntax
  • 6
    Type system is lacking (no generics, etc)
  • 2
    Collection framework is lacking (list, set, map)
  • 18
    Heavy weight
  • 17
    Annotation ceremony
  • 10
    Many config files needed
  • 7
    Java
  • 5
    Reactive
  • 4
    Excellent tools for cloud hosting, since 5.x

Sign up to add or upvote consMake informed product decisions

What is Go?

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

What is 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.

Need advice about which tool to choose?Ask the StackShare community!

What companies use Go?
What companies use Spring Boot?

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Go?
What tools integrate with Spring Boot?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

Dec 8 2020 at 5:50PM
https://img.stackshare.io/company/93/8a444d2b7ec5dd7a4f3fc1819136e05178b964c8.png logo

DigitalOcean

GitHubMySQLMongoDB+11
2
1488
Nov 20 2019 at 3:38AM
https://img.stackshare.io/stack/517248/default_4bf5f3d2d3ef627f563fd3b2e94dee6cc37a38d6.jpg logo

OneSignal

PostgreSQLRedisRuby+8
7
3619
Oct 3 2019 at 7:13PM
https://img.stackshare.io/stack/511159/default_5f04358e03a27bf2607a39dd9b409dd7830ce4d3.png logo

Ably Realtime

JavaScriptPythonNode.js+8
4
3122
Vue.jsSpring Bootvuex+7
2
880
Jun 26 2018 at 3:26AM
https://img.stackshare.io/stack/325466/default_06cecdd7cb3f11903cc5a8af0677b9b393889e67.png logo

Twilio SendGrid

GitHubDockerKafka+10
11
8966
What are some alternatives to Go and Spring Boot?
Python
Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
Rust
Rust is a systems programming language that combines strong compile-time correctness guarantees with fast performance. It improves upon the ideas of other systems languages like C++ by providing guaranteed memory safety (no crashes, no data races) and complete control over the lifecycle of memory.
Java
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
Node.js
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
JavaScript
JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
See all alternatives
Interest over time
News about Spring Boot
More news