一、概述
- Java是一种编程语言,目前Android的Framework层也是主要由Java编写的
- Android系统是目前世界上市场占有率最高的移动操作系统,由于历史原因,Android使用Java来开发APP,当然现在也可以用Kotlin来开发
- Java被编译成字节码后,由Java虚拟机执行。类似的,Kotlin也可被编译为字节码
二、JAVA语言特点
1.简单
语法与C、C++很接近,从某种意义上讲,它是由C和C++演变而来,易学习和使用。
- 对C++来说进行了简化和一定的提高,如:使用接口代替了复杂的多重继承以及取消了指针,还通过实现垃圾自动回收机制,大大简化了程序员的资源释放管理工作;
- 提供了丰富的类库和API(Application Programming Interface,应用程序编程接口)文档,以及第三方开发包工具包,还有大量的基于Java的开源项目,帮助程序设计人员参考学习;
- JDK(Java Development ToolKit,Java 开发工具包)是开放的源代码之一,可以通过分析项目的源代码,来提高自己的编程水平;
2.面向对象
面向对象是Java语言的基础,也是Java语言的重要特性。
面向对象:一种程序设计技术。
- 重点在数据(即对象)和对象的接口(功能)
- 以对象为基本单元,包含属性(对象的状态)和方法(对象的行为)
3.分布式
主要是操作分布和数据分布
- 操作分布:在多个不同的主机上布置相关操作
- 数据分布:将数据分别存放在多个网络中不同的主机上,借助的是URL(Uniform Resource Locator,统一资源定位符)访问网络对象,访问方式和访问本地系统相似。
- Java语言具有一个强大的,易于使用的网络能力,这是非常适合于分布式计算程序的。
- Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。
- Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4.多线程(交互性、实时性)
多线程机制使应用程序在同一时间并行执行多项任务,很好的保证了不同线程,能够正确的共享数据。
5.高性能
Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
6.跨平台
Java自带的虚拟机很好地实现了跨平台性。Java源代码经过编译后生成二进制的字节码是与平台无关的,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够Write once, run anywhere(一次编译,到处运行)的原因。Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。
跨平台性:是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。
这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。
7.可移植
可移植性来源于跨平台性性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
8.安全
在Java语言中删除了类似于C语言中的指针和内容释放等语法,有效的避免了非法操作内存,代码要经过校验之后才能够运行,所以未经允许的Java程序不可能出现损害系统平台的行为,最大的好处就是,Java可以编写防病毒和可修复的系统,Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击,从而可以提高系统的安全性。
9.健壮
Java语言的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
10.动态
Java语言设计目标之一:适应于动态变化的环境。
Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类,这也有利于软件的升级。Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。