Files

52 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Toolchain für den technischen Prototyp
Stand 2026-09-08. Auswahl und publizierte Artefakte sind geprüft; ein erfolgreicher Projektbuild oder native Integration wird hier noch nicht behauptet. Der maschinenlesbare Versionssatz liegt in `gradle/libs.versions.toml`.
| Bestandteil | Festlegung | Begründung / Lizenzfamilie |
|---|---|---|
| Vaadin Flow / Gradle Plugin | 25.2.7 | veröffentlichte stabile Version; Core-Komponenten Apache-2.0 |
| Spring Boot | 4.1.1 | Vaadin-Kompatibilitätslinie; Apache-2.0 |
| Kotlin JVM + Spring Plugin | 2.3.21 | Version des Boot-BOM; Apache-2.0 |
| Gradle Wrapper | 9.3.0 | innerhalb Kotlin-Kompatibilitätsmatrix; Java 25 Buildlaufzeit; Apache-2.0 |
| GraalVM Community (optional zurückgestellt) | 25.3.4.1 / JDK 25.0.4.1 | Community-Distribution, nicht Oracle GFTC; GPLv2 mit Classpath-Ausnahme und mitgelieferte Drittanbieterhinweise |
| JVM-Bytecode-Ziel | 21 | Flow-Mindestniveau; native Buildlaufzeit dennoch GraalVM 25 |
| Native Build Tools | 1.1.8 | von Boot 4.1.1 dokumentierte Version; Apache-2.0 |
| H2 | 2.4.240 | Boot-BOM, File-Modus; MPL-2.0 oder EPL-1.0 |
| Liquibase | 4.33.0 | Apache-2.0; ausdrücklicher Override der Boot-Vorgabe 5.0.3 |
| JUnit Jupiter/Platform | Boot-BOM (Jupiter 6.0.3) | EPL-2.0; keine konkurrierende manuelle JUnit-Plattformversion |
| Cucumber JVM | 7.34.8 | ausführbare englische Gherkin-Szenarien; MIT |
| Playwright Java | 1.62.0 | freie Browserautomatisierung; Apache-2.0 |
Keine Vaadin-TestBench-/kommerziellen Komponenten als Voraussetzung verwenden. `vaadin-core` statt ungeprüftem Gesamtpaket auswählen. Playwright ist für deterministische Browserprüfung vorgesehen; die verlangte echte Chrome/Firefox- und Android-Abnahme bleibt zusätzlich bestehen. Vollständige transitive Lizenzprüfung erfolgt am tatsächlich aufgelösten Buildgraphen vor Freigabe, nicht bloß anhand dieser Tabelle.
## Reproduzierbare Distributionen
Gradle: https://services.gradle.org/distributions/gradle-9.3.0-bin.zip
SHA-256: `0d585f69da091fc5b2beced877feab55a3064d43b8a1d46aeb07996b0915e0e0` (offizielle `.sha256` abgerufen). Im Wrapper übernehmen.
GraalVM Community Linux x64: https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-25.3.4.1/graalvm-community-jdk-25i3-25.0.4.1_linux-x64_bin.tar.gz
Für den Imagebau die zugehörige `.sha256` herunterladen, prüfen und im Buildmanifest fixieren. CPU-Baseline und glibc-Kompatibilität auf Bookworm tatsächlich testen; kein `-march=native` für das Deployment voraussetzen. Node-Version entsprechend Vaadin-Buildanforderungen im Prototyp fixieren und dokumentieren; die vom Plugin verwaltete Version ist gegenüber einem zufälligen Host-Node zu bevorzugen.
## Bewusste Ausnahme: Liquibase
Boot verwaltet Liquibase 5.0.3. Liquibase bezeichnet Versionen ab 5 als FSL-1.1-ALv2; sie erfüllen die hier vereinbarte reine Open-Source-Auswahl derzeit nicht. Daher 4.33.0 explizit erzwingen und die tatsächliche Dependency Resolution prüfen. SQL-Changelogs und H2 bleiben unverändert das Ziel. Kompatibilität mit Boot-Autokonfiguration und nativer Ressourcenregistrierung ist ein konkretes Gate des db-spike. Falls dieses Gate scheitert, keine stille Umstellung auf FSL oder einen anderen Migrationstreiber.
## Nachweise
- https://vaadin.com/docs/latest/compatibility
- https://repo.maven.apache.org/maven2/com/vaadin/vaadin-bom/maven-metadata.xml (25.3.0-beta1 ausgeschlossen)
- https://docs.spring.io/spring-boot/system-requirements.html (Gradle 8.14+/9.x, GraalVM 25, Native Build Tools 1.1.8)
- https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-dependencies/4.1.1/spring-boot-dependencies-4.1.1.pom (Kotlin, H2, JUnit und Liquibase-Versionen direkt gelesen)
- https://kotlinlang.org/docs/gradle-configure-project.html (Kotlin 2.3.202.3.21 mit Gradle bis 9.3.0)
- https://api.github.com/repos/graalvm/graalvm-ce-builds/releases/latest (zum Prüfzeitpunkt graal-25.3.4.1, konkrete URL oben fixiert)
- https://docs.liquibase.com/oss/user-guide-4-33/faq
- https://www.liquibase.com/blog/liquibase-community-for-the-future-fsl
Die Prüfung dieses Knotens umfasst Auswahl und Versions-/Lizenzgrundlagen. Native Funktion, aufgelöste transitive Abhängigkeiten und Tests sind getrennte folgende Arbeitspakete.
## Aktuelle JVM-Laufzeitentscheidung
Seit der Nutzerentscheidung vom 2026-09-08 wird ein Produktions-JAR mit eigenem Temurin JDK 25.0.4.1+1 ausgeliefert. Quelle und SHA-256 stehen in packaging/jdk.properties; Quelle der Metadaten ist die offizielle Adoptium-API für Linux x64/JDK 25. Temurin ist OpenJDK (GPLv2 mit Classpath-Ausnahme); die Lizenzdateien werden mit dem JDK installiert. Buildimage und remote-Installer verwenden dieselbe Fixierung. GraalVM bleibt optional, seine Native-Image-Tests sind kein Freigabekriterium der ersten Version.