skyworker
2020-08-18 11:36:23 +08:00
最近也在用 java(spring cloud 微服务)和 laravel 同时做项目, 有点体会.
首先这两个项目都是 react 的前端, php 和 java 都是做 api, 提供数据的 crud 接口.
同样做一个表格的 CRUD 接口, 如果用 laravel 的话, 定义好 model 的 fillable 后, 并且为了方便扩展, 我们用了 mysql 的 json 字段储存动态字段.
在 laravel 的 model 中,把 extra 之类的 json 字段 cast 为 array 之后, 增删改查的接口基本上不到 10 分钟就完成了. 并且例如分页之类的功能,laravel 也是只用增加一个: $data = $query->paginate() , 然后 return response()->json($data) 就 OK 了.
而在 spring 中, 先不说各种微服务造成的开发阶段额外的时间, 做一个 CRUD, 要在 ibaits 配置各种配置文件, 还要写 manager 类, 通过 manager 类读取数据后, 还要用 fastJson 之类的 lib 做数据转换. (并且对于 extra 之类的 json 字段处理非常麻烦, 因为 java 是静态语音), 然后各种数据类型转换, 最后才能输出结果.
如果中间涉及各种调试, php 是非编译语言, 直接在 code 中 dd($data) 就能看到调试数据;
而在 java 中, 每次修改代码, 都要手工或者 IDE 重新编译代码,才能看到效果, 如果中间逻辑有问题, 甚至要重启数十次 service, 非常耗费时间.
大致评估下, java 带来的开发成本远比 laravel 多, 写 java 代码和配置文件, 要比 php 多 2-3 倍的时间(配置文件 /类型转换等等); 而如果在调试阶段, 考虑到重启 service 的耗费时间, 估计耗费的时间会更多.
所以目前的 java 系统要做新功能, 直接把功能迁到 laravel 接口上了, 开发时间节省很多倍.
当然, 作为编译语言, java 服务的运行时比 php 快的多, 不过目前的项目远没有到"百万并发"的级别, 都是需求方在拍脑袋上功能, laravel 带来的开发阶段效率提升, 作用还是非常大的. 如果今后项目稳定后, 并且如果并发高了后, 可能会考虑再迁移到 java spring 上.