admin 管理员组

文章数量: 887030


2023年12月19日发(作者:sheep的复数形式)

Java语言有什么特点

Java是一种分布式的语言,Sun公司对Java的定义充分地展示了Java的如下特点。欢迎阅读

1. 简单

Java是一种简单的语言。Java是在C、C++的基础上开发的,继承了C和C++的许多特性,但同时也取消其他许多编程语言中繁琐的、难以理解的、不安全的内容,如指针、多重继承等。JDK还提供了丰富的基础类库,具有C或C++编程经验的程序员都会很熟悉,无需经过长时间训练即可掌握它。

2. 面向对象

Java是一种纯面向对象的语言。Java程序的设计思路不同于C语言基于过程的程序设计思路,而是采用面向对象的思想。面向对象程序设计,具备更好的模拟现实世界环境的能力和可重用性,将待解决的现实问题概念化成一组分离的程序对象,这些对象彼此之间可以进行交互。一个对象包含了对应实体应有的信息和访问、改变这些信息的方法。通过这种设计方式,使所设计出来的程序更易于改进、扩展、维护和重用。Java语言提供类、接口和继承等原语。为了简单起见,Java只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口间的实现机制,关键字为implements。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。

3. 分布式

Java是一种分布式的语言。传统的基于C/S(客户端/服务器)架构的程序,均采用客户端向服务器提出服务请求,服务器再根据要求执行适当的程序并将结果返回,所以服务器负荷较重。Java采用Java虚拟机架构,可将许多工作直接交由终端处理,数据因此也可以分布式处理。此外,Java类库的运用,大大减轻了网络传输的负荷;Java类库包含了支持HTTP和FTP 等基于TCP/IP协议的子库,Java应用程序可凭借URL地址打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。网络环境是Java大显身手和进一步发展的地方。

4. 高效解释执行

Java是高效解释执行的语言。高级语言程序必须转换为机器语言程序才能执行,但不同的计算机系统所使用的机器语言不同。Java为了实现“一次编译,随处运行”的目标,Java 的源程序在编译时,并不直接编译成特定的机器语言程序,而是编译成与系统无关的“字节码(Byte codes)”,由Java 虚拟机(Java Virtual Machine,JVM )来执行,如图1-3所示。JVM使得Java程序可以

“一次编译,随处运行”。任何系统只有安装了Java虚拟机后,才可以执行Java

程序。

JVM能直接在任何机器上执行,为字节码提供运行环境。当JVM解释执行Java程序时,Java 实时编译器(Just-In-Time,JIT)会将字节码译成目标平台对应的机器语言的指令代码。

早先的许多尝试解决跨平台的方案对性能要求都很高。其他解释执行的语言系统,如BASIC、TCL、PERL 都有无法克服的性能缺陷。然而,Java 却可以在非常低档的'CPU上顺畅运行,这是因为Java字节码是经过精心设计的,能够直接使用JIT编译技术将字节码转换成高性能的本机代码。事实上,Java的运行速度随着JIT编译器技术的发展已接近于C++。因而“高效且跨平台”对Java 来说已不再矛盾。

5. 健壮

Java是健壮的语言。为了更好地理解Java的健壮性,先讨论一下在传统编程环境下程序设计失败的主要原因:内存管理错误和误操作引起的异常或运行时异常。

在传统的编程环境下,内存管理是一项困难、乏味的工作。例如,在C或C++ 中,必须手工分配、释放所有的动态内存。如果忘记释放原来分配的内存,或是释放了其他程序正在使用的内存时,就会出错。在传统的编程环境下,异常情况可能经常由“被零除”、“Null指针操作”、“文件未找到”等原因引起,必须用既繁琐又难理解的一大堆指令来进行管理。

对此,Java 通过自行管理内存分配和释放,从根本上消除了有关内存的问题。Java提供垃圾收集器,可自动收集闲置对象占用的内存。通过提供面向对象的异常处理机制来解决异常处理的问题。通过类型检查、Null指针检测、数组边界检测等方法,在开发早期发现程序错误。

6. 安全

Java是安全的网络编程语言。Java常被用于网络环境中,为此,Java提供了一系列的安全机制以防恶意代码攻击,确保系统安全。Java的安全机制分为多级,包括Java 语言本身的安全性设计以及严格的编译检查、运行检查和网络接口级的安全检查。

Java语言是强类型语言,而且每种类型都要求严格定义。首先,每个变量、表达式都有类型。其次,所有的数值传递,不管是直接的、还是通过方法调用经由参数传递,都要进行类型相容性检查。有些语言没有自动进行数据类型相容性检查或对冲突的类型进行转换的机制;Java编译器对所有的表达式和参数都要进行类型相容性的检查以确保类型是兼容的。任何类型的不匹配都是错误的,在编译完

成之前,错误必须全部被纠正。此外,Java 摒弃指针类型和数据类型的隐式转换,从而对内存访问进行了严格的限制。在编译期间,Java 编译器并不分配内存,而是推迟到运行时由解释器决定,这样编程人员就无法通过指针来非法访问内存。在运行期间,Java的运行环境提供了四级安全保障机制:字节码校验器、类装载器、运行时内存布局和文件的访问限制。在网络接口级,用户可按自己的需要来设置网络访问权限。

另外,Java的未来版本将采用公开密钥法以及其他加密技术,来核实从网络上传输过来的代码的源主机及该代码的完整性。

7. 结构中立

Java是结构中立的语言。Java的设计目标是要支持网络应用程序。一般而言,网络是由许多不同的系统构成,包括各种CPU与操作系统结构。为了让Java应用程序能够在网络上任何地方执行,其编译器会产生一种具备结构中立性的对象文件格式即Java字节码文件。Java字节码可在任何安装了Java虚拟机的平台上运行。

8. 可移植

Java开发的程序是可移植的。结构中立是确保程序可移植的必要条件,此外还需很多其他条件的配合。Java 在可移植性方面做了许多工作。Java语言规范中也没有任何“同具体实现相关”的内容,解决了所有可能会影响到Java可移植性方面的问题。如在Windows 3.1中整数(Integer)为16位,在Windows 95中整数为32位,在DEC Alpha中整数为64位,在Intel 486中为32位,不同的操作系统和CPU对数据类型及长度都作了不同的定义,给程序的可移植性带来了一定的难度。Java通过定义独立于平台的基本数据类型及其运算,使Java数据得以在任何硬件平台上保持一致。事实上,几乎目前使用的所有CPU都能支持以上数据类型,都支持8~64位整数格式的补码运算和单/双精度浮点运算。Java语言的基本数据类型及其表示方式如表1-1所示。

9. 高效率

Java是高效率的语言。每一次的版本更新,Java在性能上均做出了改进。在历经数个版本变更后,Java号称可以与C/C++拥有同样甚至更好的运行性能。如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令,来用JVM一秒钟内可调用 300 000个过程,与C/C++不相上下。

10. 多线程

Java是支持多线程的语言。多线程是一种应用程序设计方法。线程是一大进程里分出来的,小的、独立的进程,使得在一个程序里可同时执行多个小任务。多线程带来的好处是具有更好的交互性能和实时控制性能。但采用传统的程序

设计语言(如:C/C++)实现多线程程序并非易事。Java实现了多线程技术,提供了简便的实现多线程的方法,并拥有一组高复杂性的同步机制。

11. 动态

Java 语言具有动态特性。Java 动态特性是其面向对象设计方法的扩展,允许程序动态地装入运行过程中所需的类,这是 C++ 进行面向对象程序设计所无法实现的。C++ 程序设计过程中,每当在类中增加一个实例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java采取如下措施来解决此类问题。

(1)Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存后传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数据偏移量。存储器生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定。这样,对类中变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可以全速执行。

(2)在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。

(3)Java还简化了使用一个升级的或全新的协议的方法。如果系统运行

Java 程序时遇到了不知怎样处理的程序,没关系, Java 能自动下载你所需要的功能程序。

Java是一种比C/C++更具动态特性的语言。在设计上强调为运行中的运算环境提供支持。Java是在运行时为模块与模块之间建立连接,并能够更直接地运用面向对象设计体系。程序库可以自由地增加新方法和实例变量,而不会对它们的客户产生任何影响。


本文标签: 程序 语言 运行 内存 进行