{"id":136168,"date":"2021-04-08T13:40:35","date_gmt":"2021-04-08T12:40:35","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=136168"},"modified":"2021-04-13T13:43:02","modified_gmt":"2021-04-13T12:43:02","slug":"kotlin-plugin-2021-1-veroeffentlicht","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/de\/kotlin\/2021\/04\/kotlin-plugin-2021-1-veroeffentlicht\/","title":{"rendered":"Kotlin-Plugin 2021.1 ver\u00f6ffentlicht: bessere IDE-Performance und erweiterte Refactoring-Unterst\u00fctzung"},"content":{"rendered":"<style>p > code {font-weight: 400; background: #f6f6f6}<\/style>\n<p>Das neueste Release von IntelliJ IDEA, Version 2021.1, enth\u00e4lt ein verbessertes Kotlin-Plugin. Dieses bietet eine schnellere Code-Completion und Syntaxhervorhebung, eine erweiterte IDE-Unterst\u00fctzung beim \u00c4ndern von Signaturen, eine verbesserte Auswertung von Eigenschaften beim Debugging und vieles mehr.<\/p>\n<p>Durch die Installation des neuen Plugins kommen Sie in den Genuss der folgenden Vorteile:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#code-completion-and-highlighting\">Schnellere Code-Completion und Syntaxhervorhebung<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#custom-getters-in-variables-view\">Auswertung von benutzerdefinierten Gettern direkt in der Variablenansicht<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#improved-change-signature-refactoring\">\u201eChange Signature\u201c-Refactoring mit verbesserter IDE-Unterst\u00fctzung<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#code-completion-for-type-parameters\">Code-Completion f\u00fcr Typargumente<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#class-diagrams-for-kotlin-code\">Klassendiagramme f\u00fcr Ihren Kotlin-Code<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#other-ide-improvements\">Weitere IDE-Verbesserungen<\/a><\/li>\n<\/ul>\n<h2>Automatisches Update auf die neue Version<\/h2>\n<p>IntelliJ IDEA erm\u00f6glicht ein automatisches Update auf die neue Version, sobald diese verf\u00fcgbar ist.<\/p>\n<p>Wenn Sie IntelliJ IDEA noch nicht nutzen, erhalten Sie automatisch das neueste Kotlin-Plugin, <a href=\"https:\/\/www.jetbrains.com\/idea\/download\/\" target=\"_blank\" rel=\"noopener\">wenn Sie die aktuelle Version von IntelliJ IDEA herunterladen<\/a>.<\/p>\n<p><a name=\"code-completion-and-highlighting\"><\/a><\/p>\n<h2>Schnelle Code-Completion und Syntaxhervorhebung<\/h2>\n<p>Manchmal macht das Schreiben von Code weniger Spa\u00df als es sollte \u2013 dies gilt insbesondere, wenn man bei der Syntaxhervorhebung oder der Code-Completion auf die IDE warten muss. Unser Ziel ist es, Syntaxhervorhebung und Code-Completion verz\u00f6gerungsfrei f\u00fcr Sie bereitzustellen.<\/p>\n<p>Das neue Kotlin-Plugin bietet erhebliche Verbesserungen in Bezug auf die Syntaxhervorhebung und Completion von Kotlin-Code.<\/p>\n<p>Gem\u00e4\u00df unseren Tests wurde die Performance bei der Hervorhebung um ca. 25% und bei der Code-Completion um mehr als 50% verbessert \u2013 dies bringt die Leistung viel n\u00e4her an das von Java gewohnte Niveau heran.<\/p>\n<div style=\"background-color: #f1f6fe; margin-bottom: 2px; padding: 5px; margin-right: 0%; text-align: left; min-height: px;\"><strong>Hinweis:<\/strong> Diese Zahlen basieren auf unseren Tests. Die Verbesserungen in Ihren Projekten liegen m\u00f6glicherweise unterhalb dieser Werte \u2013 auf jeden Fall sollte ein Leistungssprung zu sp\u00fcren sein.<\/div>\n<h3>Kotlin-Syntaxhervorhebung mit dem neuen Plugin<\/h3>\n<p>Hier sehen Sie einen Vergleich der Hervorhebungsgeschwindigkeit f\u00fcr Kotlin-Code zwischen der Vorg\u00e4ngerversion 2020.3 und der neuen Version 2021.1 des Kotlin-Plugins. Die Ergebnisse basieren auf unseren Benchmark-Tests, bei denen die Syntaxhervorhebung in komplexen Kotlin-Dateien \u00fcberpr\u00fcft wird.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/faster-code-highlighting.jpg\" alt=\"Schnellere Syntaxhervorhebung f\u00fcr Kotlin-Code\" \/><\/p>\n<h3>Code-Completion f\u00fcr Kotlin mit dem neuen Plugin<\/h3>\n<p>Hier ist ein Performancevergleich f\u00fcr die Kotlin-Code-Completion zwischen Version 2020.3 und Version 2021.1. Die Ergebnisse basieren auf unseren Benchmark-Tests, bei denen die Code-Completion in komplexen Kotlin-Dateien \u00fcberpr\u00fcft wird.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/faster-code-completion.jpg\" alt=\"Schnellere Completion f\u00fcr Kotlin-Code\" \/><\/p>\n<p><a name=\"improved-change-signature\"><\/a><\/p>\n<h2>Signatur\u00e4nderung mit verbesserter IDE-Unterst\u00fctzung<\/h2>\n<p>Wenn Sie das Refactoring <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/change-signature.html\" target=\"_blank\" rel=\"noopener\">Change Signature<\/a> in fr\u00fcheren Versionen des Kotlin-Plugins verwendet haben, sind Ihnen m\u00f6glicherweise Probleme und Einschr\u00e4nkungen aufgefallen, bei denen nicht immer klar war, was genau in diesen F\u00e4llen schiefgelaufen war.<\/p>\n<p>Durch eine Aktualisierung auf das neue Kotlin-Plugin profitieren Sie von mehr als <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-685\" target=\"_blank\" rel=\"noopener\">40 Fehlerkorrekturen und Verbesserungen beim Change-Signature-Refactoring<\/a>.<\/p>\n<p>Hier sind einige der wichtigsten Verbesserungen:<\/p>\n<ul>\n<li>Erkennung von weiteren F\u00e4llen, die zu fehlerhaftem Code f\u00fchren k\u00f6nnten.<\/li>\n<li>Korrekturen f\u00fcr das Refactoring von Vererbungen, auch bei <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-966\" target=\"_blank\" rel=\"noopener\">sprach\u00fcbergreifendem Refactoring<\/a>.<\/li>\n<li>Verbesserte Benutzererfahrung bei der Arbeit mit Eigenschaften.<\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-903\" target=\"_blank\" rel=\"noopener\">Eine weitere M\u00f6glichkeit, den Standard-Parameterwert zu deklarieren<\/a>.<\/li>\n<li>Korrekte Verarbeitung von Backticks.<\/li>\n<\/ul>\n<p><a name=\"custom-getters-in-variables-view\"><\/a><\/p>\n<h2>Auswertung von benutzerdefinierten Gettern direkt in der Variablenansicht<\/h2>\n<p>Nach unseren Untersuchungen sind beim Kotlin-Debugging signifikante Verbesserungen erforderlich, um eine bessere Entwicklererfahrung zu bieten. Wir haben bereits <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-44330\" target=\"_blank\" rel=\"noopener\">eine Reihe von Pl\u00e4nen<\/a> in Arbeit, um diese Verbesserungen zu realisieren.<\/p>\n<p>Diese Version enth\u00e4lt eine kleine, aber wichtige Verbesserung bei der Auswertung von Eigenschaften in der Ansicht <strong>Variables<\/strong>.<\/p>\n<p>Bisher waren w\u00e4hrend einer Debugging-Sitzung nur Eigenschaften ohne benutzerdefinierte Getter-Methode sowie solche mit einem <a href=\"https:\/\/kotlinlang.org\/docs\/properties.html#backing-fields\" target=\"_blank\" rel=\"noopener\">Unterst\u00fctzungsfeld<\/a> zu sehen. Eigenschaften mit einer benutzerdefinierten Getter-Methode wurden nicht angezeigt, da sie in der JVM als regul\u00e4re Methoden erscheinen. In Version 2021.1 des Kotlin-Plugins k\u00f6nnen Sie alle diese Eigenschaften sehen und bei Bedarf auswerten, indem Sie auf <code>get()<\/code> neben dem Objektnamen klicken.<\/p>\n<p>Wenn Sie beispielsweise den folgenden Code debuggen, k\u00f6nnen Sie mit <code>get()<\/code> den Wert von <code>versionString<\/code> abrufen:<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nclass LanguageVersion(val major: Int, val minor: Int) {\n    val isStable: Boolean\n        get() = major &lt;= 1 &amp;&amp; minor &lt;= 4\n    val isExperimental: Boolean\n        get() = !isStable\n    val versionString: String\n        get() = &quot;$major.$minor&quot;\n    override fun toString() = versionString\n}\nfun main() {\n    val version = LanguageVersion(1, 4)\n}\n<\/pre>\n<p>Im <strong>Debug<\/strong>-Fenster k\u00f6nnen Sie die Werte der Eigenschaften sehen:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/debugging-variables-view.png\" alt=\"Variablenansicht beim Debugging\" \/><\/p>\n<p>Wir w\u00fcrden uns sehr freuen, wenn Sie diese Funktion ausprobieren und uns in <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-19752\" target=\"_blank\" rel=\"noopener\">diesem Ticket<\/a> oder im Kommentarbereich dieses Blogbeitrags Feedback geben k\u00f6nnten.<\/p>\n<p><a name=\"code-completion-for-type-parameters\"><\/a><\/p>\n<h2>Code-Completion f\u00fcr Typargumente<\/h2>\n<p>Das neue Kotlin-Plugin bietet Code-Completion f\u00fcr Typargumente. Bisher musste man diesen Code manuell schreiben, ohne die Unterst\u00fctzungsfunktionen der IDE nutzen zu k\u00f6nnen.<\/p>\n<p>Jetzt schl\u00e4gt die Code-Completion Funktionen und Eigenschaften nach generischen Funktionen vor und stellt Typargumente bei Bedarf wieder her. Wenn Sie eine solche Funktion von der Liste ausw\u00e4hlen, erg\u00e4nzt die IDE den vorangehenden Code um das korrekte Typargument.<\/p>\n<p>Im folgenden Beispiel f\u00fcgt die IDE automatisch den Typ <code>&lt;String&gt;()<\/code> hinzu:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/code-completion-type-arguments.png\" alt=\"Code-Completion f\u00fcr Typargumente\"\/><\/p>\n<p>Nachdem Sie den Vorschlag der IDE \u00fcbernommen haben, erhalten Sie den folgenden Code:<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun typeArgumentsAtCodeCompletion() {\n    \/\/  Function definition from stdlib:\n    \/\/ public fun &lt;T&gt; emptyList(): List&lt;T&gt;\n    val listA: List&lt;String&gt; = emptyList() \/\/ T is inferred from the context (explicit variable type)\n    val listB: List&lt;String&gt; =\n        emptyList&lt;String&gt;().reversed() \/\/ type argument for emptyList() is required to evaluate expression type\n}\n<\/pre>\n<p><a name=\"class-diagrams-for-kotlin-code\"><\/a><\/p>\n<h2>\u00dcberblick \u00fcber Ihre Kotlin-Codestruktur dank Klassendiagrammen<\/h2>\n<p>Mit der neuen Version k\u00f6nnen Sie die Struktur Ihres Kotlin-Codes mithilfe von UML-Klassendiagrammen \u00fcberpr\u00fcfen. Um ein Diagramm zu erstellen, w\u00e4hlen Sie in der <strong>Project<\/strong>-Ansicht <strong>Diagrams | Show Diagram\u2026 | Kotlin Classes<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/kotlin-classes-uml-diagram.png\" alt=\"UML-Klassendiagramme f\u00fcr Kotlin-Code\" \/><\/p>\n<p><a name=\"other-ide-improvements\"><\/a><\/p>\n<h2>Weitere IDE-Verbesserungen<\/h2>\n<p>Da das Kotlin-Plugin und die IntelliJ-Plattform in derselben Codebasis zusammengef\u00fchrt wurden und neue Versionen jetzt gleichzeitig erscheinen, stehen Ihnen die folgenden M\u00f6glichkeiten zur Verf\u00fcgung, um Ihre Kotlin-Erfahrung optimieren:<\/p>\n<ul>\n<li>Sie k\u00f6nnen \u00fcber Gradle Run den einfachen Speicherprofiler verwenden, der beim Release von <a href=\"https:\/\/www.jetbrains.com\/idea\/whatsnew\/#debugger\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA 2020.3<\/a> vorgestellt wurde.<\/li>\n<li>Bei <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-826\" target=\"_blank\" rel=\"noopener\">problematischen Thread-Blocking-Aufrufen in Coroutinen<\/a> k\u00f6nnen Sie Warnungen erhalten.<\/li>\n<li>Bei der Verwendung von <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-679\" target=\"_blank\" rel=\"noopener\">dreifachen Anf\u00fchrungszeichen<\/a> und beim <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-855\" target=\"_blank\" rel=\"noopener\">Verketten von Zeichenfolgen<\/a> werden Probleme mit der Sprachinjektion vermieden.<\/li>\n<\/ul>\n<h2>Siehe auch<\/h2>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-plugin-20211.html\" target=\"_blank\" rel=\"noopener\">Das ist neu im Kotlin-Plugin 2021.1<\/a><\/li>\n<li>Das ist neu in IntelliJ IDEA 2021.1 \u2013 <a href=\"https:\/\/www.jetbrains.com\/idea\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">Dokumentation<\/a> und <a href=\"https:\/\/youtu.be\/YBmR0J3-r3o?t=567\" target=\"_blank\" rel=\"noopener\">Video<\/a>.<\/li>\n<\/ul>\n","protected":false},"author":1132,"featured_media":131722,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/kotlin\/136168"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/users\/1132"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/comments?post=136168"}],"version-history":[{"count":1,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/kotlin\/136168\/revisions"}],"predecessor-version":[{"id":136169,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/kotlin\/136168\/revisions\/136169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media\/131722"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media?parent=136168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/categories?post=136168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/tags?post=136168"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/cross-post-tag?post=136168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}