首页编程java编程自己动手写java虚拟机,java游戏模拟器

自己动手写java虚拟机,java游戏模拟器

编程之家2026-06-03689次浏览

大家好,感谢邀请,今天来为大家分享一下自己动手写java虚拟机的问题,以及和java游戏模拟器的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

自己动手写java虚拟机,java游戏模拟器

我将要学java,怎么安装虚拟机

上www.sun.com下载jdk(其中已经包含java虚拟机)

执行j2sdk安装程序,自定义路径,我们的安装路径为:C:\j2sdk1.4.2_04

配置j2sdk:

配置环境变量:

我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:

JAVA_HOME=C:\j2sdk1.4.2_04

自己动手写java虚拟机,java游戏模拟器

CLASSPATH=.;C:\j2sdk1.4.2_04\lib\tools.jar;C:\j2sdk1.4.2_04\lib\dt.jar;C:\j2sdk1.4.2_04

\bin;

path=C:\j2sdk1.4.2_04\bin;

写一个简单的java程序来测试J2SDK是否已安装成功:

public class hello

{

自己动手写java虚拟机,java游戏模拟器

public static void main(String args[])

{

System.out.println("Hello");

}

}

将程序保存为文件名为hello.java的文件。

打开命令提示符窗口,进入到hello.java所在目录,键入下面的命令

javac hello.java

java hello

此时若打印出来hello则安装成功,若没有打印出这句话,仔细检查以上配置是否正确。

注意系统文件夹选项中应确定“隐藏已知文件类型的扩展名”不勾选(我的电脑?工具?查看)

java 虚拟机可以使用java编写吗

1.JAVA虚拟机可以看成是解释执行(比如basic语言)字节代码的计算机。

2.Java本身的编译器用Java语言编写,执行代码的虚拟机用C语言实现。

3.Java语言的执行模式是半编译和半解释型,程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行,字节代码实际上可以看作是虚拟机的机器代码。

4.JAVA虚拟机实现了代码与硬件和操作系统的隔离,做到了较强的可移植性。

深入理解Java虚拟机的目录

前言

致谢

第一部分走近Java

第1章走近Java/ 2

1.1概述/ 2

1.2 Java技术体系/ 3

1.3 Java发展史/ 5

1.4展望Java技术的未来/ 9

1.4.1模块化/ 9

1.4.2混合语言/ 9

1.4.3多核并行/ 11

1.4.4进一步丰富语法/ 12

1.4.5 64位虚拟机/ 13

1.5实战:自己编译JDK/ 13

1.5.1获取JDK源码/ 13

1.5.2系统需求/ 14

1.5.3构建编译环境/ 15

1.5.4准备依赖项/ 17

1.5.5进行编译/ 18

1.6本章小结/ 21

第二部分自动内存管理机制

第2章 Java内存区域与内存溢出异常/ 24

2.1概述/ 24

2.2运行时数据区域/ 25

2.2.1程序计数器/ 25

2.2.2 Java虚拟机栈/ 26

2.2.3本地方法栈/ 27

2.2.4 Java堆/ 27

2.2.5方法区/ 28

2.2.6运行时常量池/ 29

2.2.7直接内存/ 29

2.3对象访问/ 30

2.4实战:OutOfMemoryError异常/ 32

2.4.1 Java堆溢出/ 32

2.4.2虚拟机栈和本地方法栈溢出/ 35

2.4.3运行时常量池溢出/ 38

2.4.4方法区溢出/ 39

2.4.5本机直接内存溢出/ 41

2.5本章小结/ 42

第3章垃圾收集器与内存分配策略/ 43

3.1概述/ 43

3.2对象已死?/ 44

3.2.1引用计数算法/ 44

3.2.2根搜索算法/ 46

3.2.3再谈引用/ 47

3.2.4生存还是死亡?/ 48

3.2.5回收方法区/ 50

3.3垃圾收集算法/ 51

3.3.1标记-清除算法/ 51

3.3.2复制算法/ 52

3.3.3标记-整理算法/ 54

3.3.4分代收集算法/ 54

3.4垃圾收集器/ 55

3.4.1 Serial收集器/ 56

3.4.2 ParNew收集器/ 57

3.4.3 Parallel Scavenge收集器/ 59

3.4.4 Serial Old收集器/ 60

3.4.5 Parallel Old收集器/ 61

3.4.6 CMS收集器/ 61

3.4.7 G1收集器/ 64

3.4.8垃圾收集器参数总结/ 64

3.5内存分配与回收策略/ 65

3.5.1对象优先在Eden分配/ 66

3.5.2大对象直接进入老年代/ 68

3.5.3长期存活的对象将进入老年代/ 69

3.5.4动态对象年龄判定/ 71

3.5.5空间分配担保/ 73

3.6本章小结/ 75

第4章虚拟机性能监控与故障处理工具/ 76

4.1概述/ 76

4.2 JDK的命令行工具/ 76

4.2.1 jps:虚拟机进程状况工具/ 79

4.2.2 jstat:虚拟机统计信息监视工具/ 80

4.2.3 jinfo:Java配置信息工具/ 82

4.2.4 jmap:Java内存映像工具/ 82

4.2.5 jhat:虚拟机堆转储快照分析工具/ 84

4.2.6 jstack:Java堆栈跟踪工具/ 85

4.3 JDK的可视化工具/ 87

4.3.1 JConsole:Java监视与管理控制台/ 88

4.3.2 VisualVM:多合一故障处理工具/ 96

4.4本章小结/ 105

第5章调优案例分析与实战/ 106

5.1概述/ 106

5.2案例分析/ 106

5.2.1高性能硬件上的程序部署策略/ 106

5.2.2集群间同步导致的内存溢出/ 109

5.2.3堆外内存导致的溢出错误/ 110

5.2.4外部命令导致系统缓慢/ 112

5.2.5服务器JVM进程崩溃/ 113

5.3实战:Eclipse运行速度调优/ 114

5.3.1调优前的程序运行状态/ 114

5.3.2升级JDK 1.6的性能变化及兼容问题/ 117

5.3.3编译时间和类加载时间的优化/ 122

5.3.4调整内存设置控制垃圾收集频率/ 126

5.3.5选择收集器降低延迟/ 130

5.4本章小结/ 133

第三部分虚拟机执行子系统

第6章类文件结构/ 136

6.1概述/ 136

6.2无关性的基石/ 136

6.3 Class类文件的结构/ 138

6.3.1魔数与Class文件的版本/ 139

6.3.2常量池/ 141

6.3.3访问标志/ 147

6.3.4类索引、父类索引与接口索引集合/ 148

6.3.5字段表集合/ 149

6.3.6方法表集合/ 153

6.3.7属性表集合/ 155

6.4 Class文件结构的发展/ 168

6.5本章小结/ 170

第7章虚拟机类加载机制/ 171

7.1概述/ 171

7.2类加载的时机/ 172

7.3类加载的过程/ 176

7.3.1加载/ 176

7.3.2验证/ 178

7.3.3准备/ 181

7.3.4解析/ 182

7.3.5初始化/ 186

7.4类加载器/ 189

7.4.1类与类加载器/ 189

7.4.2双亲委派模型/ 191

7.4.3破坏双亲委派模型/ 194

7.5本章小结/ 197

第8章虚拟机字节码执行引擎/ 198

8.1概述/ 198

8.2运行时栈帧结构/ 199

8.2.1局部变量表/ 199

8.2.2操作数栈/ 204

8.2.3动态连接/ 206

8.2.4方法返回地址/ 206

8.2.5附加信息/ 207

8.3方法调用/ 207

8.3.1解析/ 207

8.3.2分派/ 209

8.4基于栈的字节码解释执行引擎/ 221

8.4.1解释执行/ 221

8.4.2基于栈的指令集与基于寄存器的指令集/ 223

8.4.3基于栈的解释器执行过程/ 224

8.5本章小结/ 230

第9章类加载及执行子系统的案例与实战/ 231

9.1概述/ 231

9.2案例分析/ 231

9.2.1 Tomcat:正统的类加载器架构/ 232

9.2.2 OSGi:灵活的类加载器架构/ 235

9.2.3字节码生成技术与动态代理的实现/ 238

9.2.4 Retrotranslator:跨越JDK版本/ 242

9.3实战:自己动手实现远程执行功能/ 246

9.3.1目标/ 246

9.3.2思路/ 247

9.3.3实现/ 248

9.3.4验证/ 255

9.4本章小结/ 256

第四部分程序编译与代码优化

第10章早期(编译期)优化/ 258

10.1概述/ 258

10.2 Javac编译器/ 259

10.2.1 Javac的源码与调试/ 259

10.2.2解析与填充符号表/ 262

10.2.3注解处理器/ 264

10.2.4语义分析与字节码生成/ 264

10.3 Java语法糖的味道/ 268

10.3.1泛型与类型擦除/ 268

10.3.2自动装箱、拆箱与遍历循环/ 273

10.3.3条件编译/ 275

10.4实战:插入式注解处理器/ 276

10.4.1实战目标/ 276

10.4.2代码实现/ 277

10.4.3运行与测试/ 284

10.4.4其他应用案例/ 286

10.5本章小结/ 286

第11章晚期(运行期)优化/ 287

11.1概述/ 287

11.2 HotSpot虚拟机内的即时编译器/ 288

11.2.1解释器与编译器/ 288

11.2.2编译对象与触发条件/ 291

11.2.3编译过程/ 294

11.2.4查看与分析即时编译结果/ 297

11.3编译优化技术/ 301

11.3.1优化技术概览/ 301

11.3.2公共子表达式消除/ 305

11.3.3数组边界检查消除/ 307

11.3.4方法内联/ 307

11.3.5逃逸分析/ 309

11.4 Java与C/C++的编译器对比/ 311

11.5本章小结/ 313

第五部分高效并发

第12章 Java内存模型与线程/ 316

12.1概述/ 316

12.2硬件的效率与一致性/ 317

12.3 Java内存模型/ 318

12.3.1主内存与工作内存/ 319

12.3.2内存间交互操作/ 320

12.3.3对于volatile型变量的特殊规则/ 322

12.3.4对于long和double型变量的特殊规则/ 327

12.3.5原子性、可见性与有序性/ 328

12.3.6先行发生原则/ 330

12.4 Java与线程/ 333

12.4.1线程的实现/ 333

12.4.2 Java线程调度/ 337

12.4.3状态转换/ 339

12.5本章小结/ 341

第13章线程安全与锁优化/ 342

13.1概述/ 342

13.2线程安全/ 343

13.2.1 Java语言中的线程安全/ 343

13.2.2线程安全的实现方法/ 348

13.3锁优化/ 356

13.3.1自旋锁与自适应自旋/ 356

13.3.2锁消除/ 357

13.3.3锁粗化/ 358

13.3.4轻量级锁/ 358

13.3.5偏向锁/ 361

13.4本章小结/ 362

附录A Java虚拟机家族/ 363

附录B虚拟机字节码指令表/ 366

附录C HotSpot虚拟机主要参数表/ 372

附录D对象查询语言(OQL)简介/ 376

附录E JDK历史版本轨迹/ 383

文章分享结束,自己动手写java虚拟机和java游戏模拟器的答案你都知道了吗?欢迎再次光临本站哦!

ai小说创作软件免费(ai小说创作软件免费有哪些)php可视化编程工具?php编程用什么软件