Webentwicklung: Web-Framework Ktor 2.0 erleichtert das Erstellen von Plug-ins

Das Entwicklerteam hinter JetBrains Ktor führt mit dem Update unter anderem einheitliche Namenskonventionen für Pakete und Module ein.

In Pocket speichern vorlesen Druckansicht

(Bild: nattaphol phromdecha/Shutterstock.com)

Lesezeit: 2 Min.
Inhaltsverzeichnis

Der tschechische Tool-Hersteller JetBrains hat mit Version 2.0 die zweite Hauptversion des Webframeworks Ktor veröffentlicht. Laut Blogbeitrag lag die Entwicklungszeit für Version 2.0 bei knapp einem Jahr. Das Team hat diese Zeitspanne offenbar genutzt, um neue Funktionen zu implementieren, Wartungsarbeiten durchzuführen und alte Entscheidungen zu überarbeiten.

Im Fokus des Updates steht die Vereinfachung der Erweiterbarkeit des Webframeworks. Bisherige Features wurden nun offenbar in Plug-ins umbenannt, sodass das Webframework ab sofort auf einer Plug-in-Architektur aufbaut. Gemäß Blogbeitrag sorgte das Umbenennen bei manchen Nutzerinnen und Nutzern für Verwirrung hinsichtlich der Struktur des Architekturmodells. Daher hat das Ktor-Entwicklerteam mit Version 2.0 die Extensibility-API überarbeitet, was das Erstellen von Plug-ins erleichtern soll.

Das folgende Beispiel aus dem Blogbeitrag zeigt API-Code aus Version 1.x:

companion object Feature : ApplicationFeature<ApplicationCallPipeline, CustomHeader.Configuration, CustomHeader> {
    override val key = AttributeKey<CustomHeader>("CustomPlugin")
    override fun install(pipeline: ApplicationCallPipeline, configure: Configuration.() -> Unit): CustomHeader {
       val configuration = Configuration().apply(configure)

       val feature = CustomHeader(configuration)

       pipeline.intercept(ApplicationCallPipeline.Call) {

            feature.intercept(this)
        }

       return feature
    }
}

Dazu im Vergleich Version 2.0:

val myCustomPlugin = createApplicationPlugin("CustomPlugin") {
    onCall {

    }

    onCallReceive {

    }

    onCallRespond {

    }
}

Vorhandene Plug-ins wurden mithilfe der neuen API konvertiert. Eine Dokumentation zur Plug-in-Entwicklung bietet weitere Informationen zu der Neuerung. Geplant ist offenbar eine Möglichkeit, Plug-ins auch auf dem JetBrains-Marketplace zu veröffentlichen und zu nutzen.

Ktor unterstützt ab sofort serverseitig Kotlin/Nativ zusätzlich zur virtuellen Maschine GraalVM (seit Version 1.6 unterstützt). Zum jetzigen Zeitpunkt ist die Unterstützung auf das Verwenden der CIO-Engine beschränkt. Das Entwicklerteam empfiehlt die Nutzung des Kotlin/Native-Speichermodells.

Die Ktor-Entwickler haben mit der Veröffentlichung der neuen Hauptversion die Möglichkeit genutzt, neue Namenskonventionen für Packages und Module einzuführen. Das Präfix "Server" soll serverseitige Elemente kennzeichnen; "Client" kennzeichnet die clientseitigen Pakete und Module. Gemeinsame Elemente erhalten das Präfix "no". Plug-ins sind darüber hinaus ab sofort in eigenen Modulen enthalten.

Eine Mapping-Dokumentation soll Nutzer bei der Migration auf die neue Hauptversion unterstützen. Darüber hinaus bietet JetBrains ein Migrationstool mit IntelliJ IDE, das dazu dient, Ktor-Projekte automatisch zu migrieren. Es gilt zu beachten, dass Kotlin-Multiplattform-Projekte derzeit nicht unterstützt werden. Weitere Informationen zu Ktor 2.0 bietet der Beitrag auf dem JetBrains-Blog.

(mdo)