nekocode
V2EX  ›  Kotlin

国内有大公司是用 Kotlin 开发 Android APP 的么?

  •  1
     
  •   nekocode · Jan 21, 2016 · 15288 views
    This topic created in 3776 days ago, the information mentioned may be changed or developed.


    鄙人目前在国内积极进行 Kotlin 的布道,个人已经开始将其尝试应用到实际生产环境中(目前有处于开发期的产品正在使用 Kotlin ),感觉十分良好。想问问国内有什么公司(非个人)是在进行这方面的尝试的。

    61 replies    2017-05-21 12:18:16 +08:00
    gengrui
        1
    gengrui  
       Jan 21, 2016
    Hi 楼主好。我是在澳洲的 android 开发者,目前也希望在工作中使用 kotlin ,可否交流交流?谢谢。
    PS:你的 baseframework 很不错,谢谢分享。
    haroldwu
        2
    haroldwu  
       Jan 21, 2016
    同想學 kotlin ,但是找不要到完整的教材,求指點一二!
    nekocode
        3
    nekocode  
    OP
       Jan 21, 2016   ❤️ 1
    @gengrui 谢谢支持。我主要在 [知乎]( https://www.zhihu.com/people/nekocode) 以及 Github 上活跃, V2EX 刚接触,以后可以多交流。

    我对 Kotlin 的前景十分看好,不仅仅因为它是一门 trick 多的语言,它和 Java 之间的相融性让它产生了更多机遇与可能。
    nekocode
        4
    nekocode  
    OP
       Jan 21, 2016   ❤️ 1
    @haroldwu
    《 Kotlin for android Developers 》是一本不错的教材,这是中文译本 https://www.gitbook.com/book/wangjiegulu/kotlin-for-android-developers-zh/details

    更好的教材应当是官方文档 https://kotlinlang.org/docs/reference/,好像也有译文,不过跟不上官方更新,建议直接阅读英文原文。

    有基础的话也可以尝试看下我的专栏 http://zhuanlan.zhihu.com/kotandroid ,比较偏实践的内容。
    Tneciv
        5
    Tneciv  
       Jan 21, 2016
    你是知乎那个?看过你的专栏
    gengrui
        6
    gengrui  
       Jan 21, 2016
    @nekocode 多多交流 :) 知乎已经关注,谢谢
    nekocode
        7
    nekocode  
    OP
       Jan 21, 2016
    @gengrui 已回关注,(。・`ω´・)
    nekocode
        8
    nekocode  
    OP
       Jan 21, 2016
    @Tneciv 是的,谢谢关注♥
    em70
        9
    em70  
       Jan 21, 2016 via iPhone
    第三方 SDK 能接入吗,比如 qq 登陆 SDK
    nekocode
        10
    nekocode  
    OP
       Jan 21, 2016
    @em70
    Kotlin 支持与 Java 代码互操作,所以没问题的。这也是 Kotlin 相对其他 Jvm 语言更适合开发 Android 的原因。
    johnnydtsai
        11
    johnnydtsai  
       Jan 21, 2016
    正在学习 感觉 kotlin 不错
    moyaya
        12
    moyaya  
       Jan 21, 2016
    就算想用,国内目前估计也找不到人。
    puras
        13
    puras  
       Jan 21, 2016
    有没有用 Kotlin 不做 Android ,而做 WEB 的呢?
    lingdududu
        14
    lingdududu  
       Jan 21, 2016   ❤️ 1
    airqj
        15
    airqj  
       Jan 21, 2016
    跟 scala 比起来 有什么优势吗
    alexsunxl
        16
    alexsunxl  
       Jan 21, 2016
    已经推荐给做 Android 的朋友。楼主加油,布道可是不容易,搞点线下交流会吧
    jiezhi
        17
    jiezhi  
       Jan 21, 2016
    关注一下,有空研究下
    hooluupog
        18
    hooluupog  
       Jan 21, 2016
    @airqj 从语言的设计上,我不太喜欢 scala ,所以偏向 kotlin 。
    要说优势,最大的优势就是和 java 的互操作性,比如利用现有的 java 生态,各自库,这个 scala 完全不能比。
    劣势就是目前还没有 1.0 正式版。
    nekocode
        19
    nekocode  
    OP
       Jan 21, 2016
    @moyaya
    是的。我们团队的两个 Android 开发也是我带起来转到 Kotlin 上的,学习成本也不会太高(一两周就可以上手了)。但是如果没人带的话,肯定会遇到很多坑,所以不建议没有这方面积累的团队把 Kotlin 运用到生产环境中。


    @airqj
    已经有朋友解答你了 @hooluupog ,有兴趣的话也可去我专栏上查阅文章,对 Kotlin 相较起其他 JVM 语言的优势有比较粗略的解答。


    @alexsunxl
    谢谢支持 (๑→ܫ←),线下交流会的话就算了,目前连组织都没有。国内使用 Kotlin 的人并不多,但是在可预见的未来 Kotlin 将对 Android 原有开发界造成一定的冲击与影响。
    john990
        20
    john990  
       Jan 21, 2016
    正在用,但是不支持 android studio 实时编译,很不方便,其他感觉非常好
    br00k
        21
    br00k  
       Jan 21, 2016
    想用来做 web 开发 XD
    florije
        22
    florije  
       Jan 21, 2016
    关注了,但是还没有在实际项目中使用,已经收藏 LZ 相关文章,稍后仔细看看。
    pengbo37877
        23
    pengbo37877  
       Jan 21, 2016
    不错,下一个项目可以试试
    loshine1992
        24
    loshine1992  
       Jan 21, 2016
    关注楼主的专栏很久了,没想到竟然来 V2EX 布道了呀
    alexsunxl
        25
    alexsunxl  
       Jan 21, 2016
    @nekocode airbnb 最信奉的一句话:让 1 个用户爱上你,而不是 100 个用户喜欢你。
    线下能让你找到布道小伙伴
    nekocode
        26
    nekocode  
    OP
       Jan 21, 2016
    @john990
    你指的是预览版的 instant run 么? kotlin 目前在对 instant run 和某些 lambda 代码的 debug 都支持不太好,不过要相信 jetbrains 家的实力,这些都不是大问题。

    @br00k @florije @loshine1992
    谢谢支持

    @alexsunxl
    从简做起吧,有空的话我可以考虑下寻求或者创建组织 ♥
    eimsteim
        27
    eimsteim  
       Jan 21, 2016
    我觉得 Android 开发的痛点并不是在语法级别,而是在于复杂的自定义 View ,目前也没有见过比较成体系的成熟的 UI 库,可能我离开 Android 时间有点久了,现在觉得还是用 H5 的方式来写 APP 比较舒服。
    nekocode
        28
    nekocode  
    OP
       Jan 21, 2016
    @eimsteim 语法上的影响很大, Kotlin 之于 Andriod 就如 Swift 之于 iOS ,更丰富的表达能力,带来的肯定是更愉悦的代码体验,以及更高的开发效率。就像 Ruby ,在我看来 DSL 在很大程度上支撑了它的发展。
    hjkl0001
        29
    hjkl0001  
       Jan 21, 2016
    谢谢分享!!!!
    springwarm
        30
    springwarm  
       Jan 21, 2016
    @eimsteim 同意 Android 的最大痛点不在语法级别

    但个人的倾向是,当其他环节能有明显改善时,也是值得尝试的
    ----

    Kotlin 表达力更强,又比 Scala 与既有的 Java 生态融合的更好(这点很重要, C#的表达力很强,但是.NET 的生态在很多方面还是不如 Java ),不乏优秀的工具支持( JetBrains 大旗一挥)

    Kotlin Android Extension ,把 XML 布局编译成类,就在代码中引用组件而言,开发体验好于 ButterKnife 以及 AndroidAnnotations 的相关部分

    后面会考虑将 Kotlin 用于实际项目,期待露珠多写深入好文
    CodingPuppy
        31
    CodingPuppy  
       Jan 21, 2016
    kotlin koans 已全部做了一遍,感觉挺好,但是网上的资源还是少。怕用到项目里面拖累队友
    CodingPuppy
        32
    CodingPuppy  
       Jan 21, 2016
    @nekocode 看到楼主 github 有提到 anko ,我遇到一个问题想请教下,我在 Activity 的 onCreate 里面使用 DSL ,布局没有显示出来, anko 的官方文档说的是在这里使用是会自动调用 setContentView 的。使用 AnkoComponent 的方式定义布局类,主动调用 set 是可以的。这个是我的使用姿势不对么? 在 anko 发了 issue 然而并没有人鸟我。
    nekocode
        33
    nekocode  
    OP
       Jan 21, 2016
    @CodingPuppy anko: version 0.7.2 下并没有你提到的问题,我在代码中也能正常使用:
    https://github.com/nekocode/kotlin_android_base_framework/blob/master/app%2Fsrc%2Fmain%2Fjava%2Fcn%2Fnekocode%2Fbaseframework%2Fui%2Factivity%2Fcomponent%2FSingleFragmentActivity.kt

    @springwarm Kotlin Android Extension 并非将 XML 布局编译成类,它的实现其实和 ButterKnife 类似,只是不需手动绑定 id ,我个人是比较喜欢使用 https://github.com/JakeWharton/kotterknife ,以后也会持续分享自身的一些心得(毕竟已经开始使用在生产环境上了。。),谢谢关注~
    haroldwu
        34
    haroldwu  
       Jan 21, 2016
    @nekocode 謝謝樓主指點一二!線上社區支持一個。
    springwarm
        35
    springwarm  
       Jan 21, 2016
    @nekocode 从官方的这段描述看,像是被编(fan)译(yi)为代码了
    布局中赋予 id 的元素,被编译为 Activity 类的 extension property

    (如果是这样,这思想很像 C#的 partial class ,而以前开发.NET WinForm/WebForm 的童鞋, 从来没有 findViewById 这种烦恼)

    ----

    ```java

    // Using R.layout.activity_main from the main source set
    import kotlinx.android.synthetic.main.activity_main.*

    public class MyActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    textView.setText("Hello, world!") // Instead of findView(R.id.textView) as TextView
    }
    }
    ```

    textView is an extension property for Activity, and it has the same type as declared in activity_main.xml.
    nekocode
        36
    nekocode  
    OP
       Jan 21, 2016   ❤️ 1
    @springwarm Kotlin Android Extension 和 ButterKnife 一样是在「编译期」暗插代码实现的视图绑定,只不过 ButterKnife 是通过 APT ,而 Kotlin Android Extension 是通过自身编译期处理。

    Kotlin Android Extension 在编译期解析 XML 后,安插了 Caching Function ,实际上内部实现一样是调用 findViewById 。所以并非它将 XML 编译成对应构造视图的 Java Code 。
    nekocode
        37
    nekocode  
    OP
       Jan 21, 2016
    勘误,「而 Kotlin Android Extension 是通过自身编译器处理。」
    ruchee
        38
    ruchee  
       Jan 21, 2016 via iPhone
    活捉楼猪,打个酱油。 Kotlin 大法好
    incompatible
        39
    incompatible  
       Jan 21, 2016
    楼主,抱歉我暂时没有太多时间去研究 kotlin 这门语言。
    我是 groovy 的重度使用者,对 closure 、 reader.getText 、 collection.each / collect / inject 等特性爱不释手。我已经在若干服务器端项目中普遍应用了 groovy 语言,目前表现非常完美(在 groovy 支持 CompileStatic 特性后,性能已经没有逊于 java 太多了)。

    不知你是否对 groovy 有所了解? 如果“是”的话,能否简要对比一下 groovy 和 kotlin ?非常感谢!
    breaklayer
        40
    breaklayer  
       Jan 21, 2016
    对 kotlin 很感兴趣,但是没有迫切的动力去学习,现在在学 rxjava
    canaan
        41
    canaan  
       Jan 21, 2016
    @breaklayer 我也正在学 RxJava ,感觉这个对开发目前可能帮助更大
    mathgl
        42
    mathgl  
       Jan 21, 2016
    @incompatible kotlin 运行环境貌似比 groovy 小。 可能也是最小的之一。 kotlin 的设计思想是能用 java 的库就不会自己写。 groovy 现在能在 android 运行了没? 记得原来是不可以的。
    plqws
        43
    plqws  
       Jan 21, 2016
    得知有 Kotlin 才打算入 JVM 坑的,想要问一下楼主,刚入坑要怎么适应 JVM 这个又庞大又复杂的生态呢?
    nekocode
        44
    nekocode  
    OP
       Jan 21, 2016
    @incompatible 我对 groovy 的了解仅限于 gradle 和 grails 上,了解不深,不过对它的 DSL 印象挺深。

    @breaklayer @canaan RxJava 确实是实现异步的最佳选择。我在我的代码中 Model 层的操作( io 、 cpu 密集操作)都使用 Rx 执行,然后发射 Observable 到 Presenter 层进行处理。对目前一些流行语法糖不感冒的,确实相对于 Kotlin 来说学好 RxJava 的帮助更大。

    @ruchee Hi~ 很高兴在这里见到你 ✪ω✪

    @mathgl Groovy 能在 android 上运行,但是它和 Java 之间的互操作性不堪入目。

    @plqws 不太懂你的意思,入 JVM 坑是什么意思,。。=_=
    incompatible
        45
    incompatible  
       Jan 21, 2016 via iPhone
    @mathgl 噢这真的是个优势。有时候写个开源的 lib 想用 groovy ,但是考虑到让用户的依赖中多出个 groovy 的 jar 包实在太粗鲁,只能作罢。


    @nekocode 谢谢。
    Lonely
        46
    Lonely  
       Jan 21, 2016
    没有让我用 Kotlin 的理由,毕竟不是 Google 明确支持的。
    plqws
        47
    plqws  
       Jan 21, 2016
    @nekocode 就是 Java Groovy Scala Kotlin 这类的
    DemoJameson
        48
    DemoJameson  
       Jan 21, 2016
    已 star 已关注专栏,楼主棒棒哒
    Narcissu5
        49
    Narcissu5  
       Jan 22, 2016
    问个比较小白的问题哈, kotlin 会不会像 scala 一样需要依赖自己的基本库( scala-library ),我是觉得 scala 十几 M 的基本库是个大问题。
    haroldwu
        50
    haroldwu  
       Jan 22, 2016
    @plqws 忽略了咱 clojure Q_Q
    dphdjy
        51
    dphdjy  
       Jan 22, 2016 via Android
    _(:з)∠)_ 咱的 seed 一直跑不起来~ 大概用了一周才成功编译~资料啊~
    Gem
        52
    Gem  
       Jan 22, 2016
    我想问下楼主,学 kotlin 之前,是不是需要先把 java 系统学一遍?
    nekocode
        53
    nekocode  
    OP
       Jan 22, 2016   ❤️ 1
    @plqws 他们很明显都不是同一类语言,只是都运行在 JVM 上而已,反过来也受 JVM 的限制。

    @Narcissu5 Kotlin 一样会依赖自身 runtime 库,不过小太多了:
    Kotlin has a rather small runtime file size: the library is approximately 955KB (as of build-1.0.0-beta-4589). This means Kotlin adds just a little to .apk file size.

    @haroldwu clojure 是门好语言~

    @Gem 最好是学一遍,当然,不学也并没有什么大问题。
    plqws
        54
    plqws  
       Jan 22, 2016
    @nekocode 主要是都可以用到 Java 的各种类库,所以学一个就可以不用学其他的了,我是这么认为的。
    nekocode
        55
    nekocode  
    OP
       Jan 22, 2016
    @plqws 这倒是。 Just follow your heart. 喜欢哪个学哪个,语言没有好坏之分。
    hqs123
        56
    hqs123  
       Jan 22, 2016
    楼主很厉害,我也在学 android,向你学习。
    cppgohan
        57
    cppgohan  
       Jan 22, 2016
    继续歪楼, 身边没有 kotlin 的应用场景.
    最近准备用 kotlin 做一些 java web 的开发
    luckymerlin
        58
    luckymerlin  
       Jan 22, 2016
    Google 官方的 Data Binding 已经用到了 Kotlin ,挺好用的。我现在在用 Observable 做双向绑定;
    写了个 Demo : https://github.com/ACEMerlin/Kratos
    实际的项目要复杂的多,基本实现了双向绑定, Object 的值变了直接通知 View 改变,配置是在 json 里配置的。
    Gem
        59
    Gem  
       Jan 23, 2016
    有没有 kotlin 的 web 框架?或者说,如果用 kotlin 开发 web 的话,有没有一些好的实践以及配套设施?
    LiYing2016
        60
    LiYing2016  
       May 7, 2016   ❤️ 1
    我老人家翻译的《 Kotlin 语言参考文档》中文版

    这个文档以前有人翻译过的,但质量很不好,所以我老人家动手重新翻译了一次

    ​地址:
    http://www.liying-cn.net/kotlin/docs/reference/

    有网页版,也有 PDF 版

    GitHub 仓库:
    https://github.com/LiYing2010/kotlin-web-site
    liusd
        61
    liusd  
       May 21, 2017
    看这里 http://www.jianshu.com/p/3815084b4a73
    (来自于沪江)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2831 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 140ms · UTC 04:27 · PVG 12:27 · LAX 21:27 · JFK 00:27
    ♥ Do have faith in what you're doing.