一. Java是由Sun公司的James Gosling发明的面向对象的可跨平台的编程语言
1. 什么是平台?
CPU + OS =平台
a. 平台1 — CPU指令集:
指令集,就是cpu中用来计算和控制计算机系统的一套指令的集合,每种 cpu都有其特定的指令集
b.平台2 —操作系统:
操作系统是充当用户和计算机之间交互的界面软件,丌同的操作系统支持丌同 的CPU(CPU指令集)。 三种主流操作系统都支持CISC指令集
c.平台3 —开发平台定义:
开发程序首先应该确定:
1)CPU类型,也就是指令集类型
2)操作系统
我们把这种软硬件的结合叫平台
2.
跨平台1 — C的“跨平台”
.c源程序
1)winNT编译器-------->winNT 程序
2)Liunx编译器 (GCC,ICC)-----编译----->Liunx 程序
3)其他OS编译器---------->其他OS程序
跨平台3 — 不能跨平台的火星
(假设我们将源程序比作火星文则可以有以下的类比方式)
源程序 火星文
1)汉语翻译-------->汉语文章
2)英语翻译-----翻译---->英语文章
3)日语翻译---------->日语文章
跨平台4 — 火星文跨平台
源程序 火星文---编译--->世界语
-------->汉语解释器------->汉语文章
世界语 -------->英语解释器------->英语文章
-------->日语解释器------->日语文章
跨平台5 — 如何跨平台
不能将源程序编译成机器语言,因为那样就与平台相关了,要将其编译为中间语言来实现跨平台操作。
将编译成的中间语言用解释器进行二次编译,解释执行
中间语类似于上述的世界语言,而再由各国解释器将原本由火星文编译而来的中间语翻译成各国能看懂的文章。
跨平台6 — Java跨平台原理
window解释器--->winNT程序
源程序.java---编译(与平台无关的编译器生成与平台无关的中间码)--- liunx解释器--->Liunx程序
(解释器是与平台相关的) mac解释器--->Mac程序
跨平台7 — 比较
C语言是编译执行的
编译器与平台相关
编译生成的可执行文件与平台相关
Java最终是解释执行的
编译器与平台无关
编译生成的中间码与平台无关
中间码由解释器解释执行,解释器与平台相关
一次编译,到处运行
3.
语言执行方式的三种分类
1)编译执行;缺点:无法跨平台 优点:速度快
2)解释执行,html,JavaScript;类似同声传译
3)中间码+虚拟机
4.
JDK1
1)开发Java需要从源文件到中间字节码的编译器
2)运行java需要Java解释器
3)JDK=Java编译器+Java解释器+其它组件
JDK2
JDK = Java Development Kit(下载JDK开发包)
JAVA_HOME JDK安装目录
配置环境变量 CLASSPATH 类路径
PATH 编译工具路径
5.三个概念
JVM(Java Virtual Machine):Java虚拟机,包含:类加载器,字节码效验器,Java解释器
JRE:Java运行时环境,包含JVM不Java运行支持类库
Java SDK:Java Software develop kit,JDK的另一个称呼
6.第一个Java程序
/*
我的第一个Java程序
*/
public class HelloWorld{
public static void main(String[] args){
//输出结果
System.out.println("HelloWorld");
}
}
7.Java语言优缺点
优点:与平台无关 面向对象 高性能 多线程开发 分布式应用 简单 无指针 自动收集内存
缺点: 运行速度慢 占用资源多
缺点原因:1)中间字节码需要二次编译,解释执行
2)JVM占用资源
3)无指针无法直接操作内存
4)垃圾回收线程占用资源,丌能实时收集内存