LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1578|回复: 0

关于JAVA语言的特点-----大家一起来讨论一下

[复制链接]
发表于 2006-5-23 14:58:27 | 显示全部楼层 |阅读模式
我在后边的贴子里会详细的讲述JAVA语言的特点,大家耐心点看完。任何不懂的地方,都可以提出,我们一起讨论。全文中一定会出现很多片面性,或者歧义性,或者丫根就是错误的地方,我们找出它,改正。为初学者提供一个JAVA的整体概念。JAVA特点,整个贯穿了java2 白皮书的所有章节。总结好JAVA语言的特点,就可以治理好java2 的骨骼,让初学者能够在学习过程中,事半功倍。谢谢
跪求你们帮助。


JAVA语言的特点主要体现在简单()、面向对象()、分布式()、解释性()、强壮()、安全()、结构中立()、可移植()、高性能()、多线程()、动态()和通用()等。

1.简单性
JAVA语言简单有效,使用者可以很容易地进行程序设计而不需要接受严格的培训。表现在:①JAVA语法格式与C++相似。C++应用很广,大多数程序员都熟悉C++,所以让JAVA程序的外观看起来很像C++的风格,这样大家自然容易接受;②JAVA中去掉了C++中应用不方便以及设计不周全的部分,如指针和内存管理等;③JAVA的程序规模比较小,其基本解释程序和类支持功能只有40k字节左右,很容易在小机器上运行。JAVA的类库提供的基本功能使编程人员能很快速有效的开发应用程序,从而简化开发过程。

2.面向对象
JAVA最著名的特点就是它是真正面向对象的语言。C++是在C的基础上改造成面向对象的。而JAVA从设计开始时就用面向对象技术来设计,它的封装性,继承性,和多态性等都很好。还实现动态联编,使得JAVA具有代码重用性、扩展性和动态应用性等优点。
在JAVA中,面向对象编程的基本元素是对象,它把变量和方法从功能上封装成一个可重用,动态装载的整体。类是对象的集合,同一类的对象有同样的操作方法和性质。一个类建立后,只要增加一些功能就可以产生新类,这就是封装性,继承性等性质的含义。

3.分布式
JAVA语言是很适合分布式应用的。通过类库(class library)提供的方法,JAVA可以方便的适应各种TCP/IP协议(Transfer Controln Protocol/Internet Protocol叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础),如HTTP(超文本传输协议,用于www)和FTP(文件传输协议,用于在internet传送文件)。并可以通过URL (Uniform Resoure Locator:统一资源定位器),存取网络对象。比如你可以让一个JAVA程序同时运行取自两个不同地方的声音文件。

4.解释性
JAVA是解释执行的。但它与BASIC语言的解释不同,BASIC没有编译阶段,语句输入后,一边检查错误一边运行,效率很低。JAVA则是经过编译后,产生字节码(BYTECODE),然后由各种支持JAVA解释器的机器来解释执行字节码。由于JAVA的字节码比较接近汇编指令,所以,可以很快解释为实际机器指令,这种做法比BASIC解释效率高很多。JAVA编译后直接解释运行,比C++少了一个连接阶段, 缩短了开发周期。

5.强壮性
JAVA的强壮性保证代码有好的表现,即稳定可靠的运行。因为JAVA的发明者发现了C++的不稳定之处:C++用指针直接访问存储器位置,而且没有自动内存管理,即使程序员写出句法和语义都正确的程序,也会由于访问内存出错等原因造成系统崩溃,因此,JAVA用消除指针和提供自动内存管理来保证强壮的运行环境。
消除指针后,程序员就不能用指针算法在内存中任意移动,可防止对操作系统内存空间进行误写。另外,JAVA增加了数组边界检查功能,这样一来,程序就不能访问数组没有分配的寻址空间。
JAVA的自动内存管理功能一方面减轻了程序员注意内存情况的费神劳力,另为一方面提高了内存使用效率,同时还防止人为干预内存而造成破坏。
另外,JAVA在编译和运行程序时都对程序进行检查,防止错误隐藏。JAVA的编译检查比C++严格,它有异常(exception)处理机制。在编译时会提示可能出现但未能采取措施处理的异常情况,提醒程序员采取措施。

6.安全性
JAVA是应用于网络或分布式环境下的语言,其安全性是极其重要的。因为JAVA代码可以在网络上发布和传递,若带有病毒,就会危害执行这些代码的所有客户(client)的机器。所以JAVA的设计者充分考虑了安全问题。提供了多到关卡防止病毒的入侵。
从JAVA的强壮性我们知道它取消了指针,并对数组的下标进行检查,这样就防止了非法修改系统内存。另外,对于与系统资源相关的对象,可以用JAVA语言的封装性来保护。这一道关卡我们称之为语言关。它防止从编程上破坏系统。
在网络上传送的JAVA代码是编译后的字节码,它会不会在送过程中受到病毒的感染呢?这点,语言关控制不了了。因此,JAVA的设计者在编译后运行前,增加了一次字节码检验,不管是从那里得到的字节码,在它进入解释器之前,先由字节码检验器检查它的安全性。这一道关,我们称之为字节码关。
到了真正运行的时候,JAVA解释器决定各个类的存储器安排,类是JAVA的基本执行单元。这样的安排,我们不可能了解某个类在内存中的位置,从而非法访问。类装载器(class loader)把从网络上下载的各个类放入各自的存储空间。防止它们访问文件系统。这一道关我们称之为解释关。
所有这些措施,使得JAVA对任何系统都非常安全。完全胜任网络上的应用。

7.结构中立
JAVA的结构中立性是要达到软件界一直追求的一个目标,即平台无关性。这也是当初开发JAVA的原因之一。我们知道,在一台计算机的不同操作系统上开发的应用程序是不同的。有时候,即使是同一种高级语言编写得程序,在不同机器上编译产生的代码也不一样。这就是平台有关性。
JAVA如何做到结构中立呢?就是编译后产生一种与平台无关的字节码,称为JAVA虚拟机的指令代码。这种代码不能直接运行,但可以传送,由网络送到各种不同的计算机上,由该机器上支持的JAVA解释器,也就是JAVA虚拟机的仿真运行程序来执行。真正实现了一机编译,多机执行。这样看来,java的字节码很像一种计算机界的“世界语”,可以在internet上到处传送,然后由各地懂得“世界语”的“翻译”翻成本地语言。让大家听懂。所以,JAVA近乎完美的解决了平台无关性。
JAVA的这种结构中立性不仅对网络十分有用,对软件开发也有很大的意义。

8.可移植性
除了采用虚拟机代码的形式使JAVA语言程序可以在不同机器上运行以外,JAVA语言还采用了其他的措施提高可移植性。
C语言随着机器硬件和操作系统的变化而变化。比如其整数(INT),在不同的机器上位数不同。这些变化,使C语言程序的移植性大为减少。
JAVA语言规定数据类型只有一种标准。不依赖于机器,避免了上述不可移植性。各种类库也规定了可移植界面。如windows类,就能适应unix,windows和MAC环境。
不但JAVA语言编写的应用程序可移植,连JAVA系统本身也具有可移植性。JAVA的编译器,是用JAVA语言实现的。运行系统用标准C实现。它们都有很好的移植性。

9.高性能
由于JAVA语言兼顾了可移植性、安全性、强壮性、结构中立等特点,其代价就是JAVA的性能有可能降低。特别是解释执行字节码的速度,明显比不上C++执行机器码的速度。因此,JAVA的设计者采取了一些技术来保障JAVA的高性能。
其一是内建多线程,提高JAVA程序的性能。下一点会详细解释它。
其二是有效的字节码,编译以后的字节码很接近机器码,可以在任何平台上有效的解释它。
其三是在运行期间将字节码译成当地机器码,不过要花一定的延迟时间才能运行。
其四是连接到本地的C语言代码,这样效率很高,但可能失去移植性。


10.多线程
所谓多线程是指在一个程序中可以同时执行一个以上的线程(thread)。也就是通常所说的并行执行多个任务。
线程与进程(process)相似,也是执行中的程序。但线程数据较少,多个线程共享一组系统资源。系统处理线程的负荷要比处理进程小。
多线程的优点是可以合理调配多个任务。交互式响应性能较好,并有实时特性。比如打印任务很花时间。如果程序是单线程的,那么不打印完就不能做其他事情。采用多线程方法后,一个线程负责打印,另一个线程继续干其他事。就不会浪费时间了。
实现多线程比单线程难,所以,C++都没能实现多线程。JAVA则加入了多线程功能,它完成了其他语言难以事件或实现的不好的数据同步化过程。避免了资源冲突。这是JAVA又一个突出的优点。

11.动态
JAVA的动态性是其面向对象设计的扩展。它提供运行时刻的扩展性,即在后期才建立各模块间的互连。各个库可以自由的增加性的方法和实列变量。 这意味着现有的应用程序可以增加功能,只须链接新类封装所需方法。
C++是多重继承的,若某个超类改变了某个方法或变量,其子类必须重新编译。JAVA则用接口(interface)来实现继承。使用起来比C++的多重继承灵活。
JAVA语言的动态性使它能够胜任分布式系统环境下的应用。位于各地的类可以自由地升级,而不影响原JAVA应用程序的运行。

12.通用
JAVA语言是通用的编程语言,适用多领域,这一点与C++类似。JAVA语言利用应用编程接口API扩充其编程方面的范围。比如图形处理和多媒体API,网络API,数据库接口JDBC. API等,使JAVA可以应用于网络,多媒体,数据库等领域。SUN公司还不断推出新的API系列,进一步扩展JAVA的领域。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表