Added some of my notes on GoLang and Java , Its like what people say about java and what people say about GoLang !
Example : https://www.neds.com.au/racing
Go programming language to develop, debug, test all services. All services which include data aggregation, pulling, receiving from different vendors, payment systems management and others are written in Go.
Java, while not the best fit for web app development (pages are really slow or unreasonably hard) will still be used as the primary choice for slow to mid projects because of availability and considerable cheapness of talent.
Python and RoR will be used when speed is of the essence and deadlines are like yesterday’s news.
Go will be used for solutions with complex back ends and countless interactions between the app and the server like social media chats and video streaming engines.
GoLang is quite impressive. However, I’m not sure it is a good match for everything – it seems to have been created for scalable servers and processing, but less so for user interface – desktop or web – as well as other needs such as 3D or GPU.
Go: What Is It Good For?
Golang Development is usually easy to read and understand.
Go code has some specific properties which seem to aid comprehension to readability
Go sacrifices expressiveness for uniformity.
Go does support passing around functions
It favours the concrete, inline expression of logic, with function calls acting primarily as a mechanism for structured programming.
The main purpose of Golang ist surely not Web development, neither is Java the most common language for web development. Or let’s say there is only a small part of web development really fitting to one of those.
Golang is very strong in replacing C. It is not competing with Java, but with C, C++, D, Rust. It is shining, if the purpose is a system (low level) programming language with some modern features, and especially a very high programming “effiency” – meaning here primarily
I’m using Java (very successfully) for a large desktop GUI application, so I wouldn’t say that web development is the only thing Java does well. And in this space (desktop GUI) I don’t see that Go has anything to offer, certainly nothing better than Java.
First of all, web development is not the only strength of Java. Java is heavily used in mobile and embedded applications (ie, used in billions of devices around the planet). Java is used in desktop applications. It’s used in data science and machine learning. In fact, it’s used pretty much everywhere.
Second, Golang has a long way to go before it can catch up to the size of Java’s ecosystem and user community. Java is the enterprise standard programming language, and the enterprise is extremely conservative.
No. Java is a much more expressive language, with better support for generics, reflection, and a whole host of features that make dynamic code generation easier and less verbose. Go is good for writing CLI binaries, and small microservices making up parts of a distributed application
Go is too limited at this point for building large scale systems. You may have heard people rave about Docker and Kubernetes being written in Go. Yes, but if an equally talented bunch of people decided to write it in Java, C++, Rust, even then Docker and Kubernetes would be as good
You may have heard of people speak about Go’s concurrency features (and a lot of them would have no clue about Tony Hoare’s CSP), but Java’s built in concurrency support since Java 6 has been excellent an unopinionated interface for writing concurrent systems. Java 8 with functional interfaces enhanced their usability and expressiveness even further. Go works well for many microservices, but Java with Spring Boot and a small footprint JDK + server in a container is no less mean and lean.
Web Development with Java? If you want to hurt yourself, why not use assembler?
What I am trying to say is, that you are benchmarking Go versus Java in a game that Java isn’t even playing.
But I challenge you to write a RestApi in Go that beats Java in only one of the following:
Code Structuring
Readability
Required Development Effort
Required Maintenance Effort
You are only going to beat Java with performance. And that’s going to be a really really close call.
It doesn’t seam Go is meant to kill Java. For one, it isn’t a VM-based language and compiles straight to the machine. I believe it is more positioned as a more productivity optimized version of C/C++.
Java is the best programming language AND platform/ecosystem for the large-scale, long-term web applications and web services. Period. Deal with it 🙂
Everything else on your radar is for short-term projects. An attempt to use that secondary stuff for large-scale and long-term projects will lead to significantly higher cost.