CLI avec Picocli et GraalVM

---

Qui ?

Nicolas Peters

Lead Tech

@nicolaspeters

github.com/npeters

---

Term Power !

---

picocli: a mighty tiny command line interface

---

picocli

---

picocli: "git like"

---

Term: Ansi et Terminfo

---

jline

  • 🧰 du term
  • Prompt interactif
  • GNU Readline
  • jshell, sbt, idea
  • Créé 2002
  • ---

    NailGun: la CLI en mode Client/Serveur

  • un Daemon en Java
  • le client écrie en C
  • lagom, buckbuild, facebook
  • Créé 2004
  • ---

    GraalVM: Architecture

    ---

    GraalVM

    ---

    GraalVM: Substitution

    ---

    GraalVM: on génère un binaire! 🤔 mais alors 😱

    👍

  • Startup time ⚡️
  • mémoire/cpu 😍️
  • 😘 🐳🐳🐳
  • 👎

  • Pas de JVMTI/JMX 🙈 😨
  • Compilation ⏱ 🥺
  • Config / Substitution 😥
  • Segfault 💥 et TestIT
  • ---

    La quête du Graal

    ---

    Références

  • picocli http://picocli.info
  • capsule http://www.capsule.io/
  • ANSI https://en.wikipedia.org/wiki/ANSI_escape_code
  • jansi https://github.com/fusesource/jansi
  • progressbar http://tongfei.me/progressbar
  • jline https://github.com/jline/jline3
  • NailGun https://github.com/facebook/nailgun
  • GraalVM https://www.graalvm.org/
  • Agent GraalVM https://github.com/oracle/graal/blob/master/substratevm/CONFIGURE.md
  • Build your own Command Line http://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html
  • SDKMAN https://sdkman.io/
  • Demoit https://github.com/dgageot/demoit
  • DoomFire https://github.com/chriswhocodes/DoomFire
  • ---
    Merci / Question