Java基础概念
java简介
Java分为三个体系/版本
-
JavaSE
称为Java标准版,包含Java基础类库和语法。它主要用于开发图形用户界面(GUI)、复杂逻辑和高性能的桌面应用程序。
Java SE分为四个组成部分:
JVM将Java编译好的文件翻译成对应的机器语言,
JRE包含用于Java运行的环境,
JDK包含用于Java开发的工具,
Java语言则是定义Java开发的语法规则。
-
JavaEE(J2EE)
称为Java企业版,是以Java SE为基础,定义了一系列的服务,API,协议等,增加了编写企业级应用程序的类库。它是一个标准的多层体系结构,主要用于开发和部署分布式、基于组件、安全可靠、可伸缩和易于管理的企业级应用程序。
-
JavaME
称为Java微型版,主要用于开发消费性电子产品或嵌入式系统中的应用程序,开发具有有限的连接、内存和用户界面能力的设备应用程序。如移动设备(手机)、PDA、能够接入电缆服务的机顶盒,以及各种终端和其他消费电子产品。
JDK,JRE,JVM的区别和联系
-
JDK
整个Java的核心 包含运行环境(JRE),一堆Java工具(Javac/Java/jdb)和Java基础类库
javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。
-
JRE
Java运行环境 包含JVM和JVM工作所需要类库
-
JVM
Java虚拟机 拥有rt.jar(Java源码编译成的jar包)
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java跨平台性的原因。
JVM可以理解的代码叫做字节码(.class文件),它不面向任何特定的处理器,只面向虚拟机
.class->机器码,在这一步JVM类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对较慢。而且,有些方法和代码块时经常需要被调用的,所以后面引进了JIT编译器,而JIT属于运行时编译。当JIT编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而机器码的运行效率肯定是高于Java解释器的,这也解释了Java为什么是编译与解释共存的语言。
总结:
JDK=JRE(JVM+JVM解释字节码文件的类库)+Java工具(编译器、调试器、应用程序启动器),java基础类库
JDK中的Javac将.java文件编译成.class文件 JRE中的JVM和其所需类库将.class文件解释成机器语言
Java语言的特点
面向对象
面向对象是指以对象为基本单元,包含属性和方法。对象的状态用属性表达,对象的行为用方法表达。
- 封装(安全性)
- 继承(重用)
- 多态(扩展)
跨平台
由JVM的特点决定的——JVM能够将字节码文件解释成各个平台机器都能理解的机器语言,所以只要有Java运行环境(JRE),Java就能在任何平台部署运行
PS:JSP部署Web程序,也需要安装jdk,因为应用程序服务器会将JSP转换为Java servlet,并且需要使用JDK来编译servlet.
简单性
Java由C和C++演变而来,取其精华去其糟粕并提供了丰富的类库和API文档。
编译和解释并存
Java由JDK编译成字节码文件,又由JVM解释成机器语言
Java语言“编译和解释并存”
高级编程语言按照程序的执行方式分为编译型和解释型两种。
编译型语言:是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码。
解释性语言:是指解释器对源程序逐行解释成特定平台的机器码并立即执行。
Java程序先是通过解释器进行解释执行的,当JVM发现某个方法或代码块运行的特别频繁时,会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(JIT编译器,不是Java虚拟机内必须的部分)。
当程序需要快速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,编译器逐渐发挥作用,越来越多的代码被编译成本地代码,可以获取更好的执行效率。
多线程
Java支持多线程,并提供线程同步机制
安全性
-
机制方面
-
Java取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。
-
垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。
-
异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。
-
强制类型转换:只有在满足强制转换规则的情况下才能强转成功。
-
-
底层方面
-
Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。
-
在运行环境提供了四级安全性保障机制:
字节码校验器 -类装载器 -运行时内存布局 -文件访问限制
-
分布式
Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手 段。
高性能
Java语言的性能介于解释型语言和编译型语言之间,随着JVM中JIT编译器技术(运行中编译)的发展性能越来越高