由于之前,阅读过两次,因此打算这次两天读完,之后学习框架,因为真的菜到爆!
第一章有如下点加强理解
1.编译型语言和解释性语言
编译型:高级代码---先针对特定的平台编译---编译成该平台可执行的二进制---直接运行
【缺点:需针对特定平台编译,每种平台都需要编译,被编译成特定平台的机器码,可移植性低,脱离编译器,快】
解释性:高级代码---边解释边运行
【缺点:不能脱离解释器,跨平台(解释器是跨平台的),慢,这也是为什么java开发的软件都有jre的原因了】
java先编译在解释
java----先javac编译class字节码文件-----边解释java边运行,(class字节码可运行在jvm虚拟机上,因此实现跨平台)
所以说语言跨平台很容易:解释性语言+解释器,由虚拟机的垃圾回收线程进行垃圾回收,
所以所,每一种跨平台语言呢,他的解释器-----虚拟机值得深度思考,因为虚拟机具有真实操作系统的特性,
虚拟机相当于一个转换器,他对上连接高级程序,对下连接真实操作系统
jvm:指令集+寄存器+栈+垃圾回收堆+存储区,
2.jdk jre
jdk:java .class+javac .java
jre:虚拟机+类库api
3java se ee me
se:是ee me的基础,----jdk
ee:企业级应用-----服务器------sdk(包含jdk)
me:桌面,android移动应用---客户端
4系统变量+用户变量
针对所有用户+针对特定用户
linux/ewindows都有环境变量,所谓的环境变量其实都是为了操作系统方便的
path环境变量:定位命令路径,方便jvm找到java/javac命令
class环境变量:定位类的路径,方便jvm搜索类
5java程序的组织形式:类
java的解释器规定:如果某个类能被解释器直接解释执行,则这个类中必须包含main方法,而且main方法必须使用public static void修饰,且main方法的形参必须是字符串数组类型,java虚拟机从main方法开始解释执行 ,其他类都用于被main方法直接或间接调用
6类文件如何命名
public修饰的 类=文件名
7java垃圾回收
由jvm虚拟机分线程gc进行回收,jvm本身是虚拟机,但其具备指令集+寄存器+栈+垃圾回收堆+存储区,有因此需要管理其内存
jvm的垃圾回收线程只负责jvm存储区的堆内存的回收,想想真实机器一定存在后台线程对真实内存进行整理
jvm的垃圾回收线程一般在jvm存储区堆内存吃紧的时候执行,或者cpu空闲的时候,回收线程才有可能执行