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

我现在感觉 Java 有点底层了

  •  
  •   Features · 2021-12-18 17:06:17 +08:00 · 8612 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。
    啥都要自己实现,强行实现出来 BUG 一堆,不知道啥时候就崩了
    没有框架感觉自己就是个废物😂

    感觉 js ,php 这些太爽了,没有框架我都能干三大碗
    47 条回复    2021-12-21 15:18:49 +08:00
    liuidetmks
        1
    liuidetmks  
       2021-12-18 17:14:47 +08:00 via iPhone   ❤️ 1
    格局小了,现在是无代码 😏
    Jooooooooo
        2
    Jooooooooo  
       2021-12-18 17:19:25 +08:00
    时代变了, java 都底层了.

    (上学没学过 c 吗
    Weny
        3
    Weny  
       2021-12-18 17:27:08 +08:00
    就算是汇编,只要是人类可读的其实都还好了... 只是不熟悉而已。来个例子

    ```C
    void*
    memmove(void *vdst, const void *vsrc, int n)
    {
    char *dst;
    const char *src;

    dst = vdst;
    src = vsrc;
    if (src > dst) {
    while(n-- > 0)
    *dst++ = *src++;
    } else {
    dst += n;
    src += n;
    while(n-- > 0)
    *--dst = *--src;
    }
    return vdst;
    }
    ```
    rykinia
        4
    rykinia  
       2021-12-18 17:29:15 +08:00
    java 没有框架强行实现 bug 一堆?
    js 没有框架照样爽?

    很好奇什么神奇的需求能达到这种效果
    Cbdy
        5
    Cbdy  
       2021-12-18 17:30:16 +08:00
    原生不支持 JSON 是挺麻烦的
    industryhive
        6
    industryhive  
       2021-12-18 17:50:01 +08:00
    java 是瘦语核的语言,光学会 java 的语法什么也做不了,必须使用 JDK 提供的类库或者框架才能实现一些复杂的功能,没有框架确实什么也做不了
    linbingcheng
        7
    linbingcheng  
       2021-12-18 17:54:22 +08:00
    那是你没看过 C 和 C++ 的相关代码吧,简直绝望
    Features
        8
    Features  
    OP
       2021-12-18 18:08:44 +08:00
    @Jooooooooo
    上学学 java 的时候,我们就感叹,C 已经算底层语言了
    虽然他们都是高级语言,但是当时 java 确实更易用
    seakingii
        9
    seakingii  
       2021-12-18 18:24:08 +08:00
    现在都 AI 写代码了,谁还自己写.
    sagaxu
        10
    sagaxu  
       2021-12-18 18:25:12 +08:00
    PHP 是最好的语言,虽然用 PHP 的公司越来越少了
    makelove
        11
    makelove  
       2021-12-18 19:20:49 +08:00   ❤️ 2
    不知道现在的 java 是什么样,以前我用的时候 java 社区开发习惯的确过于封装且追求高大全,后来一路 php/py/js 下来那些都没这么复杂,一眼就直接见底了
    最近 java 那个漏洞也从侧面说明了一个小小的 logger 功能多到竟然也能搞出这么多事
    hello2090
        12
    hello2090  
       2021-12-18 19:32:02 +08:00   ❤️ 3
    工作 10 多年了,从没挑剔过语言,钱给够让用啥用啥。
    Borch
        13
    Borch  
       2021-12-18 19:47:00 +08:00   ❤️ 3
    首先,这不叫底层。
    Chihaya0824
        14
    Chihaya0824  
       2021-12-18 20:12:36 +08:00
    现在的大学都不会稍微碰一下汇编吗?我就上过一个 arm 的汇编课那真的阴间,学完了以后觉得 C 真好用(
    hutoer
        15
    hutoer  
       2021-12-18 21:12:03 +08:00
    @Borch 没错,我这样的码农才是底层!
    Brentwans
        16
    Brentwans  
       2021-12-18 21:14:57 +08:00
    @industryhive 咦?有什么语言,语法包含了框架功能吗?
    Mohanson
        17
    Mohanson  
       2021-12-18 21:20:34 +08:00
    有没有大佬说下 log4j 是图灵完备的吗?
    pengtdyd
        18
    pengtdyd  
       2021-12-18 21:53:56 +08:00
    只要能赚钱,管他有没有 bug ,有 bug 给钱修就行。
    limbo0
        19
    limbo0  
       2021-12-18 22:22:52 +08:00
    是的, 习惯脚本语言 Java 是有点蛋疼
    voidmnwzp
        20
    voidmnwzp  
       2021-12-19 00:22:41 +08:00 via iPhone
    你是不是对底层有什么误解?没学过 c/cpp ?
    snw
        21
    snw  
       2021-12-19 00:44:02 +08:00 via Android
    想起当年劳动技能课玩过单片机,用的是汇编语言,
    snw
        22
    snw  
       2021-12-19 00:45:37 +08:00 via Android
    …只是控制几个 LED 按各种规律发光,用汇编挺容易的。
    snw
        23
    snw  
       2021-12-19 00:51:53 +08:00 via Android   ❤️ 1
    但要说爽,还是巨硬家那些语言爽。像 Java 得知道整数比较时 127 和 128 会有不同结果,js 以前用 var 时还得考虑变量作用域和闭包,用.NET 就没这么多奇怪的东西,可以少死几个脑细胞。
    harwck
        24
    harwck  
       2021-12-19 06:30:44 +08:00
    最近在看 React ,结果什么脚手架都有
    charlie21
        25
    charlie21  
       2021-12-19 07:21:25 +08:00 via iPhone
    加利福尼亚的首府是萨克拉门托
    yinzhili
        26
    yinzhili  
       2021-12-19 08:35:31 +08:00   ❤️ 1
    bug 是写代码的人水平不够。不能怪语言。真的。
    fiypig
        27
    fiypig  
       2021-12-19 09:30:56 +08:00 via iPhone
    最好的项目是自己写工具,不依赖别人的框架
    fsdrw08
        28
    fsdrw08  
       2021-12-19 11:19:56 +08:00 via Android
    所以说学编程,应该直接上框架,学什么基础语法都是屁,把框架撸一遍踩坑了再看基础语法也不迟
    Kylin30
        29
    Kylin30  
       2021-12-19 15:47:04 +08:00
    这个在圈子里的黑话叫生态不行
    moen
        30
    moen  
       2021-12-19 16:47:28 +08:00
    @Kylin30 但是我看很多人说转 Java 而别的平台不行的一个重要理由就是 Java 生态难波万。真是让人疑惑
    shellic
        31
    shellic  
       2021-12-19 17:24:22 +08:00 via Android
    要想写的爽还得 PHP
    Kylin30
        32
    Kylin30  
       2021-12-19 19:43:49 +08:00
    @moen
    我的意思是他说的这种情形一般叫生态不行,不是说 java 生态不行。
    industryhive
        33
    industryhive  
       2021-12-20 10:08:37 +08:00
    @Jooooooooo
    @voidmnwzp 就看你怎么定义“底层”了,GraalVM 是完全由 java 实现的通用高性能虚拟机,做到了和真实物理机指令集对应而不是和某一门编程语言语法对应,也就是说你用汇编干的活用这玩意都能干,这个算底层不?
    vincent7245
        34
    vincent7245  
       2021-12-20 10:12:59 +08:00
    可见大学计算机专业从 C/c++ 语言开始入门是多么明智的安排
    Jooooooooo
        35
    Jooooooooo  
       2021-12-20 10:21:08 +08:00
    @industryhive 我认为 java 并不底层的原因在于, 一个 volatile 直接屏蔽各种软硬件的差异, 实现统一语义. 从这点看是相当不底层. volatile 已经是具备足够抽象的语义. jvm 帮助我们在不同软硬件上采用不同实现.
    industryhive
        36
    industryhive  
       2021-12-20 12:51:26 +08:00
    @Jooooooooo 按照你这个观点,那正好说明 java 和 C 、C++一样底层。所谓跨平台,是因为 jvm 屏蔽了底层的细节,比如你说的 volatile 。但是 volatile 之所以能实现所有平台语义的统一,完全是靠底层的 jvm 实现的。所以现在有了下一代的通用高性能跨语言虚拟机 GraalVM ,GraalVM 是一个完全由 java 实现的 java 虚拟机,如果你有需要,你完全可以自己实现底层细节,你想要修改 volatile 的语义,你可以自己修改 GraalVM ,你甚至可以自定义 java 的语法规范。而在 GraalVM 出现之前,这些细节的工作是由 C++实现的。所以,GraalVM 的出现,说明 java 至少可以做到和 C++一样底层的事情。
    Jooooooooo
        37
    Jooooooooo  
       2021-12-20 14:13:21 +08:00
    @industryhive 正是因为 jvm 屏蔽了底层细节, 所以才说 java 并不底层.
    industryhive
        38
    industryhive  
       2021-12-20 14:20:59 +08:00
    @Jooooooooo 所以当你自己写 jvm 的时候,要直接处理底层细节,你说这个时候 java 是否底层?
    Jooooooooo
        39
    Jooooooooo  
       2021-12-20 14:25:45 +08:00
    @industryhive 肯定不属于啊. Java 面对使用者来说, 是相当高层以及抽象的语言. 底下具体是怎么实现的完全不关心.

    比如 volatile 在不同软硬件下有着完全不同的处理方式(比如有些强一致的软件下, volatile 直接被抹掉了), 用 java 的人可不知道这一点
    industryhive
        40
    industryhive  
       2021-12-20 14:53:28 +08:00
    @Jooooooooo 那是否可以这么说,用 java 写上层应用的时候,java 是高层和抽象的语言,因为按你的说法,使用者不关心硬件或平台底层细节;用 java 写 jvm 或 OS 的时候,那按你的说法,java 是底层语言,因为这个时候使用者必须非常关心和了解硬件和平台底层细节。你觉得我这说法对吗?
    voidmnwzp
        41
    voidmnwzp  
       2021-12-20 18:56:57 +08:00 via iPhone
    @industryhive java 怎么可能写 os 一个 runtime 的语言,写出来也是底层也是跑在 jvm 上的虚拟系统,底层的内核得靠 c/cpp native 实现
    industryhive
        42
    industryhive  
       2021-12-20 20:34:06 +08:00
    @voidmnwzp java 怎么不可能写 os ,Java ME 就运行在资源极其受限的设备上,根本就没有操作系统,所有的硬件资源都是靠一个极其精简的 jvm 管理。那扩大到 Java SE 平台,jvm 当然也可以管理更丰富的硬件资源。所以对于 java 来说,操作系统是冗余的,如果让 jvm 直接管理硬件资源,会大大提高性能。
    有一篇文章就说了这个设想:一种新的操作系统设计 http://www.yinwang.org/blog-cn/2013/04/14/os-design 。知乎上也有对这篇文章的讨论:如何看待王垠对于内存管理的理解? - 灵剑的回答 - 知乎
    https://www.zhihu.com/question/484194993/answer/2098751994
    。总的思想就是让 JVM 直接运行在裸机上,去掉操作系统的冗余,这样 JVM 就是操作系统,极大的提高程序的运行性能。其实这样的想法我很早之前也想到的,现在全世界几十亿台安卓设备,底层都是 Linux 系统,然后在 Linux 之上运行了 jvm ,在 jvm 之上再运行安卓应用。我就想为什么不直接运行 jvm ,去掉 Linux 呢?这对于安卓设备来说运行效率会极大的提高。
    gearkey
        43
    gearkey  
       2021-12-21 07:39:45 +08:00
    脚本语言万岁! js 、python 万岁!
    kergee
        44
    kergee  
       2021-12-21 08:47:22 +08:00
    给你们看看更底层的,软件的数学基础 https://softwarefoundations.cis.upenn.edu/
    exiledkingcc
        45
    exiledkingcc  
       2021-12-21 10:37:27 +08:00
    @industryhive
    那是把 JVM 写成 OS ,而不是用 JAVA 写 OS 。
    industryhive
        46
    industryhive  
       2021-12-21 11:39:36 +08:00
    @exiledkingcc 不不不,像王垠的这个设想 ,jvm 就是 OS ,而且有许多狭义上的 jvm 没有的功能,比如安装第三方应用、客户端远程连接等。只不过是把传统的操作系统内核给换成 jvm 而已。所以 java 能写 jvm ,当然也能写 OS ,这是 java ME 和 GraalVM 已经验证过的事情。
    Joker123456789
        47
    Joker123456789  
       2021-12-21 15:18:49 +08:00
    java 的生态这么丰富,你居然说啥都要自己实现, 你这是连 sql ,业务逻辑都想自动化了吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1006 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:14 · PVG 06:14 · LAX 15:14 · JFK 18:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.