Why use java
widely used
But starting to diminish for new systems
older systems written in java
But this can be a nightmare if using older versions of java
backwards compatibility, stable platform
But libraries may not support new versions of java
support from big company owner (oracle) and community
But instead of being free, can lead to charges
Mature libraries and frameworks, and lots of them with good documentation
But this has led to bloat
write once run anywhere, platform independent
But we have containers, so this is not much of an issue
efficient memory management, Automatic Garbage Collection
But Not as good a performance as non managed memory like C and Rust
Easy to hire, comp sci grads learn java
But comp sci are using python and javascript now, same as bootcamps
Highly scalable, good support for concurrency, multithreading
Good for monoliths, But for distributed systems not so much of an issue
Good testing libraries
Good support for integration (servlets/http, message brokers)
Good integration with databases - jdbc
No licensing costs (if on non oracle)
But relying on opensource community, which can be unreliable and stop
statically typed, compiler spots problems first
prevents mistakes but can be verbose
Great IDEs - helps improve developer experience, improve efficiency and design
But can take up a lot of computer resources, and problems with IDE can occur that need to be dealt with instead of code
Good build and dependency tools (maven, gradle)
JVM, tooling (jconsole, Java Flight Recorder and Mission Control), jmx for dynamic management of app
jvm separate from language, can have multiple languages running on it
Increased number of languages on jvm, and some of these can use java libraries and frameworks, as well as tooling
Easy to learn, lots of docs, tutorials
Better secruity
Standards - https://docs.oracle.com/javase/specs/
high performance, internal jvm performance always improving
links
https://www.devteam.space/blog/why-should-you-use-java-for-your-backend-infrastructure/
https://medium.com/webbasedevelopment/why-java-is-the-most-preferred-programming-language-for-building-end-to-end-enterprise-solutions-731027246f2a
https://www.invensis.net/blog/it/benefits-of-java-over-other-programming-languages/
https://developer.okta.com/blog/2019/07/15/java-myths-2019
https://medium.com/hackernoon/the-good-and-the-bad-of-java-programming-eeaee8918ea
https://blog.jetbrains.com/idea/2020/05/25-things-we-love-about-java/
Downsides
deployables are larger
This means all dependencies have to be included for deployment, whether rolled into a single JAR or across various components (WAR file + app server + JRE + dependencies). This affects the size of the deployment.
the syntax is verbose
It was created at the time using C syntax
but now java 8+ can use functional style
Lack of dynamic typing
Some see as good, some as bad. For massive projects worked on by many people static typing is good
Static typing and verbosity tells the developer what is happening
Due to backwards compatibility, this can lead to non efficient changes being made
As old ways are still there, developers can still use them, when it is better to use better ways
Lack of control of memory
This is still possible, but not advised
Best use C if you want this
Not in gaming industry
https://www.spiceworks.com/tech/devops/guest-article/why-is-javas-use-in-the-gaming-industry-limited/amp/
Last updated