As a programming language polyglot, currently using Java for backend services, one of the biggest reasons to use Java is due to the ecosystem. Hardened libraries for web frameworks and everything else under the sun means you have confidence in the language. You have millions of instances running in the wild so detection of issues are found and resolved quickly, corporations backing security audits and a lot of funding to make really good libraries.
I hate the language itself and would never choose it as a language for a hobby project, but i completely understand why Java exists and thrives.
I tend to find languages that are best of feature. If i need a fault tolerant, quick to continue service I’d probably pick Erlang or Elixir. If i need meta programming I’m going with Racket or Haskell. If i need a quick and dirty graphical tool for internal use only I’m writing it in tcl/tk or python/tk. If it’s system code I’m using C and Assembly.
The problem i have with Java is outside of Android development I never have the use case i have at my corporate job. There we need a widely know language (so we can hire) that is used in a lot of web services (highly tested and bugs caught early and very visible) that has a diverse ecosystem (less custom built code). None of those attributes are needed in my hobby work.
As a programming language polyglot, currently using Java for backend services, one of the biggest reasons to use Java is due to the ecosystem. Hardened libraries for web frameworks and everything else under the sun means you have confidence in the language. You have millions of instances running in the wild so detection of issues are found and resolved quickly, corporations backing security audits and a lot of funding to make really good libraries.
I hate the language itself and would never choose it as a language for a hobby project, but i completely understand why Java exists and thrives.
I love Java and use it for hobby projects
I tend to find languages that are best of feature. If i need a fault tolerant, quick to continue service I’d probably pick Erlang or Elixir. If i need meta programming I’m going with Racket or Haskell. If i need a quick and dirty graphical tool for internal use only I’m writing it in tcl/tk or python/tk. If it’s system code I’m using C and Assembly.
The problem i have with Java is outside of Android development I never have the use case i have at my corporate job. There we need a widely know language (so we can hire) that is used in a lot of web services (highly tested and bugs caught early and very visible) that has a diverse ecosystem (less custom built code). None of those attributes are needed in my hobby work.
Like log4j?
Ecosystems matter for sure, but any java “killer library” should be usable by other programming languages.