国内有大公司是用 Kotlin 开发 Android APP 的么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nekocode
V2EX    Kotlin

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

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


    鄙人目前在国内积极进行 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
    nbsp;   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     Solana     1146 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 17:49 PVG 01:49 LAX 10:49 JFK 13:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86