📣 独立日限时特惠: VIP通行证立减$68
查看: 2128| 回复: 11
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Java/C#] 关于Java代码,到机器码的过程

头像被屏蔽
推荐
usr_opta 2020-4-9 08:24:09 | 只看该作者
全局:
用 javap -c somefile.class 就可以看到了。编译器负责生成bytecode,JVM负责执行bytecode。具体怎么执行是JVM的实现。如果某个平台连JVM都没有,自然就不能执行了。
回复

使用道具 举报

推荐
usr_opta 2020-4-10 08:13:59 | 只看该作者
全局:
所谓的哪里都能执行就是说,必须要有JVM才能哪里都能执行对吧?  

不是“有JVM才能哪里都能执行”,是“有某个平台的JVM才能在对应平台执行”。
只要哪里有Java的编译器和JVM,哪里也都能执行啊?

这和我说的“在没有JVM的平台不能执行”并不矛盾。
哪里有C++的编译器,也能哪里都能执行呀?

大多数算法题代码确实是这样。
你说的compiler是指哪一层的?  

指javac,代码到bytecode。

你在Windows上编译出的class可以直接在Linux上用JVM跑。
但是在Windows上用MSVC编译出的exe在Linux上没法跑。
回复

使用道具 举报

🔗
毒奶当 2020-4-11 07:08:08 | 只看该作者
全局:
usr_opta 发表于 2020-4-10 08:13
不是“有JVM才能哪里都能执行”,是“有某个平台的JVM才能在对应平台执行”。

这和我说的“在没有JVM ...

貌似是理论可以,实际不一定。比如目录分隔符'\'和'/'哈哈
回复

使用道具 举报

🔗
肥颓 2020-4-11 11:35:01 | 只看该作者
全局:
本帖最后由 肥颓 于 2020-4-11 11:36 编辑

我没太懂楼主困惑的地方在哪。。。
回复

使用道具 举报

🔗
ourgit 2020-4-12 21:34:54 | 只看该作者
全局:
很简单,去分析OpenJDK源码,包含C, C++和Java,

从JVM加载,到class文件解析,Java内部汇编加载,再到系统函数调用

这里我可以举个例子,Java数组最长是多少?如果楼主能在JVM的c++源码里面找出,那么基本OpenJDK源码分析算是入门了。

不过对于小白来说Java整体源码太大,因为要编译2,3个小时左右,而且会生成几百G的文件
回复

使用道具 举报

🔗
ourgit 2020-4-13 13:07:00 | 只看该作者
全局:
Edsger.X 发表于 2020-4-13 11:49
有视频课可以follow吗?

肯定没有,除了少量写的不怎么清楚的书籍以外,
不仅没有视频,而且没有文档,更加没有人可以讨论。

JVM源码分析算是到了计算机科学的核心地带。

就算资深Java工程师加资深CPP工程师,估计研究个5到10年也算是很正常的。
回复

使用道具 举报

🔗
striges1111 2020-4-14 00:52:49 | 只看该作者
全局:
这时候应该祭出编译原理的龙书了!
英文名:Compilers: Principles,Techniques,and Tools
作者:Alfred V.Aho,Ravi Sethi, Jeffrey D.Ullman
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表