感觉现在 Kotlin 势头不如以前了
![]() | 1 V2exUser 2019-05-06 12:34:16 +08:00 via Android 主推的人士都是安卓这块的,而安卓的火爆程度大不如前了 |
2 luozic 2019-05-06 12:46:09 +08:00 via iPhone 核心问题还是 库少,没有多少直接用 kotlin 写的原始库。 |
3 WispZhan 2019-05-06 13:16:00 +08:00 via Android 语法糖多,甜,香 |
4 yuankui 2019-05-06 13:29:08 +08:00 跨平台是大趋势 |
5 yuankui 2019-05-06 13:29:42 +08:00 期望 html6 能统一桌面,网页,app~ |
![]() | 7 goodleixiao 2019-05-06 13:36:56 +08:00 简单,不用写那么多代码 |
8 misttyw 2019-05-06 13:45:22 +08:00 只对安卓开发有用,但是安卓很多的适配问题啊第三方库问题各种导致还是很多人继续写 java,kotlin 火就火在成了官宣而已 |
9 SuperMild 2019-05-06 14:06:18 +08:00 就语言本身,比 java 香很多。但是要说用于生产,情况就很复杂了。 |
![]() | 10 glaucus 2019-05-06 14:11:41 +08:00 问题就是现在 Kotlin 还是需要和 Java 一起混合编程,调用的大部分也是 Java 编写的类库,为了实现 100% interoperable with java 反而限制了很多 |
11 icris 2019-05-06 14:12:46 +08:00 优势很多,劣势没有,Java 能用的库 kotlin 都能用(不局限于 Android 开发,连 Spring 也有 https://spring.io/guides/tutorials/spring-boot-kotlin/ 这样的东西),kotlin 能用的东西 Java 不一定能用 |
12 youxiachai 2019-05-06 14:14:10 +08:00 一个 jvm 语言...不是看 java 的势头吗..... 反正....kotlin 和 java 又不冲突... |
13 lihongjie0209 2019-05-06 14:18:15 +08:00 @yuankui java 不跨平台吗? |
![]() | 14 Raisu 2019-05-06 14:21:29 +08:00 没有 |
![]() | 15 abcbuzhiming 2019-05-06 14:30:56 +08:00 ![]() *.kotlin 对 java 的增益,没有利害到 Typescript 对 Javascript 的增益那种地步。java 这语言只是在语法上比较笨,明显的,无法接受的弱点很少,历史早就证明普通的语法糖是不足以使用户迁移的 *.在开发上,kotlin 始终只是 IDEA 在推,它家的 IDE 对 kotlin 支持的最好,eclipse 对 kotlin 的支持始终很糟糕,这严重限制了 kotlin 的扩张 *.kotlin 号称 100%兼容 java,但是事实情况是 kotlin 调 java 可以,但是 java 调 kotlin 是存在很多问题的。这个限制导致 kotlin 最合适的位置是新项目业务线的上层,调用 java 的接口,因为大量的 java 祖传代码的存在,你若使用 kotlin 来写类库给别人提供接口就要考虑兼容问题,这限制了 kotlin 的生态圈扩张 |
16 yuankui 2019-05-06 14:45:20 +08:00 @lihongjie0209 十年前这么说没毛病。 kotlin 支持开发跨平台的移动应用,Java 没说行吧。 我说的跨平台是一套代码,能同时编译成 windows,linux,mac,android,ios,浏览器 都可以运行的 app |
![]() | 17 skiy 2019-05-06 14:59:44 +08:00 flutter 要来了。 |
![]() | 18 kimiler 2019-05-06 15:08:09 +08:00 这么说吧,flutter 选择了 dart,就代表了 kotlin 仅仅是一个过渡,为啥呢,因为 java 官司 |
![]() | 19 6IbA2bj5ip3tK49j 2019-05-06 15:12:15 +08:00 via iPhone 其实 kotlin 的“” |
![]() | 20 6IbA2bj5ip3tK49j 2019-05-06 15:14:11 +08:00 |
![]() | 21 dnL 2019-05-06 15:19:49 +08:00 没有用过 kotlin 的人就不要在这评论了,说什么第三方库少确定不是为了黑而黑?用 kotlin 不允许你用 Java 库了? |
![]() | 22 sty 2019-05-06 15:30:29 +08:00 我已经在 spring boot + kotlin 了,简单业务,状况良好 |
![]() | 23 Febers 2019-05-06 15:34:50 +08:00 via Android ![]() @kimiler ……你理解错了吧,应该去看看为什么 flutter 选择 dart,是因为 jit 和 aot 以及热重载,而 kotlin 是 jvm 语言,也就是说从一开始 dart 和 kotlin 就不是竞争关系。java 官司跟 kotlin 又有什么关系?不知道 open jdk 吗,而且官司是因为 google 确实原封不动抄了 oracle 的代码实现。况且 flutter 目前来说还是属于 ui 框架,绕不来原生开发,这两者无法直接比较 |
24 shihty5 2019-05-06 15:57:57 +08:00 ![]() 我们是 Fintech 公司,已经全线在服务器端使用 spring boot + kotlin 了 好用的语法糖,简介的代码,就是有时候写太爽了打日志比较少。 |
![]() | 25 sagaxu 2019-05-06 16:09:28 +08:00 我从 2017 年开始引入 Kotlin 到生产环境,两年里将所有后端 Java 代码用 Kotlin 重构 /写了一遍。 总结下来就俩字,真香。 大量语法糖,少写很多很多代码,比用了 lambda 之后的 Java 还要简洁许多。 Java 能用的库,Koltin 都能用,包括 Spring 家族等所有后端的框架和库,所以不存在生态是不是繁荣的问题。 Kotlin 1.3 开始有稳定版的协程,创建 1000 万个协程也很轻松,真的很香。 |
![]() | 26 cpdyj0 2019-05-06 16:18:33 +08:00 via Android kotlin 受 Java 限制太多了 |
![]() | 27 mamahaha 2019-05-06 16:20:26 +08:00 以我的理解,会 java 不就相当于会 Koltin 吗?想用啥就用啥有啥好纠结的?(纯个人理解,我这两个都不会) |
28 yizmaoaa 2019-05-06 16:22:23 +08:00 有啥大不容前的......以 kotlin 对 java 的兼容性......... 所以我们就是将 kotlin 当做是 jvm 上的一个库而已...... kotlin 目前适用的地方? 首先当然是随着这两年 reacor 的发展......... 只要你写过异步的东西,你就知道 callback 地狱了....... 用 rxjava 或者 reactor 也没有那么舒服的.... 写 vertx 的很大一群体都在用 kotlin 了...https://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/ 用协成写岂不是美滋滋....... 另外在 spring 的 webflux 中 目前应该也可以使用协成了.... https://spring.io/blog/2019/04/12/going-reactive-with-spring-coroutines-and-kotlin-flow |
![]() | 29 Febers 2019-05-06 16:28:21 +08:00 via Android @cpdyj0 说实话,kotlin 最开始作为一门 jvm 语言,肯定与 java 脱不开关系,而且 java 无数的成熟高效的类库,直接支持不更好吗?但是说 kotlin 受 java 限制,那是不关注 kotlin 的发展,kotlin/native 和 kotlin/js 逐步推进中,Android 开发者已经可以像写 c 一样写 kotlin native 让 java 层调用,kotlin 的协程概念更加像 Javascript。 |
30 ukyoo 2019-05-06 16:45:42 +08:00 语法糖而已,上手很简单 |
32 tppppp 2019-05-06 17:44:40 +08:00 语法糖什么的都不重要,写过 Java 再转 kotlin 就知道空指针的处理,kotlin 太尼玛方便了,而且编译器很好的提醒 NPE,减少愚蠢 BUG 率,虽然还是会出现,其实大多都出现在调用 java 类库上,毕竟面向对象开发都是先定义类&属性,属性就会定义是否为 NULL,然后在业务处理时候编译器会提示处理,真心少了很多这方面问题,而且写起来舒服,不用再 if 来 if 去。感觉唯一缺点就是编译慢(毕竟做了那么多糖果给你吃),还有就是写和传统 java 框架兼容性稍微差一点,虽然 mvc 上有强大的 spring 套餐,但是在 orm 上例如 mybatis 用起来就会层出不穷的奇异现象出现,以上仅个人线上实践后的观点。 |
33 fan123199 2019-05-06 18:12:57 +08:00 代码少,就是正义。 |
34 luozic 2019-05-06 18:40:09 +08:00 via iPhone 同样的组织 同样的能力 代码越少 bug 越少,并且 对于已定能力的组织,能够处理的代码的复杂度的能力是有限的,大部分遗留系统是不可能通过重构就活。 |
36 bduqw 2019-05-06 19:29:12 +08:00 via Android 写爬虫稳的一批 |
![]() | 39 lazywen 2019-05-06 20:43:18 +08:00 via Android 我司就是用 kotlin + spring 全家桶做了日活百万的复杂应用,踩了不少 kotlin 的坑,但远赶不上 spring 的坑多,用惯了再也不想写 Java 了 |
40 golang83 2019-05-06 21:12:04 +08:00 我个人的浅见就是,如果 java 不属于 oracle 这种公司,那么 java 也是一个优秀的语言,但和 oracle 有关系的,都是垃圾! |
![]() | 41 mxalbert1996 2019-05-06 21:20:25 +08:00 via Android 我觉得可能很多人都是没用过 Kotlin 吧,反正我用了以后是觉得真香。 |
![]() | 42 kaedea 2019-05-07 00:53:30 +08:00 via Android 高级虚拟机语言特性(语法糖实现) scoping functions 函数式 coroutine |
![]() | 43 eminemcola 2019-05-07 01:46:25 +08:00 @lazywen #39 赞 期待贵司能多分享一些踩坑经验 |
44 luke666 2019-05-07 08:23:51 +08:00 via Android 没有 |
![]() | 45 stanjia 2019-05-07 08:41:29 +08:00 协程 |
46 huhujin 2019-05-07 09:19:55 +08:00 比 java 甜吧 |
![]() | 47 hongch 2019-05-07 09:42:28 +08:00 说 flutter 的一直停留在业务层吧? 1.你从事过物联网开发? 2.串口通信有搞过? 3.大部分硬件都要写 cpp 然后通过 JNI 给 APP 层调 所以一上来就说 flutter 的业务人员 求求你们不要会写几个 UI 就在这吹 哇塞 flutter 真好,性能真好真牛逼 |
50 hantsy 2019-05-07 10:31:32 +08:00 java 8 以后的语法简洁了很多, Lambda, Optional, Stream, var/List.of/Map.of/Set.of 等), 模式匹配加到最新的 Java 12 中了等。 Kotlin 很多东西比如 lambda 之类的在 Java 8 以后优势不明显。不过 Kotlin 还是有一些优势,null check, 函数优先,extensions 这些语法糖还是不错。当然像 Spring 中 RouterFuncation,Bean Definition DSL 之类的, 个人觉得一般,利用了 Kotlin 特性,但是很多东西又回到类似文本(和以前的 Groovy DSL,XML 差不多了)配置的老路上了。 |
51 hantsy 2019-05-07 10:34:11 +08:00 也说一点 Kotlin 缺点吧,作为 JVM 语言,和 Scala,Groovy 一样,相比 Java 编译速度明显减慢,这会严重影响开发效率。 |
![]() | 53 wupher 2019-05-07 11:08:27 +08:00 我是少见的,在后端使用 kotlin 开发。 @hantsy BTW,编译速度速度从来不会影响开发效率。我既用 Java,也用 kotlin、Scala、Groovy,甚至还有 golang。我一般使用 Maven 做为部署编译,开发过程中使用 IDE 的增量编译,都不会有你说的速度问题。 回原题, 好处: * FP * 语法糖 * 强类型:刚从 Groovy 转强类型时,确实有不习惯的地方,但是用久后确实也有它的方便 * Coroutines * ReativeX Koltin 相比 RxJava 确实也有一些有趣的地方,不过现在用 Coroutines 更多 * 没有分号 缺点或者不便: * 强类型带来的副影响:json 相较 Groovy 或者 Java,有些地方确有不便 * 版本的快速升级 |
![]() | 54 holmesabc 2019-05-07 11:14:06 +08:00 除了反射和范性。 其它都全是优势。 只要你敢用两周,应该就下不了贼船了 |
![]() | 55 chendy 2019-05-07 12:01:13 +08:00 1. 不用写分号 2. 有携程,比 rx 之类的好多了 |