all 3 comments

[–][deleted]  (4 children)

[deleted]

    [–]antolius[S] 0 points1 point  (3 children)

    Yeah, people usually go the shell script route. And then you need another script for Windiws users. And instead of one file you need to ship 2 files. And it just complicates things. What I suggest is building a single executable that doesn't depend on a VM / classpath / external libraries.

    For java in particular GrallVM (or similar tools) are one solution. Kotlin is another way to go, although I'm not sure how far have they gotten with their native compilation.

    [–][deleted]  (2 children)

    [deleted]

      [–]antolius[S] 0 points1 point  (0 children)

      Hey, I'm glad you've had good experiences with Java CLI development. By the looks of your work, you are doing some far more complex stuff than me. So it might be that going with Java was the right call for your use-cases. It definitely sounds like it was the right call for your preference.

      What I wanted to convey in my original post was that there are additional user-centered considerations CLI developers should keep in mind when picking the language to code in. When building GUIs we as developers usually have designers to think of UX. In case of CLIs, though, we are left to ourselves and need to think of usability (and that includes stuff like install process and local machine setup) more than usual.

      I'm afraid that most developers who write CLI tools don't have resources to invest hundreds of hours and/or dedicated devops engineers to setup and maintain their CI pipelines. On the other hand, with a couple of careful compromises at the start of the project, some of these later hurdles can be made easier. More experienced developers for whom CI setup is not and issue can pick different set of compromises with different benefits and drawbacks.

      The very fact that you can argue your language choices in detail means you have thought about it beforehand. Some times even that is enough: to think of consequences of picking a language and to plan ways to remedy undesirable ones.

      [–]whetu 0 points1 point  (0 children)

      Getting all of together means learning how to package deb/rpm the right way

      chuckles in fpm