docs: restructure domain documentation and update references
Implemented a standardized folder structure for domain documentation to improve clarity and maintainability. Migrated existing files to the new structure, updated links in related documentation, and added README files for navigation and guidance.
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
# Gradle Kotlin DSL Primer
|
||||
|
||||
**Quelle:** [Original Gradle Documentation](https://docs.gradle.org/current/userguide/kotlin_dsl.html)
|
||||
**Kontext:** Dieses Dokument dient als Referenz für die im Projekt verwendete Gradle Kotlin DSL. Es fasst die wichtigsten Konzepte und Syntax-Elemente zusammen.
|
||||
|
||||
---
|
||||
|
||||
Gradle’s Kotlin DSL offers an alternative to the traditional Groovy DSL, delivering an enhanced editing experience in supported IDEs.
|
||||
|
||||
## Key Concepts
|
||||
|
||||
### Script File Names
|
||||
* Groovy DSL: `.gradle`
|
||||
* Kotlin DSL: `.gradle.kts`
|
||||
|
||||
To activate the Kotlin DSL, use the `.gradle.kts` extension for your build scripts, settings file (`settings.gradle.kts`), and initialization scripts (`init.gradle.kts`).
|
||||
|
||||
### Type-safe Model Accessors
|
||||
The Kotlin DSL replaces Groovy's dynamic resolution with type-safe model accessors for elements contributed by plugins (configurations, tasks, extensions). This provides better IDE support (code completion, refactoring).
|
||||
|
||||
**Example:**
|
||||
```kotlin
|
||||
plugins {
|
||||
`java-library`
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// 'api', 'implementation' are type-safe accessors
|
||||
api("junit:junit:4.13")
|
||||
implementation("org.apache.commons:commons-lang3:3.12.0")
|
||||
}
|
||||
|
||||
tasks {
|
||||
// 'test' is a type-safe accessor for the Test task
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Accessors are available for elements contributed by plugins applied in the `plugins {}` block. For elements created dynamically later in the script, you must fall back to string-based lookups:
|
||||
```kotlin
|
||||
configurations.create("custom")
|
||||
|
||||
dependencies {
|
||||
"custom"("com.google.guava:guava:32.1.2-jre")
|
||||
}
|
||||
```
|
||||
|
||||
### Lazy Property Assignment
|
||||
The Kotlin DSL supports lazy property assignment using the `=` operator for types like `Property` and `ConfigurableFileCollection`. This is the preferred way over the `set()` method.
|
||||
|
||||
```kotlin
|
||||
// Instead of:
|
||||
javaVersion.set(JavaLanguageVersion.of(17))
|
||||
|
||||
// Use:
|
||||
javaVersion = JavaLanguageVersion.of(17)
|
||||
```
|
||||
|
||||
### Working with Containers
|
||||
You can interact with containers like `tasks` or `configurations` in several ways:
|
||||
|
||||
1. **Container API (using `named` and `register`):**
|
||||
```kotlin
|
||||
tasks.named<Test>("test") {
|
||||
testLogging.showExceptions = true
|
||||
}
|
||||
tasks.register<Copy>("myCopy") {
|
||||
from("source")
|
||||
into("destination")
|
||||
}
|
||||
```
|
||||
|
||||
2. **Delegated Properties (using `by existing` and `by registering`):**
|
||||
```kotlin
|
||||
val test by tasks.existing(Test::class) {
|
||||
testLogging.showStackTraces = true
|
||||
}
|
||||
val myCopy by tasks.registering(Copy::class) {
|
||||
from("source")
|
||||
into("destination")
|
||||
}
|
||||
```
|
||||
|
||||
### Extra Properties
|
||||
Access project or task-level extra properties via delegated properties:
|
||||
```kotlin
|
||||
// Define an extra property
|
||||
val myNewProperty by extra("initial value")
|
||||
|
||||
// Read an existing extra property
|
||||
val myExtraProperty: String by extra
|
||||
```
|
||||
|
||||
### Kotlin DSL Plugin (`kotlin-dsl`)
|
||||
This plugin is essential for developing build logic in Kotlin (e.g., in `buildSrc` or for convention plugins). It automatically applies the Kotlin plugin and adds necessary dependencies like `kotlin-stdlib` and `gradleKotlinDsl()`.
|
||||
|
||||
```kotlin
|
||||
// buildSrc/build.gradle.kts
|
||||
plugins {
|
||||
`kotlin-dsl`
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
```
|
||||
|
||||
*(Dies ist eine gekürzte Zusammenfassung. Das Originaldokument enthält detailliertere Informationen.)*
|
||||
@@ -0,0 +1,72 @@
|
||||
# Tech-Stack Referenz: Kotlin 2.3.0 & Java 25 (KMP)
|
||||
|
||||
**Kontext:** Dieses Dokument beschreibt die notwendigen Konfigurationen, um Kotlin 2.3.0 mit Java 25 in einem Kotlin Multiplatform (KMP) Projekt mit Gradle 9.x zu verwenden.
|
||||
|
||||
---
|
||||
|
||||
### 1. Kern-Spezifikationen
|
||||
|
||||
| Komponente | Version | Status |
|
||||
| --- |----------| --- |
|
||||
| **Kotlin** | `2.3.0` | Stabil (K2 Compiler standardmäßig aktiv) |
|
||||
| **Java (JDK)** | `25` | LTS (Long-Term Support) |
|
||||
| **Gradle** | `9.2.1` | Erforderlich für JDK 25 Support |
|
||||
| **Android Plugin (AGP)** | `8.8.0+` | Empfohlen für Gradle 9.x Kompatibilität |
|
||||
|
||||
---
|
||||
|
||||
### 2. Gradle Konfiguration (`build.gradle.kts`)
|
||||
|
||||
Für ein **Kotlin Multiplatform (KMP)** Projekt ist die Java Toolchain-Konfiguration entscheidend, um sicherzustellen, dass der Kotlin-Compiler und die JVM-Targets Java 25 korrekt ansprechen.
|
||||
|
||||
```kotlin
|
||||
plugins {
|
||||
kotlin("multiplatform") version "2.3.0"
|
||||
id("com.android.library") version "8.8.0" // Falls Android Target genutzt wird
|
||||
}
|
||||
|
||||
kotlin {
|
||||
// Globale Toolchain-Definition für alle JVM/Android Targets
|
||||
jvmToolchain {
|
||||
languageVersion.set(JavaLanguageVersion.of(25))
|
||||
}
|
||||
|
||||
jvm {
|
||||
compilations.all {
|
||||
compilerOptions.configure {
|
||||
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_25)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Weitere Targets (Beispiel iOS)
|
||||
iosArm64()
|
||||
iosSimulatorArm64()
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Gradle Wrapper Update
|
||||
|
||||
Damit das Projekt Java 25 erkennt, muss der Wrapper auf dem neuesten Stand sein:
|
||||
|
||||
**Terminal-Befehl:**
|
||||
```bash
|
||||
./gradlew wrapper --gradle-version 9.2.1 --distribution-type all
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. Wichtige Kompatibilitätshinweise
|
||||
|
||||
* **IDE-Version:** IntelliJ IDEA 2025.3 (oder neuer) wird für die volle Unterstützung von JDK 25 und dem Kotlin 2.3.0 Plugin empfohlen.
|
||||
* **K2 Compiler:** Kotlin 2.3.0 nutzt den K2-Compiler.
|
||||
* **Bytecode:** Java 25 Bytecode wird nur generiert, wenn das `jvmTarget` explizit auf `25` gesetzt ist.
|
||||
|
||||
---
|
||||
|
||||
### 5. Bekannte Features in diesem Setup
|
||||
|
||||
* **Java 25 Features:** Unterstützung für die finalen Versionen von *Scoped Values* und *Structured Concurrency*.
|
||||
* **Kotlin 2.3.0 Features:** Nutzung von `explicit backing fields` und dem verbesserten `unused return value` Checker.
|
||||
@@ -0,0 +1,72 @@
|
||||
# What's new in Kotlin 2.3.0 | Kotlin Documentation
|
||||
|
||||
**Quelle:** [Original Kotlin Documentation](https://kotlinlang.org/docs/whatsnew23.html)
|
||||
**Datum des Dokuments:** 16. Dezember 2025
|
||||
**Kontext:** Dieses Dokument dient als Referenz für die im Projekt verwendete Kotlin-Version.
|
||||
|
||||
---
|
||||
|
||||
The Kotlin 2.3.0 release is out! Here are the main highlights:
|
||||
|
||||
* **Language:** More stable and default features, unused return value checker, explicit backing fields, and changes to context-sensitive resolution.
|
||||
* **Kotlin/JVM:** Support for Java 25.
|
||||
* **Kotlin/Native:** Improved interop through Swift export, faster build time for release tasks, C and Objective-C library import in Beta.
|
||||
* **Kotlin/Wasm:** Fully qualified names and new exception handling proposal enabled by default, as well as new compact storage for Latin-1 characters.
|
||||
* **Kotlin/JS:** New experimental suspend function export, `LongArray` representation, unified companion object access, and more.
|
||||
* **Gradle:** Compatibility with Gradle 9.0 and a new API for registering generated sources.
|
||||
* **Compose compiler:** Stack traces for minified Android applications.
|
||||
* **Standard library:** Stable time tracking functionality and improved UUID generation and parsing.
|
||||
|
||||
## Language
|
||||
|
||||
Kotlin 2.3.0 focuses on feature stabilization, introduces a new mechanism for detecting unused return values, and improves context-sensitive resolution.
|
||||
|
||||
### Stable features
|
||||
|
||||
The following features have now graduated to Stable:
|
||||
* Support for nested type aliases
|
||||
* Data-flow-based exhaustiveness checks for `when` expressions
|
||||
|
||||
### Features enabled by default
|
||||
* Support for `return` statements in expression bodies with explicit return types is now enabled by default.
|
||||
|
||||
### Experimental: Unused return value checker
|
||||
Kotlin 2.3.0 introduces the unused return value checker to help prevent ignored results. It warns you whenever an expression returns a value other than `Unit` or `Nothing` and isn't used.
|
||||
|
||||
### Experimental: Explicit backing fields
|
||||
A new syntax for explicitly declaring the underlying field that holds a property's value, simplifying the common backing properties pattern.
|
||||
|
||||
## Kotlin/JVM: Support for Java 25
|
||||
Starting with Kotlin 2.3.0, the compiler can generate classes containing Java 25 bytecode.
|
||||
|
||||
## Kotlin/Native
|
||||
* **Improved Swift Export:** Direct mapping for native enum classes and variadic function parameters.
|
||||
* **C and Objective-C Library Import is in Beta:** Better diagnostics for binary compatibility issues.
|
||||
* **Faster Build Time:** Up to 40% faster release builds, especially for iOS targets.
|
||||
|
||||
## Kotlin/Wasm
|
||||
* **Fully Qualified Names Enabled by Default:** `KClass.qualifiedName` is now available at runtime without extra configuration.
|
||||
* **Compact Storage for Latin-1 Characters:** Reduces metadata and binary size.
|
||||
* **New Exception Handling for `wasmWasi`:** Enabled by default for better compatibility with modern WebAssembly runtimes.
|
||||
|
||||
## Kotlin/JS
|
||||
* **Experimental Suspend Function Export:** Export suspend functions directly to JavaScript using `@JsExport`.
|
||||
* **`BigInt64Array` for `LongArray`:** Simplifies interop with JavaScript APIs that use typed arrays.
|
||||
* **Unified Companion Object Access:** Consistent access to companion objects in interfaces across all JS module systems.
|
||||
* **`@JsStatic` in Interfaces:** Now supported in interfaces with companion objects.
|
||||
* **`@JsQualifier` on individual declarations:** Can now be applied to individual functions and classes.
|
||||
* **`@JsExport.Default`:** New annotation for generating JavaScript default exports.
|
||||
|
||||
## Gradle
|
||||
* Fully compatible with Gradle 7.6.3 through 9.0.0.
|
||||
* Minimum supported Android Gradle plugin version is now 8.2.2.
|
||||
* New experimental API for registering generated sources.
|
||||
|
||||
## Standard library
|
||||
* **Stable Time Tracking:** `kotlin.time.Clock` and `kotlin.time.Instant` are now stable.
|
||||
* **Improved UUID Generation:** New functions like `Uuid.parseOrNull()`, `Uuid.generateV4()`, and `Uuid.generateV7()`.
|
||||
|
||||
## Compose compiler
|
||||
* **Stack Traces for Minified Android Apps:** The compiler now outputs ProGuard mappings for Compose stack traces when applications are minified by R8.
|
||||
|
||||
*(Dies ist eine gekürzte Zusammenfassung. Das Originaldokument enthält detailliertere Informationen und Code-Beispiele.)*
|
||||
Reference in New Issue
Block a user