{"id":9872,"date":"2021-01-14T14:15:46","date_gmt":"2021-01-14T13:15:46","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=9872"},"modified":"2023-10-24T15:50:12","modified_gmt":"2023-10-24T13:50:12","slug":"java-2-0-czyli-kotlin","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/","title":{"rendered":"Java 2.0 czyli Kotlin"},"content":{"rendered":"\n<p>O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie <a href=\"https:\/\/www.java.com\/pl\/download\/\" rel=\"nofollow\" >https:\/\/www.java.com\/pl\/download\/<\/a>.<\/p>\n\n\n\n<p><em>&#8222;Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka Java, Java Plug-In, dodatek Java lub Java Download.&#8221;<\/em><\/p>\n\n\n\n<p>J\u0119zyk Java i JVM s\u0105 od siebie niezale\u017cne, chodzi tutaj o to, \u017ce kod napisany w Javie nie jest bezpo\u015brednio uruchamiany na JVM, przed uruchomieniem ten kod jest kompilowany do kodu bajtowego i dopiero wtedy uruchamiany.<\/p>\n\n\n\n<p>I tutaj mamy pewn\u0105 furtk\u0119, kt\u00f3r\u0105 wykorzysta\u0142a firma JetBrains. Doszli oni do bardzo prostego wniosku, \u017ce nie wa\u017cne w czym, wa\u017cne aby wygenerowa\u0107 kod bajtowy, kt\u00f3ry b\u0119dzie wykonywany na JVM. Takie rozwi\u0105zanie ma jeszcze jedn\u0105 bardzo du\u017c\u0105 zalet\u0119. Mianowicie kod napisany w Kotlinie i skompilowany, mo\u017cna bez problemu wykorzysta\u0107 w normalnych projektach pisanych w Javie.<\/p>\n\n\n\n<p>Oczywi\u015bcie nie oby\u0142o si\u0119 bez dodatkowych wtyczek, kompilator\u00f3w itp., kt\u00f3re w pewnym sensie opakowuj\u0105 j\u0119zyk Jav\u0119, ale o tym kiedy indziej.<\/p>\n\n\n\n<p>Wszystko fajnie, ale co z tego? W czym ten Kotlin jest lepszy od zwyk\u0142ej Javy? Przecie\u017c dalej to jest JVM i do tego mo\u017cna jeszcze odnie\u015b\u0107 wra\u017cenie, \u017ce jest wolniejszy, bo przecie\u017c go opakowujemy jakimi\u015b dodatkowymi rzeczami.<\/p>\n\n\n\n<p>Kr\u00f3tka odpowied\u017a: Kotlin jest po prostu Jav\u0105 2.0.<\/p>\n\n\n\n<p>D\u0142u\u017csza odpowied\u017a:<\/p>\n\n\n\n<p>Ka\u017cdy j\u0119zyk da si\u0119 por\u00f3wna\u0107 z innym j\u0119zykiem. Nie mo\u017cna oczywi\u015bcie powiedzie\u0107, C# jest lepszy od Javy, albo C++ jest lepszy od Pythona, a PHP to totalne dno. To tak jakby powiedzie\u0107, \u017ce m\u0142otek jest lepszy od pi\u0142y. Bezsens. Mo\u017cna natomiast por\u00f3wna\u0107 pewne cechy zar\u00f3wno samego j\u0119zyka, jak i ca\u0142ego rozwi\u0105zania albo nawet ekosystemu, no bo czym by\u0142aby Java bez JVM. Cz\u0119\u015b\u0107 tych cech jest subiektywna, a cz\u0119\u015b\u0107 obiektywna i dla ka\u017cdego z nas mog\u0105 mie\u0107 one inny priorytet. Moim zdaniem dwa najwa\u017cniejsze z nich to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Szybko\u015b\u0107 dzia\u0142ania, zasobo\u017cerno\u015b\u0107, zu\u017cycie energii:<\/strong> Wbrew pozorom Java, a jeszcze dok\u0142adniej JVM wcale nie jest taki wolny na jakiego wygl\u0105da, nie jest to oczywi\u015bcie assembler, C czy C++ ale dzi\u0119ki wielu r\u00f3\u017cnego rodzaju sztuczkom w JVM-ie jest on przyzwoicie szybki. Na potwierdzenie tych s\u0142\u00f3w mo\u017cna zerkn\u0105\u0107 na benchmarki, Java wypada w nich naprawd\u0119 przyzwoicie <a href=\"https:\/\/attractivechaos.github.io\/plb\/\" rel=\"nofollow\" >https:\/\/attractivechaos.github.io\/plb\/<\/a>. Podobnie jest z energi\u0105, natomiast z zasobami ju\u017c jest troch\u0119 gorzej. Wi\u0119cej na ten temat mo\u017cna przeczyta\u0107 tutaj:<a href=\"https:\/\/thenewstack.io\/which-programming-languages-use-the-least-electricity\/\" rel=\"nofollow\" > https:\/\/thenewstack.io\/which-programming-languages-use-the-least-electricity\/<\/a>. Kotlin wypada w por\u00f3wnaniu do Javy troch\u0119 gorzej, ale s\u0105 to warto\u015bci naprawd\u0119 ma\u0142e.<\/li>\n\n\n\n<li><strong>Jak szybko mo\u017cna pisa\u0107 kod:<\/strong> To jest do\u015b\u0107 subiektywne, poniewa\u017c ka\u017cdy z nas koduje w r\u00f3\u017cnym tempie, ale z do\u015bwiadczenia mog\u0119 powiedzie\u0107, \u017ce Kotlin jest o wiele \u0142atwiejszy zar\u00f3wno do nauczenia si\u0119, jak i wykorzystania, a wynika to z prostego faktu, j\u0119zyk ten jest pragmatyczny. Zosta\u0142 napisany przez programist\u00f3w z wieloletnim do\u015bwiadczeniem, aby w \u0142atwy spos\u00f3b rozwi\u0105zywa\u0107 ich problemy. Zawiera o wiele wy\u017cszy poziom abstrakcji oraz sk\u0142ada si\u0119 z element\u00f3w, kt\u00f3re s\u0105 po prostu sprawdzone.<\/li>\n<\/ul>\n\n\n\n<p>Dodatkowo mo\u017cna tutaj por\u00f3wna\u0107 jeszcze takie rzeczy jak: wsparcie \u015brodowiska (Java oczywi\u015bcie tutaj wygrywa, ale Kotlin te\u017c ma si\u0119 ca\u0142kiem dobrze), liczb\u0119 developer\u00f3w znaj\u0105cych ten j\u0119zyk, liczb\u0119 bibliotek i wiele, wiele wi\u0119cej.<\/p>\n\n\n\n<p>Ja chcia\u0142bym bardziej skupi\u0107 na tym drugim punkcie i opisa\u0107 klika podstawowych rzeczy, na kt\u00f3re sk\u0142ada si\u0119 j\u0119zyk Kotlin, a kt\u00f3re mniej lub bardziej u\u0142atwiaj\u0105 \u017cycie programisty.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Walka z nullami<\/h2>\n\n\n\n<p>W Kotlinie w bardzo \u0142atwy spos\u00f3b pozbyto si\u0119 NPE, czyli jednego chyba z najcz\u0119\u015bciej wyst\u0119puj\u0105cych i najbardziej kosztownych wyj\u0105tk\u00f3w na \u015bwiecie.<\/p>\n\n\n\n<p><em>Rozwi\u0105zanie<\/em>: Java zwyk\u0142y nullcheck albo Optional<\/p>\n\n\n\n<p><em>Przyk\u0142ad:<\/em><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nIf(value != null){\n\n  value.wykonaj()\n\n}\n<\/pre><\/div>\n\n\n<p><em>Rozwi\u0105zanie<\/em>: Kotlin operator ? kt\u00f3ry zast\u0119puje nullchecka<\/p>\n\n\n\n<p><em>Przyk\u0142ad:<\/em><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nvalue?.wykonaj()\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">2. Warto\u015bci domy\u015ble<\/h2>\n\n\n\n<p>Kotlin daje nam \u0142atw\u0105 mo\u017cliwo\u015b\u0107 ustawienia warto\u015bci domy\u015blnych w parametrach funkcji. Natomiast w Javie musimy stosowa\u0107, albo wzorzec Buildera albo przeci\u0105\u017ca\u0107 operatory.<\/p>\n\n\n\n<p><em>Rozwi\u0105zanie<\/em>: Java<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nUserBuilder.setName(\u201cGrzegorz\u201d).setSurname(Brzeczyszczykiewicz).setAge(24).build()\n<\/pre><\/div>\n\n\n<p>albo<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\npublic User(String name, String surname, Integer age) {\n\nthis.name = name;\n\nthis.surname = surname;\n\nthis.age = age;\n\n}\n\npublic User(String name, String surname) {\n\nthis (name, surname, 24);\n\n}\n<\/pre><\/div>\n\n\n<p><em>Rozwi\u0105zanie:<\/em> Kotlin<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nclass User(var name: String = &quot;&quot;, var surname: String = &quot;&quot;,var age=0)\n<\/pre><\/div>\n\n\n<p>Wykorzystujemy to w kodzie w taki spos\u00f3b<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nUser() , User(name= \u201cGrzegorz\u201d), itp.\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">3. Brak seter\u00f3w i getter\u00f3w<\/h2>\n\n\n\n<p>Przyj\u0119\u0142o si\u0119 \u017ce w Javie warto\u015bci p\u00f3l ustawia si\u0119 poprzez gettery, a pobiera poprzez settery. Jednak cz\u0119sto to prowadzi do sytuacji ze mamy jaka\u015b klas\u0119, kt\u00f3ra przechowuje dane i sk\u0142ada si\u0119 tylko z \u201cpustych\u201d setter\u00f3w i gettr\u00f3w. W Kotlinie gettery i settery s\u0105 generowane automatycznie.<\/p>\n\n\n\n<p><em>Przyk\u0142ad:<\/em> Java<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\npublic class User{\n\nprivate String name = \u201d\u201d\n\npublic void setName(String name){\n\nthis.name = name;\n\n}\n\npublic String getName(){\n\nreturn name\n\n}\n\n}\n<\/pre><\/div>\n\n\n<p><em>Przyk\u0142ad:<\/em> Kotlin<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nclass User(){\n\nvar name : String = \u201d\u201d\n\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">4. Specjalna klasa do przechowywania danych<\/h2>\n\n\n\n<p>W Javie nie ma \u017cadnej specjalnej klasy do przechowywania danych. Powoduje to oczywi\u015bcie pewne problemy np. z por\u00f3wnywaniem obiekt\u00f3w, kt\u00f3re zawieraj\u0105 takie same dane albo nawet z toString(). W Kotlinie istnieje specjalny typ klasy, kt\u00f3ry jest dedykowany danym, a mianowicie data.<\/p>\n\n\n\n<p>Przyk\u0142ad:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndata class User(val name : String, val surname : String, val age : String)\n<\/pre><\/div>\n\n\n<p>R\u00f3\u017cnica mi\u0119dzy data class, a zwyk\u0142\u0105 klasa jest do\u015b\u0107 prosta, polega ona na tym ze Kotlin nadpisuje nam takie metody jak equals albo toString.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Funkcje rozszerzaj\u0105ce<\/h2>\n\n\n\n<p>Cz\u0119sto zdarza si\u0119 sytuacja, \u017ce jaka\u015b klasa, do kt\u00f3rej nie mamy dost\u0119pu (bo np. pochodzi z innej biblioteki) nie posiada metod, kt\u00f3re s\u0105 dla nas bardzo istotne. Cz\u0119sto w takiej sytuacji piszemy klasy Utils. Maj\u0105 nam pom\u00f3c w uzyskaniu tego, czego potrzebujemy. Problem polega na tym, \u017ce kto\u015b kto korzysta z owoc\u00f3w naszej pracy musi wiedzie\u0107, \u017ce taka klasa istnieje i nie trzeba jej pisa\u0107 od nowa. Oczywi\u015bcie pomijam fakt, \u017ce jest to po prostu brzydkie. W Kotlinie, aby rozwi\u0105za\u0107 ten problem, zosta\u0142y dodane funkcje rozszerzaj\u0105ce.<\/p>\n\n\n\n<p><em>Przyk\u0142ad:<\/em>&nbsp; Java<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\npublic class MapUtils{\n\npublic String rotateMap(map:Map){\n\n...rotate map\n\n}\n\n}\n<\/pre><\/div>\n\n\n<p><em>U\u017cycie: <\/em>MapUtils().rotateMap(map)<\/p>\n\n\n\n<p><em>Przyk\u0142ad:<\/em> Kotlin<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nfun Map.rotateMap(){\n\n...rotate map\n\n}\n<\/pre><\/div>\n\n\n<p><em>U\u017cycie: <\/em>Map.rotateMap()<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. \u0141atwiejsza obs\u0142uga string\u00f3w<\/h3>\n\n\n\n<p>Ci\u0119\u017cko sobie wyobrazi\u0107 program, kt\u00f3ry nie komunikowa\u0142by si\u0119 z u\u017cytkownikiem za pomoc\u0105 s\u0142owa pisanego. Niestety w Javie praca na stringach jest do\u015b\u0107 trudna. Sklejenia string\u00f3w powoduje, \u017ce kod jest nieczytelny i za\u015bmiecony. W Kotlinie istnieje mo\u017cliwo\u015b\u0107 wstawienia warto\u015bci bezpo\u015brednio w string.<\/p>\n\n\n\n<p><em>Przyk\u0142ad:<\/em> Java<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\npublic String getMyLovelyString(){\n\nreturn \u201cname \u201d+ name + \u201c surname \u201d+ surname \u201c age \u201d + age\n\n}\n<\/pre><\/div>\n\n\n<p><em>Przyk\u0142ad:<\/em>&nbsp; Kotlin<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nfun getMyLovelyString() : String{\n\nreturn \u201cname $name surname $surname age $age\u201d\n\n}\n<\/pre><\/div>\n\n\n<p>Oczywi\u015bcie takich udogodnie\u0144 jest du\u017co, du\u017co wi\u0119cej. Nawet, te kt\u00f3re przedstawi\u0142em powy\u017cej s\u0105 o wiele bardziej skomplikowane np. Z tym NPE to nie do ko\u0144ca prawda ;). Ale czas na podsumowanie.<\/p>\n\n\n\n<p>Podsumowuj\u0105c, Kotlin jest tym, czym Java b\u0119dzie najprawdopodobniej za kilka iteracji. Czyli j\u0119zykiem szybkim, bezpiecznym, stabilnym, a co najwa\u017cniejsze &#8211; \u0142atwym w u\u017cyciu i po prostu bardziej czytelnym.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;9872&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;19&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;2.8&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;2&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;2.8\\\/5&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;Java 2.0 czyli Kotlin&quot;,&quot;width&quot;:&quot;88.6&quot;,&quot;_legend&quot;:&quot;{score}\\\/5&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 88.6px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            2.8\/5    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/\">Continued<\/a><\/p>\n","protected":false},"author":263,"featured_media":9928,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[330,983],"class_list":["post-9872","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-java","tag-kotlin"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. &quot;Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Rafa\u0142 Ha\u0142asa\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"blogersii\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Java 2.0 czyli Kotlin - blogersii\" \/>\n\t\t<meta property=\"og:description\" content=\"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. &quot;Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t\t<meta property=\"og:image:height\" content=\"416\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-01-14T13:15:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-10-24T13:50:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Sii.Polska\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Java 2.0 czyli Kotlin - blogersii\" \/>\n\t\t<meta name=\"twitter:description\" content=\"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. &quot;Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#article\",\"name\":\"Java 2.0 czyli Kotlin - blogersii\",\"description\":\"O Javie mo\\u017cna m\\u00f3wi\\u0107 w dwojaki spos\\u00f3b, albo o jednym z najbardziej popularnych j\\u0119zyku programowania na \\u015bwiecie, albo o maszynie wirtualnej, kt\\u00f3r\\u0105 chyba ka\\u017cdy z nas kiedy\\u015b instalowa\\u0142 na swoim komputerze, zwanej te\\u017c, cytuj\\u0105c stopk\\u0119 na stronie https:\\\/\\\/www.java.com\\\/pl\\\/download\\\/. \\\"Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka\",\"inLanguage\":\"pl-PL\",\"headline\":\"Java 2.0 czyli Kotlin\",\"author\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/rafal-halasa\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\"},\"datePublished\":\"2021-01-14T13:15:46+01:00\",\"dateModified\":\"2023-10-24T13:50:12+02:00\",\"articleSection\":\"Development na twardo, Java, Kotlin\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#webpage\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/java-2.0-czyli-kotlin.jpg\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#articleImage\",\"width\":850,\"height\":416}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sii.pl\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"name\":\"Development na twardo\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"position\":2,\"name\":\"Development na twardo\",\"item\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#listItem\",\"name\":\"Java 2.0 czyli Kotlin\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#listItem\",\"position\":3,\"name\":\"Java 2.0 czyli Kotlin\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"name\":\"Development na twardo\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\",\"name\":\"Sii Polska\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/\",\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/siipolska\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@siipolska\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCQ3UQ7RJPEYnAWC_rPE5Dxg\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sii-polska\",\"https:\\\/\\\/clutch.co\\\/profile\\\/sii-poland\",\"https:\\\/\\\/www.crunchbase.com\\\/organization\\\/sii\",\"https:\\\/\\\/www.wikidata.org\\\/wiki\\\/Q16601096\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#webpage\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/\",\"name\":\"Java 2.0 czyli Kotlin - blogersii\",\"description\":\"O Javie mo\\u017cna m\\u00f3wi\\u0107 w dwojaki spos\\u00f3b, albo o jednym z najbardziej popularnych j\\u0119zyku programowania na \\u015bwiecie, albo o maszynie wirtualnej, kt\\u00f3r\\u0105 chyba ka\\u017cdy z nas kiedy\\u015b instalowa\\u0142 na swoim komputerze, zwanej te\\u017c, cytuj\\u0105c stopk\\u0119 na stronie https:\\\/\\\/www.java.com\\\/pl\\\/download\\\/. \\\"Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka\",\"inLanguage\":\"pl-PL\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#breadcrumblist\"},\"author\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/rafal-halasa\\\/#author\",\"creator\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/rafal-halasa\\\/#author\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/java-2.0-czyli-kotlin.jpg\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#mainImage\",\"width\":850,\"height\":416},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/java-2-0-czyli-kotlin\\\/#mainImage\"},\"datePublished\":\"2021-01-14T13:15:46+01:00\",\"dateModified\":\"2023-10-24T13:50:12+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/\",\"name\":\"blogersii\",\"description\":\"Blog technologiczny Sii \\u2013 praktyczna wiedza od ekspert\\u00f3w\",\"inLanguage\":\"pl-PL\",\"publisher\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Java 2.0 czyli Kotlin - blogersii","description":"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. \"Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka","canonical_url":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#article","name":"Java 2.0 czyli Kotlin - blogersii","description":"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. \"Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka","inLanguage":"pl-PL","headline":"Java 2.0 czyli Kotlin","author":{"@id":"https:\/\/sii.pl\/blog\/author\/rafal-halasa\/#author"},"publisher":{"@id":"https:\/\/sii.pl\/#organization"},"datePublished":"2021-01-14T13:15:46+01:00","dateModified":"2023-10-24T13:50:12+02:00","articleSection":"Development na twardo, Java, Kotlin","mainEntityOfPage":{"@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#webpage"},"isPartOf":{"@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#webpage"},"image":{"@type":"ImageObject","url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#articleImage","width":850,"height":416}},{"@type":"BreadcrumbList","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog#listItem","position":1,"name":"Home","item":"https:\/\/sii.pl\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","name":"Development na twardo"}},{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","position":2,"name":"Development na twardo","item":"https:\/\/sii.pl\/blog\/development-na-twardo\/","nextItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#listItem","name":"Java 2.0 czyli Kotlin"},"previousItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#listItem","position":3,"name":"Java 2.0 czyli Kotlin","previousItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","name":"Development na twardo"}}]},{"@type":"Organization","@id":"https:\/\/sii.pl\/#organization","name":"Sii Polska","url":"https:\/\/sii.pl\/blog\/","sameAs":["https:\/\/www.instagram.com\/siipolska\/","https:\/\/www.tiktok.com\/@siipolska","https:\/\/www.youtube.com\/channel\/UCQ3UQ7RJPEYnAWC_rPE5Dxg","https:\/\/www.linkedin.com\/company\/sii-polska","https:\/\/clutch.co\/profile\/sii-poland","https:\/\/www.crunchbase.com\/organization\/sii","https:\/\/www.wikidata.org\/wiki\/Q16601096"]},{"@type":"WebPage","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#webpage","url":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/","name":"Java 2.0 czyli Kotlin - blogersii","description":"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. \"Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka","inLanguage":"pl-PL","isPartOf":{"@id":"https:\/\/sii.pl\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#breadcrumblist"},"author":"https:\/\/sii.pl\/blog\/author\/rafal-halasa\/#author","creator":"https:\/\/sii.pl\/blog\/author\/rafal-halasa\/#author","image":{"@type":"ImageObject","url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg","@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#mainImage","width":850,"height":416},"primaryImageOfPage":{"@id":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/#mainImage"},"datePublished":"2021-01-14T13:15:46+01:00","dateModified":"2023-10-24T13:50:12+02:00"},{"@type":"WebSite","@id":"https:\/\/sii.pl\/blog\/#website","url":"https:\/\/sii.pl\/blog\/","name":"blogersii","description":"Blog technologiczny Sii \u2013 praktyczna wiedza od ekspert\u00f3w","inLanguage":"pl-PL","publisher":{"@id":"https:\/\/sii.pl\/#organization"}}]},"og:locale":"pl_PL","og:site_name":"blogersii","og:type":"article","og:title":"Java 2.0 czyli Kotlin - blogersii","og:description":"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. &quot;Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka","og:url":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/","og:image":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg","og:image:secure_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg","og:image:width":850,"og:image:height":416,"article:published_time":"2021-01-14T13:15:46+00:00","article:modified_time":"2023-10-24T13:50:12+00:00","article:publisher":"https:\/\/www.facebook.com\/Sii.Polska","twitter:card":"summary","twitter:title":"Java 2.0 czyli Kotlin - blogersii","twitter:description":"O Javie mo\u017cna m\u00f3wi\u0107 w dwojaki spos\u00f3b, albo o jednym z najbardziej popularnych j\u0119zyku programowania na \u015bwiecie, albo o maszynie wirtualnej, kt\u00f3r\u0105 chyba ka\u017cdy z nas kiedy\u015b instalowa\u0142 na swoim komputerze, zwanej te\u017c, cytuj\u0105c stopk\u0119 na stronie https:\/\/www.java.com\/pl\/download\/. &quot;Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, maszyna wirtualna Java, Java VM, JVM, VM, wtyczka","twitter:image":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg"},"aioseo_meta_data":{"post_id":"9872","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"article","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"summary","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":0,"frequency":"default","local_seo":null,"limit_modified_date":false,"created":"2021-10-15 05:17:44","updated":"2023-10-24 13:53:42","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sii.pl\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sii.pl\/blog\/development-na-twardo\/\" title=\"Development na twardo\">Development na twardo<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tJava 2.0 czyli Kotlin\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/sii.pl\/blog"},{"label":"Development na twardo","link":"https:\/\/sii.pl\/blog\/development-na-twardo\/"},{"label":"Java 2.0 czyli Kotlin","link":"https:\/\/sii.pl\/blog\/java-2-0-czyli-kotlin\/"}],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/12\/java-2.0-czyli-kotlin.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/9872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/263"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=9872"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/9872\/revisions"}],"predecessor-version":[{"id":25204,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/9872\/revisions\/25204"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/9928"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=9872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=9872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=9872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}