美文网首页
Go vs java

Go vs java

作者: 周群力 | 来源:发表于2021-04-30 23:42 被阅读0次

    本文作为观看周志明老师云原生时代的Java 的观后感,夹带很多私货(个人吐槽),讲的不一定对,毕竟我也是个菜鸡

    一、java的危机与变革

    个人一直觉得go就因为协程、启动快(提前编译好而不是用vm)、运行时overhead小(因为没vm,下载体积、运行时占用内存cpu等资源少)这点feature就重造一门语言、要求应用层程序员重建整个软件生态是件很扯的事情:就为了这点事就重造整个生态?编译器专家们找个生态庞大的语言(比如java)重写编译器不就行了?再说了Java程序员没协程照样写并发,没协程又不会死,大不了用kotlin+java混合编程写协程,就这么个小feature也值得发动全世界程序员的力量重造整个生态?

    今天看了周老师的分享,感觉很有意思,大意是说今天java面临的危机是设计java时的基础假设和云时代(容器调度时代)对软件的要求不搭,导致添加“容器亲和”的新功能时难做兼容。

    譬如,Java 总体上是面向大规模、长时间的服务端应用而设计的,严(luō)谨(suō)的语法利于约束所有人写出较一致的代码

    以前java设计时的假设是大应用、长时间运行,而当今时代变了,讲究的是一堆小应用、随时快速重启,讲究容器亲和(启动快,体积小,runtime infra占资源小)
    而对于java牛逼的“write once,run anywhere”,别的语言基于容器技术也差不多能解决/绕过这个问题
    今天java想实现协程、实现启动快(提前编译好、不用vm)也简单,但想对老生态兼容贼难。
    个人理解,这也导致了java虽然先发制人几十年,但几年间被别的语言钻了漏子、打出了差异化故事
    不过官方规划了几个项目,力求做兼容的同时加上这么几个容器亲和feature:

    image.png
    项目详细介绍见分享。

    二、重新造生态虽然扯,但对于造新轮子的公司、个人却是机会

    造个兼容历史生态的java新平台属实困难,是各位程序语言大师的任务;相比之下造个新语言、重新造生态就简单太多了,发动全世界的程序员、堆人堆体力就可以解决问题,每个普通程序员都能参与其中。
    后者虽然不够优雅,但对每个造新轮子的公司、程序员来说却是很好的机会:把其他语言生态中稳定成熟的轮子搬到go重新实现一遍,借着时代潮流做大影响力,甚是美哉。

    三、“过阵子总有新语言”定律

    这定律是我瞎编的……
    软件系统设计的灵魂是取舍,怎么取舍要看需求,而需求是千变万化、每个场景每个时代都不一样的。因此时代变化、需求变化后,取舍的逻辑发生变化,总会有新语言借机打差异化故事。面对同一个问题,新语言能做出新时代的取舍,但是老语言已经在几十年前做出过老时代的取舍,不好回头了。
    java和go的故事就是一个很好的例子

    四、go vs java详细对比

    最后,记录下go vs java详细对比讨论:
    https://talks.golang.org/2015/go-for-java-programmers.slide#13
    https://www.youtube.com/watch?v=_c_tQ6_3cCg

    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:Go vs java

          本文链接:https://www.haomeiwen.com/subject/fnworltx.html