鄙人目前在国内积极进行 Kotlin 的布道,个人已经开始将其尝试应用到实际生产环境中(目前有处于开发期的产品正在使用 Kotlin ),感觉十分良好。想问问国内有什么公司(非个人)是在进行这方面的尝试的。
1 gengrui 2016-01-21 05:52:11 +08:00 Hi 楼主好。我是在澳洲的 android 开发者,目前也希望在工作中使用 kotlin ,可否交流交流?谢谢。 PS:你的 baseframework 很不错,谢谢分享。 |
![]() | 2 haroldwu 2016-01-21 08:04:13 +08:00 同想 kotlin ,但是找不要到完整的教材,求指一二! |
![]() | 3 nekocode OP ![]() @gengrui 谢谢支持。我主要在 [知乎]( https://www.zhihu.com/people/nekocode) 以及 Github 上活跃, V2EX 刚接触,以后可以多交流。 我对 Kotlin 的前景十分看好,不仅仅因为它是一门 trick 多的语言,它和 Java 之间的相融性让它产生了更多机遇与可能。 |
![]() | 4 nekocode OP ![]() @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 ,比较偏实践的内容。 |
![]() | 5 Tneciv 2016-01-21 09:56:55 +08:00 你是知乎那个?看过你的专栏 |
9 em70 2016-01-21 10:16:58 +08:00 via iPhone 第三方 SDK 能接入吗,比如 qq 登陆 SDK |
![]() | 10 nekocode OP @em70 Kotlin 支持与 Java 代码互操作,所以没问题的。这也是 Kotlin 相对其他 Jvm 语言更适合开发 Android 的原因。 |
![]() | 11 johnnydtsai 2016-01-21 10:41:08 +08:00 正在学习 感觉 kotlin 不错 |
![]() | 12 moyaya 2016-01-21 10:43:30 +08:00 就算想用,国内目前估计也找不到人。 |
![]() | 13 puras 2016-01-21 10:45:06 +08:00 有没有用 Kotlin 不做 Android ,而做 WEB 的呢? |
![]() | 14 lingdududu 2016-01-21 10:52:23 +08:00 ![]() 收集了一些 Kotlin 资源,希望有帮助 https://github.com/ruijun/Android-Dev-Favorites/blob/master/Kotlin/Kotlin.md |
![]() | 15 airqj 2016-01-21 11:14:42 +08:00 跟 scala 比起来 有什么优势吗 |
16 alexsunxl 2016-01-21 11:19:19 +08:00 已经推荐给做 Android 的朋友。楼主加油,布道可是不容易,搞点线下交流会吧 |
![]() | 17 jiezhi 2016-01-21 11:26:12 +08:00 关注一下,有空研究下 ![]() |
![]() | 18 hooluupog 2016-01-21 12:37:33 +08:00 @airqj 从语言的设计上,我不太喜欢 scala ,所以偏向 kotlin 。 要说优势,最大的优势就是和 java 的互操作性,比如利用现有的 java 生态,各自库,这个 scala 完全不能比。 劣势就是目前还没有 1.0 正式版。 |
![]() | 19 nekocode OP @moyaya 是的。我们团队的两个 Android 开发也是我带起来转到 Kotlin 上的,学习成本也不会太高(一两周就可以上手了)。但是如果没人带的话,肯定会遇到很多坑,所以不建议没有这方面积累的团队把 Kotlin 运用到生产环境中。 @airqj 已经有朋友解答你了 @hooluupog ,有兴趣的话也可去我专栏上查阅文章,对 Kotlin 相较起其他 JVM 语言的优势有比较粗略的解答。 @alexsunxl 谢谢支持 (),线下交流会的话就算了,目前连组织都没有。国内使用 Kotlin 的人并不多,但是在可预见的未来 Kotlin 将对 Android 原有开发界造成一定的冲击与影响。 |
![]() | 20 john990 2016-01-21 13:17:08 +08:00 正在用,但是不支持 android studio 实时编译,很不方便,其他感觉非常好 |
![]() | 21 br00k 2016-01-21 13:23:32 +08:00 想用来做 web 开发 XD |
![]() | 22 florije 2016-01-21 13:23:58 +08:00 关注了,但是还没有在实际项目中使用,已经收藏 LZ 相关文章,稍后仔细看看。 |
![]() | 23 pengbo37877 2016-01-21 13:27:32 +08:00 不错,下一个项目可以试试 |
![]() | 24 loshine1992 2016-01-21 13:42:08 +08:00 关注楼主的专栏很久了,没想到竟然来 V2EX 布道了呀 |
25 alexsunxl 2016-01-21 13:44:20 +08:00 @nekocode airbnb 最信奉的一句话:让 1 个用户爱上你,而不是 100 个用户喜欢你。 线下能让你找到布道小伙伴 |
![]() | 26 nekocode OP @john990 你指的是预览版的 instant run 么? kotlin 目前在对 instant run 和某些 lambda 代码的 debug 都支持不太好,不过要相信 jetbrains 家的实力,这些都不是大问题。 @br00k @florije @loshine1992 谢谢支持 @alexsunxl 从简做起吧,有空的话我可以考虑下寻求或者创建组织 |
![]() | 27 eimsteim 2016-01-21 15:17:19 +08:00 我觉得 Android 开发的痛点并不是在语法级别,而是在于复杂的自定义 View ,目前也没有见过比较成体系的成熟的 UI 库,可能我离开 Android 时间有点久了,现在觉得还是用 H5 的方式来写 APP 比较舒服。 |
![]() | 28 nekocode OP |
![]() | 29 hjkl0001 2016-01-21 17:21:13 +08:00 谢谢分享!!!! |
![]() | 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 用于实际项目,期待露珠多写深入好文 |
![]() | 31 CodingPuppy 2016-01-21 17:43:39 +08:00 kotlin koans 已全部做了一遍,感觉挺好,但是网上的资源还是少。怕用到项目里面拖累队友 |
![]() | 32 CodingPuppy 2016-01-21 17:49:09 +08:00 @nekocode 看到楼主 github 有提到 anko ,我遇到一个问题想请教下,我在 Activity 的 onCreate 里面使用 DSL ,布局没有显示出来, anko 的官方文档说的是在这里使用是会自动调用 setContentView 的。使用 AnkoComponent 的方式定义布局类,主动调用 set 是可以的。这个是我的使用姿势不对么? 在 anko 发了 issue 然而并没有人鸟我。 |
![]() | 33 nekocode OP @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 ,以后也会持续分享自身的一些心得(毕竟已经开始使用在生产环境上了。。),谢谢关注~ |
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. |
![]() | 36 nekocode OP ![]() @springwarm Kotlin Android Extension 和 ButterKnife 一样是在「编译期」暗插代码实现的视图绑定,只不过 ButterKnife 是通过 APT ,而 Kotlin Android Extension 是通过自身编译期处理。 Kotlin Android Extension 在编译期解析 XML 后,安插了 Caching Function ,实际上内部实现一样是调用 findViewById 。所以并非它将 XML 编译成对应构造视图的 Java Code 。 |
![]() | 37 nekocode OP 勘误,「而 Kotlin Android Extension 是通过自身编译器处理。」 |
![]() | 38 ruchee 2016-01-21 19:35:30 +08:00 via iPhone 活捉楼猪,打个酱油。 Kotlin 大法好 |
![]() | 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 ?非常感谢! |
![]() | 40 breaklayer 2016-01-21 19:54:49 +08:00 对 kotlin 很感兴趣,但是没有迫切的动力去学习,现在在学 rxjava |
![]() | nbsp; 41 canaan 2016-01-21 20:03:57 +08:00 @breaklayer 我也正在学 RxJava ,感觉这个对开发目前可能帮助更大 |
![]() | 42 mathgl 2016-01-21 20:36:36 +08:00 @incompatible kotlin 运行环境貌似比 groovy 小。 可能也是最小的之一。 kotlin 的设计思想是能用 java 的库就不会自己写。 groovy 现在能在 android 运行了没? 记得原来是不可以的。 |
![]() | 43 plqws 2016-01-21 20:59:41 +08:00 得知有 Kotlin 才打算入 JVM 坑的,想要问一下楼主,刚入坑要怎么适应 JVM 这个又庞大又复杂的生态呢? |
![]() | 44 nekocode OP @incompatible 我对 groovy 的了解仅限于 gradle 和 grails 上,了解不深,不过对它的 DSL 印象挺深。 @breaklayer @canaan RxJava 确实是实现异步的最佳选择。我在我的代码中 Model 层的操作( io 、 cpu 密集操作)都使用 Rx 执行,然后发射 Observable 到 Presenter 层进行处理。对目前一些流行语法糖不感冒的,确实相对于 Kotlin 来说学好 RxJava 的帮助更大。 @ruchee Hi~ 很高兴在这里见到你 ω @mathgl Groovy 能在 android 上运行,但是它和 Java 之间的互操作性不堪入目。 @plqws 不太懂你的意思,入 JVM 坑是什么意思,。。=_= |
![]() | 45 incompatible 2016-01-21 21:51:10 +08:00 via iPhone |
![]() | 46 Lonely 2016-01-21 22:28:03 +08:00 没有让我用 Kotlin 的理由,毕竟不是 Google 明确支持的。 |
![]() | 48 DemoJameson 2016-01-21 23:38:22 +08:00 已 star 已关注专栏,楼主棒棒哒 |
![]() | 49 Narcissu5 2016-01-22 00:04:21 +08:00 问个比较小白的问题哈, kotlin 会不会像 scala 一样需要依赖自己的基本库( scala-library ),我是觉得 scala 十几 M 的基本库是个大问题。 |
![]() | 51 dphdjy 2016-01-22 09:57:15 +08:00 via Android _(:з)∠)_ 咱的 seed 一直跑不起来~ 大概用了一周才成功编译~资料啊~ |
52 Gem 2016-01-22 10:34:59 +08:00 我想问下楼主,学 kotlin 之前,是不是需要先把 java 系统学一遍? |
![]() | 53 nekocode OP ![]() @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 最好是学一遍,当然,不学也并没有什么大问题。 |
![]() | 56 hqs123 2016-01-22 13:15:45 +08:00 楼主很厉害,我也在学 android,向你学习。 |
![]() | 57 cppgohan 2016-01-22 14:45:26 +08:00 继续歪楼, 身边没有 kotlin 的应用场景. 最近准备用 kotlin 做一些 java web 的开发 |
![]() | 58 luckymerlin 2016-01-22 16:15:59 +08:00 Google 官方的 Data Binding 已经用到了 Kotlin ,挺好用的。我现在在用 Observable 做双向绑定; 写了个 Demo : https://github.com/ACEMerlin/Kratos 实际的项目要复杂的多,基本实现了双向绑定, Object 的值变了直接通知 View 改变,配置是在 json 里配置的。 |
59 Gem 2016-01-23 11:32:11 +08:00 有没有 kotlin 的 web 框架?或者说,如果用 kotlin 开发 web 的话,有没有一些好的实践以及配套设施? |
![]() | 60 LiYing2016 2016-05-07 21:11:37 +08:00 ![]() 我老人家翻译的《 Kotlin 语言参考文档》中文版 这个文档以前有人翻译过的,但质量很不好,所以我老人家动手重新翻译了一次 地址: http://www.liying-cn.net/kotlin/docs/reference/ 有网页版,也有 PDF 版 GitHub 仓库: https://github.com/LiYing2010/kotlin-web-site |
![]() | 61 liusd 2017-05-21 12:18:16 +08:00 看这里 http://www.jianshu.com/p/3815084b4a73 (来自于沪江) |