C++中,程序员必须非常 仔细地处理内存的使用问题。一方面,如果对己释放的内存再作释放或者对未曾分配 的内存作释放,都会造成不可预料的后果;而另一方面,如果对长期不用的或不再使 用的内存不释放,则会浪费系统资源,甚至因此造成资源枯竭。 (2) Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变 量来完成全局变量的功能。 (3) Java不用goto语句, 而是用try-catch-finally异常处理语句来代替goto语句处 理出错的功能。Java中有goto保留字,但它没有任何效果,换句话说,我们不能使 用goto来进行跳转到某行。实际上,结构化
程序设计完全不需要goto语句即可完成 各种流程,而goto语句的使用往往会使程序的可读性降低,所以Java不允许goto跳 转,Java中的标签是为循环设计的是为了在多重循环中方便的使用break和coutinue 而设计的。 (4) Java不支持头文件,而C和C++语言中都用头文件来声明类、变量、函数等, 这种采用头文件的结构使得系统的运行维护相当繁杂。 (5) Java不支持宏定义,而是使用关键字final来定义常量,在C/C++中可以用宏 定义来实现常量定义,这可能有害于程序的可维护性。 (6) Java对每种数据类型都分配固定长度。比如,在Java中,int类型总是32位 的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是 int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造
成不可移植性,而Java则具有跨平台性(平台无关性) 。 (7) 类型转换不同。在C和C++中,可通过指针进行几乎任意的类型转换,常常 带来不安全性。而在Java中,运行时系统对对象的处理要进行类型相容性检查,及早 发现转换错误。 (8) 没有结构和联合。在C和C++中,结构和联合的所有成员均为公有,可能造 成安全性问题。而Java中根本就不包含结构和联合,所有的内容都封装在类里面。 (9) Java不再使用指针。 指针是C和C++中最灵活, 也最容易产生错误的数据类型。 由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地 址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性。而Java 对指针进行完全地控制,程序员不能直接进行任何指针操作。 (10)避免运行时平台依赖。Java语言实现的库可以在其它平台的Java应用程序 中使用,而不像通常的C、C++等实现一样,目标代码依赖于特定的硬件体系结构乃 至操作系统等环境。 (11)在开发方面,Java要远远优于C++。[9]
编辑本段相关技术
1.(Java Database Connectivity)提供连接各种关系数据库的统一接口,作 为数据源,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接 口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级 的工具和接口, 使数据库开发人员能够用纯Java API 编写数据库应用程序, 同时, JDBC 也是个商标名。 2.JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于 组件的企业应用。 3.Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一 个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等 的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。 4.Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息 资源。 5.Naming and Directory Interface)提供从Java平台到的统一的无缝的 连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。 6.Management API)为异构网络上系统、网络和服务管理的开发提 供一整套丰富