3. 结构中立并且可以移植
网络上充满了各种不同类型的机器和操作系统,为使java程序能在网络的任何地方运行,java编译器编译生成了与体系结构无关的字节码结构文件格式 。任何种类的计算机,只有在其处理器和操作系统上有java运行时环境,字节码文件就可以在该计算机上运行 。即使是在单一系统的计算机上,结构中立也有非常大的作用 。随着处理器结构的不断发展变化,程序员不得不编写各种版本的程序以在不同的处理器上运行 , 这使得开发出能够在所有平台上工作的软件集合是不可能的 。而使用Java将使同一版本的应用程序可以运行在所有的平台上 。
体系结构的中立也使得java系统具有可移植性 。java运行时系统可以移植到不同的处理器和操作系统上,java的编译器是由java语言实现的 , 解释器是由Java语言和标准C语言实现的,因此可以较为方便的进行移植工作 。
1.2.4 Java语言的特点(2)
4. 高性能
虽然java是解释执行的,但它仍然具有非常高的性能,在一些特定的CPU上,java字节码可以快速的转换成为机器码进行执行 。而且java字节码格式的设计就是针对机器码的转换,实际转换时相当简便,自动的寄存器分配与编译器对字节码的一些优化可使之生成高质量的代码 。随着java虚拟机的改进和"即时编译"(just in time)技术的出现使得Java的执行速度有了更大的提高 。
5. 解释执行、多线程并且是动态的
如果你了解C语言和C++语言,可以参考下列Java与C/C++语言的比较 , 如果不了解C语言和C++语言,可以忽略本部分知识 。
a. 全局变量
Java程序不能定义程序的全局变量 , 而类中的公共、静态变量就相当于这个类的全局变量 。这样就使全局变量封装在类中,保证了安全性,而在C/C++语言中,由于不加封装的全局变量往往会由于使用不当而造成系统的崩溃 。
b. 条件转移指令
C/C++语言中用goto语句实现无条件跳转,而Java语言没有goto语言,通过例外处理语句try、catch、finally来取代之,提高了程序的可读性 , 也增强了程序的鲁棒性 。
c. 指针
指针是C/C++语言中最灵活,但也是最容易出错的数据类型 。用指针进行内存操作往往造成不可预知的错误,而且,通过指针对内存地址进行显示类型转换后,可以类的私有成员,破坏了安全性 。在java中 , 程序员不能进行任何指针操作 , 同时Java中的数组是通过类来实现的,很好的解决了数组越界这一C/C++语言中不做检查的缺点 。
d. 内存管理
在C语言中,程序员使用库函数malloc()和free()来分配和释放内存,C++语言中则是运算符new和delete 。再次释放已经释放的内存块或者释放未被分配的内存块,会造成系统的崩溃,而忘记释放不再使用的内存块也会逐渐耗尽系统资源 。在Java中 , 所有的数据结构都是对象,通过运算符new分配内存并得到对象的使用权 。无用内存回收机制保证了系统资源的完整 , 避免了内存管理不周而引起的系统崩溃 。
e. 数据类型的一致性
在C/C++语言中,不同的平台上,编译器对简单的数据类型如int、float等分别分配不同的字节数 。例如:int在IBM PC上为16位,在VAX-11上就为32位,导致了代码数据的不可移植 。在java中,对数据类型的位数分配总是固定的,而不管是在任何的计算机平台上 。因此就保证了Java数据的平台无关性和可移植性 。
f. 类型转换
在C/C++语言中,可以通过指针进行任意的类型转换 , 不安全因素大大增加 。而在Java语言中系统要对对象的处理进行严格的相容性检查 , 防止不安全的转换 。
推荐阅读
- 笔记本升级硬盘怎么分区,笔记本硬盘升级视频教程
- 鸿蒙升级后卡二不能用了,升级鸿蒙后卡机
- 手机怎么拍照变颜色,手机拍照怎么调拍出好的颜色?
- 数据库查询语句php 数据库查询语句where的用法
- python主要有什么循环,python循环的概念
- 视频号多少粉丝有收入,视频号多少粉丝开播
- 腾讯直播电脑版安装包,腾讯视频直播电脑版
- php与数据库结合例子 php与数据库结合例子有哪些
- postgresql如何列与列字段相加的简单介绍