https://medium.com/helidon/can-java-microservices-be-as-fast-as-go-5ceb9a45d673
If I'm gonna leave my opinion on the article, take it with a pinch of salt because I dont know sometimes what I'm talking about, just a friendly opinion.
To me at least, it seems like even though sometimes Java outperformed in response times for a small 5-10% margin, it's still not worth the cost of Java's x2-10 times more memory consumption which costs very much in the hosting market. Like, most of the tests have as big margins as Go=100mb Java=1.5GB memory, that's a huge difference. The cost is too big for the advantage, which is not even certain, in contrast with RAM cost which is very expensive.
Other than that, it just seems to me that Golang's optimization is still maturing and has a long way to go. But good job at Java native images for succeeding outperforming it. It was honestly surprising to me. What's your thoughts?
Can Java microservices be as fast as Go?
Java vs Golang - Choosing a language for Freshdesk Microservices
Some of the general points are mostly correct, but I am going to disagree with some and give some tips as someone who has done a lot in both langs... (pardon the long post, was bored this morning):
Golang concurrency is not that much easier. Many developers will have an easier time working with futures, promises (i.e. CompletableFuture), thread pools, and concurrent collections than they will with select+channels. Just make sure they understand blocking/non-blocking selects and channel. Go is not just magically "less buggy", it takes discipline wrt state sharing/movement
I personally find swagger/openapi specs to not be very good for code generation. Good enough for json model gen I guess, but do the HTTP req/resp yourself. Or if it's not a ridiculously sized or volatile API, just work with it directly.
Don't get hung up on annotations vs other ways to specify routes, the difference is negligible. Consistency and difficulty are what matter.
It is pretty company specific that Java is considered to have a clear devops edge because of some closed-source commercial monitoring system. Also, I don't consider dockerizing both to be that straightforward wrt runtime management of a VM and dependencies vs static compilation. When considering devops, ease of upgrade and package management should also be a concern (there are pros/cons for both langs here)
Normal Go using shops shouldn't be leveraging a ton of code generation to work around lack of generics. It will get ugly fast. Just accept the language limits and work within them, especially for microservices.
Don't get hung up on Java libraries. That hibernate is even listed to me screams that this comparison is not on modern Java and approaches. Again, microservices, nothing complicated. Just make the scaffolding and let your devs run w/ it.
The lambda implementation in Java is not "hacky at best" and again, this reeks of a level of misunderstanding that makes me think someone else should put together a comparison doc for your company's sake. Also, whether defining anon functions and their types feels natural in Go compared to Java is subjective at best (I think Go is way wordier and explicit...whether that is good/bad is up to you)
Dependency management in Go has not improved that much in my opinion, it just became more fragmented.
Go does not do code analysis much better. That the lang has built in checks for unused variables is nothing compared to something that tells you that you are going to break at runtime w/ a nullable var (e.g. by using the checker framework in Java). These statements in the post, like many others, seem to be based on what comes with the package and not the ecosystem.
Compiling Java code is not slow. I'm gonna have to see some numbers, especially in a reasonably sized application. Even start time is not really slow, especially for daemons.
Meh, I'll stop there...I think the author could use examples of simple Java microservice code and war stories of bad developer use of Go concurrency to even it out a bit. But I don't disagree with the general post or it's overall conclusion. Also, author is doing a disservice excluding Kotlin.
More on reddit.comFor microservices, is Rust instead of Go a bad choice?
Quarkus Native vs Go for microservices?
When should I outsource eCommerce app development?
- Time constraints: Developing an eCommerce app from scratch can take a lot of time and effort, which may not be feasible for businesses with tight deadlines.
- Cost constraints: Building an in-house team can be costly, especially if you need to hire eCommerce developers.
- Need for flexibility: Outsourcing usually is more flexible as you can hire developers for the project's duration only.
- Access to the latest technologies: Outsourcing allows you to access the latest technologies, tools, and techniques that may not be available to you in-house.
How long does it take to build eCommerce software?
- Workshops (1 day - 5 weeks): Depending on the clarity of your idea, you can choose from 4 types of Miquido workshops: product discovery or MVP definition workshops (1-2 days), design sprint (5 days) and complex product bootcamp to build the eCommerce app from scratch (4-5 weeks).
- UX/UI Design (4 - 6 weeks): Usually, the design phase at Miquido covers the stages such as defining the product scope, preparing the design system, design validation and smooth handoff to the production team.
- Development (3 - 5 months): At Miquido, we aim to deliver your eCommerce software's minimum viable product (MVP) within 3-5 months.
What AI solutions can I implement into my eCommerce software?
- Personalised recommendation engines: AI algorithms, such as Amazon Personalize or Dynamic Yield, analyse customer behaviour and purchase history to improve customer satisfaction and sales
- Chatbots: AI-powered chatbots provide instant customer support, answer frequently asked questions, and assist with product search and checkout
- Fraud detection: AI algorithms can identify and prevent fraudulent transactions, help reduce chargebacks, and protect the business from financial losses
- Predictive analytics: AI tools like IBM Watson Analytics or DataRobot can analyse customer behaviour and historical data to predict future demand and optimise inventory management or pricing strategies.