Which modern language, Go stuck in early 1990's language design, or Rust that still doesn't have a comparable Web story at enterprise level?
Kotlin that leeches on Java infrastructure for its existence? And papa Google is yet to fully rewrite Android in Kotlin/Native?
C# is an alternative, provided there is an implementation for the desired OS platform. Meadow is the only presence in Embedded without the capabilities from PTC, Aicas and microEJ.
Every language new or old will have cons. However, when the perceived con is financial (yes, I realize that OpenJDK isn’t affected, but as evident in the comments many people still don’t know that, and they will never know given all the choices); you’re going to lose a lot of future users.
The part I find interesting is how Java is slowly becoming like COBOL all due to a combination of bad marketing and terrible messaging, and a flawed monetization scheme that was obviously rushed with little thought for the long term.
C# seems the obvious choice to me. One can probably compile Java to C# - it might be in the category of regex then fix compiler errors, so economically reasonable to do. Probably similar library coverage for the two ecosystems by now.
That lets one replace the dependency on Oracle, whose reputation is invariant, with Microsoft, who are known to be nice people who won't blow up your world to increase their profits.
Plus the legal team who liked contracts with Oracle can replace them with contracts with Microsoft. The developers who like Java are fairly likely to like C#, what with it being very nearly the same language.
[in case the subtext is somehow missed, I believe this will punt the problem down the road until Microsoft do something similarly expensive to you]
Microsoft is hardly much different, and contrary to Sun/Oracle once upon a time the gatekeeped .NET features behind different support levels on Visual Studio, like contracts, nowadays gone because obviously the adoption wasn't that great.
There are also some tooling features like code coverage, live testing or byte code rewriting tooling that require Visual Studio Enterprise licenses.
IKVM and J# were two ways of running Java code on .NET.
Not really no, you can't just ignore the culture context of languages.
Ruby projects are going to have a better testing coverage and culture in average than Python projects whereas in reality both languages could do the same.
Java overengineer culture is still present despite being non-existent in other languages like Go whereas in theory it could exist in both.
Nowadays you can do anything with any language, in practice the culture often goes in the way
Ruby is hardly a thing in enterprise computing, and until AI craziness, the only thing that Python mattered for enterprise shops was system administration instead of dealing with a mess of shell scripts and Perl.
Go culture has brought us YAML spaghetting and kubernetes madness at enterprise level.
Many of the features in modern Scala and Java don't exist in other languages.
I would appreciate if you could name them but I would understand if you didn’t have them handy to name. It’s unreasonable to expect you to know them off the top of your head.