| 17 Jul 2025 |
msgilligan | That is so true! But it does take time. | 19:16:05 |
emily | yeah for sure I don't want to trivialize the learning curve | 19:16:16 |
emily | I have a vested interest in believing Darwin package porting is fairly easy these days since I was involved in the 24.11 rework 😅 | 19:16:46 |
msgilligan | Vested interests in getting the right thing done are good! | 19:17:10 |
msgilligan | In the short term, I'm going to focus on getting binary JDK 25 (probably Zulu) and GraalVM 25 (probably Oracle) working in Nixpkgs. And also the JDK Dashboard tool, which seems like a cool way for me to learn more about Nix programming since it seems to basically require two things:
- Learning how to pull information about packages out of Nixpkgs
- Learning how to process attribute sets with various functional transforms
| 19:20:28 |
emily | I would recommend Temurin, if you had to pick (because it'll be needed for the source bootstrap later) | 19:21:09 |
emily | though it's still a way aways from being stable right? | 19:21:26 |
msgilligan | Actually 25 EA is pretty stable now, in my experience. | 19:21:46 |
msgilligan | One of the things I'm doing is writing an FFM ("Panama") wrapper for a C' library, calling it from a Java tool/library, and then compiling the tool with native-image. In order for all this to work correctly on aarch64` GraalVM 25 is required. | 19:23:13 |
msgilligan | * One of the things I'm doing is writing an FFM ("Panama") wrapper for a C library, calling it from a Java tool/library, and then compiling the tool with native-image. In order for all this to work correctly on aarch64\ GraalVM 25 is required. | 19:23:30 |
msgilligan | * One of the things I'm doing is writing an FFM ("Panama") wrapper for a C library, calling it from a Java tool/library, and then compiling the tool with native-image. In order for all this to work correctly on aarch64 GraalVM 25 is required. | 19:23:40 |
msgilligan | I personally think 25 is a big milestone release for the JDK. The FFM stuff is really cool for many reasons. And finally the hello world program is reduced to:
void main() {
IO.println("Hello, World!");
}
| 19:26:24 |
msgilligan | I used to think that making "hello world" simpler wasn't a big deal, but it is important in 3 ways:
- Makes it less intimidating for new devs to learn Java
- Helps with changing the obsolete view that Java is verbose
- Greatly simplifies the sample code you have to write for your libraries
| 19:30:11 |
Infinidoge 🏳️⚧️ | More importantly for me, it makes Java a lot more viable as a 'scripting' language | 19:30:40 |
Infinidoge 🏳️⚧️ | You no longer need to have a mountain of boilerplate just to do something simple | 19:30:54 |
Infinidoge 🏳️⚧️ | I wouldn't personally use it like that, for I am Guido's strongest soldier, but it's very nice to see | 19:31:12 |
msgilligan | * I used to think that making "hello world" simpler -- JEP 512 -- wasn't a big deal, but it is important in 3 ways:
- Makes it less intimidating for new devs to learn Java
- Helps with changing the obsolete view that Java is verbose
- Greatly simplifies the sample code you have to write for your libraries
| 19:31:20 |
msgilligan | Yeah, JEP 512, combined with jbang (to load dependencies) means that you can use Java as a scripting language for many use cases where previously you might have used Python or Groovy or Shell. | 19:32:43 |
msgilligan | I can't remember if I've shared it here, but I have a (hacked-together, definitely-needs-cleanup) script to update Zulu:
https://github.com/msgilligan/zulu-metadata-client/blob/master/ZuluQuery.java | 19:34:44 |
msgilligan | Conceivably something like this could be added to Nixpkgs as an updater for Temurin, Zulu, etc. | 19:43:28 |
msgilligan | I'm not sure how people would feel about using Java to do this, but it could definitely be made to work. | 19:43:52 |
Infinidoge 🏳️⚧️ | We've been against Java updaters in the past, due to the annoyance in getting them running | 19:44:49 |
Infinidoge 🏳️⚧️ | I believe there was previously a Java-based OpenJDK updater that later got replaced | 19:45:07 |
Infinidoge 🏳️⚧️ |  Download image.png | 19:45:23 |
Infinidoge 🏳️⚧️ | Also not a lot of Java files in Nixpkgs | 19:45:27 |
emily | it was quite bad for bootstrapping | 19:47:26 |
emily | (so I rewrote it in Python) | 19:47:34 |
emily | in general Python or Bash are the lingua franca options for Nixpkgs tooling | 19:47:51 |
Infinidoge 🏳️⚧️ | For what it's worth, Temurin has an updater in generate-sources.py which could be used as a model for Zulu | 19:49:15 |
msgilligan | It looks nice! | 19:58:19 |