第1章 Java程序设计概述
1.1 Java三大块
Java包含三大块,分别是JavaSE、JavaEE、JavaME,三者关系:
简单概括:Java标准版(JavaSE),主要做一般的Java应用,比如应用软件/QQ之类的通信软件等等。Java企业版(JavaEE),主要做企业应用,比如公司网站,企业解决方案等。Java微型版(JavaME),主要面向嵌入式等设备应用的开发,比如手机游戏等。
1.2 Java语言特性
1.2.1 简单性
Java语言底层采用C++语言实现,相对于C++来说,Java是简单的,在Java语言中程序员不需要再操作复杂的指针,继承方面也是只支持单继承在很多方面进行了简化。
1.2.2 面向对象
它将重点放在数据(即对象)和对象的接口上。用木匠打一个比方:一个“面对对象”的木匠始终首先关注的是所制作的椅子,其次才是所使用的工具;一个“非面对对象”的木匠主要考虑的是所用的工具。Java中提供了封装、继承、多态等面向对象的机制。
1.2.3 分布式
Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。
1.2.4 健壮性
Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。引入了自动垃圾回收机制(GC机制),Java程序启动了一个单独的垃圾回收线程,时刻监测内存使用情况,在特定时机会回收/释放垃圾数据,这样会让内存时刻处于最好的状态。
1.2.5 安全性
代码在一个沙箱环境中执行,这里他不会影响主系统。因为Java代码无论来自哪里,都不能脱离沙箱。
1.2.6 体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。Java的编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅很容易地在任何机器上解释执行,而且还可以动态地转换成本地机器代码。
1.2.7 可移植性
Java语言只需要编写/编译一次,即可处处运行。功劳全在于“Java虚拟机”这种机制,实际上Java程序运行的时候并不是直接运行在操作系统上面的,而是在操作系统上先安装了一个JVM,把Java程序放到了JVM当中运行,JVM屏蔽了各操作系统之间的差异。因此不同操作系统的JVM也都是不同的。
1.2.8 解释型
Java解释器可以在任何移植了解释器的机器上直接执行Java字节码。
1.2.9 高性能
字节码可以(在运行时)动态地转换成对应运行和这个应用的特定CPU的机器码。
1.2.10 多线程
Java是多线程语言,它可以同时执行多个程序,能处理不同任务。
1.2.11 动态性
库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。
1.3 JDK、JRE、JVM
①JDK:是Java语言的软件开发工具包。是每一个Java软件开发人员必须安装的。
②JRE:运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
③JVM:是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能实现的。
1.4 Java的加载与执行
1.4.1 编译
java程序员直接编写的java代码(普通文本)是无法被JVM识别执行的,必须经过一个编译,将这个“普通文本代码”变成“字节码”的过程称为:编译。
java代码这种普通文本被称为:java源代码。(你编写的代码是源代码)源代码不能直接执行,需要先进行编译,生成源代码(.java)对应的“字节码(.class)”,JVM可以识别的是字节码。
1.4.2 加载与执行
①编译期:——javac 命令,负责编译
第一步:在硬盘的某个位置(随意),新建一个xxx.java文件
第二步:使用记事本或者其它文本编辑器打开xxx.java文件
第三步:在xxx.java文件中编写“符合java语法规则的”源代码。
第四步:保存(一定要将xxx.java文件保存一下)
第五步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译。
第六步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,如果xxx.java文件中编写的源代码违背了语法规则,那么编译器会报错,编译器报错之后class文件是不会生成的,只有编译通过了才会生成class字节码文件。并且一个java源文件是可以生成多个class文件的。(编译实质上是检查语法)
②运行期(JRE在起作用):——java 命令,负责运行
第七步:如果是在Linux上运行,需要将windows上生成的class文件拷贝过去不需要拷贝源代码,真正运行的是字节码。(但是源代码也不要删除,方便后续编辑)
第八步:使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码。
第九步:往下的步骤就全部交给JVM了,就不需要程序员干涉了。JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为1010101010……等的二进制)。
第十步:JVM会将生成的二进制码交给OS操作系统,操作系统会执行二进制码和硬件进行交互。