V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
关于交易安全的提示
在您初次进行交易之前,请点击上面的黄色横条阅读关于交易安全的提示。

为了提高 V2EX 的有效信息质量,在发布交易信息时,除了遵守安全提示中的说明外,也请注意下面的规则:

拼车信息请发到 /go/cosub 节点。

如果没有发送到 /go/cosub,那么会被移动到 /go/pointless。如果持续触发这样的移动,会导致账号被禁用。

DT37
V2EX  ›  二手交易

迫于无人问津, 这真不是一篇关于手摸手实现 JVM 的教程

  •  
  •   DT37 · 2021-02-03 10:59:42 +08:00 · 1247 次点击
    这是一个创建于 1423 天前的主题,其中的信息可能已经有所发展或是发生改变。
    起源:
    为什么需要自己实现 JVM?
    纸上得来终觉浅,只有自己写一遍才能更深刻的理解虚拟机工作原理.

    为什么需要深入理解 Java 虚拟机的工作原理?
    现实:
    1.技术面试需要
    2.薪资议价技能
    自我:
    1.跟同事朋友讨论 JVM 技术不经意间暴露出自己对虚拟机的深刻理解, 让同事朋友另眼相看.
    2.自我实现的满足感.
    3.在日新月异的技术环境下,掌握根本技能.

    食用人群:
    1.对 Java 虚拟机原理和实现感兴趣的开发者.
    2.对解释器原理和实现感兴趣的开发者.
    3.想找中小型项目练手的 Java 初学者或初中级开发者.
    4.想阅读 Java 虚拟机规范但觉得内容枯燥的开发者.

    食用地址:https://www.lanqiao.cn/courses/2849
    九折优惠:SlCfnMsp (优惠码)
    第 1 条附言  ·  2021-02-03 17:31:42 +08:00
    18 条回复    2021-02-04 10:35:24 +08:00
    xiaofan2
        1
    xiaofan2  
       2021-02-03 11:45:00 +08:00   ❤️ 1
    有什么亮点吗
    jiom
        2
    jiom  
       2021-02-03 11:49:53 +08:00
    迫于太穷 看到 89 我还是放弃了 哈哈哈哈
    DT37
        3
    DT37  
    OP
       2021-02-03 12:59:02 +08:00
    终于有人回复了, 有亮点, 学习的的过程中同时可以学习 vim
    DT37
        4
    DT37  
    OP
       2021-02-03 13:02:30 +08:00
    @jiom 具体的可以联系作者
    https://www.guxingke.com/ 大佬的博客在这里
    DT37
        5
    DT37  
    OP
       2021-02-03 13:03:50 +08:00
    @xiaofan2 真的手摸手算亮点嘛?
    pangleon
        6
    pangleon  
       2021-02-03 13:43:38 +08:00
    多少年前就用自己动手 XXX 系列图书了,JVM 用 GO 实现的,写的卖的都可以,你这个跟人家比不知道亮点在哪,价格还这个高
    DT37
        7
    DT37  
    OP
       2021-02-03 14:14:31 +08:00
    @pangleon 对啊, 很有道理. 为什么呢? 老哥要不试学一下, 不甜不要钱
    jrtzxh020
        8
    jrtzxh020  
       2021-02-03 17:19:06 +08:00
    写过 CURD 的前端可以学吗?
    catsoul
        9
    catsoul  
       2021-02-03 17:22:30 +08:00
    是不是买了就会了,不会可不可以退(逃
    DT37
        10
    DT37  
    OP
       2021-02-03 17:23:05 +08:00
    @jrtzxh020 有 Java 开发基础,然后又兴趣研究的话可以玩玩. 可以先试学感受一下或者到这个库里面 https://github.com/guxingke/mini-jvm.git 可以先看看了解一下
    DT37
        11
    DT37  
    OP
       2021-02-03 17:25:51 +08:00
    @catsoul mark 等于会了 (逃 , 可以看看作者之前写的 https://github.com/guxingke/mini-jvm
    DonaldY
        12
    DonaldY  
       2021-02-03 17:28:10 +08:00
    已经写过 demo 了。。。。
    DT37
        13
    DT37  
    OP
       2021-02-03 17:30:34 +08:00
    @DonaldY 可以看看作者用 C 写的? https://github.com/guxingke/neojam
    lewis89
        14
    lewis89  
       2021-02-04 09:29:43 +08:00
    @jrtzxh020 #8 可以,JVM 本身 并不难,字节码基本上就是在汇编的基础上去掉了寄存器,不优化或者 JIT 编译的话 实际上解析字节码非常容易,因为字节码没法直接操作寄存器,只要每一个栈帧维持一个操作数的栈就能实现解析字节码了 只不过效率低下罢了,然后复杂的一点的就是怎么用 C 操作原始类型或者用 C 实现一个动态的结构体 来保存 Java 对象
    lewis89
        15
    lewis89  
       2021-02-04 09:34:42 +08:00
    @jrtzxh020 #8 动态开辟内存 来保存 Java 对象 本身也不复杂,无非就是读取 class 文件,根据对象的成员变量 malloc 对应大小的结构体,然后对齐内存,这样 cache 的时候方便,总而言之 如果只是实现一个单线程的字节码运行器,本身并不复杂,因为字节码模型真的不复杂..
    jrtzxh020
        16
    jrtzxh020  
       2021-02-04 09:41:52 +08:00
    @lewis89 谢谢大佬指导,虽然自己做前端的。但业余时间都会学习一下 java 。
    DT37
        17
    DT37  
    OP
       2021-02-04 10:30:27 +08:00
    @jrtzxh020 我只是搬运工啦, 可以了解学习一下, 增加一下自己的技术深度.
    DT37
        18
    DT37  
    OP
       2021-02-04 10:35:24 +08:00
    大佬通透, 直达本质.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4043 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:25 · PVG 13:25 · LAX 21:25 · JFK 00:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.