Sun公司对Java特点的描述为:
简单、面向对象、可移植性、高性能、分布式、动态特性、健壮性和安全性
“捡 对(儿) 高职 高分 太安”
下面具体来解释
-
简单
Java系统所占空间很小,语言风格类似C++ -
面向对象
纯面向对象,不支持面向过程 任何实体都可以看成对象 程序是对象的集合;
对象是有类型的(class)
对象中封装了属性和行为,实现了模块化
类提供了一类对象的原型,并且可以实现继承 -
可移植
可移植是指不经过修改就能在不同的硬件或软件平台上运行。 可移植性分为两个层次:源代码的可移植性和二进制代码的可移植性。C C++只能进行源代码级别上的可移植,需要在不同的平台上进行编译。 但Java的二进制字节码文件也是可以移植的。
Java主要用两种机制俩保证可移植性。
一是,Java既是编译型的,又是解释型的。Java语言与传统语言的不同运行机制是,传统语言是编译后得到目标代码是为某个特定的操作系统生成的,所以不能移植;而Java的源程序经过编译得到字节码文件,在Java的虚拟机JVM上运行。JVM在任何平台上都提供给Java程序共同的接口。
二是,Java采用IEEE的标准的数据类型,数据类型在任何机器上都是一致的,而且规定同一种数据类型在所有实现中都必须占据相同的空间,而C++的数据类型往往与操作系统有关。
此外,Java的可移植性还体现在Java的运行环境上。Java编译器本身就是用Java写的。 -
高性能
Java采取了一些措施来弥补解释性语言的性能差距,包括:
(1) 高效的字节码 字节码格式很简单,很容易得到机器代码 字节码的执行效率就已经非常高了
(2)多线程。 C C++不支持多线程,但是Java完全支持多线程。体现在两个方面,首先,Java环境本身就是多线程的,可以利用系统的空闲时间进行垃圾回收等;其次,Java提供了对多线程的语言级支持,提供多线程编程接口。
(3) 及时编译 以及嵌入C代码 及时编译是指在运行时把字节码编译成机器码;嵌入C代码效率自然是高的,但是开发复杂度增加 -
分布式
分布式的概念体现在数据分布和操作分布两个方面。数据分布指数据可以分散存放于网络上不同的主机上;操作分布则是把计算分散到不同的主机上进行。
Java是面向网络的,可以容易的处理TCP、IP协议。对于操作分布,Java的client/server模式可以把计算从服务端分布到客户端。 -
动态特性
“滞后联编”也就是动态链接。每个类编译后都分别对应着一个字节码文件。一个字节码系统由若干字节码文件组成,运行时,字节码文件按程序运行的需要动态加载。因此,一个类修改后只需要重新编译这一个类就可以了 -
健壮性和安全性
Java提供了一系列安全检查机制。
(1)去掉了C++中的很多概念:
不支持由小的类型隐式转化为大的类型,除非明确指出;比如,不能默认由long转化为Int;
不支持指针类型;
数组下标越界会检查;
有完善的异常处理机制;
内存自动垃圾收集。
(2)编译检查。编译时检查表达式和参数类型的相容性;也会指出可能出现的异常
(3)运行检查。 字节码进入解释器时,会再次检查字节码,防止正确的字节码在解释执行前遭到改动; Java解释器决定程序中类的内存布局,其他人无法预知类的布局;文件访问有限制;网络接口级可以设置网络访问权限。