跨平台/可移植性
Java的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或电子设备上运行,Java虚拟机中的Java解释器负责将字节码解释成为特定的机器码进行运行。
安全性
-
Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。
-
Java提供了自动内存管理机制,由垃圾回收器在后台自动回收
-
Java在字节码的传输过程中使用了公开秘钥加密机制(PKC)
-
在运行环境提供了四级安全性保障机制
-
字节码校验器—类装载器—运行时内存布局—文件访问限制
面向对象
能够实现封装、继承、多态的面向对象思想。为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
简单性 -
不再有#include和#define等预处理功能
-
不再有struct,union及typedef 不再有函数
-
不再有指针
-
不再有多重继承
-
不再有goto
-
不再有操作符重载(Operatior Overlording)
-
不再有全局变量
-
取消自动类型转换,要求强制转换
-
不再有手动内存管理
高性能
例如通过JIT(JUST IN TIME)即时编译技术来提高运行效率
分布式
java能够处理TCP/IP协议,Java支持远程方法调用(RMI),使程序能够通过网络调用方法。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。
多线程
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子类将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
健壮性: -
Java的强制类型机制、异常处理、垃圾的自动收集
-
对指针的丢弃
-
安全检查机制
动态性
Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
参考资料
https://www.bjsxt.com/down/11812.html
https://www.runoob.com/java/java-intro.html