20年前就开始用java做项目了,6,7年前改用了Node。最近对springboot的体系和Nodejs做了一个对比,感觉springboot就是因为java的强类型特征,给自己附加了很呆板的限制,然后有搞了一堆概念,例如反射,工厂,泛型什么的去突破这个限制,在语言层面上是全面落后于Nodejs的,Nodejs是一个灵活的武器,对标业务需求快速开发就行了,语言本身带来的问题很少。
目前做的测试看,例如数据库的事务处理,springboot和Nodejs的Koa在同等的事务要求下,性能基本是相当的(本地mysql,事务包括操作一个自增表,然后生成随机用户,再插入到一个表中,都启动事务锁定),基本都是20ms左右响应完成。整体springboot的开发过程都是比较缓慢,多余的代码也很多,最搞笑的地方是,如果编译器和IDE知道改成什么样子就可以的话,为什么还有费用改成那个样子呢?这不就是让人去服务机器吗?例如最近也加入var的声明方式了,感觉Java这边也慢慢在醒悟了。除了Java比较繁琐外,整体语法过程逻辑其实差距到不到。
不过Nodejs特别的方便的地方有以下几点:
1,Json操作太方便了,完全吊打Java,短期Java因为类型的要求估计无法实现。
2,数据库操作,Node出来的结果按Json直接操作就行,无需做什么bean,也不用一个一个的get去取值。这个对于数据库操作较多和比较灵活的地方特别方便。
3,写sql方便,最近Java也有“”“这个文字块的操作了,但对比Node还是缺乏一些优雅。尤其node是支持“ 和’ 的,为啥方便呢?因为可以根据你操作的对象场景切换,尤其sql里面。
4,npm包亲和力和便利性比Maven的库管理体系方便,不用到POM里面写一堆,package.json里面写上名字就行,而且npm的官网上查找包的时候也方便,而已例子都给的很好。
5,由于没有编译等过程,Nodejs的开发调试过程很顺畅。Java常有的需要clean好几次的问题,Nodejs是没有的。
6,Node对于数组,对象属性的操作对比Java都方便太多,基本上依据直觉都可以写,不需要啰哩啰嗦的写一个一个的类。