V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
steelshadow39
V2EX  ›  Java

讨论 Java 相比其他编程语言(c++, go, rust 等)的缺点

  •  3
     
  •   steelshadow39 · 2023-12-06 09:54:12 +08:00 · 19776 次点击
    这是一个创建于 382 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人学生,我自己是写 Java 的,最近发现身边技术能力远高于我的同学对于 Java 这门语言的态度并不友好。由于没有大型互联网项目的经验,所以还没有体会到 Java 相较于其他几种语言的瓶颈,自己能想到的缺点也就性能相对较弱,代码冗长(我本人觉得这种代码即注释挺方便理解的)。Java 的生态可能是最全的吧?并且现在互联网公司大头应该还是 Java (个人想法,我猜想一些公司仍然使用 Java 是因为换门语言的成本太高?所以求稳)。

    想请教各位 V 友的看法,以及在国外编程语言的发展趋势是什么情况?

    只做理性讨论,没有“XX 语言是最好的”这种想法,谢谢。

    162 条回复    2024-02-21 17:32:13 +08:00
    1  2  
    lizhian
        1
    lizhian  
       2023-12-06 09:59:12 +08:00
    占内存,语义啰嗦,反过来也是它的优点,定义明确,入门简单.但是后面写着写着就觉得很烦,羡慕其他语言的语法糖
    lizhian
        2
    lizhian  
       2023-12-06 10:03:50 +08:00
    @lizhian 举个例子,资深 Javaer 用过 kotlin 都会变成半个 kotliner,性能不一定有提升,kotlin 的语法糖写起来太舒服了
    NessajCN
        3
    NessajCN  
       2023-12-06 10:07:28 +08:00   ❤️ 4
    我对 java 本身没什么好恶
    不过有些 java boy 明明其他啥也不会却喜欢张口闭口 java 天下第一,
    什么 java 取代 go, java 取代 cpp
    那就很招人烦了
    Hyschtaxjh
        4
    Hyschtaxjh  
       2023-12-06 10:07:52 +08:00 via iPhone
    太卷
    yazinnnn0
        5
    yazinnnn0  
       2023-12-06 10:08:07 +08:00   ❤️ 5
    只有一个赛道的才有比较的意义, java 的应用场景和 c++和 rust 都没啥关系, 没有比的必要, 和 go 比也只是部分重合

    如果对比 csharp kotlin 这种应用场景大范围重合的语言, java 的表达能力较弱, 历史包袱大一些, 糖少一些, 脑细胞多费一些
    sunwei0325
        6
    sunwei0325  
       2023-12-06 10:11:34 +08:00
    indeed 搜一下, 北美后端也是 java 为主
    PTLin
        7
    PTLin  
       2023-12-06 10:11:44 +08:00
    倘若你没有学习过 cpp ,go ,rust ,那么和你讨论 java 相比其的优劣是毫无意义的,你很难理解 java 相比这些的优点究竟是什么,也难以理解那三个语言解决了什么问题。就像我上一个天天只会说 java 天下第一的同事一样。
    murmur
        8
    murmur  
       2023-12-06 10:12:18 +08:00   ❤️ 1
    java 看市场和占比已经赢毛了,那就不叫缺点叫特色了
    yazinnnn0
        9
    yazinnnn0  
       2023-12-06 10:12:31 +08:00
    近些年流行的工业语言大多有向 ml 学习借鉴的趋势

    比如 kotlin fsharp swift rust dart, 都有 ocaml 的影子(go 除外)
    murmur
        10
    murmur  
       2023-12-06 10:13:11 +08:00   ❤️ 10
    很多人看 java 语法一坨屎,啰嗦,这个不支持那个不支持,但是 java 背后是一个帝国,别的语言还在造轮子的时候,java 这边给你准备好了开箱即用的停车场,连车带车场都给你搭好了
    iyiluo
        11
    iyiluo  
       2023-12-06 10:14:32 +08:00
    和你提到的语言比较,缺点是多了个 jvm ,运行前要多启动一个虚拟机。Java 的特点是稳重,向前兼容,社区支持度高,很多系统默认提供 Java 的对接文档
    adskhf
        12
    adskhf  
       2023-12-06 10:14:37 +08:00
    @yazinnnn0 你列举的语言里面 go 可能是设计最烂的,其次大概是 dart……
    28Sv0ngQfIE7Yloe
        13
    28Sv0ngQfIE7Yloe  
       2023-12-06 10:14:40 +08:00   ❤️ 5
    「最近发现身边技术能力远高于我的同学对于 Java 这门语言的态度并不友好」

    你都说了吗,是同学,等你工作干螺丝钉工作的时候,就知道在成熟的 java 项目里,写着所谓「冗长、啰嗦」的代码,但是代码能稳定运行,不出 bug ,是什么感觉了
    steelshadow39
        14
    steelshadow39  
    OP
       2023-12-06 10:17:53 +08:00
    @PTLin 是这样的,水平还不够,只有都懂才能对比优劣
    Exception615
        15
    Exception615  
       2023-12-06 10:19:02 +08:00
    如果你熟悉 java ,那么上手 scala 会很快,都是基于 JVM 上编译运行,scala 的语法和函数式编程用起来更便捷
    yazinnnn0
        16
    yazinnnn0  
       2023-12-06 10:19:06 +08:00
    @adskhf
    dart 好歹在往好的方向改, go 么......
    cookii
        17
    cookii  
       2023-12-06 10:21:54 +08:00 via Android
    先不说就业环境和语法层面。
    个人认为 Java 最大的问题是起动慢,占内存,需要跑在 jvm 上。

    虽然 graalvm 可以解决这个问题,但历史包袱很多,很多库都不支持,遇到问题很难排查,也没听说谁家把 native java 放到生产上跑。
    yannxia
        18
    yannxia  
       2023-12-06 10:24:12 +08:00
    没什么大缺点,Java 这些年还是有很多的进步,固守 8 的话,那确实没啥意思了。
    - Java 的内存占用较多(当然这个锅主要 Spring 要背)
    - 语法啰嗦就见仁见智吧,现在都有 var 了,类型定义也没觉得比 Rust 和 C++ 啰嗦啥。

    说起来,Java 口碑好坏主要取决于,对 Spring 的观感如何,喜欢像 Gin(go) 之类脚手架,自然对 Spring 嗤之以鼻,但是也有人就是喜欢这种全生态的体系(在下就是)。
    CaptainD
        19
    CaptainD  
       2023-12-06 10:27:16 +08:00
    [身边技术能力远高于你] 这并不代表他们的技术实力真的很强,也许是你们还没长期工作过的片面认知,或者他在某个方面很强,但对 Java 本身的了解不够
    PTLin
        20
    PTLin  
       2023-12-06 10:27:54 +08:00   ❤️ 3
    @steelshadow39 这种问题最好的方法还是自身的多加学习,自己解答自己。帖子里大部分回答对你都没价值,因为你分辨不出来对面站在什么角度和你分析的优劣。
    NoThing2Talk
        21
    NoThing2Talk  
       2023-12-06 10:28:27 +08:00
    啥都面相对象,写个 main 函数也要创建 class ,写多了烦
    QWE321ASD
        22
    QWE321ASD  
       2023-12-06 10:29:19 +08:00
    你自己编码为什么要在意别人,语言是工具不是信仰.
    BBCCBB
        23
    BBCCBB  
       2023-12-06 10:29:48 +08:00
    java 挺好的. 其他各种语法糖的语言不一定好.
    我 Java, python, go, rust 都学过, 主业 Java, 也看了 go 的好几个开源项目的源码, 不太喜欢 go, 现在慢慢学习 rust 中. rust 复杂度太高. 但语言很棒

    Java 算是各种语言的一个中间点吧. 没有那么多魔法. 但需要魔法的地方绕一点也能实现, 你去大一点的公司/项目, 就知道 java 的好处了.. 当然缺点也是有的.
    nothingistrue
        24
    nothingistrue  
       2023-12-06 10:30:43 +08:00
    门槛低但上限高,同时学习曲线是阶梯型的(有资质的人平缓前进,无资质的人被淘汰,没有捷径)。这个是 Java 最特色的,同时是优点和缺点。

    比较编程语言,这就跟比较英语跟法语一样,毫无意义。
    Martens
        25
    Martens  
       2023-12-06 10:31:27 +08:00   ❤️ 2
    占内存,启动慢,打包体积大
    更偏向于应用层,封装度高
    Leviathann
        26
    Leviathann  
       2023-12-06 10:39:09 +08:00
    你在 java 项目里会使用 ADT 和 pattern matching 的吗

    这就是 java 的发展趋势
    steelshadow39
        27
    steelshadow39  
    OP
       2023-12-06 10:40:44 +08:00
    @CaptainD 偏底层研究的人应该更偏向于 cpp 和 rust ,这可能是一个原因
    ProphetN
        28
    ProphetN  
       2023-12-06 10:41:55 +08:00
    JAVA 语言本身和全家桶是两码事。JAVA 作为一个中古语言,肯定和现代语言没法比,但是 Kotlin 用起来很爽。其它语言要想达到 JAVA 的稳定度和维护性,势必也要搞一堆全家桶,反过来说为啥不直接用 JAVA ?
    feirisu
        29
    feirisu  
       2023-12-06 10:44:14 +08:00
    这贴太水了....
    RainCats
        30
    RainCats  
       2023-12-06 10:45:31 +08:00
    当你工作后发现水平不一,实习生和架构师的代码你都能比较容易看懂并且维护的时候,大概就不会吐槽 java 语法的事了。
    当然我没有怎么接触过其他语言,只是看过一点点
    Greendays
        31
    Greendays  
       2023-12-06 10:51:17 +08:00
    就是写起来麻烦,而且工作中很多企业会用很旧版本的 JAVA ,新特性用不了,写起来更麻烦了。功能上没啥可挑剔的,常规业务都有很好的解决方案。作为程序员学好几种语言是非常正常的,如果今后就打算进互联网公司做普通的工作,JAVA 作为第一种深入学习的语言没啥毛病。如果有往算法方面研究的打算,那肯定会接触到 Python 这些的,应该也不需要网友来提建议。
    Nazz
        32
    Nazz  
       2023-12-06 10:57:12 +08:00 via Android
    说一下 springboot ,依赖注入自动化程度很高,但是,一旦出现问题就难以排查,而且官方文档稀巴烂
    StoneHuLu
        33
    StoneHuLu  
       2023-12-06 10:57:18 +08:00
    都不用跟别的比,就跟完全重合的 c#比,java 都比不了,表达能力和糖差太多了
    ggvoking
        34
    ggvoking  
       2023-12-06 10:57:48 +08:00
    实在用不来 java ,算是半个 java 黑,占内存(大学时玩 mc ,自建服务器老是 oom ,映像非常不好),啰嗦,以及非不喜欢那个注解的方式,以前大学学 java 的时候,非常讨厌那个注解,很不直观看出跑起来的原理,但是各种框架都是用那个注解方式。现在工作这么多年 Unity C#技术栈,看到 C#代码是通过反射和属性标签跑起来的框架嗤之以鼻,一个是反射性能拉,一个是框架流程不直观。现在更多喜欢 go 和 rust
    aLazarus
        35
    aLazarus  
       2023-12-06 11:00:19 +08:00
    java 就算再不好,起码代码规范还是有的,不会像 js 一样把一万个方法全丢在一个 js 文件里……
    ocean1477
        36
    ocean1477  
       2023-12-06 11:04:16 +08:00
    java8 没有字符串插值,很难受。
    gitrebase
        37
    gitrebase  
       2023-12-06 11:09:33 +08:00
    见过一个 Java 项目,全是 static field 和 static method ,当 C 语言写……就写出这种生命周期看着很混乱的东西,看着脑壳疼:

    class A {
    public static A a = new A();
    ....
    }

    class B {
    public static A a;
    public static B b = new B(a);
    public B(A a) { ... }
    ....
    }
    jeesk
        38
    jeesk  
       2023-12-06 11:10:42 +08:00
    别人的意见真的很重要吗? 是技术引导业务还是业务引导技术呢? 用合适的语言就足够了。java 语法的落后不是开发者能力不行, 很多时候是为了兼容性。 我个人觉得 java 可能是为数不多兼容性做得不错的语言之一了。
    musi
        39
    musi  
       2023-12-06 11:18:34 +08:00
    @RainCats #30 就算是 java 也做不到你说的“实习生和架构师的代码你都能比较容易看懂并且维护的时候”,如果有只能说项目简单,不然按你这个逻辑用 java 就写不出来屎山了
    llhhss
        40
    llhhss  
       2023-12-06 11:21:03 +08:00
    缺点就是没得玩
    你和技术能力远高于你的同学写出来的东西看上去和跑起来可能都是一样的
    c2const
        41
    c2const  
       2023-12-06 11:25:47 +08:00
    java 缺点就是太卷 :(
    C++系列就是人少岗位更少,要求更高,也卷,不过卷进去了就没那么卷了 :(
    --------
    但语法糖其实无所谓的,以前同事做 JAVA/安卓逆向的,可以自己写 IDEA 插件,来支持你想要的语法糖,比如支持 C 系列的#define 、#if 等预处理、支持运算符重载、支持元编程等等;

    性能的问题不大,一般公司遇不到,加机器就行 :)
    steelshadow39
        42
    steelshadow39  
    OP
       2023-12-06 11:30:11 +08:00
    @gitrebase 这个是开发者自身的问题吧
    fredweili
        43
    fredweili  
       2023-12-06 11:35:25 +08:00
    函数式进步太慢,技术负担重
    debuggerx
        44
    debuggerx  
       2023-12-06 11:38:58 +08:00   ❤️ 1
    成也多线程,败也多线程;
    成也设计模式,败也设计模式;
    成也 jvm ,败也……好吧,这个不算失败,只能说在很多新兴领域成了拖油瓶,曾经的优势不再明显
    要不是有喷射大脑,估计还会有多几倍的人喷它
    reeco
        45
    reeco  
       2023-12-06 11:40:14 +08:00
    没有意义的讨论,不如花点时间用这几门语言分别写下 side project
    gitrebase
        46
    gitrebase  
       2023-12-06 11:44:22 +08:00
    @steelshadow39 #42 肯定有开发者的原因,但我侧重于表达语言的能力对开发者的约束
    XCFOX
        47
    XCFOX  
       2023-12-06 11:44:26 +08:00   ❤️ 3
    在我看来 Java 缺少好用的 ORM 。就这一点足以否决 Java 作为互联网项目的后端。
    C# 有 EF Core 、Ruby 有 Active Record 、php 有 Eloquent 、TypeScript 有 MikroORM 、kotlin 有 Ktorm ,连 Rust 这样的编译型语言都有 SeaORM 。
    别的语言已经用 OOP 语法完成 CURD 业务了,Java 还在用 MyBaits 手写拼接 SQL 。

    都说 Java 生态好,可是连最基础的 ORM 都没有好用的。在我看来真正生态繁荣的是 Node.js 背后的 npm 生态,当然 npm 过于繁荣、各种包库卷出花来,质量更是良莠不齐...
    coderzhangsan
        48
    coderzhangsan  
       2023-12-06 11:45:08 +08:00   ❤️ 3
    以前有句话说:穷玩车,富玩表,屌丝比电脑;程序员中的屌丝,就是比框架、比语言;好吧,说点跟技术无关的,比如你的职业规划。

    如果你是个大牛,就忽略。

    如果你是个普通人,或许将来发展不会太高的上限,那我的建议就是好好学 java ,虽然这语言人很多,也比较卷,但是工作这东西首要是挣钱,剩下的就是如何舒服的挣钱。
    1.国内市场主流语言就是 java ,而且大部分公司规模都不会小,这些或多或少能保证就业和待遇,大环境在差,只要国内主流语言市场还是 java ,就基本可以保证有你一口饭吃。
    2.java 生态没得说,你的工作至少不会造轮子,这样至少也不会出现轮子的 bug ,工作少一点烦心,生活也会比较顺心,内分泌也不会紊乱。
    ganbuliao
        49
    ganbuliao  
       2023-12-06 11:49:01 +08:00   ❤️ 1
    @adskhf go 很有特点 很简单 标准统一 可读性高 可以交叉编译成系统可执行文件 可以看到引用库的代码
    只是不符合你审美吧 还是有很多人喜欢的
    keepRun
        50
    keepRun  
       2023-12-06 11:50:40 +08:00 via Android
    @XCFOX 用 hibernate 不就好了,或者 mybatis plus
    murmur
        51
    murmur  
       2023-12-06 11:56:16 +08:00
    @XCFOX hibernate 你不用喷 mybatis 干嘛。。。
    knightdf
        52
    knightdf  
       2023-12-06 11:59:53 +08:00   ❤️ 1
    @XCFOX java 是只有一个 mybatis 么?
    chenzw2
        53
    chenzw2  
       2023-12-06 12:04:30 +08:00
    对于我来说,单个 jvm 太占内存,至少 512M 起步,做个项目拆分个 5 、6 个模块,再加上 nacos 、mysql 等各种组件,没台 16G 内存的服务器你都不能流畅地运行起来。。。
    BaseException
        54
    BaseException  
       2023-12-06 12:05:37 +08:00
    @XCFOX #47 正经人用 mybatis plus 从来不手写 sql ,除非是复杂 sql
    ns09005264
        55
    ns09005264  
       2023-12-06 12:12:45 +08:00
    对比 Go 我想不出有什么大的缺点,对比 Rust 的话,就是 null 的存在,空指针异常挺烦人的。还有 Enum 挺弱的。
    Rorysky
        56
    Rorysky  
       2023-12-06 12:16:02 +08:00
    java 语言特性优秀,不然也不会在 web 后台占据领导地位。

    但是 jvm 本身限制了应用与系统隔离,jvm 本来是抹平系统和硬件架构差异的,但是这一点在 llvm 之后变得不是那么必要一个虚拟机做这件事。
    version
        57
    version  
       2023-12-06 12:18:09 +08:00   ❤️ 1
    如果你有 10w 创业.二次开发 php 或者轻量语言.
    如果你有 100w 创业..就会选择 php 或者其它轻量语言
    如果你有 1000w 创业.自然会选择高大上的语言.严谨的业务
    黑猫白猫..能赚钱自然是好猫..
    只要国内那帮老的架构师不退休..java 还是他们唯一可控的.不可替代的优势--(代码量多.架构复杂.一般人不能接手).有时候代码烂和架构搞特别复杂也是不被裁员的优势.
    murmur
        58
    murmur  
       2023-12-06 12:24:50 +08:00
    @version java 万物基于 spring 啥叫 java 代码烂复杂 mvc 那套都看不明白真别写代码了
    LykorisR
        59
    LykorisR  
       2023-12-06 12:27:07 +08:00
    团队开发和个人开发是完全不一样的,做个人项目开发必然哪个用着舒服用哪个,但是团队的话需要考虑水平参差不齐,这种时候所谓的“啰嗦”反而会成为优势
    ionfev
        60
    ionfev  
       2023-12-06 12:27:55 +08:00
    前段时间在 B 站看到了 2020 年周志明的演讲:《云原生时代,Java 的危与机》,觉得非常有启发。
    steelshadow39
        61
    steelshadow39  
    OP
       2023-12-06 12:28:16 +08:00
    @c2const #41 卷也不算是语言问题,算是社会问题了哈哈
    jorneyr
        62
    jorneyr  
       2023-12-06 12:42:41 +08:00
    占内存
    murmur
        63
    murmur  
       2023-12-06 12:49:39 +08:00
    @ionfev 云原生的意思是一切为了上云设计,容器化,微服务,这些对 java 来说也是成立的

    再一步 serverless 甚至函数计算就危险了,你的命脉都是在别人的架构上的,别人对你停服你迁移的资格都没有
    murmur
        64
    murmur  
       2023-12-06 12:50:15 +08:00
    都 2023 年了不会有人以为云原生=go 吧,就简单的 curd 计数器这种业务最多加个锁那你用 go 的确也无所谓,甚至你的业务都是可有可无
    jackmod
        65
    jackmod  
       2023-12-06 12:57:22 +08:00
    缺点:启动巨慢。
    优点:死板。
    我没放错位置。
    pengtdyd
        66
    pengtdyd  
       2023-12-06 13:13:42 +08:00
    每个语言有没有语言的优势,合并非要比个高低呢?
    miaotaizi
        67
    miaotaizi  
       2023-12-06 13:15:07 +08:00
    任何语言都有他的有点

    缺点大部分都是人的问题
    ionfev
        68
    ionfev  
       2023-12-06 13:32:37 +08:00
    @murmur 有了在 k8s 上部署 SpringBoot 程序的经历,觉得微服务时代"启动快,内存占用低,因为有集群,可以不再追求长时间不间断不出错的运行"是有一种不可阻挡的潮流。Java 现在生态非常好,但是也要顺应潮流。至于 Serverless ,感觉只是服务交付方式的一种形式,从原来的高配置虚拟机按月租年租的时间付费,转变为按使用量付费,应用场景适合算法训练类型的按次数运行的任务,不适合长时间不间断的运行的任务。
    sunnysab
        69
    sunnysab  
       2023-12-06 13:36:03 +08:00
    我学的时候最不习惯的就是,没有 swap()。C++ 里有引用和指针,Rust 里有借用,但是 Java 里面好像是要包裹 Integer ?我到现在还不会写 swap(),写 Java 作业的时候用 if-else 感觉很难受。

    其他不习惯的地方,如:不能重载运算符,导致有时候写起来较为臃肿;函数必须包含在类中、且一个文件只能有一个 public class ,文件名必须和类名一致,这些很不习惯——有时候并不想创建太多的文件。

    还有就是性能(内存占用和速度)吧。前几年我的电脑内存还是 8G ,写起 Java 来,IDE 、浏览器加上微信 QQ 后我的内存就有些捉襟见肘了。用 Rust 写过一段时间的 Web 项目,占内存挺小,速度快。抛开实际开发过程中的效率,以及语言学习的难易程度问题,个人觉得软件就是应该榨干硬件的性能(当然这中间有 balance ,现今也不用去用汇编做上层该干的事,我只是表达这么个意思)。

    可能有些规则记得不清,或有办法绕过。轻喷。目前在写 C++ / Rust ,Rust 更多一些。
    ZeroDu
        70
    ZeroDu  
       2023-12-06 13:39:23 +08:00
    缺点就是占内存;
    chenPiMeiHaoChi
        71
    chenPiMeiHaoChi  
       2023-12-06 13:57:12 +08:00
    除了占内存多点没别的了,就这点成本比起稳定性和屎山可维护性来说不值一提。楼上所谓的 java 啰嗦管的宽恰恰正是 java 项目屎山稳定性的保障,对于所有的花里胡哨我就说一句话:

    到点下班大过天。
    nianyu
        72
    nianyu  
       2023-12-06 14:02:32 +08:00
    没关系,下次你会遇到远高于你同学的同事,对 java 这门语言态度相当好
    zhhmax
        73
    zhhmax  
       2023-12-06 14:09:41 +08:00
    其他的优缺点不说了,就谈个人感受:以前上班用 java ,最近搞一个新项目用了 go 发现,java 这玩意儿以前是咋用过来的,后面写项目会首选 go 了。
    Rever4433
        74
    Rever4433  
       2023-12-06 14:11:49 +08:00   ❤️ 1
    毫无必要的争论,如果你的业务是从 0-1 开始的,那肯定选 PHP 、Rust 、node.js 这样的轻量级语言。如果业务是从 1-100 那选择语言的时候就必须考虑生态是否繁荣、从业者数量多少、是否有成功的经验这样的问题了。在中国几乎肯定会考虑 Java 的
    BBCCBB
        75
    BBCCBB  
       2023-12-06 14:16:28 +08:00
    @sunnysab 在 class 里写 public static class 就行.
    longzhx
        76
    longzhx  
       2023-12-06 14:20:02 +08:00
    JavaBoys 都一直在卷,不过他们卷的是语法、设计模式、抽象度,所有通用系统站了一群 java boy 虎视眈眈。
    若是有逃离这个方向的机会,我会毫不犹豫抓住机会。
    lesismal
        77
    lesismal  
       2023-12-06 14:26:02 +08:00
    嘲笑 golang 的主要群体是 curd boy ,这部分人对性能没有太大需求。
    而且这些人中绝大多数自己都不熟悉 golang 相关的轮子就嘲笑 golang 开发效率低,按这个道理如果他们没写过 php 、ruby 、nodejs 、python 、c#等语言、则同样可以嘲笑那些语言效率低。

    随便嘲笑吧,其实我们这些务实的 gopher 也真的不喜欢这帮人来 go 捣乱,看见他们把简简单单逻辑写成某些其他语言风格冗长的设计模式屎山,我们也很烦的。

    所以,对于这部分人,请你离开,千里之外,咱们各自安好,各自都有美好的未来。
    lsk569937453
        78
    lsk569937453  
       2023-12-06 14:28:39 +08:00
    @gitrebase 自己代码写的烂和语言没啥关系吧。。。。
    dif
        79
    dif  
       2023-12-06 14:30:05 +08:00
    作为接盘过 java\python\scala 项目的小菜鸡来说,只有 java 接盘的过程是最舒服的。至于缺点,啰嗦是罗嗦了点,但用工具和插件能解决这些啰嗦。卷是真的卷,大佬们动不动就一顿八股文。
    pkoukk
        80
    pkoukk  
       2023-12-06 14:37:21 +08:00   ❤️ 1
    作为语言,特性丰富但丰富不到点子上,方便码农的语法糖太少,被语法简洁派和语法简单派两派都看不起
    在运行时,它的内存消耗太大
    在虚机年代下,这点内存差别没什么影响,但是 k8s 年代,能够动态调度资源,按需使用的时候,比较起来花的就多挺多了
    falcon05
        81
    falcon05  
       2023-12-06 14:40:35 +08:00 via iPhone
    太占资源了,也许适合企业,但对个人很不友好,我都买 1c1g 那种服务器。
    pkoukk
        82
    pkoukk  
       2023-12-06 14:45:46 +08:00   ❤️ 6
    告诉你比你水平高的同学对 java 不友好的原因:
    Java 国内从业者数量太多,而且普遍具有丰富的从业经验,各个能用的赛道都卷出鱿鱼花了
    我多年前从传统软件业转互联网的时候,看了一下各个语言的大头兵面试题,JAVA 都开始问你源码细节,HASHMAP 的红黑树实现
    那个时候其它任何一门语言都没有卷到这个程度,那个年代其它语言甚至你懂 CRUD 就能上岗,这不是卷过头是什么?
    作为一个即将入行的人,java 的池子可能有 1000 平米大,但里面挤了 1W 人
    其它语言可能只有 100-200 平大,但里面可能也只有 100-200 人
    作为一个学的好的,水平高的人,如果有的选,大部分人会选后者
    forgottenPerson
        83
    forgottenPerson  
       2023-12-06 14:54:19 +08:00   ❤️ 1
    其实很多人新手觉得 java 好的人,很多觉得 java 轮子太多了,网上一搜差不多都能很好解决,对于 node 、c#、go 他们觉的啥都要自己写,其实对于 web 开发还是没有深刻理解,就比如 java 很多新手前后端交互其实不是很理解的,也有特别多问题,但是真正理解 web ,或者很扎实的程序员应该来说 go 、c#这些开发效率还是挺快的,还是看人把。go 、c#这些他们觉得搜答案不像 java 一样很容易搜到。
    KnightYui
        84
    KnightYui  
       2023-12-06 15:23:21 +08:00
    效率低
    AlexHsu
        85
    AlexHsu  
       2023-12-06 15:34:10 +08:00
    如果 kotlin 也算是 java 的话 其实 java 没什么缺点
    LavaC
        86
    LavaC  
       2023-12-06 15:39:53 +08:00
    那句话怎么说来着,真正垃圾的语言根本没人讨论,讨论度越高就代表语言越成功
    kenvix
        87
    kenvix  
       2023-12-06 15:42:12 +08:00
    @AlexHsu JVM≠java 。JVM 是 state-of-art 的 VM ,但 java 是一个很落伍的语言
    yzbythesea
        88
    yzbythesea  
       2023-12-06 15:48:15 +08:00
    正常,读书的时候都爱追新潮。我那会儿,面向函数编程的语言特别受推崇,现在都没人提了,比如 Haskell 和 Clojure ,后面刚工作的时候大家又开始宣传 Scala ,再之后就是 Kotlin ,现在貌似很推崇 Rust 。然而我工作大项目里只写过 Java ,Go 和 C 。
    DefoliationM
        89
    DefoliationM  
       2023-12-06 15:49:04 +08:00 via Android
    JVM ,语法啰嗦,又臭又长,主要是有个 JVM ,没有 JVM 其实语法怎么样都无所谓了。
    BruceLees
        90
    BruceLees  
       2023-12-06 15:57:23 +08:00
    人太多
    CuChulainn
        91
    CuChulainn  
       2023-12-06 15:57:50 +08:00
    JVM 在云原生时代很吃亏,Quarkus 正在尝试解决这部分问题。但在 spring 这种生态里并不好做。
    wupher
        92
    wupher  
       2023-12-06 16:18:49 +08:00   ❤️ 1
    从 Java 2 出来就开始接触,到现在都 21 了。不过最近几年主要都在写 Kotlin 了。

    优点:
    - 跨平台
    - 开源库众多
    - 语法简单
    - spring

    缺点:
    - type hell
    - 内存消耗 / GC
    - 虚拟机,系统调用麻烦,访问操作系统资源也麻烦
    - GUI

    以上。最近几年其实更多的是利用 JVM ,使用的是 Koltin 或者 Groovy 这样的派生语言。
    montaro2017
        93
    montaro2017  
       2023-12-06 16:39:28 +08:00
    @NoThing2Talk #21 JEP 445 已经在 preview 了 https://openjdk.org/jeps/445
    murmur
        94
    murmur  
       2023-12-06 17:39:09 +08:00
    @pkoukk 100-200 那个是互联网,互联网是烧钱砸吆喝,裁员也是最积极的 1000 那个是企业和 gov 开发,是要赚钱的,不赚钱没人做

    尤其是现在国产化,一大堆业务系统需要翻新,首先排除 c#,微软的东西,然后选 spring cloud alibaba 沾国产化的光
    tomatocici2333
        95
    tomatocici2333  
       2023-12-06 17:45:19 +08:00   ❤️ 1
    大部分人都碰不到 java 的缺点的
    ITdream
        96
    ITdream  
       2023-12-06 17:50:03 +08:00
    java 的痛点:
    我想要一个香蕉,但是给我的可能是一个拿着香蕉的猩猩,甚至是整个丛林
    xgdgsc
        97
    xgdgsc  
       2023-12-06 18:13:11 +08:00 via Android
    看好明年有了静态小体积编译的 julia 做业务,配合 rust ,llvm 代替 jvm
    bugmakerxs
        98
    bugmakerxs  
       2023-12-06 18:17:33 +08:00
    @lizhian 语法糖有点不好就是多了以后代码无法标准化

    比如 js 的函数定义
    function shit()
    var shit = function()
    var shit = () => {}

    let shit = function() {}
    let shit = () => {}

    诶真不好记
    Bingchunmoli
        99
    Bingchunmoli  
       2023-12-06 18:19:58 +08:00 via Android
    @NessajCN 我记得不是各种号宣传的 go 取代 java ,go 是新一代的 c emm
    Bingchunmoli
        100
    Bingchunmoli  
       2023-12-06 18:21:29 +08:00 via Android
    @murmur 这个在看 go 有同感,spring 这套太全了,面向 spring 编程了
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2611 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:44 · PVG 18:44 · LAX 02:44 · JFK 05:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.