Java语言的特点和实现机制.doc_第1页
Java语言的特点和实现机制.doc_第2页
Java语言的特点和实现机制.doc_第3页
Java语言的特点和实现机制.doc_第4页
Java语言的特点和实现机制.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言的特点和实现机制 Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。下面是的关于Java语言的特点和实现机制,希望大家认真阅读! java语言定义: Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。 Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 组成: Java由四方面组成:Java编程语言,即语法。Java文件格式,即各种文件夹、文件的后缀。Java虚拟机(JVM),即处理*.class文件的解释器。Java应用程序接口(JavaAPI)。 Java分为三个体系,分别为JavaSE(J2SE,Java2PlatformStandardEdition,标准版),JavaEE(J2EE,Java2Platform,EnterpriseEdition,企业版),JavaME(J2ME,Java2PlatformMicroEdition,微型版)。 Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。 优点: 指针:任何一个学过C或者C+的人都知道指针的操作对于他们是很重要的,为什么,指针能够支持内存的直接操作,这样的直接操作能够带来的是效率上的提高.但是任何一个东西都是有副作用的,指针给程序员带了的混乱也是无可比拟的.对于一个不是很强劲的C程序员而言,指针是要命的(对我而言也是,我几乎不会写C代码).而JAVA就为我们省去了这样的麻烦,或者说JAVA完整的限制了对内存的直接操作,让程序员能够安心去搞业务逻辑,而不用管自己后院的那堆内存有没有人来收拾. 垃圾回收:其实垃圾回收也是JAVA对于内存操作的限制之一,也大大解放了程序员的手脚.但是也正是这样的一个内存保姆的存在导致JAVA程序员在内存上几乎没有概念.一个纯粹的JAVA程序员对于内存泄露这样的问题是从来没有概念的,因为他从来不用担心,因为大多数情况下即便他大手大脚也不会有什么问题,这样也就导致了JAVA一个很显见的缺点,我们后面会讲到.这里我说点我想到的东西吧.其实JAVA并没有让程序员完全省心,他代办的事情也仅仅是内存罢了,其他资源的调用和释放都还是需要程序员自己来关心的,比如数据库,比如文件.当然了,我们不能指望什么都吃现成的,总有东西是要自己做的吧. 平台无关性的真正意义在于程序的可移植性高,能够在多个平台平滑迁移。这点就特别适合网络应用。 缺点: 1效率 这样一个问题伴随着JAVA的出身,一直困扰了我们可怜的JAVA宝宝很久,虽然他在自己长大成人以后不断地修炼自己,来改变这个问题.但是先天的就是先天的,哎.让我说你什么好呢. 1.1当然首先就是内存操作限制带来安全的同时带来的副面效果了. 1.2其次呢,就是面对对象的一个很重要的特点所带来的多态,这个东西是娘胎里带出来的,谁也没办法,而且这个因素的“后果很严重”(我等下会讲我们的JAVA小朋友自己跟别人学了一招来解决这个问题)。但是不对啊,C+不也声称自己面对对象的嘛,这个问题他也有,你干吗非说我呢?JAVA的声辩。哈哈,这你就不如人C+圆滑了吧,人家的多态是编译器编译和连接时实现的,可你是运行时实现的,效率问题可见一斑了吧。 JAVA小朋友想了很久,想了一招。我已经不记得他什么时候开始会这招了,但是他真的会,征对一些不会变化的程序,他就让大家可以用预编译来实现。其实这个事情也是C+真正做的。但是这样的一个解决方案就屏蔽了动态创建和连接的能力。这里还需要说明的是,这样的方法一般都运用在变化少而且对性能要求特别高的时候。毕竟如果不是面对大批量的处理和集中请求这样的问题,我们的硬件应该能满足这样的要求。 1。3平台无关性带来的。由于需要平台无关,所以JAVA是不能直接调用OS的API的,JAVA需要调用自己的API来隐式地调用OS的API,大家可想而知这样的效果。多一层调用,必然多一层代码需要加载到栈内了。不过这个问题目前也有解决方案了吧。这个方面我不是很在行,只是看到一些资料而已,接触太少。比如JNI(JavaNativeInterface) 2逆向编译问题 确实是第一次听说这样的问题,天啊,没接触的东西还真的。这里就只能套书上的话了。 由于JAVA程序是动态连接的,从一个类到另外一个类的引用是符号化的。在静态连接的可执行程序中,类之间的只是直接的指针或者偏移量,。相反地,在JAVAclass文件中,指向另一个类的引用通过字符串清楚地标明了所指向的类的名字。如果引用指向一个字段的话,这个字段的名字和描述符会被详细说明。如果引用指向一个成员变量,这个成员变量的名字和描述符(方法的返回类型,方法参数的数量和类型)也会被详细说明。 这有什么关系哦。不过据说这样就能通过逆向编译一下子就把我原来的代码给搞到了。那我写了那么久不是太亏了嘛。这样看来。产权问题咯(呼呼,上升到法律了。西西,我喜欢) 3线程调度问题 关于线程调度,说老实话,我在学操作系统的时候,所有的线程问题都是在linux下用C去做的,原因第一是linux的线程API比较清晰,而且我受不了Windows的那些API的名构造。第2就是因为我觉得Java虽然是一个总进程下的多线程,但是线程间的调度没有非常的清晰,相比较而言,还不如直接调用操作系统的线程支持呢(虽然linux对线程级别支持也不是特别好,但是毕竟不是有包支持的嘛),记得当初的哲学家饥饿问题我最后算是用JAVA调配出结果了,可是到最后我自己都晕了。这些都是我个人的看法,也很可能是一些偏见,至于别人书上专业的解释是:由于为了能够支持多种系统的不同的线程支持策略,JAVA只能采取这样笼统而又松散的线程规范。 其实优点和缺点是相对的,做过比较就知道,其实优点和缺点有时候正是同一个因素带来的.这也需要我们用唯物主义辨证原理来看待(我只是说唯物主义,没有国籍的那种).更多的时候我们需要在我们所需要的东西和我们为此需要付出的代价间作出正确的tradeoff.(操作系统老师最喜欢说的词). 优劣势: java优势,是适合团队开发,软件工程可以相对做到规范,这是一个很难比拟的优势。 java劣势,是j2ee的架构很完美,第一版软件可以做满意,但是很不适合互联网模式的持续不断修改。互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。系统更新需要重启web服务,很难接受。 特点: 语言特点 Java编程语言的风格十分接近C、C+语言。Java是一个纯粹的面向对象的程序设计语言,它继承了C+语言面向对象技术的核心。Java舍弃了C+语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在Java1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。 主要特征 Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 Java语言是面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 Java语言是分布式的。Java语言支持Inter应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论