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

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

  •  1
     
  •   nekocode · 2016-01-21 00:52:11 +08:00 · 14054 次点击
    这是一个创建于 3227 天前的主题,其中的信息可能已经有所发展或是发生改变。


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

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

    我对 Kotlin 的前景十分看好,不仅仅因为它是一门 trick 多的语言,它和 Java 之间的相融性让它产生了更多机遇与可能。
    nekocode
        4
    nekocode  
    OP
       2016-01-21 09:55:27 +08:00   ❤️ 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  
       2016-01-21 09:56:55 +08:00
    你是知乎那个?看过你的专栏
    gengrui
        6
    gengrui  
       2016-01-21 09:57:12 +08:00
    @nekocode 多多交流 :) 知乎已经关注,谢谢
    nekocode
        7
    nekocode  
    OP
       2016-01-21 10:00:16 +08:00
    @gengrui 已回关注,(。・`ω´・)
    nekocode
        8
    nekocode  
    OP
       2016-01-21 10:00:58 +08:00
    @Tneciv 是的,谢谢关注♥
    em70
        9
    em70  
       2016-01-21 10:16:58 +08:00 via iPhone
    第三方 SDK 能接入吗,比如 qq 登陆 SDK
    nekocode
        10
    nekocode  
    OP
       2016-01-21 10:30:07 +08:00
    @em70
    Kotlin 支持与 Java 代码互操作,所以没问题的。这也是 Kotlin 相对其他 Jvm 语言更适合开发 Android 的原因。
    johnnydtsai
        11
    johnnydtsai  
       2016-01-21 10:41:08 +08:00
    正在学习 感觉 kotlin 不错
    moyaya
        12
    moyaya  
       2016-01-21 10:43:30 +08:00
    就算想用,国内目前估计也找不到人。
    puras
        13
    puras  
       2016-01-21 10:45:06 +08:00
    有没有用 Kotlin 不做 Android ,而做 WEB 的呢?
    lingdududu
        14
    lingdududu  
       2016-01-21 10:52:23 +08:00   ❤️ 1
    airqj
        15
    airqj  
       2016-01-21 11:14:42 +08:00
    跟 scala 比起来 有什么优势吗
    alexsunxl
        16
    alexsunxl  
       2016-01-21 11:19:19 +08:00
    已经推荐给做 Android 的朋友。楼主加油,布道可是不容易,搞点线下交流会吧
    jiezhi
        17
    jiezhi  
       2016-01-21 11:26:12 +08:00
    关注一下,有空研究下
    hooluupog
        18
    hooluupog  
       2016-01-21 12:37:33 +08:00
    @airqj 从语言的设计上,我不太喜欢 scala ,所以偏向 kotlin 。
    要说优势,最大的优势就是和 java 的互操作性,比如利用现有的 java 生态,各自库,这个 scala 完全不能比。
    劣势就是目前还没有 1.0 正式版。
    nekocode
        19
    nekocode  
    OP
       2016-01-21 13:10:36 +08:00
    @moyaya
    是的。我们团队的两个 Android 开发也是我带起来转到 Kotlin 上的,学习成本也不会太高(一两周就可以上手了)。但是如果没人带的话,肯定会遇到很多坑,所以不建议没有这方面积累的团队把 Kotlin 运用到生产环境中。


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


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

    @br00k @florije @loshine1992
    谢谢支持

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

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

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

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

    后面会考虑将 Kotlin 用于实际项目,期待露珠多写深入好文
    CodingPuppy
        31
    CodingPuppy  
       2016-01-21 17:43:39 +08:00
    kotlin koans 已全部做了一遍,感觉挺好,但是网上的资源还是少。怕用到项目里面拖累队友
    CodingPuppy
        32
    CodingPuppy  
       2016-01-21 17:49:09 +08:00
    @nekocode 看到楼主 github 有提到 anko ,我遇到一个问题想请教下,我在 Activity 的 onCreate 里面使用 DSL ,布局没有显示出来, anko 的官方文档说的是在这里使用是会自动调用 setContentView 的。使用 AnkoComponent 的方式定义布局类,主动调用 set 是可以的。这个是我的使用姿势不对么? 在 anko 发了 issue 然而并没有人鸟我。
    nekocode
        33
    nekocode  
    OP
       2016-01-21 18:01:42 +08:00
    @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  
       2016-01-21 18:16:28 +08:00
    @nekocode 謝謝樓主指點一二!線上社區支持一個。
    springwarm
        35
    springwarm  
       2016-01-21 18:31:04 +08:00
    @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
       2016-01-21 19:32:46 +08:00   ❤️ 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
       2016-01-21 19:33:30 +08:00
    勘误,「而 Kotlin Android Extension 是通过自身编译器处理。」
    ruchee
        38
    ruchee  
       2016-01-21 19:35:30 +08:00 via iPhone
    活捉楼猪,打个酱油。 Kotlin 大法好
    incompatible
        39
    incompatible  
       2016-01-21 19:45:43 +08:00
    楼主,抱歉我暂时没有太多时间去研究 kotlin 这门语言。
    我是 groovy 的重度使用者,对 closure 、 reader.getText 、 collection.each / collect / inject 等特性爱不释手。我已经在若干服务器端项目中普遍应用了 groovy 语言,目前表现非常完美(在 groovy 支持 CompileStatic 特性后,性能已经没有逊于 java 太多了)。

    不知你是否对 groovy 有所了解? 如果“是”的话,能否简要对比一下 groovy 和 kotlin ?非常感谢!
    breaklayer
        40
    breaklayer  
       2016-01-21 19:54:49 +08:00
    对 kotlin 很感兴趣,但是没有迫切的动力去学习,现在在学 rxjava
    canaan
        41
    canaan  
       2016-01-21 20:03:57 +08:00
    @breaklayer 我也正在学 RxJava ,感觉这个对开发目前可能帮助更大
    mathgl
        42
    mathgl  
       2016-01-21 20:36:36 +08:00
    @incompatible kotlin 运行环境貌似比 groovy 小。 可能也是最小的之一。 kotlin 的设计思想是能用 java 的库就不会自己写。 groovy 现在能在 android 运行了没? 记得原来是不可以的。
    plqws
        43
    plqws  
       2016-01-21 20:59:41 +08:00
    得知有 Kotlin 才打算入 JVM 坑的,想要问一下楼主,刚入坑要怎么适应 JVM 这个又庞大又复杂的生态呢?
    nekocode
        44
    nekocode  
    OP
       2016-01-21 21:16:33 +08:00
    @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  
       2016-01-21 21:51:10 +08:00 via iPhone
    @mathgl 噢这真的是个优势。有时候写个开源的 lib 想用 groovy ,但是考虑到让用户的依赖中多出个 groovy 的 jar 包实在太粗鲁,只能作罢。


    @nekocode 谢谢。
    Lonely
        46
    Lonely  
       2016-01-21 22:28:03 +08:00
    没有让我用 Kotlin 的理由,毕竟不是 Google 明确支持的。
    plqws
        47
    plqws  
       2016-01-21 23:12:27 +08:00
    @nekocode 就是 Java Groovy Scala Kotlin 这类的
    DemoJameson
        48
    DemoJameson  
       2016-01-21 23:38:22 +08:00
    已 star 已关注专栏,楼主棒棒哒
    Narcissu5
        49
    Narcissu5  
       2016-01-22 00:04:21 +08:00
    问个比较小白的问题哈, kotlin 会不会像 scala 一样需要依赖自己的基本库( scala-library ),我是觉得 scala 十几 M 的基本库是个大问题。
    haroldwu
        50
    haroldwu  
       2016-01-22 00:08:25 +08:00
    @plqws 忽略了咱 clojure Q_Q
    dphdjy
        51
    dphdjy  
       2016-01-22 09:57:15 +08:00 via Android
    _(:з)∠)_ 咱的 seed 一直跑不起来~ 大概用了一周才成功编译~资料啊~
    Gem
        52
    Gem  
       2016-01-22 10:34:59 +08:00
    我想问下楼主,学 kotlin 之前,是不是需要先把 java 系统学一遍?
    nekocode
        53
    nekocode  
    OP
       2016-01-22 10:54:33 +08:00   ❤️ 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  
       2016-01-22 10:55:32 +08:00
    @nekocode 主要是都可以用到 Java 的各种类库,所以学一个就可以不用学其他的了,我是这么认为的。
    nekocode
        55
    nekocode  
    OP
       2016-01-22 11:02:39 +08:00
    @plqws 这倒是。 Just follow your heart. 喜欢哪个学哪个,语言没有好坏之分。
    hqs123
        56
    hqs123  
       2016-01-22 13:15:45 +08:00
    楼主很厉害,我也在学 android,向你学习。
    cppgohan
        57
    cppgohan  
       2016-01-22 14:45:26 +08:00
    继续歪楼, 身边没有 kotlin 的应用场景.
    最近准备用 kotlin 做一些 java web 的开发
    luckymerlin
        58
    luckymerlin  
       2016-01-22 16:15:59 +08:00
    Google 官方的 Data Binding 已经用到了 Kotlin ,挺好用的。我现在在用 Observable 做双向绑定;
    写了个 Demo : https://github.com/ACEMerlin/Kratos
    实际的项目要复杂的多,基本实现了双向绑定, Object 的值变了直接通知 View 改变,配置是在 json 里配置的。
    Gem
        59
    Gem  
       2016-01-23 11:32:11 +08:00
    有没有 kotlin 的 web 框架?或者说,如果用 kotlin 开发 web 的话,有没有一些好的实践以及配套设施?
    LiYing2016
        60
    LiYing2016  
       2016-05-07 21:11:37 +08:00   ❤️ 1
    我老人家翻译的《 Kotlin 语言参考文档》中文版

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

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

    有网页版,也有 PDF 版

    GitHub 仓库:
    https://github.com/LiYing2010/kotlin-web-site
    liusd
        61
    liusd  
       2017-05-21 12:18:16 +08:00
    看这里 http://www.jianshu.com/p/3815084b4a73
    (来自于沪江)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3319 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:44 · PVG 19:44 · LAX 03:44 · JFK 06:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.