简单性

  • Java语法在设计的时候尽可能接近C++,但是舍弃了一些难以理解和比较少使用的特性,是C++的纯净版,比较容易学习
  • 简单的另一个方面是小,Java的目标之一是支持开发能够在小型机器上独立运行的软件,比如有一个Java微型版,比较适合嵌入式

面对对象

面向过程

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
  • 缺点:没有面向对象易维护、易复用、易扩展
  • 举例子:比如洗衣服,面向过程的步骤应该是:将洗衣服这件事拆分为一个个过程:我打开洗衣机+我放衣服+清洗+烘干

面向对象

何为面对对象,类是对万物的一种高度抽象,不同是事务之间存在着不同的关系,应用在类上。如一个类与外界的封装关系,父类和子类之间的继承关系,一个类和多个类的多态关系,在Java开发中,万物皆对象,将世界的一切行为都概括为对象+行为+对象,而面对对象的三大特征就是封装+多态+继承

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
  • 缺点:性能比面向过程低
  • 面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。
  • 面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。
  • 如果是面对的对象的洗衣服,会将过程拆分为不同对象的行为 :我:打开洗衣机,放入衣服 洗衣机:洗衣服,烘干,这样更易于复用,扩展,维护,比如不是我衣服,变成别人,换个对象就行,不需要换洗衣机
  • 在与C++主要的不同点是在于多重继承,在Java中用接口这种更简单的概念取代

分布式

  • Java有丰富的例程库,java.lang.net包,用于处理像HTTP和FTP之类的TCP/IP协议,用来网络编程

健壮性

  • Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。
  • 而且Java与C++相比,采用的指针模型可以消除充血内存和损坏数据的可能性,对于Java程序员,是不知道我们数据的内存地址的

安全性

  • Java要适用于网络/分布式环境,为了实现这个目标,所以安全性是很重要的
  • 常用理解
    • 垃圾回收机制,不会容易让我们的程序发生内存泄漏的问题
    • 异常处理机制,如果我们的程序出现了异常,程序员可以让程序停止运行
    • Java没有指针这种操作,也就是说人是不知道数据的内存,也存在修改内存和毁坏内存的可能
    • 强制类型转换 只有满足强制转换规则才能转换
    • 底层的安全性来说 Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。
    • 在运行环境提供了四级安全性保障机制: 字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

可移植性——平台无关性

  • 平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。比如我们的Int类型必须规定是32位

解释执行

  • Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。

多线程

  • 因为摩尔定律(集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半)即要走到尽头,我们不再追求更快的处理器,而是着眼获得更多的处理器,而且要让它们一直保持工作
  • Java 语言是多线程的,这也是 Java 语言的一大特性,它必须由 Thread 类和它的子类来创建。Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的 run() 方法,要执行的方法就写在 run() 方法体内。

原文地址:http://www.cnblogs.com/lscCurry/p/16847307.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性