Java语言的起源
- Java语言诞生于1995年
- 在1995年之前,SUN公司为了占领电子消费产品市场,派James Gosling领导团队开发了一个Oak(橡树)语言(因为开发的办公室门口有一棵橡树)
- 后来因为Oak与一个轮胎公司的商标重复了,才改成了Java(James Gosling当时正在喝咖啡,咖啡的原材料来自印尼的爪哇岛,所以取名Java,图标也是一个冒着热气的咖啡)
- SUN公司后来被Oracle(甲骨文)公司收购了,所以Java现在要去Oracle公司的官网下载:http://www.oracle.com
Java语言的特性
-
简单性
Java语言的底层是C++,其简单性是相对C++而言的
例如C++支持多继承,Java不再支持多继承;C++中有指针的概念,Java中屏蔽了指针的概念
-
面向对象
Java是纯面向对象的,更符合人的思维模式,更容易理解
-
可移植性(跨平台)
Java代码可以做到一次编译,到处运行
由于各操作系统的内核是不同的,执行程序的方式也不同,因此Java代码并不是直接与操作系统进行交互,而是在不同操作系统上装Java虚拟机(JVM),Java代码运行在Java虚拟机上,通过虚拟机与操作系统进行交互
-
多线程
Java语言支持多线程
-
健壮性
C++需要程序员手动释放内存,Java有自动垃圾回收机制(GC机制),可以将程序运行期间产生的垃圾自动回收
-
安全性
Java程序的编译和运行
-
环境配置
- 安装JDK(Java开发工具包),JDK中自带有JRE(Java运行时环境),在JRE中装有JVM(Java虚拟机)
- JDK/bin目录中存放了很多命令,比如javac.exe、java.exe
-
编译阶段
-
程序员新建*.java文件,这个文件是Java源程序文件,在源程序文件当中编写Java源代码
-
程序员使用JDK中自带的javac.exe进行Java程序的编译
- javac.exe即Java编译器,需要在dos命令窗口中使用
- 语法规则为:
javac [Java源程序路径]
-
编译器会检查Java源文件是否符合Java语法,如果没有问题就会编译生成*.class字节码文件
一个*.java源文件可以编译生成多个*.class字节码文件
*.class字节码文件是Java最终要执行的文件,因此此时删除*.java源文件并不影响程序的执行
-
-
运行阶段
- 程序员使用JDK中另一个工具java.exe进行Java程序的运行
- java.exe同样需要在dos命令窗口中使用
- 语法规则为:
java [类名]
(注意是java A
而不是java A.class
)
- java.exe会打开Java虚拟机(JVM),JVM会启动类加载器(ClassLoader),ClassLoader会搜索*.class文件,并将字节码装载到JVM当中,JVM再将字节码解释成二进制指令,操作系统再与底层硬件进行交互执行二进制指令
- 程序员使用JDK中另一个工具java.exe进行Java程序的运行
Java第一个程序
// HelloWorld.java
public class HelloWorld{
public static void main(String args[]){
System.out.println("Hello World");
}
}
-
编译阶段
-
dos命令窗口输入
javac
显示错误:'javac’不是内部或外部命令,也不是可运行的程序或批处理文件这是因为Windows操作系统找不到javac命名的文件,如果切换到bin目录下就可以找到了
但如果每次都要打开bin目录再输入命令就太麻烦了,如何解决这个问题呢?
- windows操作系统是搜索硬盘上某个命令的机制
- 首先会从当前目录下搜索
- 当前目录搜索不到的话,会从环境变量path指定的路径当中搜索某个命令
- 如果都搜索不到,则报上述错误
- 所以要解决这个问题就需要配置环境变量
- windows操作系统是搜索硬盘上某个命令的机制
-
编译
-
相对路径
在源程序所在目录的路径栏输入cmd回车,直接在该目录下打开dos命令窗口
此时就可以用相对路径,直接输入
javac HelloWorld.java
-
绝对路径
在任何位置打开cmd,输入javac后将源程序直接拖到dos命令窗口中,这样会直接生成绝对路径
-
-
-
运行阶段
-
在字节码文件所在目录输入cmd回车,在该目录下打开dos命令窗口
然后再输入
java HelloWorld
,注意一定是类名,而不是文件路径类加载器默认是在当前目录下找*.class文件
如果配置了classpath环境变量,就只会从classpath指定的路径下找,而不会从当前目录下找
classpath是给类加载器指路的环境变量
-