Ir al contenido

Tutorial · Java

JVM · Tiempo estimado: ~15 min · Iteraciones Karajan: 2–3

Este tutorial te lleva desde un directorio vacío hasta una feature mergeada en un pequeño proyecto CLI Java (Maven + JUnit 5). También cubre la variante Gradle — solo cambia el wrapper y el comando de tests.

Deberías haber completado el setup común: npm install -g karajan-code, kj init dentro del proyecto y un kj doctor verde. Si kj doctor está rojo, arréglalo antes — kj run se negará a arrancar.

También necesitas JDK 17+ (java --version) y Maven 3.8+ (mvn --version) o un wrapper de Gradle.

  1. Bootstrapea el proyecto.

    Ventana de terminal
    mkdir hello-java && cd hello-java
    mvn -q archetype:generate -DgroupId=dev.kj.hello \
    -DartifactId=hello-java -DarchetypeArtifactId=maven-archetype-quickstart \
    -DinteractiveMode=false
    mv hello-java/* . && rm -rf hello-java
    git init -b main && git add -A && git commit -m "chore: scaffold"

    Abre pom.xml y sube JUnit a 5, más añade el plugin surefire para que mvn test ejecute JUnit 5:

    <properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <junit.version>5.10.2</junit.version>
    </properties>
    <dependencies>
    <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
  2. Inicializa Karajan en el repo.

    Ventana de terminal
    kj init
    kj doctor

    kj init crea .karajan/ y escribe la configuración del orquestador; kj doctor confirma que los CLIs de los agentes, Docker, Ollama, los puertos están sanos y detecta el JDK + build tool.

  3. Describe la feature en lenguaje natural.

    Sin fichero de spec. Sin JSON. Solo la tarea como se la dirías a un compañero:

    Ventana de terminal
    kj run "Añade un método estático 'greet(String name)' a \
    src/main/java/dev/kj/hello/Greeter.java que devuelva 'Hello, <name>!'. \
    Añade un test JUnit 5 en src/test/java/dev/kj/hello/GreeterTest.java \
    que verifique la salida para el nombre 'world'." \
    --methodology tdd \
    --coder claude \
    --reviewer codex \
    --reviewer-fallback claude \
    --max-iterations 5
  4. Mira el run en el HU Board.

    Abre http://localhost:4000 en otra pestaña mientras el pipeline corre. Verás, en tiempo real:

    • Cada rol activándose (planner → coder → tester → reviewer).
    • El prompt y la respuesta exactos de cada llamada al agente.
    • El diff tras cada iteración.
    • La salida del surefire de Maven (o del test report de Gradle) línea a línea.
    • El veredicto del reviewer.

    También puedes hacer tail del mismo trace en el terminal:

    Ventana de terminal
    kj tail
  5. Inspecciona el resultado.

    Ventana de terminal
    git status
    git diff --stat
    mvn test

    Salida esperada de mvn test:

    [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    [INFO] BUILD SUCCESS
  6. Mergea.

    Karajan no hace push ni merge por ti por defecto — esa decisión es tuya. Cuando estés contento con el diff:

    Ventana de terminal
    git checkout -b feat/greeter
    git add -A && git commit -m "feat: add Greeter.greet(name)"
    git push -u origin feat/greeter
    gh pr create --fill

    O, si quieres que Karajan abra la PR por ti, añade --auto-commit --auto-pr a la invocación kj run.

Mismo flow, distinta herramienta de build. Bootstrapea con el wrapper de Gradle:

Ventana de terminal
mkdir hello-java && cd hello-java
gradle init --type java-application --dsl kotlin --test-framework junit-jupiter
git init -b main && git add -A && git commit -m "chore: scaffold"

Y lanza la misma invocación kj run. Karajan auto-detecta build.gradle.kts y usa ./gradlew test en lugar de mvn test.