Programming languages

“Any nitwit can understand computers. Many do.” — Ted Nelson

Table of contents

  1. Ruby
    1. Version managers
  2. Java
    1. Project managers
    2. Version managers
  3. JavaScript
    1. Package managers
  4. Python

Ruby

ArchWiki

Version managers

AvoidWhy
asdf-vm asdf-vm is a universal version manager that supports multiple languages not limited to Ruby.
ConsiderWhy
RVM RVM and chruby are extensive but ship with shell modifications.
PreferWhy
rbenv rbenv sets the Ruby version globally per user or localler per directory.

Java

ArchWiki

Which Version of JDK Should I Use?

AvoidWhy
OpenJDKOracle Java Oracle JDK is no longer free for commercial use while OpenJDK update roadmap lags behind other flavors.
ConsiderWhy
LibericaZulu Bellsoft and Zulu provide OpenJFX binaries for JavaFX developers. However, CI/CD pipelines do not usually support these flavors.
PreferWhy
Temurin Maintained by Eclipse Foundation with timely updates, LTS releases and free for commercial use.

Project managers

AvoidWhy
Maven Maven project is configured with XML files which are statically typed.
PreferWhy
Gradle Gradle has usable built-in plugins out of the box.

Version managers

In a Gradle project, the modern solution to lock specific Java versions is by using the Toolchains.

AvoidWhy
SDKMAN! SDKMAN! is a universal version manager that supports multiple languages not limited to Java.
PreferWhy
Java Runtime Specific Java switcher command for Arch Linux.

JavaScript

ArchWiki

Package managers

ConsiderWhy
YarnYarn PNPM and Yarn perform better but are not as widely adopted as NPM.
PreferWhy
NPM NPM is installed by default in many Linux distributions.

Python

ArchWiki

AvoidWhy
Anaconda Anaconda allows users to install packages with dependencies but comes with a lot of unnecessary applications and not free for commercial use.
PreferWhy
Python Use the official Python distribution with PIP to install packages.