<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>翻译 - 分类 - ISLAND</title><link>https://youngxhui.top/categories/%E7%BF%BB%E8%AF%91/</link><description>翻译 - 分类 - ISLAND</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>youngxhui@gmail.com (youngxhui)</managingEditor><webMaster>youngxhui@gmail.com (youngxhui)</webMaster><copyright>本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。</copyright><lastBuildDate>Sat, 02 Dec 2017 14:51:59 +0000</lastBuildDate><atom:link href="https://youngxhui.top/categories/%E7%BF%BB%E8%AF%91/" rel="self" type="application/rss+xml"/><item><title>Kotlin 1.2:平台之间共享代码</title><link>https://youngxhui.top/2017/12/kotlin-1-2-%E5%B9%B3%E5%8F%B0%E4%B9%8B%E9%97%B4%E5%85%B1%E4%BA%AB%E4%BB%A3%E7%A0%81/</link><pubDate>Sat, 02 Dec 2017 14:51:59 +0000</pubDate><author><name>youngxhui</name></author><guid>https://youngxhui.top/2017/12/kotlin-1-2-%E5%B9%B3%E5%8F%B0%E4%B9%8B%E9%97%B4%E5%85%B1%E4%BA%AB%E4%BB%A3%E7%A0%81/</guid><description><![CDATA[<h1 id="前言" class="headerLink">
    <a href="#%e5%89%8d%e8%a8%80" class="header-mark"></a>前言</h1><p>这是一个尝试，之前没有翻译过任何技术文章，做一个尝试，也算是学习，尽管现在这个译文在网上已经是满天飞了。</p>
<p>原文地址<a href="https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/" target="_blank" rel="noopener noreferrer">Kotlin 1.2 Released: Sharing Code between Platforms</a></p>
<h1 id="正文" class="headerLink">
    <a href="#%e6%ad%a3%e6%96%87" class="header-mark"></a>正文</h1><p>今天，我们将要发布 Kotlin 1.2。这是一个重要的新版本和一个大的步伐在我们朝着使用 Kotlin 在现代应用程序中的道路上。</p>
<p>在 Kotlin 1.1 中，我们正式的发布了 <strong>JavaScript 目标</strong>，允许你去编译 Kotlin 代码成为 JS 并且运行在浏览器上。在 <strong>Kotlin 1.2</strong> 中，我们将要添加 <strong>JVM 和 JavaScript</strong> 的代码重用成为可能。现在你可以写一次应用程序的逻辑代码，而在你的应用程序中所有层重用它——后端，浏览器前端和Android移动应用。我们也会在库上进行工作，帮助你重用更多的代码。比如跨平台库。</p>
<p><img class="tw-inline" loading="lazy" src='https://d3nmt5vlzunoa1.cloudfront.net/kotlin/files/2017/11/cake3-1.png'     ></p>
<p>Kotlin 1.2 是已经绑定在 <a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer">IntelliJ IDEA 2017.3</a>中，将会在本周发布。如果你正在使用的是 Android Studio 或者 一个旧版本的 Intellij IDEA，你可以从 Tools | Kotlin | Configure Kotlin Plugin 更新框中安装新的版本。</p>
<p>这个版本包括了大量外部贡献者的工作，并且我们想感谢向我们反馈，提交问题和尤其是提交了PR的每个人。</p>
<h2 id="多平台项目" class="headerLink">
    <a href="#%e5%a4%9a%e5%b9%b3%e5%8f%b0%e9%a1%b9%e7%9b%ae" class="header-mark"></a>多平台项目</h2><p>一个多平台项目允许你编译在你的应用程序的多层 —— 后端，前端和Android应用 —— 在相同的代码基础上。这样的一个项目包含了 <strong>相同模块</strong>,与平台无关以及<strong>特定平台的模块</strong>，包含了特定平台的代码( JVM 或者 JS )和使用了特定平台的库。从通用模块调用特定平台的代码，你可以指定<strong>预期的声明</strong>——所有平台特定模块需要提供<strong>实际实现</strong>声明。</p>
<p><img class="tw-inline" loading="lazy" src='https://d3nmt5vlzunoa1.cloudfront.net/kotlin/files/2017/11/MPP.png'     ></p>
<p>有关该功能的更多信息，请查看这个<a href="http://kotlinlang.org/docs/reference/multiplatform.html" target="_blank" rel="noopener noreferrer">文档</a></p>
<p>如前所述，我们也在编写一组公共库允许你将更多的逻辑代码转移到公共代码：</p>
<ul>
<li>
<p><a href="http://kotlinlang.org/api/latest/kotlin.test/index.html" target="_blank" rel="noopener noreferrer">kotlin.test</a>,包括开箱即用的Kotlin1.2，让你写一次测试并且运行在JVM 和 JS 下；</p>
</li>
<li>
<p><a href="https://github.com/kotlin/kotlinx.html" target="_blank" rel="noopener noreferrer">kotlin.html</a>支持 <strong>同构渲染</strong> — 用相同的代码渲染 HTML 在后端和在前端；</p>
</li>
<li>
<p><a href="https://github.com/kotlin/kotlinx.serialization" target="_blank" rel="noopener noreferrer">kotlinx.serialization</a>允许你轻松的对 Kotlin对象编组在你的应用程序的不同的层之间，使用 JSON 或者 ProtoBuf 进行序列化格式化。</p>
</li>
</ul>
<p>请注意，多平台项目目前是一个实验性功能；这意味着这个功能是准备使用，但是我们也许需要去改变设计在之后的版本(并且如果我们这样做，我们将会提供代码迁移工具)。</p>
<h2 id="编译性能" class="headerLink">
    <a href="#%e7%bc%96%e8%af%91%e6%80%a7%e8%83%bd" class="header-mark"></a>编译性能</h2><p>在1.2的发展过程中，我们花费了很多精力来使编译过程更快。我们已经比Kotlin1.1提高了大约 25% 并且我们看见进一步改进的巨大潜力，它将会在发布在 1.2.x的更新中。</p>
<p>下方的图片展示了两个用Kotlin的大型JetBrains项目不同的编译时间：
<img class="tw-inline" loading="lazy" src='https://d3nmt5vlzunoa1.cloudfront.net/kotlin/files/2017/11/CompilationSpeed.png'     ></p>
<h2 id="其他语言和库的改进" class="headerLink">
    <a href="#%e5%85%b6%e4%bb%96%e8%af%ad%e8%a8%80%e5%92%8c%e5%ba%93%e7%9a%84%e6%94%b9%e8%bf%9b" class="header-mark"></a>其他语言和库的改进</h2><p>我们也做了许多小的改进在语言和标准库：</p>
<ul>
<li>
<p><a href="http://kotlinlang.org/docs/reference/whatsnew12.html#array-literals-in-annotations" target="_blank" rel="noopener noreferrer">更简洁的语法</a> 用于将多个参数传递给注解(数组 文字(literals)) <em>不知如何翻译literals 译者注</em></p>
</li>
<li>
<p>支持 <code>lateinit</code> 修饰在全局属性和局部属性，以及检查一个 <code>lateinit</code> 是否被初始化；</p>
</li>
<li>
<p><a href="http://kotlinlang.org/docs/reference/whatsnew12.html#smart-cast-improvements" target="_blank" rel="noopener noreferrer">更加聪明的智能推导</a>和<a href="http://kotlinlang.org/docs/reference/whatsnew12.html#information-from-explicit-casts-is-used-for-type-inference" target="_blank" rel="noopener noreferrer">改进的类型推断</a>在一些情况下。</p>
</li>
<li>
<p>标准库和 Java9 中引入的分包限制的兼容；</p>
</li>
<li>
<p>新的 <code>kotlin.math</code>包在标准库中；</p>
</li>
<li>
<p>新的标准库函数在处理序列和集合，包含了<a href="http://kotlinlang.org/docs/reference/whatsnew12.html#windowed-chunked-zipwithnext" target="_blank" rel="noopener noreferrer">一组函数</a> 为了拆分集合和序列为可能重叠的固定大小的组。</p>
</li>
</ul>
<p>更多的信息和代码示例，请看 <a href="http://kotlinlang.org/docs/reference/whatsnew12.html" target="_blank" rel="noopener noreferrer">Kotlin1.2中新功能</a></p>
<h2 id="世界各地的kotlin" class="headerLink">
    <a href="#%e4%b8%96%e7%95%8c%e5%90%84%e5%9c%b0%e7%9a%84kotlin" class="header-mark"></a>世界各地的Kotlin</h2><p>自从今年3月发布的Kotlin1.1以来，Kotlin已经取得了巨大的收获在世界各地。这是 KotlinConf 的高潮，我们第一次全球会议，有着1200参会者在11月2，3日的旧金山。我们已经记录了所有的会谈，并且<a href="https://kotlinconf.com/talks/" target="_blank" rel="noopener noreferrer">视频已经可以看</a>。</p>
<p>Kotlin现在是一个Android开发官方支持的语言，开箱即用的Android Studio 3.0，已经谷歌发布了官方<a href="https://developer.android.com/samples/index.html?language=kotlin" target="_blank" rel="noopener noreferrer">示例</a>和<a href="https://android.github.io/kotlin-guides/" target="_blank" rel="noopener noreferrer">风格指南</a>。结果是，在Android Studio中超过了 17% 的项目使用 Kotlin，包含来自很多热门的创业公司以及财富500强公司的许多应用程序。</p>
<p><img class="tw-inline" loading="lazy" src='https://d3nmt5vlzunoa1.cloudfront.net/kotlin/files/2017/11/KotlinConfUsers.jpg'     ></p>
<p>在服务器端，<a href="https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga" target="_blank" rel="noopener noreferrer">Spring 5.0</a> 已经发布，有着<a href="https://docs.spring.io/spring/docs/current/spring-framework-reference/languages.html#kotlin" target="_blank" rel="noopener noreferrer">许多Kotlin支持的功能</a>,而且 <a href="http://vertx.io/" target="_blank" rel="noopener noreferrer">vert.x</a> 已经<a href="http://vertx.io/docs/vertx-core/kotlin/" target="_blank" rel="noopener noreferrer">支持Kotlin</a>在3.4.0后。当然，Gradle支持开箱即用Kotlin DSL，而且 Gradle Kotlin DSL 项目正在迅速的接近1.0版本。</p>
<p>在Github上，开源的Kotlin代码行数已经超过了2.5亿。而在 Stack Overflow，Kotlin是<a href="https://stackoverflow.blog/2017/10/31/disliked-programming-languages/" target="_blank" rel="noopener noreferrer">增长最快的语言之一和最不反感的语言之一</a></p>
<p><img class="tw-inline" loading="lazy" src='https://d3nmt5vlzunoa1.cloudfront.net/kotlin/files/2017/11/KotlinAdoption.png'     ></p>
<p>围绕Kotlin的社区建立同样也是令人吃惊的，已经有超过100用户组在全世界，我们很难追踪到所有的人 —— 但是针对我们所知道的，这个<a href="http://kotlinlang.org/community/talks.html" target="_blank" rel="noopener noreferrer">会谈地图</a>给了你一个很好的想法，kotlin是多么广泛的使用。</p>
<p><img class="tw-inline" loading="lazy" src='https://d3nmt5vlzunoa1.cloudfront.net/kotlin/files/2017/11/KUGmap.png'     ></p>
<p>对于刚刚学习Kotlin的人来说，书籍的数量是不断的增长(包含我们自己的 &ldquo;Kotlin in Action&rdquo;,现在有<a href="https://manning.com/books/kotlin-in-action" target="_blank" rel="noopener noreferrer">英文</a>，<a href="https://dmkpress.com/catalog/computer/programming/java/978-5-97060-497-7/" target="_blank" rel="noopener noreferrer">俄语</a>，<a href="https://www.amazon.co.jp/Kotlin%E3%82%A4%E3%83%B3%E3%83%BB%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3-Dmitry-Jemerov/dp/4839961743/ref=sr_1_2?ie=UTF8&amp;qid=1511539431&amp;sr=8-2&amp;keywords=kotlin" target="_blank" rel="noopener noreferrer">日语</a>，<a href="https://www.amazon.com/Kotlin%E5%AE%9E%E6%88%98-Svetlana-Isakova-Dmitry-Jemerov/dp/B07568C58F/ref=sr_1_3?s=books&amp;ie=UTF8&amp;qid=1511539582&amp;sr=1-3" target="_blank" rel="noopener noreferrer">中文</a>和<a href="https://novatec.com.br/livros/kotlin-em-acao/" target="_blank" rel="noopener noreferrer">葡萄牙语</a>),线上课程，教程和<a href="http://kotlinlang.org/community/" target="_blank" rel="noopener noreferrer">其他资源</a></p>
<h2 id="团队见面网络研讨会和reddit-ama" class="headerLink">
    <a href="#%e5%9b%a2%e9%98%9f%e8%a7%81%e9%9d%a2%e7%bd%91%e7%bb%9c%e7%a0%94%e8%ae%a8%e4%bc%9a%e5%92%8creddit-ama" class="header-mark"></a>团队见面：网络研讨会和Reddit AMA</h2><p>分享你更多的信息关于新版本，我们计划组织一个<a href="https://info.jetbrains.com/Kotlin-Webinar-December2017.html" target="_blank" rel="noopener noreferrer">网络研讨会关于Kotlin1.2多平台项目</a>在12月7日，18:00 CET。请注册；空间有限。</p>
<p>Kotlin团队也将会举办 AMA(Ask Me Anything) 在 <a href="https://www.reddit.com/r/Kotlin/" target="_blank" rel="noopener noreferrer">Kotlin Reddit</a> 上在12月5号。我们将开始中午开始(CET),并且我们接下来的24小时和你在一起。</p>
<h2 id="如何升级" class="headerLink">
    <a href="#%e5%a6%82%e4%bd%95%e5%8d%87%e7%ba%a7" class="header-mark"></a>如何升级</h2><p>一如既往，你可以<strong>在线尝试Kotlin</strong>在<a href="http://try.kotlinlang.org/" target="_blank" rel="noopener noreferrer">try.kotlinlang.org</a></p>
<ul>
<li>
<p>在 Maven，Gradle和npm中：使用<code>1.2.0</code>作为编译器和标准库的版本号。看<a href="http://kotlinlang.org/docs/reference/using-gradle.html" target="_blank" rel="noopener noreferrer">这里</a></p>
</li>
<li>
<p><strong>IntelliJ IDEA</strong>：2017.3已经和Kotlin1.2绑定，在早期版本中安装或者升级 Kotlin 插件到1.2.0版本。</p>
</li>
<li>
<p><strong>Android Studio</strong>：安装或者升级插件通过 <code>Plugin Manager</code>。</p>
</li>
<li>
<p><strong>Eclips</strong>：安装插件在 <a href="https://marketplace.eclipse.org/content/kotlin-plugin-eclipse" target="_blank" rel="noopener noreferrer">MarketPlace</a>。</p>
</li>
<li>
<p><strong>命令行编译</strong>可以从<a href="https://github.com/JetBrains/kotlin/releases/tag/v1.2.0" target="_blank" rel="noopener noreferrer">Github发布页面</a>上下载。</p>
</li>
</ul>
<p><strong>兼容性</strong> 在Kotlin1.2的语言和标准库是<a href="http://kotlinlang.org/docs/reference/compatibility.html" target="_blank" rel="noopener noreferrer">向后兼容的(模块错误)</a>:如果一些编译和运行在1.0或者1.1，将会继续在1.2上运行。帮助逐渐共享的打团队，我们将提供不使用新特性的编译开关。<a href="http://kotlinlang.org/docs/reference/compatibility.html#binary-compatibility-warnings" target="_blank" rel="noopener noreferrer">这里</a>是一个包含可能的缺陷文档</p>
]]></description></item></channel></rss>