一、Java的重要特点
1. 面向对象(OOP)
2. 健壮性:强类型机制、异常处理、垃圾的自动收集等
3. 跨平台性:因为有了JVM,一个编译好的.class文件可以在多个系统下运行(Windows、linux、MAC)
4. 解释型语言:Java、JavaScript、PHP,编译后的代码,不能直接被机器执行,需要解释器来执行(.java——>.class);编译型语言:C、C++,编译后的代码, 可以直接被机器执行。
5. 严格区分大小写
6. 一个源文件最多只有一个public类,其他类个数不限。若源文件包含一个public类,则文件名必须按该类名命名。可以将main方法写在非public类中,然后指定运行非public类。
三大组件的关系:JDK包含JRE,而JRE包含JVM。
二、Java核心(开发环境)——JDK(Java Development Kit)-开发者
1. JDK包括Java运行环境JRE,Java工具(javac/java/jdb等)和Java基础类库(即Java API 包括rt.jar)。
2. JDK是java开发工具包,在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境【bin(即JVM)、lib(JVM工作所需要的类库)】
三、Java运行环境——JRE-使用者
JRE:Java运行环境(Java Runtime Environment),包含JVM标准实现及Java核心类库。JRE是Java运行环境,不是一个开发环境,不包含任何开发工具(如编译器和调试器)
四、Java核心机制——Java虚拟机(JVM-java virtual machine)
JVM是java字节码执行的平台,也是java实现跨平台的重要组件,包含解释器。
1.JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK 中
2.对于不同的平台,有不同的虚拟机
3.Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
4. JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar
利用JDK(调用JAVA API)开发JAVA程序后,通过JDK中的编译程序(javac)将文本java文件编译成JAVA字节码class文件,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
5. JVM内存: 主要考虑方法区、栈和堆
以一个数组为例:首先在方法区进行类加载,main方法入栈,声明一个数组,内存指向堆
五、Java运行流程
jdk bin目录下javac
编译乱码问题:文件编码与系统不匹配,java文件编码格式为UTF-8,而windows系统使用GBK编码
总结:
JDK = JRE + java 开发工具 (java, javac,javadoc,javap 等)
JRE = JVM + Java 的核心类库
如果只想运行开发好的 .class 文件 只需要 JRE
参考:韩顺平Java教程