V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
laxenade
V2EX  ›  Kotlin

Kotlin 要起飞了,大家怎么看

  •  
  •   laxenade · 2017-05-18 02:34:14 +08:00 · 11422 次点击
    这是一个创建于 2506 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Android 宣布支持 Kotlin(???)
    48 条回复    2017-05-19 16:01:33 +08:00
    GavinHua
        1
    GavinHua  
       2017-05-18 02:42:52 +08:00 via Android
    之前就在观望,现在看来必须要学了
    kmahyyg
        2
    kmahyyg  
       2017-05-18 05:59:33 +08:00 via Android
    优势在哪?准备入坑
    KNOX
        3
    KNOX  
       2017-05-18 08:06:03 +08:00 via Android
    已经用 Kotlin 写公司的项目了
    murmur
        4
    murmur  
       2017-05-18 08:30:45 +08:00
    google 的信仰不值钱,前几个月还说 dart 呢,现在又 kotlin 了,等 1 年再说,估计要不了半年又换新宠
    wintersun
        5
    wintersun  
       2017-05-18 08:32:32 +08:00
    还有那 AngularJS 1 和 2
    tiiime
        6
    tiiime  
       2017-05-18 08:39:00 +08:00 via Android   ❤️ 1
    @murmur dart 比 kotlin 差远了,有很多开发者一直在使用 kotlin,群众基础好。而且 kotlin 对 JAVA 代码的兼容性可不是 dart 能比的
    KNOX
        7
    KNOX  
       2017-05-18 08:45:17 +08:00 via Android   ❤️ 2
    @murmur 就算 Google 弃坑了 JetBrain 爸爸不会抛弃儿子的
    NSAtools
        8
    NSAtools  
       2017-05-18 09:00:32 +08:00
    公司项目上还不敢去用
    holmesabc
        9
    holmesabc  
       2017-05-18 09:22:52 +08:00
    反正 100%兼容 java,混编无后顾之优。现在写也没有啥问题。
    不明白这个“支持”是个啥意思。感觉应该是 “严重推荐(支持)用 kotlin 来写 Android ”吧
    jimbray
        10
    jimbray  
       2017-05-18 09:26:21 +08:00
    同样 对 “支持” 这个词的 意思表达困惑
    h3nng
        11
    h3nng  
       2017-05-18 09:54:04 +08:00
    支持就是 Now Offical On Android
    msputup
        12
    msputup  
       2017-05-18 10:01:45 +08:00
    @h3nng 一直都是 Offical 吧,不然也不可能让你编译运行。只是以前是临时工,凌晨宣布他转正了。
    hjc4869
        13
    hjc4869  
       2017-05-18 10:11:03 +08:00 via Android
    不看好谷歌的编程语言,不信任谷歌会持之以恒一直去完善它
    语言这块儿谷歌已经劣迹斑斑了
    singlepig
        14
    singlepig  
       2017-05-18 10:11:57 +08:00
    @murmur 很有可能,jack 已经哭晕在厕所😂
    changwei
        15
    changwei  
       2017-05-18 10:18:09 +08:00 via Android
    @hjc4869 golang 呢?
    laxenade
        17
    laxenade  
    OP
       2017-05-18 12:14:13 +08:00
    其实一直不是很懂 Kotlin 和 Scala 有什么区别
    billzhuang
        18
    billzhuang  
       2017-05-18 13:56:54 +08:00
    @hjc4869 kolin 又不是 google 的
    Troevil
        19
    Troevil  
       2017-05-18 14:04:01 +08:00
    @laxenade 更多的语法糖和程序猿友好特性
    laxenade
        20
    laxenade  
    OP
       2017-05-18 14:13:27 +08:00
    @Troevil #19 可是大部分语法都是一样的 而且 Scala 比 Kotlin 早辣么久
    longaiwp
        21
    longaiwp  
       2017-05-18 14:58:24 +08:00
    @murmur Apple 的信仰就很值钱了
    noli
        22
    noli  
       2017-05-18 15:42:18 +08:00
    @longaiwp

    讲数据的话,国内的开发者从 Apple 分到的钱可能逼 Android 的多。
    这个角度来看,Apple 的信仰比较值钱也说得过去。
    AtlantisZ
        23
    AtlantisZ  
       2017-05-18 15:50:05 +08:00
    good
    maomaomao001
        24
    maomaomao001  
       2017-05-18 15:54:11 +08:00 via Android
    可是之前也支持啊,我 2016 年还用 kotlin 写过安卓的呀,现在的支持是什么意思?
    EricCartman
        25
    EricCartman  
       2017-05-18 15:56:06 +08:00
    @hjc4869 #13 JetBrain 的
    notes
        26
    notes  
       2017-05-18 16:21:21 +08:00 via Android
    kotlin 必须学
    hjc4869
        27
    hjc4869  
       2017-05-18 17:13:54 +08:00
    @EricCartman
    @billzhuang 是谷歌钦定的。
    @changwei golang 不是做移动开发用的,暂时不讨论。
    araraloren
        28
    araraloren  
       2017-05-18 17:32:26 +08:00
    @maomaomao001
    就是钦定了
    以后阿这个 第一语言身份就坐实了
    就像好多语言都能开发安卓,也只是能而已。。官方钦定感觉不一般。。
    laoyuan
        29
    laoyuan  
       2017-05-18 17:41:11 +08:00
    又是“支持”又是“钦定”的,你们啊,总想搞个大新闻。。。
    Phariel
        30
    Phariel  
       2017-05-18 17:46:56 +08:00 via Android
    @laoyuan Java:我也不是谦虚,你们还是另请高明吧
    evlos
        31
    evlos  
       2017-05-18 17:52:32 +08:00 via iPhone
    已经用 Kotlin 写公司的项目了 +1
    很顺手 👍
    qiukong
        32
    qiukong  
       2017-05-18 18:11:43 +08:00
    一看它和 javascript 有关系我就跑了……
    wineway
        33
    wineway  
       2017-05-18 18:23:15 +08:00 via Android   ❤️ 2
    @qiukong 没关系…编译到 js …现在是个语言都有编译到 js 的项目吧
    wineway
        34
    wineway  
       2017-05-18 18:27:51 +08:00 via Android
    @laxenade kotlin 目标就是去掉 scala 那堆比较复杂的部分留下易用的部分吧,貌似没有隐式和 scala 那样的类型系统之类的东西
    greatghoul
        35
    greatghoul  
       2017-05-18 18:49:07 +08:00 via Android
    @wintersun 不是 angular4 么
    af463419014
        36
    af463419014  
       2017-05-18 20:03:05 +08:00
    scala 还没摸熟,又来个 kotlin,感觉要跟不上时代了
    lirmas
        37
    lirmas  
       2017-05-18 20:41:12 +08:00
    https://huanglizhuo.gitbooks.io/kotlin-in-chinese/content 别的不管(◐ˍ◑)先看文档
    pexcn
        38
    pexcn  
       2017-05-18 21:32:12 +08:00
    我们公司已经钦定用 kotlin + anko 写 android 了
    chinawrj
        39
    chinawrj  
       2017-05-18 21:39:06 +08:00
    @murmur 语言只是工具。为何信仰要是一个工具?
    zongwan
        40
    zongwan  
       2017-05-18 22:00:02 +08:00
    @pexcn anko 666 ...好久之前弄了下 anko preview 一直不成功..
    不过 anko 用起来写布局太好玩了
    plqws
        41
    plqws  
       2017-05-18 22:38:37 +08:00
    Kotlin 这种现代语言的上位总比 Go 这种原始语言越来越火来得好
    Go 能实现 Reactive ?不存在的
    Go 的 OOP ?不存在的
    还是让 Go 在服务端领域继续发挥自己的作用吧,拿来写客户端程序?别逗了
    jyf
        42
    jyf  
       2017-05-18 22:52:48 +08:00
    我的感觉是 不管 kotlin 靠不靠铺 反正看来是要扔掉 java 了
    所以打算去投奔 lambdanative
    DemoJameson
        43
    DemoJameson  
       2017-05-18 23:15:47 +08:00
    所谓的钦定就是以后会对 Kotlin 做全面的支持,测试啊性能啊稳定性啊之类的提升。
    momocraft
        44
    momocraft  
       2017-05-18 23:28:38 +08:00
    比 java 好 支持
    cloud107202
        45
    cloud107202  
       2017-05-19 00:15:09 +08:00   ❤️ 12
    有人提到很疑惑 kotlin 和 scala 的区别,作为一个双修且两个语言都有上过准生产环境的经历(感谢开明又帅气的 boss),简单说说我的浅显理解:
    1. kotlin 运行时相对轻量,标准库逻辑不多。这主要体现出二者在实现思路上的显著差别,kotlin 一切尽可能复用 Java 已有的逻辑和实现,不少 API 仅仅是 Java 版本的封装。而 scala 则是一切都自己来一套。得益于此 kotlin 获得了与 Java 强大的交互性,kt 文件可以跟 Java 文件混写在一个工程(与 scala 不同的一点在于,kotlin 甚至不用以大目录区分),并在 Intellij 大法的加成下,拥有无语伦比的开发体验。
    这一点也或多或少体现在工具链上,kotlin 可以与 maven/gradle 无缝交互,而 scala 的官方构建工具 sbt 有一定上手难度,再加上众所周知的原因,从 sbt 的安装到工程导入伊始便会遇到层层阻碍,私以为这一点极大地阻碍了 scala 在国内的推广。

    2. 在 Functional Programming 支持层面,二者均支持 first-class function/high-order function, Closure, Algebraic Data Type, Type Inference 尾递归优化等在静态语言里如果想舒爽的使用 FP Style 所必须的元素. 相比于 scala, kotlin 还欠缺 Pattern matching, Lazy evaluation 等特性,不过当前的程度已经足够令我满意。和 golang 这种欠缺类型多态的语言相比,kotlin 与 scala 都可以将很多副作用(Nullable,Either,Throwable,IO)直接 encode 进入类型系统,并通过类型系统直接表达和保证对这些副作用的正确处理。相关的 TypeClass/Monad 类库推荐 https://github.com/MarioAriasC/funKTionale 类比 scala 社区比较流行的 scalaz 和 cats.

    3. 开源社区的亲和力与推广,Jetbrains 在营销和推广方面显然是个经验丰富的老司机,合纵连横多点开花收获了 Spring, Eclipse(Vert.x)等多个在 Java 领域举足轻重的大型社区官方支持。至于跟 Google Android 团队的关系也早在 Google 启用 Android Studio 作为 official support IDE 时算起便暧昧起来了。另一边,scala 社区背后的 Typesafe 公司(现在更名为 Lightbend)则曾对 Spring 抛来的橄榄枝不理不睬,保持一副高冷作风(e.g. 于 2012 年烂尾的 spring-scala 项目)。毕竟那边也有自己一套 Akka, Play, Lagom 等有自己玩法的技术栈,不亦乐乎。

    4. 兼容性,算是一把双刃剑,可以扩大占有份额,也是创新前行路上的镣铐。kotlin 当前版本的字节码是 jdk 1.6 的规范(即使 kotlin 1.1 在编译期给定-jvm-target 1.8 开关,生成的字节码也仍然没有利用 invokedynamic, default method )。另一点,同样也得益于小体积的标准库,在 Android 平台面对 APP 体积与 65535 方法数限制时,足以游刃有余。scala 从 2.12 起只能运行在 jdk 1.8 上面。

    5. 创新与野心:2008 年横空出世的 scala 带来很多创新点,收获了极大地关注度,以至于倒逼促成了 jdk 1.8 的若干语法改动(stream API, optional, lambda)。kotlin 相对于 scala 或一众现代高级语言来说,更多的是取其精华且有所舍弃(比如 implict 这种相对复杂且显著拖慢 compiler 的特性) 并且吸收了其他领域语言的特性(比如 Delegated properties 应该是借鉴自 Objc 的 KVO?) 增强语言在移动平台的表达力。这一头 scala-native 这种玩票性质的工程多年还没什么进展,而另一头 Jetbrains 已经招兵买马组织了一波独立团队去并行研发 kotlin-native, 我内心还是很希望 Jetbrains 能把主要精力聚焦到 be a better Java, 至于 better c++这种事情完全可以交给 Rust 去折腾。

    6. 学习成本,综合前面几点,尤其是第一点,kotlin 当前版本( 1.1.2 )几乎是处于没有标准库的阶段,对于一个 Java 熟手来说,简单通读一遍官网的语法规范即可上手。而随着后期 kotlin 其他标准库的补全和语法 /关键字的丰富(coroutine 协程 API 将于 1.2 版本彻底稳定,而剑指 Functional Programming 的 immutable collections 也正在紧锣密鼓的研发中),后面学习起来会遭遇更多的信息和心智负担。考虑到实用性和上手速度,对这两门语言都感兴趣的话,我建议(先)学习 kotlin,而且是立刻和马上学起。

    有感而发加上闲得慌,一不小心写成了长文,希望对有兴趣想尝试的小伙伴们有些许帮助。
    xingda920813
        46
    xingda920813  
       2017-05-19 00:36:22 +08:00
    @cloud107202
    1. Scala Ant / Maven / Gradle / SBT 都可以的;
    2. Scala 在 OO 方面走的更远,Trait,类型系统等,FP 的特性也比 Kotlin 多;
    4. Kotlin 这样做,性能跟编译成 Version 52 字节码的 Scala 2.12 有差距;
    3, 6 说到了 Scala 的痛点,确实是这样,现在加上 Google 钦点,Kotlin 是要学起了。
    cloud107202
        47
    cloud107202  
       2017-05-19 00:38:57 +08:00   ❤️ 1
    @xingda920813 you are right,第一点,就我的体会来说,kotlin 直接 copy 来官方的构建模板很顺滑,而 scala 数次没有折腾成功就弃了,所以没太展开。感谢补充
    bullest
        48
    bullest  
       2017-05-19 16:01:33 +08:00   ❤️ 1
    @team-gbl-android I am not sure who wants to go first but to anyone that is interested feel free to write your next feature in Kotlin. Mention the whole team on the PR for the feature. Be prepared to defend your code.

    今天我们公司的通知
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5432 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 08:41 · PVG 16:41 · LAX 01:41 · JFK 04:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.