目录
Java三大体系
- Java SE(Java platform,Standard edition):整个Java技术的核心和基础,允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。
- Java EE(Java platform,Enterprise edition):提供了企业应用开发相关的完整解决方案。
- Java ME(Java platform,Micro edition):主要用于控制移动设备和信息家电等有限存储的设备。
JDK、JRE和JVM
- JDK(Java SE Development Kit),Java标准版开发包,提供了编译、运行java所需的各种工具和资源,包括Java编译器、Java运行时环境以及常用的Java类库等。
- JRE(Java Runtime Environment),Java运行时环境,包括JVM以及运行Java的其他环境支持(类加载器、字节码校验器等)
- JVM(Java Virtual Machine),Java虚拟机,负责解释执行java字节码文件,负责执行指令、管理数据、内存和寄存器,是Java实现跨平台的关键所在。不同平台的JVM向下适应不同平台的接口不同,但向上提供给Java字节码程序的接口完全相同。
- 关系:JDK包括了JRE,JRE又包括了JVM
Java程序运行机制
- 运行过程:Java源文件(.java)经过编译(javac命令)生成字节码文件(.class),再经过java解释器解释(java命令)生成特定平台的机器码来执行。
- 字节码文件:与平台无关,是不可执行的,同一java源文件在不同平台编译生成的字节码文件相同
- 解释执行由JVM来完成,因此不同平台的JVM是不同的
- 结论:Java既不是纯粹的编译型语言,也不是纯粹的解释型语言
解释型语言和编译型语言
编译型语言:
- 定义:使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成可被该平台硬件执行的机器码(机器指令+操作数),并包装成该平台所能识别的可执行性程序的格式。
- 特点:可以脱离开发环境独立运行,但不可移植(因为翻译成的机器码是针对特定平台的,若要移植,需将源代码在目标平台重新编译)
- 编译型语言:C、C++、Objective-C、Pascal等
解释型语言:
- 定义:使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言,相当于把编译型语言中的编译和解释过程混合到一起同时完成
- 特点:每次执行都相当于一次编译,运行效率低,不能脱离解释器独立运行。但跨平台比较容易,只需提供特定平台的解释器即可。其易移植性是以牺牲程序执行效率为代价的。
- 解释型语言:Ruby、Python等
半(伪)编译语言:
- 例如Visual Basic,先编译成P-代码,并将解释引擎封装在可执行程序内,运行时P-代码会被解析成真正的二进制代码
javac命令和java命令
javac命令:用于编译java源代码
- 用法:javac -d destdir srcFile
- 说明:-d destdir用以指定编译生成的字节码文件的存放路径,可缺省(“.”表示存放在当前路径下);srcFile是Java源文件所在的位置
- javac编译生成的字节码文件有默认的文件名:文件名总是以源文件所定义类的类名作为主文件名,以.class作为后缀名。(如果一个源文件中包含多个类,则生成多个字节码文件)
- 例如:javac -d . HelloWorld.java
java命令:运行java程序
- 用法:java Java类名
- 例如:java HelloWorld (此处注意是java Java类名,不是字节码文件名(.class)或Java源文件名(.java))
垃圾回收机制(GC)
Java语言不需要程序员直接控制内存回收,Java程序的内存分配和回收都是由JRE在后台自动进行的,这种机制称为垃圾回收(GC)。
通常JRE会提供一个后台线程来进行检测和控制,一般都是在CPU空闲或内存不足的时候自动进行垃圾回收,程序员无法精确控制回收时间和顺序。
垃圾回收的工作目标是回收无用对象的内存空间,这些内存空间都是JVM堆内存里的内存空间。
无用对象(垃圾):当没有引用变量指向原先分配给某个对象的内存时,该内存便成为垃圾
堆内存:一个运行时数据区,用以保存类的实例(对象),所有的JVM实现都有一个由垃圾回收器管理的堆内存(不同JVM的垃圾回收机制和算法可能不同,也因此垃圾回收具有不可预见性)
垃圾回收也可以清除内存碎片。碎片是分配给对象的内存块之间的空闲内存区,碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。
Java一个基本原则:对于不需要的对象,不要引用它们(以使它所占的内存可以被回收)
Java 7提供了G1垃圾回收器,以代替原有的并行标记/清除垃圾回收器(CMS)
IDE(集成开发环境)
(Integrated Development Environment)用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
Java相关IDE:NetBeans,Eclipse,MyEclipse,idea,IntelliJ IDEA Community Edition,jEdit,JDeveloper等