jdk版本选择:
1.6版本:老软件
1.8版本:稳定
最新版本:极客
1. 历史
sun公司开发开发到1.6被收购,同时拥有Hotspot虚拟机即目前java所用
里程碑:
-
1.2版本加入三版本
-
1.5加入自动装箱,泛型等
-
1.6版本被oracle收购
2.三个平台
三平台的更新与java的更新区分
-
J2SE 面向桌面应用开发
-
J2EE 面向企业级开发
-
J2ME 面向手机移动终端开发
3.JDK
sdk 、jdk(java development kit):开发工具包
jdk自带JRE
JRE:Java运行坏境,面向用户
API:编程接口,说明文档之类
3.1 环境变量
- JAVA_HOME:指定jdk安装目录
- PATH:使得系统可以在任何路径下识别java命令
- CLASSPATH:java加载类路径,即指定将来要运行加载的class文件的位置
3.2 目录结构说明
JDK结构:
JDK目录:
4. java特点
即是语言、开发坏境、运行坏境、部署坏境
优点:面向对象、唯一特点:跨平台、多线程、开源
字节码验证:
- 检查当前class文件的版本和JVM的版本是否兼容
- 检查当前代码是会破坏系统的完整性
- 检查当前代码是否有栈溢出的情况
- 检查当前代码中的参数类型是否正确
- 检查当前代码中的类型转换操作是否正确
5.JVM
- JVM是java中最核心的一个东西,它在计算机的内存中,虚拟并提供了java代码可以在其中运行的基础环境。jvm即java虚拟机,它主要有一个功能就是将编译好的class文件进行解释执行,因为class文件不能由操作系统直接执行,需要有jvm解释方可执行。
- jre是指java运行时环境,class文件在运行时需要调用各种java的类库,即jvm要想运行class文件必须要依赖jre中的lib库,可以认为,jvm+lib组成jre。
6. 垃圾回收器
对内存的释放,在JVM中,由垃圾回收器(Garbage Collection,GC)来完成。 不同类型的GC,在JVM中,会根据不同的算法,对不同的内存区域内标记为垃圾的空间,进行回收释 放。在这个过程中,是不需要编程人员干预的,它自己会主动的完成。
在代码中,我们也可以调用JavaSE-API提供的方法,通知GC现在去进行垃圾回收的工作:
java.lang.System.gc();
java.lang.Runtime.gc();
注意,虽然可以主动通知,但是最后GC并不一定会真的的立刻执行,因为这个垃圾回收的过程什么时候执行,最终还是要根据GC的具体算法和当前内存的使用情况来确定的 。