1. Java语言发展史:
- Java语言诞生于1995年。
- 其实在1995年之前SUN公司(太阳微电子公司:该公司目前被oracle(甲骨文:做数据库的)收购了)为了占领智能电子消费产品市场,派James Gosling领导团队开发了一个oak(橡树)语言。
- 1996年:JDK1.0诞生
什么是JDK? Java开发工具包
- 做Java开发必须安装的一个工具包,该工具包需要从官网下载。
- 目前SUN被oracle收购了,所以下载需要去oracle下载。http://www.oracle.com
目前Java包括三大块:
- JavasE (Java标准版)
- JavaEE (Java企业版)
- JavaME (Java微型版)
- 其中JavaSE是基础,以后主攻方向是JavaEE方向。
2. Java语言特性【开源、免费、纯面向对象、跨平台】
1. 简单性:
- 相对而言的,例如java中不再支持多继承,C++是支持多继承的,多继承比较复杂
- C++中有指针,Java中屏蔽了指针的概念。
- 所以相对来说Java是简单的。
- Java语言底层是c++实现的。不是c语言。
2. 面向对象
- Java是纯面向对象的。更符合的人的思维模式。更容易理解。
3. 可移植性
什么是可移植性?
- java程序可以做到一次编译,到处运行。
- 也就是说java程序可以在windows操作系统上运行,
- 不做任何修改,同样的java程序可以直接放到inux操作系统上运行,这个被称为Java程序的可移植性,或者叫做跨平台。
- windows操作系统内核和Linux操作系统的内核肯定不同,它们这两个操作系统执行指令的方式也是不一样的。
- 结论:显然java程序不能直接和操作系统打交道。因为java程序只有一份。操作系统执行原理都不同。
- SUN的团队他们想了一个办法,他们让java程序运行在一台虚拟的计算机当中,这个虚拟的计算机叫做
Java虚拟机
,简称JVM
。Java虚拟机
再和底层的操作系统打交道。
4. 多线程
5. 健壮性:
- 和自动垃圾回收机制有关,自动垃圾回收机制简称
gc
机制。 - Java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。
6. 安全性
3. Java的加载与执行
Java程序的运行包括两个非常重要的阶段
- 编译阶段
- 运行阶段
1. 编译阶段
- 编译阶段主要的任务是检查Java源程序是否符合Java语法,符合Java语法则能够生成正常的字节码文件(
xxx.class
),不符合Java语法规则则无法生成字节码文件 - 字节码文件中不是纯粹的二进制,这种文件无法在操作系统当中直接执行。
编译阶段的过程:
- 程序员需要在硬盘的某个位置<位置随意>新建一个
.java
扩展名的文件,该文件被称为Java源文件,源文件当中编写的是Java源代码/源程序
。而这个源程序是不能随意编写,必须符合Java语法规则<Java语法规则是需要记忆的>
- Java程序员需要使用
JDK
当中自带的javac.exe
命令进行Java程序的编译。
- 程序员需要在硬盘的某个位置<位置随意>新建一个
javac怎么用呢?在哪用呢?
- javac的使用规则:
javac java源文件的路径
2. 在Dos命令窗口中使用。
javac是一个java编译器工具/命令。
- 一个java源文件可以编译生成多个
.class
文件。 字节码文件/class文件
是最终要执行的文件,所以说class文件
生成之后,java源文件
删除并不会影响java程序
的执行。但是一般java源程序
不要删除,因为class文件
最终执行效果可能不是我们想要的,那么这个时候需要回头再重新修改java源程序
,然后将java源程序
重新编译生成新的class文件
,然后再运行这个class程序
,生成新的效果。- 编译结束之后,可以将
class文件
拷贝到其他操作系统当中运行。【跨平台】
2. 运行阶段【可以在其它操作系统当中,跨平台】
- JDK安装之后,除了自带一个
javac.exe
之外,还有另一个工具/命令,叫做java.exe,
java.exe
命令主要负责运行阶段。
java.exe
在哪里用?怎么用?- 在Dos窗口中使用。
java.exe
怎么用呢? java 类名- 例如:
- 硬盘上有一个
A.class
,那么就这样用:java A
- 硬盘上有一个
B.class
,那么就这样用:java B
- 硬盘上有一个
C.class
,那么就这样用:java C
- 千万要注意:不要写成这样:
java A.class
【这种方式是错误的,大家记住就行】
运行阶段的过程是:
- 打开Dos命令窗口输入:
java A
java.exe
命令会启动Java虚拟机(JVM
),JVM
会启动类加载器classLoader
ClassLoader
会去硬盘上搜索A.class
文件,找到该文件则将该字节码文件装载到JVM
当中。JVM
将A.class
字节码文件解释成二进制1010101010
这样数据。- 然后操作系统执行二进制和底层硬件平台进行交互。
- 打开Dos命令窗口输入: