欢迎来到天天文库
浏览记录
ID:33626506
大小:572.50 KB
页数:8页
时间:2019-02-27
《java语言学习体会》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、JAVA语言学习体会JAVA在编程语言家族中,有如此强大的生命力,是因为借助于JAVA语言,形成了一个JAVA产品线,具备了大量的JFC,乃至基于JAVA的架构,而决不是因为其作为JAVA编程语言本身的特色。JAVA的许多特性是从C++继承来的,这使得JAVA具备了面向对象的特性,由于其利用虚拟机技术,使其实现了平台无关性。因此下面将要论述的两个主题一是语言本身的特点,二是从虚拟机技术出发简单介绍一下JAVA架构。第一个主题从软件发展史开始讲起。纵观软件发展史,我们经历了面向过程->面向对象->面向组件->面向集成的几个时代:这里所说的软件发展史,确切地说应该指的是应用软件,强调
2、的是基于业务,如IBM公司提出的口号是“随需而变,按需计算”。而非系统软件。大家可以看一看WINDOWS源代码泄露后众多程序员读后的感想:C语言还是世界上最好的编程语言,也就是说在系统软件编程领域,C语言的地位和作用是无法取代的。但是C作为一个面向过程的编程语言,在应用软件的编写中,可以实现高度耦合、高效率,通常是针对一个具体的应用实现,因此无法适应快速业务变化,不适合做大型面向客户应用的开发。面向对象:OOP提供了封装、继承、多态和重载等等一系列的特性使应用软件的架构可以被重用,开发人员可以不用关心其具体实现,而是专注于对象能够提供怎样的功能,因此提高了软件重用性,从而使得整个
3、IT的基础架构能够适应需求的快速变化。语言的单一性和源代码级的共享决定了在跨应用系统重用的过程中必定会有各种各样的困难。面向组件:这就是刚才提到的COM的概念。二进制级别的组件共享进一步加速了面向应用实现的步伐,继承了OO的显著的优点,使得IT基础架构能够更加快速适应业务变化,但是平台单一性依然阻碍了其复用程度。面向集成:这是一个完全面向业务的时代,所有的应用都是以业务应用为主题去组织的。在这里提一个观点:任何技术都是在继承的基础上发展的。C++的底层实现离不开C语言。面向过程时流传最广的一句话是“程序=数据结构+算法”,但到面向对象时“类=变量+方法”,从技术角度来看,这里体现
4、的也是一种编程思想的继承。面向集成的思想的本质在于脱离技术细节后,从非技术的思想去看待软件发展的推动,增加其支撑能力。在这里开始讲一下JAVA语言的特点,没有比较就没有鉴别,我想与其它编程语言对比一下,随便找一本JAVA的书都会看到以下几条:简单、面向对象、健壮性(!)、分布性、可移植、解释执行、多线程、动态性、高性能1、简单;体现在继承了C++语法;摒弃了C++中容易引发程序错误的地方,如指针和内存管理(别忘了指针操作是C的特色,容易引发错误是因为使用复杂,但带来的好处却是灵活和处理的功能的增强以及作为编程语言的代码的精炼);丰富的类库。2、面向对象,不必多说;3、健壮性;检测
5、程序在编译和运行时的错误;自已操纵内存(指VM);实现真数组,检测数组越界;关于简单和健壮性的讨论,是不是与程序员的水平也有关联呢,这也是一个需要讨论的问题。当然它能结省了一部分工作量,但这里还存在一个编程语言应用领域的问题,即去用它做什么工作,是否合适。在这里我引用C的鼻组stanleyBLippman的一句话,“JAVAVM也无非就是几万行的C代码而已”。4、分布性、可移植、解释执行;源于其虚拟机技术和中间字节码的实现。这一点其它许多脚本语言都可以实现。比如PERL,Practicalextractionandreportlanguage,脚本语言具有解释执行的特性,只要在不
6、同的系统,如WINDOW、UNIX都有其解释器,只要安装完成后,同样可以实现跨平台。5、多线程C和C++同样能够实现,但JAVA声明了其对多线程技术的实现更简单,更安全。这里也同样存在着编程人员对于技术细节理解和把握的需求程度。因为任何技术都是一柄双刃剑,其运用的合理性要置于其应用的领域中去考察,是否适用。举例:VC和CB的差别。举例用PERL实现的MP3改名。6、动态性和高性能;二者是互相矛盾的。动态性在于程序动态装载运行过程中所需的类,这是因为其中间字节码由VM解释执行带来的特性,这也带来了性能的问题,随着其解释器速度的提高,JAVA也只能说其翻译目标代码的速度与C、C++已
7、很接近。而C++在类中变量或成员函数变化时,必须全重新编译。提到虚拟机,它是用一个解释层屏蔽了硬件细节。这里提到了一个层的概念,因此,在这里我想借用J2EE介绍架构设计方面的内容。一个层就是相关功能的一个一致的集合。在一个严格分层的结构中,第N层仅使用第N-1层提供的服务。这种层次结构的思想的实现有很多,如TCPIP五层结构应用的就是一个典型的分层思想。举例大机-客户端,客户端实质仅仅是一个数据录入和展示界面;二层为C_S,在这里引出前置机的概念;三层结构客户层、应用组件层和数据
此文档下载收益归作者所有