有用 kotlin 开发后端的老哥吗

2021-03-31 10:54:29 +08:00
 mygreens

目前只敢工具类用 kotlin,不知道 kotlin 和 spring 会不会有兼容上的坑,兼容 spring 各种注解么。 目前发现比较难受的是,数据类(DO, DTO)必须全部用可空,不然 fastjson 反序列化会有问题。 有生产环境用 kotlin 开发的老哥吗,目前有什么问题?

8080 次点击
所在节点    Java
55 条回复
peihuan
2021-03-31 23:37:35 +08:00
基本无大坑。
kotlin + vertx 爽到爆。
新开的 spring 项目也都用 kotlin 写,代码行数能减少很多
hantsy
2021-03-31 23:50:00 +08:00
2021 年还有人手动序列化。你们完全不用框架吗?

如果你用的是 Spring, 写的是 Web API 之类,还在用手动序列化,你的代码估计我看到要吐血。

手动序列化工具太多了。我觉得 JSONB 标准最简单。https://github.com/hantsy/cargotracker-regapp/blob/master/src/main/java/org/eclipse/cargotrakcer/regapp/client/internal/HttpClientHandlingReportService.java#L64

只有在一些没有框架支持的情况我才会用到手动序列化,比如上面的 Client 。
hantsy
2021-03-31 23:54:53 +08:00
@peihuan

vertx 感觉没那么爽啊,

https://github.com/hantsy/vertx-sandbox/blob/master/kotlin-co/src/main/kotlin/com/example/demo/MainVerticle.kt#L103

这种,没有内部 API 支持吗?这个我实在不清楚。

关于 Jackson 的配置,没有一些接口(方法)暴露出来 , 太不灵活了,我提过 issue,官方回复就是这样的。

https://github.com/hantsy/vertx-sandbox/blob/master/kotlin-co/src/main/kotlin/com/example/demo/MainVerticle.kt#L42
hantsy
2021-03-31 23:57:38 +08:00
@peihuan 上面 L103 行, 这种有什么好方法把它解决掉。
iseki
2021-04-01 00:21:08 +08:00
@charlie21 头一次听说学 kt 不学 Java 的😀
hantsy
2021-04-01 00:37:11 +08:00
@iseki Kotlin Immutable 类使用上这个是习惯问题。

写过 Kotlin 后,现在回到 Java, 我也比较喜欢 Constructor Injection ( Spring 4 支持自动注入依赖,如果类只有唯一 历非空参数 constructor ),结合 Lombok,直接声明成 final,使用 @RequiredArg 。。。,省掉了 constructor 。
另外 Dto (这个模式本来就是用于不可变的场景),也开始习惯了 of factory 方法构建,变成意义上的不可变。
dai875939260
2021-04-01 08:38:52 +08:00
@hantsy #44 内部应该是没有,可以写 extension
bthulu
2021-04-01 08:48:18 +08:00
@boris93 你这轻量级使用, 或者纯框架用用, 那用啥都行, 反正也没几行代码. 等你碰到需要大量手写序列化反序列化的时候, 你就知道使用 fastjson 的工作量少的不是一星半点了. jackson 各种配置各种 try catch, fastjson 开箱即用.
lixm
2021-04-01 09:14:59 +08:00
没发现 jackson 的语法有什么缺陷的, 和 kotlin 配合也很好,kotlin 作为后端开发也是非常爽的,但是没见过会 kotlin 而不会 java 的
Narcissu5
2021-04-01 09:41:42 +08:00
我感觉很多人喜欢 fastjson 只是因为它提供了静态方法,然而静态方法是反 OOP 的。。。

而且因为 fastjson 的漏洞我们几个月之类升级了三次版本,每次几十个微服务都需要升级简直不要太酸爽。可能很多创业公司不会太在意安全问题,等招牌大了分分钟被搞事情。
sdushn
2021-04-01 09:56:36 +08:00
@xuanbg cv 工程师
ZeroDu
2021-04-01 10:04:31 +08:00
fastjson 序列化 map,key 如果为数字,结果就直接就是数字。{1:"v"}
jerray
2021-04-01 10:44:01 +08:00
别说 kotlin 了,之前遇到个公司的构建系统只支持 maven 。我问能不能支持下 gradle,人家说不支持客户端编译。
hantsy
2021-04-01 11:50:03 +08:00
@dai875939260 之前尝试过写 Extension,一般 Extension 都是纯 Fun 就行了。Coroutine 这个比较诡异,需要 CoroutineScope 支持才行。
boris93
2021-04-01 13:00:44 +08:00
@bthulu #48 轻量级使用……我不知道你是怎么得出这个结论的……
我司一堆服务每天处理来自全球的不计其数的账号业务,和日均四五万个订单,还有旁路的欺诈检测等等,都没用 fastjson,也没啥需要手写序列化的需求
其实我倒是很好奇,什么需求需要手动序列化?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/766771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX