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

我现在感觉 Java 有点底层了

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

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

    (上学没学过 c 吗
    Weny
        3
    Weny  
       150 天前
    就算是汇编,只要是人类可读的其实都还好了... 只是不熟悉而已。来个例子

    ```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  
       150 天前
    java 没有框架强行实现 bug 一堆?
    js 没有框架照样爽?

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

    比如 volatile 在不同软硬件下有着完全不同的处理方式(比如有些强一致的软件下, volatile 直接被抹掉了), 用 java 的人可不知道这一点
    industryhive
        40
    industryhive  
       148 天前
    @Jooooooooo 那是否可以这么说,用 java 写上层应用的时候,java 是高层和抽象的语言,因为按你的说法,使用者不关心硬件或平台底层细节;用 java 写 jvm 或 OS 的时候,那按你的说法,java 是底层语言,因为这个时候使用者必须非常关心和了解硬件和平台底层细节。你觉得我这说法对吗?
    voidmnwzp
        41
    voidmnwzp  
       148 天前 via iPhone
    @industryhive java 怎么可能写 os 一个 runtime 的语言,写出来也是底层也是跑在 jvm 上的虚拟系统,底层的内核得靠 c/cpp native 实现
    industryhive
        42
    industryhive  
       148 天前
    @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  
       148 天前
    脚本语言万岁! js 、python 万岁!
    kergee
        44
    kergee  
       148 天前
    给你们看看更底层的,软件的数学基础 https://softwarefoundations.cis.upenn.edu/
    exiledkingcc
        45
    exiledkingcc  
       148 天前
    @industryhive
    那是把 JVM 写成 OS ,而不是用 JAVA 写 OS 。
    industryhive
        46
    industryhive  
       148 天前
    @exiledkingcc 不不不,像王垠的这个设想 ,jvm 就是 OS ,而且有许多狭义上的 jvm 没有的功能,比如安装第三方应用、客户端远程连接等。只不过是把传统的操作系统内核给换成 jvm 而已。所以 java 能写 jvm ,当然也能写 OS ,这是 java ME 和 GraalVM 已经验证过的事情。
    Joker123456789
        47
    Joker123456789  
       147 天前
    java 的生态这么丰富,你居然说啥都要自己实现, 你这是连 sql ,业务逻辑都想自动化了吗
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3910 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:52 · PVG 13:52 · LAX 22:52 · JFK 01:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.