Heck, in javaland the paractice now is to put the build tool in the repo, as you will only update maven once in every decade git won't complain too much about the binary, or you can just update the version in the wrapper and put the binary on the git ignore. First time you run it, it will update the build tool.
Nowadays on javaland you should only need to have JDK and git/svn/hg/(wtv version control you use).
And with the JDK, you can always download the most recent that java is backwards compatible.
Java 1 could actually be progressively migrated to up to date java 11. It would have been a fantastic choice if they had started a reimplantation. (Unless performance was an issue)
Fortran is super fast. For math/analytical stuff it's preffered over C.
But to avoid relyance on a language with so few devs, these orgs dhould only have code that the the heavy lifting math in fortran. And use expose those as wrspped functions to some other more common and easier to use/mantain/hire
Performance. Internal representation.
You are not actually modifying things in place. Those are the equivalent of linked lists not arrays. That quicksort is not quick at all because the append operation in Haskell is linear. You can't use those lists to implement quicksort.
Nowadays on javaland you should only need to have JDK and git/svn/hg/(wtv version control you use). And with the JDK, you can always download the most recent that java is backwards compatible.