Java的特点和优点(动力节点整理)

Java的特点

Java语言是一种优秀的编程语言。它最大的优点就是与平台无关,在Windows 9x、Windows NT、Solaris、Linux、MacOS以及其它平台上,都可以使用相同的代码。“一次编写,到处运行”的特点,使其在互联网上广泛采用。

由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是一种比C++语言“还面向对象”的一种编程语言。Java语言的语法结构与C++语言的语法结构十分相似,这使得C++程序员学习Java语言更加容易。

当然,如果仅仅是对C++改头换面,那么就不会有今天的Java热了。Java语言提供的一些有用的新特性,使得使用Java语言比C++语言更容易写出“无错代码”。

这些新特性包括:

1) 提供了对内存的自动管理,程序员无需在程序中进行分配、释放内存,那些可怕的内存分配错误不会再打扰你了;

2) 去除了C++语言中的令人费解、容易出错的“指针”,用其它方法来进行弥补;

3) 避免了赋值语句(如a = 3)与逻辑运算语句(如a = = 3)的混淆;

4) 取消了多重继承这一复杂的设施。

一些说明:

“多重继承”是“面向对象”的术语,我们将会在第2章中详细叙述。这些优点正是Java热的背景,Java凭借其强大的移植能力、多线程处理和连网能力,风靡全球,现在已经逐渐成为手持设备、互联网、车内计算机的一项标准。

一些提示:

Java语言的规范是公开的,你可以在oracle的官网上找到它,阅读Java语言的规范是提高水平的好方法。

Java语言的关键特性

Java语言有许许多多有效的特性,吸引着程序员们,最主要的有以下几个:

1.简洁有效

Java语言是一种相当简洁的“面向对象”程序设计语言。Java语言省略了C++语言中所有的难以理解、容易混淆的特性,例如头文件、指针、结构、单元、运算符重载、虚拟基础类等。它更加严谨、简洁。

注意:

有些熟悉Visual Basic语言的读者会觉得Java语言相对VB而言更复杂,的确使用Java编程是比使用VB更费力一些。但大家一定要知道VB是一种集成化开发工具,其凭借可视化工具成为开发GUI程序的神器,但其并不能算是一种语言。它的基础是Basic语言,这是一种最简单的语言,但其功能不如C、C++、Java这样完整。

Java语言采用了特殊的软件构造方法,可以在很小的机器上独立运行。只要40K就可以容下一个最基本的解释器,即使加上基本标准库和线程支持,也仅需再加上175K就够的。这也是Java语言的一个成功秘诀。

2.高可移植性

对于一个程序员而言,写出来的程序如果不需修改就能够同时在Windows、MacOS、LINUX等平台上运行,简直就是美梦成真的好事!而Java语言就让这个原本遥不可及的事离我们越来越近。使用Java语言编写的程序,只要做较少的修改,甚至有时根本不需修改就可以在不同平台上运行了,Java绝对是跨平台的一门编程语言。

举个例子,不同平台上对数据类型的大小有不同的规定。在有的平台上,整型(int)是用一个16位二进制数表示,而有的平台上则是使用一个32位二进制数表示的。C/C++语言并没有屏蔽掉这个由不同平台造成的不同。这样如果在一个使用16位二进制数表示整型的平台上开发的C语言源程序,要在一个使用32位二进制数表示整型的平台上运行,简直就是噩耗。

而在Java语言中,就屏蔽掉了这种由平台造成的不同。Java中的整型数是一定是由32位二进制表示的,Java虚拟机将这个差别消化了。当我们想将一个使用16位二进制数表示整型的平台上开发的Java语言源程序,移植到一个使用32位二进制数表示整型的平台上运行,就不用修改了。

Java语言具备这种高移植性是一种必然,因为它的设计理念就是“一次编写,到处运行”嘛。

3.“面向对象”

可以这么说,“面向对象”是软件工程学的一次革命,大大提升了人类的软件开发能力,是一个伟大的进步,是软件发展的一个重大的理程碑。

在过去的30年间,“面向对象”有了长足的发展,充分体现了其价值,到现在已经形成了“面向对象的系统分析”、“面向对象的系统设计”、“面向对象的程序设计”一个体系。所以做为一个现代编程语言,是不能够偏离这一方向的,Java语言也不例外。

注意:

Java语言被喻为比C++还“面向对象”的程序设计语言,不理解“面向对象”的思想就难以很好地运用Java语言。

4.解释型

大家还记得Basic语言吗?当我们使用Basic语言进行编程时,得先进入Basic语言环境,然后输入源程序,再运行它,Basic语言环境一句句地解释、运行,直接得出结果。这种语言就是解释型语言。

而象C/C++这样的语言就不是这样的了,我们先使用编辑软件或集成开发环境(IDE)编写源程序,然后对其进行编译,生成可执行文件。然后我们再通过操作系统执行这个可执行文件得到结果。这种语言就是编译型语言。

解释型语言效率低,速度慢;编译型语言效率高,速度快。

Java语言是一种解释型语言。对,没看错,它是一种解释型语言,也就是说,相对于C/C++语言来说,Java语言写出来的程序效率低,执行速度慢。但它正是通过在不同平台上运行Java解释器,对Java代码进行解释,来实现“一次编写,到处运行”的宏伟目标的。为了达到目标,牺牲效率还是值得的,再说,现在的计算机技术日新月异,运算速度也越来越快,用户不会感到太慢的。

一些提示:

其实Java语言并不是象Basic语言那样完全的解释性,它是一种解释型与编译 型的折中。使用Java语言编写程序,首先用编辑软件或集成开发环境(IDE)编写源程序,然后使用Java编译器进行一次伪编译,将其编译成为中间码(也称字节码)。然后再使用Java解释器进行解释。

5.适合分布式计算

Java语言具有强大的、易于使用的连网能力,非常适合开发分布式计算的程序。Java应用程序可以象访问本地文件系统那样通过URL访问远程对象。

使用Java语言编写Socket通信程序十分简单,使用它比使用任何其它语言都简单。而且它还十分适合于开发公共网关接口(CGI)脚本的开发,另外还可以使用Java小应用程序(Applet)、Java服务器页面(Java Server Page,简称JSP)、Servlet等等手段来构建更丰富的网页。

6.拥有较好的性能

正如前面说到,由于Java是一种解释型语言,所以它的执行效率相对就会慢一些,但由于Java语言采用了两种手段,使得其性能还是不错的。

1) Java语言源程序编写完成后,先使用Java伪编译器进行伪编译,将其转换为中间码(也称为字节码),再解释;

2) 提供了一种“准实时”(Just-in-Time,JIT)编译器,在需要更快的速度时,可以使用JIT编译器将字节码转换成机器码,然后将其缓冲下来,这样速度就会更快。

一些提示:

这种JIT编译器,顾名思义,Just-In-Time,仅在运行时才进行,将其编译成为平台相关的机器码(由于现在已经运行了,无需再考虑可移植性)。这样处理后,可以带来10倍甚至20倍的速度提升。而且这个技术正在不断地得到改正,今后JIT编译器将更加智能,能够监测出哪些代码经常执行,从而对其进行适当的优化,进一步加快执行速度。

7.健壮、防患于未然

Java语言在伪编译时,做了许多早期潜在问题的检查,并且在运行时来做了许多相应的检查,可以说是最严格的一种“编译器”。它的这种“防患于未然”的手段将许多程序中的错误扼杀在摇蓝之中。经常有许多在其它语言中必须通过运行才会暴露出来的错误,在编译阶段就被发现了。另外,在Java语言中还提供了许多保证程序稳定、健壮的特性,有效地减少了错误,这样使得Java应用程序更加健壮。

8.具有多线程处理能力

线程,是一种轻量级进程,是现代程序设计中必不可少的一种特性。多线程处理能力使得程序能够具有更好的交互性、实时性。Java在多线程处理方面性能超群,具有让你惊喜的强大功能,而且在Java语言中进行多线程处理很简单。

注意:

要注意的是,各主流平台在线程的实现上千差万别,所以Java语言也暂时无法在这方面做到“与平台无关”,所以Java为不同的操作系统各实现了一套多线程机制。并且对于程序员来说,不同的机器上,调用多线程机制的代码还是相同的。

9.具有较高的安全性

由于Java语言在设计时,在安全性方面考虑很仔细,做了许多探究,使得Java语言成为目前最安全的一种程序设计语言。尽管Sun公司曾经许诺过:“通过Java可以轻松构建出防病毒、防黑客的系统”,但“世界上没有绝对的安全”这一真理是不会因为某人的许诺而失灵验的。就在JDK (Java Development Kit)1.0发布不久后,美国Princeton(普林斯顿)大学的一组安全专家发现了Java 1.0安全特性中的第一例错误。从此,Java安全方面的问题开始被关注。不过至今所发现的安全隐患都很微不足道,而且Java开发组还宣称,他们对系统安全方面的Bugs非常重视,会对这些被发现的进行立即修复。而且由于Sun公司开放了Java解释器的细节,所以有助于通过各界力量,共同发现、防范、制止这些安全隐患。

10.是一种动态语言

Java是一种动态的语言,这表示在以下两个方面:

1) 在Java语言中,可以简单、直观地查询运行时信息;

2) 可以将新代码加入到一个正在运行的程序中去。

11.中性的对象语言

“Java编译器生成的是一种中性的对象文件格式。”也就是说,Java编译器通过伪编译后,将生成一个与任何计算机体系统无关的“中性”的字节码。这种中性结构其实并不是Java首创的,在Java出现之前UCSD Pascal系统就已在一种商业产品中做到这一点,另外在UCSD Pascal之前还有这种方式的先例,那就是Niklaus Wirth实现的Pascal语言中就采用了这种降低一些性能,换取更好的可移植性和通用性的方法。Java的这种字节码经过了许多精心的设计,使得其能够很好地兼容于当今大多数流行的计算机体系统,可以在任何机器上易于解释,易于动态翻译成为机器代码。

以上所述是小编给大家介绍的Java的特点和优点(动力节点整理),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 以实例简介Java中线程池的工作特点

    什么原因使我们不得不使用线程池? 个人认为主要原因是:短时间内需要处理的任务数量很多 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存 以下是Java自带的几种线程池: 1.newFixedThreadPool  创建一个指定工作线程数量的线程池. 每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中. 2.newCachedThreadPool 创建

  • Java数据对象JDO 2.0查询语言的特点

    查询语言的改进是JDO2.0规范中的重要环节,本文从较高的层面阐述JDO2.0所提供的一些新功能.由于JDO2.0规范还未进入公开草案状态,目前还没有任何内容敲定下来,一切都还可能面临变化.不过,JDO2.0将会很快进入最后阶段,而这里提到的查询特性是JDO2.0专家组(译者注:David Jordan就是专家组重要成员)花费时间最多,并且相对来说最为稳定.因此,我有足够理由相信,最终规范与这里的描述将会基本一致. 如果各位读者觉得本文遗漏了某些重要的特性,建议立即到JDO论坛(http://w

  • JAVA实现单例模式的四种方法和一些特点

    一.饿汉式单例类 复制代码 代码如下: public class Singleton  {      private Singleton(){ } private static Singleton instance = new Singleton(); private static Singleton getInstance(){          return instance;      }  } 特点:饿汉式提前实例化,没有懒汉式中多线程问题,但不管我们是不是调用getInstance()

  • Java的特点和优点(动力节点整理)

    Java的特点 Java语言是一种优秀的编程语言.它最大的优点就是与平台无关,在Windows 9x.Windows NT.Solaris.Linux.MacOS以及其它平台上,都可以使用相同的代码."一次编写,到处运行"的特点,使其在互联网上广泛采用. 由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言.可以说,Java语言是一种比C++语言"还面向对象"的一种编程语言.Java语言的语法结构与C++语言的语法结构十分相似,这使得C+

  • Java构造方法实例详解(动力节点java学院整理)

    构造函数是一种特殊的函数.其主要功能是用来在创建对象时初始化对象, 即为v对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.构造函数与类名相同,可重载多个不同的构造函数.在JAVA语言中,构造函数与C++语言中的构造函数相同,JAVA语言中普遍称之为构造方法. 使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回值 5.构造器总是伴随

  • Java BigDecimal详解_动力节点Java学院整理

    1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,例如银行存款数额,这时候BigDecimal就派上大用场啦. 2.BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组

  • Java递归算法详解(动力节点整理)

    递归算法是一种直接或者间接调用自身函数或者方法的算法.Java递归算法是基于Java语言实现的递归算法.递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解.递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解.    递归算法解决问题的特点: 1)递归就是方法里调用自身.  2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口.  3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低.所以一般不提倡用递归算法设计程序.  4)在递

  • Java接口的作用_动力节点Java学院整理

    1. 接口是一种规范 很好,你已经知道接口是一种规范了! 下面这张图是我们生活中遇到的接口:电源插座接口. 2. 为什么需要规范呢? 因为有了接口规范: • 任何电器只有有符合规范的插头,就可以获得电力 • 任何厂家(西门子插座,TCL插座,公牛插座...)按照规范进行制作,就能进行供电 每个厂家插座的生产技术.工艺都不一样,因为接口的implementation可以不一样,但是并不影响电器的正常工作.插座的内部实现对于电器来说是完全屏蔽的. 对于软件开发同样也是类似的: • 按照接口规范进行方

  • Java中StringBuffer和StringBuilder_动力节点Java学院整理

    下面先给大家介绍下String.StringBuffer.StringBuilder区别,具体详情如下所示: StringBuffer.StringBuilder和String一样,也用来代表字符串.String类是不可变类,任何对String的改变都 会引发新的String对象的生成:StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象.既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringB

  • Java数据结构之散列表(动力节点Java学院整理)

    基本概念 散列表(Hash table,也叫哈希表),是根据关键字(key value)而直接进行访问的数据结构. 说的具体点就是它通过吧key值映射到表中的一个位置来访问记录,从而加快查找的速度. 实现key值映射的函数就叫做散列函数 存放记录的数组就就叫做散列表 实现散列表的过程通常就称为散列(hashing),也就是常说的hash 散列 这里的散列的概念不仅限于数据结构了,在计算机科学领域中,散列-哈希是一种对信息的处理方法,通过某种特定的函数/算法(散列函数/hash()方法)将要检索的

  • Java代码注释规范(动力节点整理)

    代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率.也是程序代码可维护性的重要环节之一.所以我们不是为写注释而写注释.下面说一下我们在日常开发中使用的代码注释规范,供大家参考下. 1. 注释形式统一 在整个应用程序中,使用具有一致的标点和结构的样式来构造注释.如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范. 2. 注释内容准确简洁 内容要简单.明了.含义准确,防止注释的多义性,错误的注释不但无益反而有害

  • Java成员变量与局部变量(动力节点Java学院整理)

    成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中,最基本的单位是类,类就是用来体现事物的. 用类class来描述事物也是如此: 属性:对应类中的成员变量    行为:对应类中的成员函数 定义类其实就是在定义类中的成员(成员变量和成员函数) 拓展:类是一个抽象的概念,而对象就是类的具体的存在,体现.例如:生活中的汽车,可以看做一个类,我们称之为汽车类,每一台车都有颜色和轮胎数(可以定义为属性,即成员变量),每一台车

  • Java数组的特性_动力节点Java学院整理

    Java中的数组是对象吗? Java和C++都是面向对象的语言.在使用这些语言的时候,我们可以直接使用标准的类库,也可以使用组合和继承等面向对象的特性构建自己的类,并且根据自己构建的类创建对象.那么,我们是不是应该考虑这样一个问题:在面向对象的语言中,数组是对象吗? 要判断数组是不是对象,那么首先明确什么是对象,也就是对象的定义.在较高的层面上,对象是根据某个类创建出来的一个实例,表示某类事物中一个具体的个体.对象具有各种属性,并且具有一些特定的行为.而在较低的层面上,站在计算机的角度,对象就是

随机推荐