{"id":274472,"date":"2016-02-17T17:54:02","date_gmt":"2016-02-17T14:54:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=274472"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=274472","title":{"rendered":"\u0412\u044b\u0448\u0435\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 Kotlin 1.0"},"content":{"rendered":"<p>       \u0412\u0447\u0435\u0440\u0430 \u0432\u044b\u0448\u0435\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 (1.0) \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/kotlinlang.org\/\">Kotlin<\/a> \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"http:\/\/jetbrains.com\">JetBrains<\/a>.<br \/>  \u041a\u0430\u043a \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0432 <a href=\"http:\/\/blog.jetbrains.com\/kotlin\/2016\/02\/kotlin-1-0-released-pragmatic-language-for-jvm-and-android\/\">\u0441\u0432\u043e\u0435\u043c \u0432\u0447\u0435\u0440\u0430\u0448\u043d\u0435\u043c \u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u043b\u0438\u0437\u0435<\/a> \u2014 \u044d\u0442\u043e \u0431\u044b\u043b \u0434\u043e\u043b\u0433\u0438\u0439 \u043f\u0443\u0442\u044c \u043d\u043e \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0443\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u043b\u043e\u0433\u043e(\u0438\u043a\u043e\u043d\u043a\u0443) \u044f\u0437\u044b\u043a\u0430:  <\/p>\n<blockquote><p>It\u2019s been a long and exciting road but we\u2019ve finally reached the first big 1.0, and we\u2019re celebrating the release by also presenting you with the new logo<\/p><\/blockquote>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b82\/bb9\/124\/b82bb91240728b227580703e13c2f26a.png\" alt=\"image\"\/><\/p>\n<p>  <a name=\"habracut\"><\/a><br \/>  \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u0442\u043e\u043c \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0430\u0433\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u042f\u041f \u0434\u043b\u044f JVM \u0438 Andoid c \u0443\u043f\u043e\u0440\u043e\u043c \u043d\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439:  <\/p>\n<blockquote><p>Kotlin is a pragmatic programming language for JVM and Android that combines OO and functional features and is focused on interoperability, safety, clarity and tooling support.<\/p>\n<p>  Being a general-purpose language, Kotlin works everywhere where Java works: server-side applications, mobile applications (Android), desktop applications. It works with all major tools and services such as<br \/>  IntelliJ IDEA, Android Studio and Eclipse<br \/>  Maven, Gradle and Ant<br \/>  Spring Boot (Kotlin support released today!)<br \/>  GitHub, Slack and even Minecraft \ud83d\ude42  <\/p><\/blockquote>\n<p>  \u041f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043f\u0440\u0430\u0433\u043c\u0430\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0446\u0435\u043b\u044c\u044e \u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u043e\u0432\u044b\u0439 \u042f\u041f \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0438\u043f\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0443\u044e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0433\u043e\u0432 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0435\u0449\u0430\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u042f\u041f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c:  <\/p>\n<blockquote><p>Understanding one\u2019s core values is crucial for any long-running project. If I were to choose one word to describe Kotlin\u2019s design, it would be pragmatism. This is why, early on, we said that Kotlin is not so much about invention or research. We ended up inventing quite a few things, but this was never the point of the project. Of course we were building a type system that prevents bugs, and abstraction mechanisms that facilitate code reuse, as anybody in our position would. But our (pragmatic) way of doing it was through focusing on use cases to make the language a good tool.  <\/p><\/blockquote>\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0435 \u2014 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439:  <\/p>\n<blockquote><p>In particular, this approach lead us immediately to the notion that interoperability with existing code and infrastructure is crucial.<\/p><\/blockquote>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e, \u0442.\u0435. \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435:  <\/p>\n<blockquote><p>But elegance, though highly appreciated, is not the primary goal here, the primary goal is being useful. And the less our users have to re-learn, re-invent, re-do from scratch, the more they can re-use, the better.<\/p><\/blockquote>\n<p>  \u041f\u043e \u044d\u0442\u0438\u043c \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u2014 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0447\u0442\u043e \u0438 \u0432 JDK, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u00ab\u0442\u0443\u0434\u0430-\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u00bb:  <\/p>\n<blockquote><p>\u2014 So, why doesn\u2019t Kotlin have its own package manager, or its own build system?<br \/>  \u2014 Because there\u2019s already Maven and Gradle, and re-using their huge number of plugins is crucial for many projects.<br \/>  \u2014 Why did we invest a lot of time and effort into making JDK-compatible collection interfaces, when it was so much easier to just redesign collections from scratch?<br \/>  \u2014 Because tons and tons of Java code work with JDK collections, and converting data on the boundary would be a pain.  <\/p><\/blockquote>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u044e\u0442 \u0447\u0442\u043e \u044f\u0437\u044b\u043a \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u043e\u0442\u043e\u0432 \u043a \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445:  <\/p>\n<blockquote><p>Is it mature enough and ready for production?<\/p>\n<p>  Yes. And it has been for quite some time. At JetBrains, we\u2019ve not only been implementing the compiler and tooling but have also been using Kotlin in real-life projects on a rather extensive scale over the last two years. In addition to JetBrains, there are quite a few companies that have been using Kotlin in production for some time now.<\/p><\/blockquote>\n<p>  \u041f\u043e\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0441\u0442\u043e\u043b\u044c \u0434\u043e\u043b\u0433\u0438\u0439 \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u043b\u0438\u0437\u0443 (\u0431\u043e\u043b\u0435\u0435 5 \u043b\u0435\u0442 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 2010) \u0431\u044b\u043b \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0442.\u043a. \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u041a\u043e\u0442\u043b\u0438\u043d\u0430:  <\/p>\n<blockquote><p>In fact, one of the reasons it took us a long time to reach 1.0 was because we paid extra attention to validating our design decisions in practice. This was and is necessary, because moving forward the compiler will be backwards compatible and future versions of Kotlin must not break existing code. As such, whatever choices we\u2019ve made we need to stick with them.<\/p><\/blockquote>\n<p>  \u0427\u0442\u043e \u0437\u0430 \u0441\u0446\u0435\u043d\u043e\u0439 \u041a\u043e\u0442\u043b\u0438\u043d\u0430? \u041e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0441\u043e\u0442\u043d\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f JetBrains \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043f\u043e\u043d\u0441\u043e\u0440 \u041a\u043e\u0442\u043b\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0432 \u043d\u0435\u0433\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435. \u0423\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043a\u043e\u043b\u043e 10 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u041a\u043e\u0442\u043b\u0438\u043d.  <\/p>\n<blockquote><p>JetBrains is the main backer of Kotlin at the moment: we have invested a lot of effort into developing it and we are committed to the project for the long run. We wrote it out of our own need to use in our own products. And we\u2019re happy to say that to date, close to 10 JetBrains products, which include IntelliJ IDEA, JetBrains Rider, JetBrains Account &#038; E-Shop, YouTrack as well as some of our smaller IDE\u2019s and some internal projects are using Kotlin. So it\u2019s here to stay!<\/p><\/blockquote>\n<p>  \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c\u0443 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u044f\u0437\u044b\u043a\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c.  <\/p>\n<blockquote><p>Moving forward we are planning to set up a centralized venue for design proposals and discussions, to make the process even more visible and organized. Standardization efforts have not been started for Kotlin so far, but we realize that we\u2019ll need to do it rather sooner than later.  <\/p><\/blockquote>\n<p>  \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u044f\u0437\u044b\u043a\u0430 \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0437 \u0431\u043e\u043b\u0435\u0435 20 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.  <\/p>\n<blockquote><p>Language design and overall steering of the project is done by the team employed at JetBrains. We currently have over 20 people working full time on Kotlin, which also yet another testament to JetBrains\u2019 commitment to Kotlin.<\/p><\/blockquote>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u043d\u0430 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u044f\u0437\u044b\u043a\u0430 \u0438 \u0435\u0433\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432:  <\/p>\n<blockquote><p>As of 1.0, we are committed to long-term backward compatibility of the language and its standard library (kotlin-stdlib)<br \/>  -a newer compiler will work with older binaries (but older compilers may not understand newer binaries, like javac 1.6 can\u2019t read classes compiled by javac 1.8);<br \/>  -older binaries will keep working with newer binaries at runtime (newer code may require newer dependencies, though).  <\/p><\/blockquote>\n<p>  \u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u043f\u043b\u0430\u043d\u044b \u2014 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u044f\u0437\u044b\u043a\u0430, \u043f\u043e\u0434\u0434\u0435\u0436\u043a\u0430 JavaScript (\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043a\u0430\u043a \u0432 JVM \u0442\u0430\u043a \u0438 \u0432 JS \u0433\u0434\u0435 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e) \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Java8 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.  <\/p>\n<blockquote><p>As for the plans, our nearest goals are (apart from bug fixes):<\/p>\n<p>  Constant performance improvements for the Kotlin toolchain (this includes, for example, incremental compilation in Gradle, that is in the works now);<br \/>  JavaScript support (including cross-compilation into both JVM and JS where possible);<br \/>  Support generating Java 8 byte code with optimized lambdas, etc (Java 6 will be actively supported as long as Android users need it).<br \/>  Tooling updates and bug fixes will be released as incremental updates, i.e. 1.0.X. Bigger changes will first go though an Early Access Program (EAP) and then will be released as 1.1.<\/p><\/blockquote>\n<p>  \u0414\u043e\u043a\u0438, \u043c\u0430\u043d\u0443\u0430\u043b\u044b \u2014 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 <a href=\"https:\/\/kotlinlang.org\">kotlinlang.org<\/a><br \/>  \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/devnet.jetbrains.com\/community\/kotlin\">\u0444\u043e\u0440\u0443\u043c<\/a> \u0438\u043b\u0438 <a href=\"http:\/\/kotlinslackin.herokuapp.com\/\">\u0447\u0430\u0442 \u043a\u043e\u0442\u043b\u0438\u043d\u0430<\/a><\/p>\n<blockquote><p>Have a nice Kotlin! Now \ud83d\ude42<\/p><\/blockquote>\n<p>  p.s. \u0432\u0441\u0435 \u0432\u0440\u043e\u0434\u0435 \u043a\u0440\u0443\u0442\u043e \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e, \u0432\u0441\u0435\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0432\u0435\u0432\u0430\u0435\u0442 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f \u2014 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f \u0432\u0435\u0447\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0442.\u0435. \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0447\u0442\u043e \u0438 \u0432 \u0441\u0430\u043c\u043e\u0439 Java. \u0422\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e? \u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0449\u0435\u0440\u0431\u043d\u044b\u0445 generics, \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u044f\u043c\u0431\u0434 \u0438 \u0442\u0434. \u043c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u0430\u043c\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0437 \u043d\u0430\u0431\u043e\u043b\u0435\u0432\u0448\u0435\u0433\u043e. \u0422\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0437 \u0432 10-15 \u043b\u0435\u0442 \u044d\u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u0432 \u043b\u0443\u0447\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443? \u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c Java \u0441 \u0432\u0435\u0447\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0442\u0430\u043a \u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0449\u0435 \u0432 \u041a\u043e\u0442\u043b\u0438\u043d\u0435? \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0442\u044c:<\/p>\n<div class=\"polling\">\n<form action=\"\/json\/polling\/\" class=\"poll\" method=\"post\">\n<div class=\"poll_title\">\u041d\u0443\u0436\u043d\u0430 \u043b\u0438 \u0432 \u041a\u043e\u0442\u043b\u0438\u043d\u0435 \u00ab\u0432\u0435\u0447\u043d\u0430\u044f\u00bb \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c?<\/div>\n<p>  \t\t<input type=\"hidden\" name=\"post_id\" value=\"277431\"\/> \t\t<input type=\"hidden\" name=\"polling_question_id\" value=\"14603\"\/>  \t\t<\/p>\n<table class=\"answer\">\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv71371\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"71371\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv71371\">\u0434\u0430, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0432 Java<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv71373\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"71373\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv71373\">\u043d\u0435 \u043d\u0443\u0436\u043d\u0430: \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e (\u0440\u0430\u0437 \u0432 10-20 \u043b\u0435\u0442) \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430\u0440\u0443\u0448\u0430\u0442\u044c<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv71375\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"71375\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv71375\">\u043d\u0435 \u043d\u0443\u0436\u043d\u0430: \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv71377\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"71377\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv71377\">\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043d\u0438\u043a\u0430\u043a\u0430\u044f: \u0432 \u043b\u044e\u0431\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0442\u044c (\u043a\u0430\u043a \u0432 Scala \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440)<\/label> \t\t\t\t<\/td>\n<\/tr>\n<\/table>\n<p class=\"total\">\u041d\u0438\u043a\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b. \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.<\/p>\n<\/p><\/form>\n<p class=\"for_users_only_msg\">\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a href=\"https:\/\/habrahabr.ru\/auth\/login\/\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<\/p><\/div>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/277431\/\"> https:\/\/habrahabr.ru\/post\/277431\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0412\u0447\u0435\u0440\u0430 \u0432\u044b\u0448\u0435\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 (1.0) \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/kotlinlang.org\/\">Kotlin<\/a> \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"http:\/\/jetbrains.com\">JetBrains<\/a>.<br \/>  \u041a\u0430\u043a \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0432 <a href=\"http:\/\/blog.jetbrains.com\/kotlin\/2016\/02\/kotlin-1-0-released-pragmatic-language-for-jvm-and-android\/\">\u0441\u0432\u043e\u0435\u043c \u0432\u0447\u0435\u0440\u0430\u0448\u043d\u0435\u043c \u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u043b\u0438\u0437\u0435<\/a> \u2014 \u044d\u0442\u043e \u0431\u044b\u043b \u0434\u043e\u043b\u0433\u0438\u0439 \u043f\u0443\u0442\u044c \u043d\u043e \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0443\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u043b\u043e\u0433\u043e(\u0438\u043a\u043e\u043d\u043a\u0443) \u044f\u0437\u044b\u043a\u0430:  <\/p>\n<blockquote><p>It\u2019s been a long and exciting road but we\u2019ve finally reached the first big 1.0, and we\u2019re celebrating the release by also presenting you with the new logo<\/p><\/blockquote>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b82\/bb9\/124\/b82bb91240728b227580703e13c2f26a.png\" alt=\"image\"\/><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-274472","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/274472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=274472"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/274472\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=274472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=274472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=274472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}