Java基本介绍

Java基本介绍

1、什么是JDK?

	* Java Development Kits
	* Java开发工具箱【Java开发必备】
	* 可以从Oracle的官网上下载。http://www.oracle.com
	* 目前2016-08-30最高版本Java8【Java SE 8u101 / 8u102】
	* 下载JDK的时候需要注意:JDK的版本,不同的操作系统需要安装不同版本的JDK。

2、Java分三大块:1999年

* J2SE【Java的标准版本】:

	基础,无论是以后走EE还是ME,SE是必须要精通的。
	J2SE是SUN公司为java程序员准备的一套“基础类库”,这套基础类库学习之后,可以完成最基本的操作,
	例如,文件的读写、线程的控制....

* J2EE【Java的企业版本】:

	这是SUN公司为程序员专门准备的一套“类库”,这套类库可以协助程序员完成企业级软件的开发
	企业级软件:OA办公系统、进销存系统、超市系统.......

* J2ME【Java的微型版本】
	
	这是SUN公司为java程序员专门准备的另一套“类库”,这套类库可以协助程序员完成微型设备的嵌入式开发,
	Java最初就是做微型设备嵌入式开发的。

3、2005年,java诞生十周年的时候,以上的三大模块改名了:

	* JavaSE
	* JavaEE
	* JavaME

4、关键术语:

	* JDK【Java开发工具箱】

	* JRE【Java的运行时环境】

	* JVM【Java虚拟机】

三者之间的关系:
	JDK 中包含JRE,JRE中包含JVM。
	
	JDK的bin目录下 有 Javac 和 Java 两个命令。  --> 可以编译 Javac xxx.java  和  执行 java xxx
    而JRE的bin目录下只有 Java 一个命令。 		 --> 可以  执行 java xxx
    
    如果需要开发,那就要JDK,如果只是要运行,JRE就可以。

5、Java语言特性:

* 跨平台/可移植 
	- 有一种特殊的机制:JVM
	- Java程序并没有和底层的操作系统直接交互,java程序实际上运行在jvm当中,JVM屏蔽了操作系统之间的差异。
	- 但是有一个前提:不同的操作系统中必须安装不同版本的JVM。
	- 在可移植性方面表现非常好,一次编译,到处运行。
	- 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。【JVM不能单独安装】
	这方面体验不是特别好。

* Java号称:开源、免费、跨平台、纯面向对象。

	- 开源:开发源代码,SUN公司编写的java类库的源代码普通程序员能看到。众人拾柴火焰高。
	这样java程序会很健壮。很少的BUG【漏洞/陷阱】

	- 免费

	- 跨平台:依靠JVM机制【java程序不和操作系统交互,java程序运行在JVM中,JVM和操作系统交互。】
	不同的操作系统有不同版本的JVM。

	- 面向对象:人类在认识现实世界的时候多数是以面向对象的方式认知的。

* 简单性:
	* 这里的简单说的是相对于C语言来说的。
	* 例如:C语言当中有指针,C++中多继承
	* java取消了指针的概念,取消了多继承,只支持单继承。
	.....

* java支持多线程

* java中还有一种特殊的机制:自动垃圾回收机制。GC机制。
	【java运行过程当中有一个“垃圾回收器”一直在守护者。】

....

5、Java环境变量配置

Java文件里有JDK和JRE两个文件。
JDK的bin目录含有 Javac 和 Java 两个命令。

编译和运行时调用 Javac 和 Java 两个命令的条件:

	如果没有设置path的路径,那么必须要在当前目录下,存在Javac 和 Java 两个命令,才可以调用这两个命令。
	
	设置路径: 为了方便,在命令行cmd里使用 Jacac xxx.java 执行编译,可以在path路径里面设置好。
	比如 我先设置 JAVA_HOME = C:\Program Files\Java\jdk1.8.0_101
	然后再Path路径里面设置  Path = %JAVA_HOME%\bin   
	相当于 Path = C:\Program Files\Java\jdk1.8.0_101\bin 这样再命令行中Javac 和 Java  两个命令都能使用了

运行时寻找XXX.class文件的条件: 
	此时调用的是命令 java xxx  

	如果没有环境变量没有定义classpath,那么类装载器首先会去当前目录下,
	寻找是否有xxx.class,如果没有这个字节码文件,那么会有 错误: 找不到或无法加载主类xxx。
	
	如果环境变量定义了classpath = 路径,那么类装载器会去classpath寻找对应的路径,在该路径下寻找是否有xxx.class。
	为了方便,可以 设置 classpath = .;路径   
	在路径前面又添加了一条当前路径,分号是分隔符。
	那么那么类装载器首先会去当前目录下寻找,然后去分号后面的路径下寻找,
	如果没有这个字节码文件,那么会有 错误: 找不到或无法加载主类xxx。

6、Java的加载与执行: 一个完整的程序

在这里插入图片描述

编译: Java源文件 -----编译(Javac)-----> xxx.class 字节码文件

运行: 类装载器 -----装载 xxx.class -----> Java虚拟机JVM -----> 把xxx.class文件解释成1010的二进制数据

​ 操作系统 -----根据二进制数据和底层硬件平台进行交互 ----> 硬件平台

1. Java开发的整个生命周期,包括两个重要的阶段,分别是:编译阶段和运行阶段

2. 编译生成的程序被称为:字节码程序。编译生成的文件是:xxx.class文件

3. 编译和运行可以在不同的操作系统中完成。

4. 程序员在xxx.java文件中编写源代码,源代码必须符合java的语法,这些源代码就是高级语言。
存放源代码的文件被称为源文件。

5. 过程:

	编译期:【在windows环境中完成】
		- 安装JDK,配置环境
		- 在硬盘的某个位置创建一个xxx.java源文件
		- 打开源文件,在该文件当中编写符合java语法的源程序,然后保存。
		- 使用JDK中自带的javac.exe命令对以上的java源程序进行编译。
			* 编译通过:说明语法没有问题
				- 在硬盘上生成一个或者多个字节码文件【xxx.class】
			* 编译失败:说明源程序某个位置不符合java语法格式。
			* 编译的语法格式:打开DOS命令窗口,输入:javac 源文件路径

			注意:
				- 源文件路径可以是绝对路径,也可以是相对路径。
				- 编译之后,其实java源文件删除不会影响程序的执行。
				- 最好不要将java源文件删除,因为程序最终运行效果不是预期效果的时候,需要
				重新修改java源代码,然后进行重新编译生成全新的class字节码文件,再重新运行
				字节码程序。

---------------------------------------------------------------------------

	运行期:【可以不在windows中完成,可以换一个操作系统,但前提是该操作系统中已经安装java的运行时环境】

		- 打开命令窗口,在命令窗口中使用java.exe命令运行java程序,语法格式:
			java 类名

			注意:java这个命令使用的时候,java命令后面不是文件的路径。必须是一个“类名”。
			例如:
				java Hello  
				java Student
				java User
				java Product

		- 以上程序的执行原理:
			* java.exe命令执行会启动:JVM
			* JVM启动之后,马上启动“类加载器-Class Loader”
			* ClassLoader负责去硬盘的“某个位置”上搜索“类名.class”字节码文件。
			* 找不到这个.class文件,一定会出现程序异常现象。
			* 找到了这个.class文件之后将.class文件转换成"二进制",操作系统可以直接识别二进制,
			操作系统执行二进制码和底层的硬件平台进行交互。
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页