# Bring Powersort to Java ## Gradle ### Setup **Commandline** Check which Java toolchains can be found by Gradle: ```shell ./gradlew javaToolchains ``` - `shell.nix` -> broken (as well for `gradle javaToolchains` - `shell1.nix` -> works 🥳 - `shell2.nix` -> broken (as well for `gradle javaToolchains`) - `shell3.nix` -> works 🥳 This should include version >= 17, e.g.: ``` + N/A JDK 23-ga | Location: /nix/store/48290hnlb13xmwjw9y16a1s785993bv7-openjdk-23-ga/lib/openjdk | Language Version: 23 | Vendor: N/A | Architecture: amd64 | Is JDK: true | Detected by: Current JVM ``` **IntelliJ** Open issue: gradle's toolchain support does not work with IntelliJ - `shell.nix` - Solution from 2022 did no longer work: https://github.com/NixOS/nixpkgs/issues/207153#issue-1506967648 - `shell1.nix` - Instead, we found this: https://discourse.nixos.org/t/overriding-the-jdk-for-gradle-in-a-nix-flake/36541/2 - `shell2.nix` - Another approach - which did no longer work! https://github.com/utybo/Tegral/blob/main/shell.nix - `shell3.nix` - This works 🥳 - STRG ALT SHIFT s -> SDK -> add JDK -> - home path: /usr/lib/openjdk - name: usr-lib-jdk - STRG ALT s -> build tools -> gradle -> - local installation: /usr/lib/gradle - Gradle JVM: usr-lib-jdk ### Tasks List all Gradle tasks which can be run: ```shell ./gradlew tasks ``` This can also be done graphically in IntelliJ: ![intellij-gradle.png](intellij-gradle.png) ### Test Cases Run the task "test": ```shell ./gradlew test ``` ## TimSort Imported from - src/java.base/share/classes/java/util/TimSort.java - src/java.base/share/classes/java/util/ComparableTimSort.java