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

Java 除了常驻内存现成的东西多生态大 还有什么优点

  •  
  •   zjq123 · 2020-02-18 08:30:37 +08:00 via Android · 7953 次点击
    这是一个创建于 1774 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这贴不讨论面相对象 强类型 垃圾回收
    只讨论实用主义 编程语言是反短板
    比如 go 好在快速启动 协程
    php 好在纯 web 开发速度快
    c++好在就是不需要垃圾回收 能上天入地 既能做 c 的东西 又有那么多现成的设计模式可以用 c 也可以用函数指针实现面向对象 但那些现成的设计模式无法用了啊
    我以前也偏激 说什么 c 也能 oo 什么 linus 说了 cpp 不好就不好
    jvm 系语言好在常驻内存 生态大 现成东西多
    ide 厉害
    js 好在单线程也能异步
    c# delphi 沾 win32 的光 ide 好 能拖拉拽就能快速做出 gui 程序 以我现在的眼光看 我是完全反对 java awt swing 之类
    75 条回复    2021-03-12 15:26:55 +08:00
    yule111222
        1
    yule111222  
       2020-02-18 08:37:34 +08:00
    好招人
    zjq123
        2
    zjq123  
    OP
       2020-02-18 08:42:46 +08:00 via Android
    perl 好在 one liner
    tuboshuv1
        3
    tuboshuv1  
       2020-02-18 08:43:17 +08:00
    好招人,然后能想到得都能干
    zjq123
        4
    zjq123  
    OP
       2020-02-18 08:46:42 +08:00 via Android
    java 好在纯打工普遍概率上比 php 工资高
    tianxianggezhu
        5
    tianxianggezhu  
       2020-02-18 08:48:16 +08:00   ❤️ 1
    (⊙﹏⊙),为啥要反对 Swing ?做了几年的 pc 端软件,就是基于 Java swing,不仅 Windows 可以运行,各种 Linux 也能运行,包括国产的垃圾 Linux,国产 CPU 等等。虽然 C# 拖拽入门确实很简单,但是要深度改造就很麻烦,远远不如 Swing 自由,需要什么自己用键盘撸就好了!
    defage
        6
    defage  
       2020-02-18 08:48:59 +08:00
    Java 足够简单。约束好,成熟的经验可借鉴的多。
    zjq123
        7
    zjq123  
    OP
       2020-02-18 08:51:08 +08:00 via Android
    @tianxianggezhu 我可以为了速度快 拖拉拽 而舍弃 unix 桌面用户 java 的编译一次到处运行 跨平台 是商业泡泡 php 也是跨平台啊 swing awt 是反人类
    lhx2008
        8
    lhx2008  
       2020-02-18 09:02:14 +08:00 via Android
    语言管理者定的,当然希望语言稳定,稳定就得社区大而且有年头,还要开发难度小,所以 PHP 和 Java 是中小公司喜欢的原因
    tianxianggezhu
        9
    tianxianggezhu  
       2020-02-18 09:08:49 +08:00
    @zjq123 看公司需求吧,我们面向的客户主要是 zf、国家 baoli 部门,有些用的 Windows,有些就是 Linux,而且 php 能做客户端?
    aguesuka
        10
    aguesuka  
       2020-02-18 09:10:24 +08:00
    我觉得,java 最大的优点是运行前尽可能会把错误检查出来,然后写的好的代码相当于自带文档,语法足够简单,调用别人写的代码配以 ide 一路点下去就行
    zjq123
        11
    zjq123  
    OP
       2020-02-18 09:10:39 +08:00 via Android
    @tianxianggezhu 为什么要钻牛角呢 早就说过 反短板
    Cbdy
        12
    Cbdy  
       2020-02-18 09:12:57 +08:00 via Android
    JVM 上有几百个语言,还有类似于喵帕斯( MPS )、Graalvm 这样的平台工具,这方面勉强算生态大吧
    ericgui
        13
    ericgui  
       2020-02-18 09:20:14 +08:00
    生态大就足够了
    yinzhili
        14
    yinzhili  
       2020-02-18 09:29:06 +08:00
    稳定,向下兼容性好,现成东西多,好招人,遇到问题也容易找到解决方案
    RubyJack
        15
    RubyJack  
       2020-02-18 09:35:15 +08:00   ❤️ 1
    java 好就好在 jvm
    abcbuzhiming
        16
    abcbuzhiming  
       2020-02-18 09:53:40 +08:00   ❤️ 1
    用户群足够大,你好招人
    背后的企业支持够强力,JCP 委员会,apache 基金会,哪个不是实力雄厚,有实力雄厚的企业支持,在产业界就会畅通无阻,很多问题其实不是社区解决的,而是背后的企业解决的,Linux 背后如果不是一大堆超级企业站台,靠 linus 一个人绝对不可能到今天这个地步
    ZSeptember
        17
    ZSeptember  
       2020-02-18 09:55:37 +08:00
    Java 语言也简单啊,无脑,不需要多想,坑少,优秀的工业语言。再加上生态,性能,所以公司喜欢用。
    ZSeptember
        18
    ZSeptember  
       2020-02-18 09:56:34 +08:00   ❤️ 2
    不知道你反 Java 什么,带着先入观点,能听进入大家的想法吗。
    zjq123
        19
    zjq123  
    OP
       2020-02-18 09:57:16 +08:00
    @abcbuzhiming 嗯 linux 几年前就明白 就现在难用的 linux 桌面系统 也是靠企业支持 不然连这点用处都没有
    bbao
        20
    bbao  
       2020-02-18 09:58:05 +08:00
    go 启动快,其实不是啥特别的优势,启动快……慢,能怎样呢,慢能慢到哪里去呢。又带来不了什么,开发的时候「感官舒服」一点,仅此而已。
    zjq123
        21
    zjq123  
    OP
       2020-02-18 09:58:14 +08:00
    @ZSeptember 我是先学 java 然后转 php 的 先学会安装 linux 然后才安装 win 的 你知道个屁呀
    abcbuzhiming
        22
    abcbuzhiming  
       2020-02-18 10:01:13 +08:00   ❤️ 2
    @zjq123 额,其实 Linux 桌面如此难用的一个很重要的原因其实就是因为它没有什么重量级的支持,大家都不怎么上心,甚至投入都不够,相反 Linux 在企业级服务的领域,那真是很多大公司货真价值投入真金白银贡献代码。所以 Linux 能在服务器领域占 6 成份额不是浪得虚名。但相对的,也能看出能在服务器领域占据接近 3 成份额的微软的内在实力有多可怕,它是以一家大企业的力量对抗一堆大企业
    huruwo
        23
    huruwo  
       2020-02-18 10:01:29 +08:00
    大还不好吗
    janxin
        24
    janxin  
       2020-02-18 10:02:45 +08:00
    好招人,比小众语言好压工资
    BBCCBB
        25
    BBCCBB  
       2020-02-18 10:03:09 +08:00
    Java 稳.
    aabbcc112233
        26
    aabbcc112233  
       2020-02-18 10:06:37 +08:00 via Android   ❤️ 10
    @zjq123 #21 怎么说话老是一副怼天怼地的感觉呢??大家都是平心静气来讨论问题,感觉你是想得到「 Java 是垃圾,一点都不好」的答案。

    还有,你语文老师没见过你打标点符号吗?
    clf
        27
    clf  
       2020-02-18 10:33:38 +08:00
    1.安全

    2.可移植性
    - 除了 UI 有关的部分外,其它 Java 库能很好的支持平台 duli 性。
    - Java 的基本数据类型的大小和有关传递的行为都有明确的说明。
    (例如,Java 的 int 类型永远是 32 位的整数。在 Java 中,数值类型有固定的字节数。二进制数据以固定格式进行存储与传输,消除了字节顺序(大端小端)的困扰。字符串采用 Unicode 存储)


    3.多线程
    - Java 是第 1 个支持并 发 程序设计的主流语言。

    4.高性能
    - 字节码可以(在运行时)动态地转换成对应运行这个应用的特定 CPU 的机器码。

    5.动态性
    - Java 相比 C/C++来说更具有动态性。
    - 库中可以自由地添加新方法和实例变量,对客户端却没有任何影响。
    - 在 Java 中找出运行时类型信息十分简单。
    zjq123
        28
    zjq123  
    OP
       2020-02-18 10:34:22 +08:00
    @aabbcc112233 我没有反 java 而是反 swing awt 你自己没看清楚 我早说清楚了 没有语言是万能的 。
    比如以前就有大牛鼓吹 erlang 是下一代编程语言 拜托 erlang 只适用很小的场景 而且 erlang 是 1986 年就已经开发出来了 比 perl 都早
    zjq123
        29
    zjq123  
    OP
       2020-02-18 10:36:21 +08:00
    @lychs1998 你是 98 年的吗?
    pursuer
        30
    pursuer  
       2020-02-18 11:01:42 +08:00
    Java 的 ClassLoader,这个 C#也有,这个可以为代码热更新提供很大的便利。像 c/c++通常也有动态库,但动态库的符号似乎不能限定到一个命名空间内,也不支持符号卸载。除非能用上像微软的 COM 这类框架,但大部分库不会特地支持这类框架。
    tt67wq
        31
    tt67wq  
       2020-02-18 11:06:43 +08:00 via iPhone
    jvm 生态好
    br00k
        32
    br00k  
       2020-02-18 11:13:19 +08:00
    jetbrains 表示很慌
    tyrantZhao
        33
    tyrantZhao  
       2020-02-18 11:13:30 +08:00
    主要岗位多
    Ericcccccccc
        34
    Ericcccccccc  
       2020-02-18 11:15:45 +08:00
    大规模被使用, 支撑大规模业务得到有效验证. 由此带来坑也少, 因为前人都踩过了, 不用花大力气处理奇葩 bug 上. 最佳实践的路子他人也铺好路, 直接拿来用就行

    相关生态完整而且成熟, 业务中使用的第三方组件 /开源产品不会说不迭代就不迭代, 想要什么基本都有(比如我上次尝试学 go 想找个和 mybatis 类似的组件, 结果找了一大堆出来 )

    会的人多, 好招人, 这个就不多说了
    Michaelssss
        35
    Michaelssss  
       2020-02-18 12:04:03 +08:00 via Android
    招人简单啊…会写 java 的满地有,对于资方就是最大优势,至于你说什么特性啊,用途啊都没有这条有意义
    cdh1075
        36
    cdh1075  
       2020-02-18 14:59:38 +08:00
    底层语言和函数式语言与 java 完全不是一个类别的没法比
    剩下的 go swift php python 各种 script perl ruby csharp....等的优点
    java 几乎全都提供了实现方法,关键就看你用不用了,比如 java 早就提供了 jaotc,还有人说 java 和 go 的性能问题,早就提供了 jmod,还有人说 jre 体积大要安装,早就提供了不知多少种垃圾回收,还有人吹 swift 的 gc
    我觉得 java 除了有点费键盘,没别的缺点了,但都 2020 年了,java 代码里的“废话”有 ide 帮忙写的,又不用人写
    zjq123
        37
    zjq123  
    OP
       2020-02-18 15:46:11 +08:00 via Android
    @cdh1075
    knuth 在 coders at work 说 语言就像宗教 信这个教的想转化另一个教的
    你给人感觉就像 java 教徒
    murmur
        38
    murmur  
       2020-02-18 15:49:59 +08:00
    优点是名字好,java 加瓦,添砖加瓦,说明 java 是大型应用的基石
    tairan2006
        39
    tairan2006  
       2020-02-18 16:12:48 +08:00
    Java 生态好,语言功能比较丰富( Java8 以后),性能比下有余,也比较好招人。

    缺点:写网络中间件 /高并发程序比 Go 难写多了;占内存太多;打包体积太大。
    qwertty01
        40
    qwertty01  
       2020-02-18 16:18:26 +08:00
    @zjq123 awt、swing 这两个东西不是都死了吗? javafx 能了解一下? PS:开发桌面程序不是 c#和 qt 干的事吗?
    paoqi2048
        41
    paoqi2048  
       2020-02-18 16:27:08 +08:00   ❤️ 1
    Java,永远滴神!
    wind3110991
        42
    wind3110991  
       2020-02-18 16:35:22 +08:00
    Java 用了一年,比起 cpp 最好的我觉得在于,不用手动管理内存,并且大数据生态比较齐全( hadoop 生态),依赖库管理方便
    zjq123
        43
    zjq123  
    OP
       2020-02-18 16:37:47 +08:00
    @wind3110991 cpp 就是好在不需要垃圾回收 高频交易 密集型计算
    wysnylc
        44
    wysnylc  
       2020-02-18 17:21:23 +08:00
    对于老板来讲,java 下限高可以保证木桶的最短木板能够符合老板期望
    PiersSoCool
        45
    PiersSoCool  
       2020-02-18 17:34:08 +08:00
    歪个题,没有人觉得 golang 的工程性更好吗。语法简单不多也正好,没继承地狱的问题( Spring 源码 omg )。但是 Java 全家桶和 Stream 确实爽。
    CuVee
        46
    CuVee  
       2020-02-18 17:39:54 +08:00
    还真是好招人。。。

    一个语言火不火不能单看语言特征的啊

    各方面都要考虑的啊

    比如 JS,在 ES5 出来前这语言简直就是垃圾

    但是保上了浏览器大粗腿,加上最近十年 ES56789.

    直接晋升第一语言了
    lithiums
        47
    lithiums  
       2020-02-18 18:28:48 +08:00
    简而言之适合面向“二三四五流程序员”编程。
    BruceTu
        48
    BruceTu  
       2020-02-18 19:01:38 +08:00
    讨论这个语言好还是那个语言好这件事本身就很 low
    java 好招人那也是因为 java 需求大,学的人才多,实际上易学性上 java 不占优势
    java 在某些方面效率是低点,语法是繁琐点,但是语言的完备性,健全性上是其他语言不具备的
    如果限定一个人只能学一种语言,那肯定是 java
    老板招人都希望能根据业务变化在不变动人员的情况下随时切换各个项目,招会 java 的是最节省成本的
    6IbA2bj5ip3tK49j
        49
    6IbA2bj5ip3tK49j  
       2020-02-18 20:09:33 +08:00
    @zjq123 36 楼在跟你解释 java 为什么好,你一个“java 教徒”的帽子就扣上去了。
    那还有什么好说的。
    java 最垃圾咯。
    zjq123
        50
    zjq123  
    OP
       2020-02-18 20:36:07 +08:00 via Android
    @xgfan 我其实是感谢他的
    hpeng
        51
    hpeng  
       2020-02-18 20:41:52 +08:00
    用热度高的语言。不然遇到问题,搜不到解决,就得自己搞。多累(来自咸鱼的我
    bug4c
        52
    bug4c  
       2020-02-18 21:22:57 +08:00 via iPhone
    java 恰恰就是因为规矩多,语法啰嗦,写法统一让系统非常好维护
    hangszhang
        53
    hangszhang  
       2020-02-18 21:56:48 +08:00
    Jetbrain 瑟瑟发抖
    zjq123
        54
    zjq123  
    OP
       2020-02-18 22:32:00 +08:00 via Android
    相比 go 我觉得我会爱上 java 异常机制
    我继承了 perl 码农的懒
    james122333
        55
    james122333  
       2020-02-18 22:36:18 +08:00
    什么时候啰唆 什么时候不要啰唆 才是好的
    啰唆到底人也没那么多精力可以掌握代码
    人体力不足的时候 就是难以维护的状况了
    很多时候是不是被小状况卡了很久? (滑稽)
    miaotaizi
        56
    miaotaizi  
       2020-02-19 00:35:21 +08:00 via iPhone
    java 再好有何用,照样给你写成 php
    janus77
        57
    janus77  
       2020-02-19 00:56:47 +08:00   ❤️ 1
    生态大就是最好的好处
    不止是框架,还有招人 开发成本 维护成本
    你说反短板,可是从工程的角度上来看 有些东西恰好就是考虑短板。
    正是因为 java 没有长处,所以说他也就没有短处。没有短处就是最大的长处
    fcten
        58
    fcten  
       2020-02-19 02:32:02 +08:00
    写过比较多的语言有 C/C++、Go、Java、JavaScript、TypeScript、PHP、Lua。
    对于面向上层业务逻辑的服务端开发来说,Java 是目前最好的选择之一。
    在软件开发的其他领域( GUI、游戏、基础设施等等),则往往有更优的选择。
    alphatoad
        59
    alphatoad  
       2020-02-19 03:34:38 +08:00 via iPhone
    Haskell 天下第一
    zjq123
        60
    zjq123  
    OP
       2020-02-19 08:58:14 +08:00 via Android
    @fcten 你厌恶不厌恶 go 的 if error != nil
    你觉得 java 能替代 go 吗 go 还有个好处 能直接用指针 java 只能 jni
    DEVN
        61
    DEVN  
       2020-02-19 09:15:54 +08:00 via iPhone
    目光短浅,因为你不是做 Java 的。
    zjq123
        62
    zjq123  
    OP
       2020-02-19 09:26:21 +08:00 via Android
    @DEVN 你是不是有 java 宗教情节
    zjsxwc
        63
    zjsxwc  
       2020-02-19 09:37:03 +08:00
    java 是个好语言,不过说生态好其实也就那样,一个是各种私货 jvm 之间不兼容的也多,还有就是很多历史遗留的屎坑项目,现在都是废弃不用了的,于是就造成生态比别的语言多的样子。
    pursuer
        64
    pursuer  
       2020-02-19 09:39:43 +08:00
    @zjq123 go 的指针不支持指针运算,我觉得这只是另一种表现形式的引用。要说 cgo 那就和 jni,jna 差不多了。
    go 的优势是它的默认实现有可动态扩展的栈,方便创建很多协程,c#的无栈协程我觉得是更高效的协程方式,但是会增加编写负担
    momocraft
        65
    momocraft  
       2020-02-19 09:40:58 +08:00
    常驻内存 也是优点吗? 相对 cgi 的优点?
    Ravenddd
        66
    Ravenddd  
       2020-02-19 09:50:46 +08:00
    好养活自己,一条就够了
    DEVN
        67
    DEVN  
       2020-02-19 09:50:59 +08:00 via iPhone
    @zjq123 鉴定完毕
    cabing
        68
    cabing  
       2020-02-19 10:32:10 +08:00
    一直觉得 java 很稳,除了费代码外。社区和功能,生态特别强大,兼顾性能和开发速度。
    zjq123
        69
    zjq123  
    OP
       2020-02-19 10:53:45 +08:00
    @momocraft cgi 相对常驻内存有什么优点? 有人不是在说常驻内存 适合高吞吐?
    fcten
        70
    fcten  
       2020-02-19 11:31:55 +08:00
    @zjq123

    if err != nil 已经被吐槽得很多了。确实不算优雅,但是也不算太坏,而且也有自己的优点。
    Go 的指针和引用其实是类似的,而且还引入了和 Java 一样的 NPE 问题。我觉得是比较糟糕的设计。
    Go 和 Java 是相互替代性比较强的。但是从各个角度来看,从 Java 迁移到 Go 的情况应该要更多一些。
    casillasyi
        71
    casillasyi  
       2020-02-19 11:50:47 +08:00
    不要再在各个语言之间来回争论,比较了。各有各的优势,编程这个行业,90%是业务逻辑。业务逻辑最主要的要求是可以迅速实施,迅速迭代,Java 就非常合适,生态成熟,文档全面,简单好修改,性能的需求不是那么强烈。中间件之类的对性能要求很强的场景,可以用 go,rust,c/c++等等。数据分析之类的脏活累活,用 python 就很方面,快速灵活,用完即走。看你自己的定位和从事的项目,争论哪个好哪个坏,没必要
    zjq123
        72
    zjq123  
    OP
       2020-02-19 11:52:49 +08:00
    @casillasyi 嗯 我早被 php 惯坏了 我不是想争 而是集思广益
    inwar
        73
    inwar  
       2020-02-20 09:11:25 +08:00 via Android
    语言约束强,好入手,避免了垃圾代码;隔离了大部分底层,适合纯做业务(相对 c/c⺾);
    语言也是面向需求生成的,没有绝对的好和差
    bk201
        74
    bk201  
       2020-02-21 13:18:24 +08:00
    日经贴。反对 一门语言是什么鬼?程序员何必拘泥于语言,既然反对就别用,没啥大不了的。
    优缺点这种网上一搜一大把,但绝对不是你贴子里的说法,发表见解之前麻烦搜索一下。
    yitingbai
        75
    yitingbai  
       2021-03-12 15:26:55 +08:00
    @tianxianggezhu java 确实方便, 最近我用 javafx 写了一个常驻后台的工具,功能很好用, 费劲心思降低资源占用都办不到, 启动空窗口就占用 100M+,44 个线程, 最小化到后台, 哪怕什么任务都不做并且手动 gc 后占用也在 300M 左右, 太难了, 相同功能的软件, mac 原生版只需要 30M 内存, 唯一的好处也就剩下跨平台了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5668 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 01:43 · PVG 09:43 · LAX 17:43 · JFK 20:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.