Java语言较之C/C++语言的优越性分析

(整期优先)网络出版时间:2012-06-16
/ 2

Java语言较之C/C++语言的优越性分析

孙海涛

孙海涛(哈尔滨远东理工学院,黑龙江哈尔滨150025)

摘要:Java语言作为一种与底层硬件无关的、“一次编写,到处运行”的高级语言和计算平台。较之于C/C++语言具有更多的优势,现就两者的差异及Java语言的特点和优势进行分析。

关键词:Java语言;C/C++;差异;优越性

1Java语言与C/C++语言的差异

Java采用了C及C++的语法格式,对于用过C及C++的程序设计者来说,学习Java将会很容易。但Java语言较之C/C++还是有一些差异的,Java取消了C及C++的一些特性,加入了一些新的特性。两者差异如下:

1.1去掉了指针(Pointer)的概念。

这是两者在语法上的主要区别之一。指针是C和C++中最灵活,也最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性。Java语言中提供了一种引用(Reference)类型用来替代指针,可以确保访问已申请到的内存空间,同时,程序的执行系统也可以动态地回收被取消引用的内存空间。这种动态的内存分配机制,增加了系统安全性。

1.2去掉了函数(Function)的概念。

Java编程语言中,取消了结构化语言中最重要的部分——函数。在面向对象程序设计的概念里,对象的数据才是真正的主题,而处理对象数据的方法则必须依附在对象内。这强化了面向对象的开发策略。

1.3不再使用structure、union和typedef。

事实上,在C++中就可以去掉C中的structure和union等对复杂数据的自定义结构类型了,因为类(Class)的定义方式完全可以做到这项功能。而typedef的功能也可以由类来实现。虽然C++这样的设计是为了和C兼容,但是这些毕竟是多余的语言特点,在Java语言中便被抛弃了。

1.4取消了类的多重继承(MultipleInheritance)。

在C++中,多重继承是一项很强的功能,但也是较难掌握的。取消多重继承降低了Java语言的功能,但它使Java看起来更为简洁。同时,Java也提供了接口(Interface)的方式,可以实现部分多重继承的作用。和多重继承的不同之处在于接口并不会定义类方法的内容,以及类中的数据。

1.5去掉了操作符重载(OperatorOverloading)。

操作符重载被看作是C++的一个特色。在C++中,利用操作符重载,程序设计者通过对现有运算符赋予自己的定义,可以使程序看起来更为自然。但如使用不当,也会影响整个程序的可读性。另外,这一功能的存在也并非必要,完全可以可以用定义类中的方法来实现。

1.6取消了自动类型转换。

Java是一种强类型检查的编程语言,对于诸如浮点型变量赋值给整型变量这样的情况而言,在C++的语法中是允许的,最多只是在编译时给出警告信息。但是,在Java中,除非写明强制类型转换,否则编译无法通过。

1.7不再有预处理器(preprocessor)功能。

利用C/C++中提供的#define、#include等预处理指令,程序设计高手可以自己开发一套只有自己才看得懂的宏指令集。从软件工程的角度上看,却不利于团队开发软件和整个软件的维护。同时,预编译后的程序代码和最初设计的程序代码是不同的。如果宏指令集有错,编译器产生的错误信息将超出编程人员的预期,大大增加了程序调试的难度。

1.8不使用goto语句。

在C++中保留goto只是为了和C语法兼容。在Java中goto语句被完全抛弃了,用try-catch-finally异常处理语句来代替goto语句处理出错的功能。同时,Java又扩大了break语句和continue语句的功能,通过使用break和continue,程序流程被允许在多层循环中跳转。

总之,Java编程语言是一种简洁而有效的纯面向对象的编程语言。而C++语言因为要与C兼容,所以在面向对象的特性方面不如Java好。

2Java语言的主要特点和优势

Java语言是一种适用于网络编程的语言,它的基本结构与C++非常相似,但却简单得多。它集成了其它一些语言的特点和优势,又避开了它们的不足之处。它的主要特点和优势如下:

2.1简单可靠性。

Java与C++相比,不再支持运算符重载、多级继承及广泛的自动强制等易混淆和较少使用的特性,而增加了内存空间自动垃圾收集的功能,复杂特性的省略和实用功能的增加使得开发变得简单而可靠。另外,Java的系统非常小,其基本解释和类支持部分只占40KB,附加的基本标准库和线程支持也只需增加175KB。因此,Java应用软件能在相当小的系统之上独立工作。

2.2平台独立性。

由于它采用先编译成中间码(字节码),然后装载与校验,再解释成不同的机器码来执行,使得只要能支持Java虚拟机,就可运行各种Java程序。

2.3面向对象的技术。

面向对象(O-O)的技术是近年来软件开发中用得最为普遍的程序设计方法,它通过把客观事物进行分类组合、参数封装、用成员变量来描述对象的性质、状态,而用方法(成员函数)来实现其行为和功能。O-O技术具有继承性、封装性、多态性等众多特点,Java在保留这些优点的基础上,又具有动态联编的特性,更能发挥出面向对象的优势。

2.4多线程。

多线程机制使应用程序能并行执行,Java有一套成熟的同步原语,保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上实时的交互行为。

2.5动态性。

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

2.6安全性。

Java有建立在公共密钥技术基础上的确认技术。指示器语义的改变将使应用程序不能再去访问以前的数据结构或是私有数据,大多数病毒也就无法破坏数据。因而,用Java可以构造出无病毒、安全的系统。除此之外,Java语言还有高性能、分布性、强大性、解释性、可移植性等,此处不再赘述。

由此可见,Java语言较之C/C++语言有很多优势,是一种非常优越的面向对象编程语言。随着Java的不断发展完善,未来Java的影响将是更为深远的。

参考文献

[1]景深.Java编程语言与C/C++编程语言的关系与差异[EB/OL].[2010-06-12].赛迪网.

[2]笪祖勤.Java语言与Java技术[J].电子与金系列工程信息,2000(5).