自己动手写java虚拟机,java游戏模拟器
大家好,感谢邀请,今天来为大家分享一下自己动手写java虚拟机的问题,以及和java游戏模拟器的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
我将要学java,怎么安装虚拟机
上www.sun.com下载jdk(其中已经包含java虚拟机)
执行j2sdk安装程序,自定义路径,我们的安装路径为:C:\j2sdk1.4.2_04
配置j2sdk:
配置环境变量:
我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
JAVA_HOME=C:\j2sdk1.4.2_04
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
{
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游戏模拟器的答案你都知道了吗?欢迎再次光临本站哦!