{"id":15630,"date":"2019-04-01T08:57:33","date_gmt":"2019-04-01T06:57:33","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=15630"},"modified":"2026-03-17T07:59:20","modified_gmt":"2026-03-17T06:59:20","slug":"kotlin-vs-java-microservices","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/","title":{"rendered":"Kotlin vs. Java am Beispiel Microservices"},"content":{"rendered":"<p>Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein. Viele aus Java bekannte Probleme m\u00f6chte Kotlin angehen und l\u00f6sen. Der Hype geht insgesamt in die Richtung, dass Kotlin wesentlich besser sei als Java. Gegens\u00e4tzlich dazu gibt es Erfahrungsberichte, die aussagen, dass Java deutlich performanter sei als Kotlin. Zu diesem Thema schreibe ich eine Abschlussarbeit in einem Bachelorstudium der Wirtschaftsinformatik. Die Arbeit tr\u00e4gt den Titel: \u201eKotlin vs. Java anhand von Microservices\u201c und dieser Blogeintrag ist ein Ergebnisbericht dieser Arbeit. Eine Motivation meiner Arbeit ist es, mehr Klarheit in das oben genannte Thema zu bringen und eine begr\u00fcndete Meinung dazu zu geben.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Java\" >Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Kotlin\" >Kotlin<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Microservices\" >Microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Kotlin-vs-Java-Allgemeiner-Vergleich\" >Kotlin vs. Java: Allgemeiner Vergleich<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Kotlin-vs-Java-Vergleich-mit-Microservices\" >Kotlin vs. Java: Vergleich mit Microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Fazit-und-Zusammenfassung\" >Fazit und Zusammenfassung<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#tldr\" >tl;dr<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Referenzen\" >Referenzen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#Weiterlesen\" >Weiterlesen<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Java\"><\/span>Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Java ist eine objektorientierte, statisch typisierte Programmiersprache. Sie wurde 1995 ver\u00f6ffentlicht und ist eine der bekanntesten und meistgenutzten Programmiersprachen. Java funktioniert plattformunabh\u00e4ngig, da die Java Virtual Machine (JVM), die f\u00fcr verschiedene Betriebssysteme angeboten wird. Sie l\u00e4dt den Bytecode von Java und konvertiert ihn f\u00fcr das jeweilige Betriebssystem. Neben Java k\u00f6nnen verschiedene andere Programmiersprachen auf die JVM kompilieren, so unter anderem das neuere Kotlin.<\/p>\n<p>Relevante Features von Java, besonders im Vergleich zu Kotlin relevant:<\/p>\n<ul>\n<li>Java soll einfach und leicht erlernbar sein.<\/li>\n<li>Java ist objektorientiert. (Es gibt keine M\u00f6glichkeit, in Java Code au\u00dferhalb einer Klasse zu schreiben.)<\/li>\n<li>Java ist verteilt.<\/li>\n<li>Java ist interpretiert.<\/li>\n<li>Java ist robust.<\/li>\n<li>Java ist sicher.<\/li>\n<li>Java ist plattformunabh\u00e4ngig.<\/li>\n<li>Java ist performant.<\/li>\n<li>Java ist multithreaded.<\/li>\n<li>Java ist eine dynamische Sprache.<\/li>\n<\/ul>\n<p>Probleme von Java, welcher sich Kotlin annehmen m\u00f6chte:<\/p>\n<ul>\n<li>Einfache Datentypen.<\/li>\n<li>NullPointer.<\/li>\n<li>Checked Exceptions.<\/li>\n<li>Keine funktionale Programmierung.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Kotlin\"><\/span>Kotlin<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Die Programmiersprache Kotlin wurde 2016 vom Unternehmen JetBrains ver\u00f6ffentlicht. Sehr viel Aufsehen bekommt Kotlin, seit Google am 17. Mai 2017 bekannt gegeben hat, dass Kotlin nun offiziell f\u00fcr die Android-Entwicklung unterst\u00fctzt wird.<\/p>\n<p>Kotlin l\u00e4uft wie Java auf der JVM und profitiert daher von deren Plattformunabh\u00e4ngigkeit. Weiterhin ist Kotlin zu 100% mit Java kompatibel: Das hei\u00dft, es ist m\u00f6glich, in einem Projekt die Programmiersprache von Java zu Kotlin zu wechseln \u2013 und umgekehrt. Einige Features von Kotlin, besonders im Unterschied zu Java:<\/p>\n<ul>\n<li>Extension functions<\/li>\n<li>Null-safety<\/li>\n<li>Smart casts<\/li>\n<li>String templates<\/li>\n<li>Singleton<\/li>\n<li>Data classes<\/li>\n<li>Operator overloading<\/li>\n<li>Type inference<\/li>\n<\/ul>\n<p>Diese Features sind nat\u00fcrlich nicht Kotlin-exklusiv, sondern in anderen Programmiersprachen bereits vertreten.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Microservices\"><\/span>Microservices<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Die Microservices stellen eine vergleichsweise neue Architekturform in der Software-Entwicklung dar. Im Gegensatz zu klassischer monolithischer Architektur werden mehrere kleinere Dienste entwickelt, die zusammen ein gr\u00f6\u00dferes Software-System ergeben. Bekannte Beispiele daf\u00fcr sind die Plattformen Amazon oder Netflix, wo sich jeder Service auf nur eine Aufgabe beschr\u00e4nkt.<\/p>\n<p>Neben Vorteilen wie Skalierbarkeit und Ausfallsicherheit bringen Microservices auch\u00a0einige Herausforderungen mit sich. So ist das Testen von vielen kleinen Services schwieriger als das Testen eines gro\u00dfen monolithischen Systems. Auch die Sicherheit f\u00fcr viele Services zu gew\u00e4hrleisten sowie die Kommunikation und den Austausch von Daten gut zu bewerkstelligen, sind Herausforderungen welche die Microservice-Architektur mit sich bringt.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kotlin-vs-Java-Allgemeiner-Vergleich\"><\/span>Kotlin vs. Java: Allgemeiner Vergleich<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der Vergleich der beiden Programmiersprachen Java und Kotlin erfolgt in zwei Abschnitten: Zum einen gibt es den Syntaxvergleich, der rein oberfl\u00e4chlich die Syntax der beiden Sprachen nach Kriterien wie Lesbarkeit, Lines of Code und Erlernbarkeit vergleicht. Zum anderen gibt es eine Bewertung der Features von Kotlin unter dem Aspekt, wie diese Features Kotlin von Java unterscheiden. Anschlie\u00dfend an den Vergleich und die Bewertung werden die Features daraufhin untersucht, ob sie im Zusammenhang mit der Microservice-Architektur Vorteile bringen.<\/p>\n<p>Schon ein kurzer Blick gen\u00fcgt um festzustellen, dass Kotlin in den meisten F\u00e4llen eine k\u00fcrzere Syntax hat als Java. So kann z.B. der R\u00fcckgabewert einer Funktion weggelassen werden und Variablen m\u00fcssen nicht manuell typisiert werden.<\/p>\n<pre class=\"lang:java decode:true\">fun getUniversalAnswer() = 42\r\n\r\nvar zahl = 3<\/pre>\n<p>Auch hat Kotlin einige funktionale Aspekte wie Lambdas und High Order Functions. Dazu kommen Features wie Data Classes, welche die Syntax weiter verk\u00fcrzen. Die Lesbarkeit ist subjektiv zu bewerten, jedoch legen die vielen Kurzschreibweisen in Kotlin nahe, dass die Syntax vor allem f\u00fcr Anf\u00e4nger:innen schwerer zu lesen ist. Das Zwischenfazit des Syntaxvergleiches ist also: <strong>F\u00fcr Anf\u00e4nger:innen ist Kotlin schwieriger zu lesen aufgrund der Kurzschreibweisen. F\u00fcr erfahrene Entwickler ist die Einsch\u00e4tzung subjektiv.<\/strong><\/p>\n<p>Die Null Safety ist eines der wesentlichen Verkaufsargumente von Kotlin, das sie das Problem der Null Pointer Exception in Java l\u00f6st. Variablen, die Null werden k\u00f6nnen, m\u00fcssen in Kotlin entsprechend gekennzeichnet werden.<\/p>\n<pre class=\"lang:java decode:true\">var hello: String? = null<\/pre>\n<p>Dieses System wirft aber wiederum neue Probleme auf: Einerseits gibt es einfach viele Collections und Java Frameworks, die Null zur\u00fcckliefern k\u00f6nnen, weshalb oft Fehlerf\u00e4lle ber\u00fccksichtigt werden m\u00fcssen. Andererseits ist das <em>Handling<\/em> von Null-Variablen relativ komplex.<\/p>\n<p>Zusammengefasst kann man sagen, dass Kotlin den\/die Entwickler :in lediglich zwingt, sich um potenzielle Fehler durch Nullpointer zu k\u00fcmmern. Ob das Kotlin besser macht als Java ist subjektiv. Jedoch ist es merkw\u00fcrdig, dass Kotlin hier den\/die Entwickler:in zur umst\u00e4ndlichen Fehlerpr\u00e4vention zwingt, im Fall von Checked Exceptions aber das Gegenteil tut und den\/die Entwickler:in eben nicht mehr zwingt, sich um m\u00f6gliche Fehler zu k\u00fcmmern, um so den try\/catch-Block zu ersparen.<\/p>\n<p>Die Features String Templates, Type Inference und Smart Casts f\u00fchren dazu, dass Kotlin weniger umst\u00e4ndlich ist. String Templates sind praktisch, da die Entwickler:innen mit ihnen Variablen und Befehle in einen String einbinden kann, ohne gef\u00fchlte zweihundertmal \u201e+\u201c zu schreiben.<\/p>\n<pre class=\"lang:java decode:true\">var zahl = 42\r\n\r\nvar string = \"Die Antwort auf alles ist ${zahl}\"<\/pre>\n<p>Auch bei Smart Casts spart Kotlin \u00fcberfl\u00fcssigen Code durch das automatische Casten nach einer logischen Pr\u00fcfung. Sobald ein Objekt auf seine Spezialisierung gepr\u00fcft wurde, kann es als spezialisiertes Objekt behandelt werden. Hier spart sich der\/die Entwickler:in die expliziten Casts.<\/p>\n<pre class=\"lang:java decode:true\">if(x is String)\r\n\r\n    {print(x.length)}<\/pre>\n<p>Die Type Inference erm\u00f6glicht es, einer Variable in Kotlin keinen Typ zu geben. Kotlin erkennt automatisch den Typ und weist diesen zu:<\/p>\n<pre class=\"lang:java decode:true\">var x = \u201ex ist jetzt ein String\u201c<\/pre>\n<p>Dies spart zwar Code, kann aber auf Kosten der Lesbarkeit gehen. Da es jedoch m\u00f6glich ist, einen Typ explizit anzugeben, kann in unklaren F\u00e4llen der Typ angegeben und damit auch verst\u00e4ndlicher Code geschrieben werden. Beispiel: <span class=\"lang:java decode:true crayon-inline \">var y : String = \u201eHallo Welt\u201c<\/span> . Alle drei Features sparen dem\/der Entwickler:in das Schreiben von mehr (unn\u00f6tigem) Code.<\/p>\n<p>Das Feature Singleton (Keyword object) erm\u00f6glicht in Kotlin das Verwenden des Singleton-Entwurfmusters.<\/p>\n<pre class=\"lang:java decode:true\">object test {}<\/pre>\n<p>Das bedeutet also, dass es von einer Klasse nur eine Instanz geben kann, \u00e4hnlich dem <em>static<\/em> aus Java. Dies hat meiner Erfahrung nach nicht sehr gut funktioniert, weshalb ich sagen kann, dass es zumindest einige Einarbeitung erfordert, bis dieses Feature sinnvoll nutzbar ist. Auch wird das static (aus Gewohnheit) immer wieder vermisst.<\/p>\n<p>Die Features <em>Extension Functions<\/em> und <em>Operation Overloading<\/em> gibt es beide in Java nicht:<\/p>\n<pre class=\"lang:java decode:true\">fun main() {\r\n\r\n    var string : String = \"Hallo Welt\"\r\n\r\n    fun String.extensionFunctionExample() {}\r\n\r\n    string.extensionFunctionExample()\r\n\r\n}<\/pre>\n<p>Dies ist darin begr\u00fcndet, dass Java die Sprache sehr einfach halten wollte. Das Operation Overloading speziell ist in Kotlin dazu noch etwas limitiert, da nur dann Operatoren \u00fcberladen werden k\u00f6nnen, wenn sie in der Klasse vorher noch keine Funktion hatten. Das \u201e+\u201c der Klasse Integer kann z.B. nicht \u00fcberladen werden.<\/p>\n<p>Ob solche Features einer Sprache gut sind oder nicht, ist wieder rein subjektiv. Sie er\u00f6ffnen einerseits mehr M\u00f6glichkeiten, machen die Programmiersprache Kotlin andererseits aber auch anspruchsvoller zu erlernen.<\/p>\n<p>Zuletzt geht es in diesen Vergleichsbeispielen um die Data Classes von Kotlin. Die default Getter- und Setter-Methoden sind in allen Klassen in Kotlin gegeben und kein Teil der Datenklassen. Sonstige Methoden wie copy(), toString(), hashCode() und equals() werden durch das data Keyword automatisch erzeugt. Allerdings sind Datenklassen final. Es ist nicht m\u00f6glich, sie abstrakt zu machen oder von ihnen zu erben. Sie sind wirklich nur f\u00fcr Daten gedacht.<\/p>\n<p>Das Ergebnis des Feature-Vergleichs sieht wie folgt aus:<\/p>\n<ul>\n<li>Alle Vergleichspunkte wurden in meiner Thesis zur einfacheren Wertung in 4 Kategorien eingestuft:<\/li>\n<li>Gut: Das Feature ist besser als es in Java gel\u00f6st wurde.<\/li>\n<li>Subjektiv: Es gibt sowohl Argumente f\u00fcr als auch gegen dieses Feature.<\/li>\n<li>Schlecht: Dieses Feature ist eher ein Problem an Kotlin.<\/li>\n<li>Irrelevant: Das Feature\/Argument hat in dem Vergleich nichts zu suchen.<\/li>\n<\/ul>\n<p>In dieser Liste sind drei Features als \u201cGut\u201c aufgef\u00fchrt, acht als \u201cSubjektiv\u201c, vier als \u201cSchlecht und drei als \u201cIrrelevant\u201c. Daraus ergibt sich, dass Kotlins Eignung als Programmiersprache im Vergleich zu Java vor allem subjektiv ist.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kotlin-vs-Java-Vergleich-mit-Microservices\"><\/span>Kotlin vs. Java: Vergleich mit Microservices<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der Vergleich zwischen Java und Kotlin im direkten Bezug auf Microservices ergab kaum Ergebnisse. Die meisten der Microservice-Herausforderungen k\u00f6nnen nicht verallgemeinert von Java oder Kotlin besser gel\u00f6st werden. Da Kotlin auch alle Java Frameworks verwenden kann, k\u00f6nnen fast alle Technologien, die in Java genutzt werden, auch in Kotlin genutzt werden. Es gibt vereinzelte Unterschiede, doch f\u00fcr diese Unterschiede gibt es auch direkt verschiedene L\u00f6sungen. Ein detailliertes Eingehen auf diese Unterschiede w\u00fcrde den Rahmen der Arbeit sprengen. Auch wenn weder Java noch Kotlin direkte Vorteile f\u00fcr eine Microservice-Herausforderung haben, so k\u00f6nnen doch die einzelnen Features einen gewissen Unterschied machen. Da viele Services z.B. Datenbankanbindungen haben, k\u00f6nnen die Datenklassen von Kotlin hier echte Vorteile bringen.<\/p>\n<p>Jedoch kann man bei keiner der beiden Programmiersprachen sagen, dass sie besser f\u00fcr Microservices geeignet ist als die andere. Das liegt zum Gro\u00dfteil auch daran, dass sie sehr viel gemeinsam haben und miteinander kombiniert werden k\u00f6nnen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fazit-und-Zusammenfassung\"><\/span>Fazit und Zusammenfassung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Java und Kotlin laufen beide auf der Java Virtual Machine und zeigen daher keine Unterschiede im Bezug auf die Performanz. Die Unterschiede belaufen sich also prim\u00e4r auf die Syntax und das Repertoire an M\u00f6glichkeiten, welches die jeweilige Sprache bietet.<\/p>\n<p>Java hat den Anspruch, einfach und robust zu sein. Java ist komplett Objektorientiert, es gibt also keine M\u00f6glichkeit, dass eine Methode au\u00dferhalb einer Klasse stehen kann. Die M\u00f6glichkeiten, welche Java als direkte Befehle durch Key-Words mitbringt, sind recht gering. Dadurch sind sie leicht zu verstehen und zu merken. Neuere Java-Versionen haben zunehmend komplexere Features (wie seit Java 8 die Lambda-Expression), jedoch bleibt die Grundlage immer dieselbe: Es werden Variablen als primitive Datentypen oder Objekt-Referenzen angelegt. Auf diesen Referenzen werden dann Methoden ausgef\u00fchrt, teilweise mehrere hintereinander. Dies ist sehr gut lesbar und \u00fcbersichtlich, denn das Grundprinzip ver\u00e4ndert sich nicht und die Implementierung jeder Methode l\u00e4sst sich problemlos pr\u00fcfen. Jedoch sind auch bei \u201cClean Code\u201c die Methodenaufrufe oft sehr lang und es kann dauern, bis der Code wirklich verstanden wird. Die Features und M\u00f6glichkeiten in Java kommen somit \u00fcber zus\u00e4tzliche Objekte zustande, die durch Bibliotheken eingebunden werden.<\/p>\n<p>Kotlin ist aus Java heraus entstanden und hat den Anspruch, die M\u00f6glichkeiten dieser Programmiersprache zu erweitern und zu verbessern. Teilweise gelingt dies sehr gut. In Kotlin wird kein Semikolon gebraucht um einen Befehl zu beenden. Das zeigt sehr gut, was Kotlin erreichen will: Anwender:innenfreundlichkeit. Viele Features von Kotlin bauen auf diesem Prinzip auf und setzen es gut um. Ein Beispiel hierf\u00fcr sind die Default Arguments. Die meisten Kotlin Features haben den Zweck, umst\u00e4ndliche Funktionen von Java zu vereinfachen. Das funktioniert gut: Kotlin ist kompakter als Java. In einigen F\u00e4llen steigt als Nebeneffekt die Komplexit\u00e4t, was wiederum eine verminderte Lesbarkeit des Codes mit sich bringen kann. Dies zu bewerten ist allerdings sehr subjektiv. Ein starkes Argument f\u00fcr Kotlin ist das Vorhandensein neuer Features, die zus\u00e4tzliches Potenzial bieten, jedoch rein fakultativ sind. Entwickler:innen k\u00f6nnen frei entscheiden, ob sie ein bestimmtes Feature verwenden wollen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"tldr\"><\/span>tl;dr<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Zusammengefasst kann man sagen, dass Kotlin mehr M\u00f6glichkeiten bietet als Java. F\u00fcr erfahrene Programmierer:innen kann sich diese Vielfalt an M\u00f6glichkeiten als hilfreich erweisen, aus Sicht unerfahrener Programmierer:innen kann dies aber auch Nachteile haben: Mehr M\u00f6glichkeiten bedeuten auch mehr Verantwortung, die M\u00f6glichkeiten sinnvoll einzusetzen und Features nicht unn\u00f6tig zu verwenden. So k\u00f6nnen erfahrene Programmierer:innen mit Kotlin kurzen und gut lesbaren Code schreiben, w\u00e4hrend der Code weniger erfahrener Programmierer:innen durch den Einsatz inad\u00e4quater Features eher unleserlich wird. Wer also bereits fortgeschrittene Kenntnisse des Programmierens hat, mehr M\u00f6glichkeiten zur Verf\u00fcgung gestellt haben m\u00f6chte, und bereit ist, sich intensiv in eine neue Programmiersprache einzuarbeiten, der sollte sich Kotlin unbedingt anschauen.<\/p>\n<p>Wer es dagegen lieber so einfach wie m\u00f6glich h\u00e4lt oder h\u00e4ufig mit unerfahrenen Entwicklern:innen zusammen arbeitet, sollte eher bei Java bleiben.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Referenzen\"><\/span>Referenzen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/\">Kotlin-Dokumentation<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/comparison-to-java.html\">Kotlin-Features-Liste<\/a><\/li>\n<li><a href=\"https:\/\/allegro.tech\/2018\/05\/From-Java-to-Kotlin-and-Back-Again.html\">Argumente gegen Kotlin<\/a><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Weiterlesen\"><\/span>Weiterlesen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Du m\u00f6chtest auch eine Abschlussarbeit in der Software-Entwicklung schreiben oder suchst eine Stelle als Werkstundent:in? Dann schau dir unsere Jobseite an. Wenn du mehr \u00fcber unsere Leistungen erfahren m\u00f6chtest, schau auf unserer <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/\">Website<\/a> vorbei.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein. Viele aus Java bekannte Probleme m\u00f6chte Kotlin angehen und l\u00f6sen. Der Hype geht insgesamt in die Richtung, dass Kotlin wesentlich besser sei als Java. Gegens\u00e4tzlich dazu gibt es Erfahrungsberichte, die aussagen, dass Java deutlich performanter sei als [&hellip;]<\/p>\n","protected":false},"author":107,"featured_media":15972,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[510,723,724],"service":[420],"coauthors":[{"id":107,"display_name":"David Schweizer","user_nicename":"dschweizer"}],"class_list":["post-15630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-apps-2","tag-java","tag-kotlin","service-apps"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kotlin vs. Java am Beispiel Microservices - inovex GmbH<\/title>\n<meta name=\"description\" content=\"Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein und viele Probleme von Java zu l\u00f6sen. Dieser Blogeintrag ist ein Ergebnisbericht meiner Bachelor-Arbeit, in der ich Kotlin vs. Java am Beispiel Microservices vergleiche.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin vs. Java am Beispiel Microservices - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein und viele Probleme von Java zu l\u00f6sen. Dieser Blogeintrag ist ein Ergebnisbericht meiner Bachelor-Arbeit, in der ich Kotlin vs. Java am Beispiel Microservices vergleiche.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-01T06:57:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T06:59:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Schweizer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Schweizer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"David Schweizer\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\"},\"author\":{\"name\":\"David Schweizer\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c45527e268ded5dc94e21ff8197e4e86\"},\"headline\":\"Kotlin vs. Java am Beispiel Microservices\",\"datePublished\":\"2019-04-01T06:57:33+00:00\",\"dateModified\":\"2026-03-17T06:59:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\"},\"wordCount\":2053,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png\",\"keywords\":[\"Apps\",\"Java\",\"Kotlin\"],\"articleSection\":[\"Applications\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\",\"url\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\",\"name\":\"Kotlin vs. Java am Beispiel Microservices - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png\",\"datePublished\":\"2019-04-01T06:57:33+00:00\",\"dateModified\":\"2026-03-17T06:59:20+00:00\",\"description\":\"Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein und viele Probleme von Java zu l\u00f6sen. Dieser Blogeintrag ist ein Ergebnisbericht meiner Bachelor-Arbeit, in der ich Kotlin vs. Java am Beispiel Microservices vergleiche.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage\",\"url\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png\",\"contentUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png\",\"width\":1920,\"height\":1080,\"caption\":\"Ein Netz aus Hexagonen mit den Logos von Kotlin vs. Java in T\u00fcrkist\u00f6nen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inovex.de\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin vs. Java am Beispiel Microservices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inovex.de\/de\/#website\",\"url\":\"https:\/\/www.inovex.de\/de\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inovex.de\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\/\/www.inovex.de\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/inovexde\",\"https:\/\/x.com\/inovexgmbh\",\"https:\/\/www.instagram.com\/inovexlife\/\",\"https:\/\/www.linkedin.com\/company\/inovex\",\"https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c45527e268ded5dc94e21ff8197e4e86\",\"name\":\"David Schweizer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/image\/8e52e95b9c6ee91878ebe53387219675\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2c04d21337b6a42f4209ac5a54d5a279d77a223a7cf88a702354ed12f6c1223c?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2c04d21337b6a42f4209ac5a54d5a279d77a223a7cf88a702354ed12f6c1223c?s=96&d=retro&r=g\",\"caption\":\"David Schweizer\"},\"url\":\"https:\/\/www.inovex.de\/de\/blog\/author\/dschweizer\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kotlin vs. Java am Beispiel Microservices - inovex GmbH","description":"Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein und viele Probleme von Java zu l\u00f6sen. Dieser Blogeintrag ist ein Ergebnisbericht meiner Bachelor-Arbeit, in der ich Kotlin vs. Java am Beispiel Microservices vergleiche.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/","og_locale":"de_DE","og_type":"article","og_title":"Kotlin vs. Java am Beispiel Microservices - inovex GmbH","og_description":"Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein und viele Probleme von Java zu l\u00f6sen. Dieser Blogeintrag ist ein Ergebnisbericht meiner Bachelor-Arbeit, in der ich Kotlin vs. Java am Beispiel Microservices vergleiche.","og_url":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2019-04-01T06:57:33+00:00","article_modified_time":"2026-03-17T06:59:20+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png","type":"image\/png"}],"author":"David Schweizer","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"David Schweizer","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten","Written by":"David Schweizer"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/"},"author":{"name":"David Schweizer","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c45527e268ded5dc94e21ff8197e4e86"},"headline":"Kotlin vs. Java am Beispiel Microservices","datePublished":"2019-04-01T06:57:33+00:00","dateModified":"2026-03-17T06:59:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/"},"wordCount":2053,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png","keywords":["Apps","Java","Kotlin"],"articleSection":["Applications","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/","url":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/","name":"Kotlin vs. Java am Beispiel Microservices - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png","datePublished":"2019-04-01T06:57:33+00:00","dateModified":"2026-03-17T06:59:20+00:00","description":"Seit ihrer Einf\u00fchrung 2016 hat sich die Programmiersprache Kotlin den Ruf erarbeitet, eine Art Java 2.0 zu sein und viele Probleme von Java zu l\u00f6sen. Dieser Blogeintrag ist ein Ergebnisbericht meiner Bachelor-Arbeit, in der ich Kotlin vs. Java am Beispiel Microservices vergleiche.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/03\/kotlin-vs-java-microservices.png","width":1920,"height":1080,"caption":"Ein Netz aus Hexagonen mit den Logos von Kotlin vs. Java in T\u00fcrkist\u00f6nen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-vs-java-microservices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Kotlin vs. Java am Beispiel Microservices"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c45527e268ded5dc94e21ff8197e4e86","name":"David Schweizer","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/image\/8e52e95b9c6ee91878ebe53387219675","url":"https:\/\/secure.gravatar.com\/avatar\/2c04d21337b6a42f4209ac5a54d5a279d77a223a7cf88a702354ed12f6c1223c?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2c04d21337b6a42f4209ac5a54d5a279d77a223a7cf88a702354ed12f6c1223c?s=96&d=retro&r=g","caption":"David Schweizer"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/dschweizer\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/15630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/107"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=15630"}],"version-history":[{"count":5,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/15630\/revisions"}],"predecessor-version":[{"id":66500,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/15630\/revisions\/66500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/15972"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=15630"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=15630"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=15630"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=15630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}