`
参照物
  • 浏览: 12377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java的一些关键特性

阅读更多

转载自IT学习社区:http://bbs.itcast.cn/forum-53-1.html

 

Document the Java: Sun Microsystems 公司的白皮书-- 1995.10 James Gosling 和 Henry McGilton 的草案-- 说明了Java的以下主要特性:
*Simple and Familiar (简单熟悉)
*Object-oriented (面向对象)
*Architecture-neutral (结构中立)
*Portable (可移动)
*Somewhat Interpreted (部分解释)
*Distributed (分布式的)
*Robust (鲁棒性)
*Secure (安全)
*High performance (高性能)
*Multi Threaded (多线索)
*Dynamic (动态)

Java 特性 -- 简单熟悉
Java 省略了C++ 中一些很少用到的, 不易理解的和易于混淆的特性, 包括操作符重载, 多重继承, 指针和自动类型强制.
它增加了自动垃圾清理, 使得用Java进行动态编程比用 C 或 C++ 容易.
不再有mallocs!
它还加了´接口´ 构造, 类似于 Objective C 的概念, 经常用于通过允许method调用语法是"继承的"来弥补多重继承的缺少带来的不便.
结果因为它类似于C++, 用户会比较熟悉, 便于编程.
这样做的另一个结果是使得内核变得很小, 适用于消费者电子设备. 基本解释器(alpha) 为~40Kb, 库和线索另外需要 175Kb.

Java 特性 -- 面向对象
Java 模型可以看成是 C++ 的一个子集, 带有一些从Objective_C 中继承下来的动态元素(方法重载, 垃圾收集).
结构, 联合和函数被抽象成为Java类的数据和方法(methods) -- Java 比较简单!
Java模型的长处不仅在于简单还在于和系统相关的类库的扩充 (大约 250 个公共库在alpha 和 beta 版中发布).
Java 类也在Web 嵌入模型中起到通讯单元的作用. Applet 类通过HTML的applet标记中的名字标识自己. Applet 下载出现在applet源程序中的其它类. 因此, Java 类名字起到分布式Java代码数据库的地址模式的作用.

Java 特性 --结构中立
C/C++ 在异构网络环境下编程需要使用和兼容多个平台和相应的编译器. 这个问题在 Java中通过称为bytecode(或opcode)的独立于平台的二进制描述解释的设计而解决了.
Java 编译器(用 Java 写成的, 平台独立) 读取 Java 源程序生成Java bytecode. 这些 bytecodes 根据浏览器的要求被送到客户端的机器上.
每个客户机器必须运行 Java 解释器, 它完成 Java bytecode的解释执行. Java 解释器是用POSIX的ANSI C编写的, 需要送到每个单独的平台下面进行一次常规的编译.
一旦解释器就绪, 应用程序开发者不必关心任何平台说明和区别不同的本地编译器.

Java 特性 -- 可移动
Java 语言提供了一个统一的抽象 (虚拟) 机器模型, 对所有的平台是一致的.
SUN 拥有 Java 虚拟机 -- 它是通用的, 而任何用户可以增加它的类
不同于在 C/C++ 中需要手工为不同的整数匹配到物理机器的结构上, Java byte, char short, int 和 long 的大小始终是一样的, 分别等于 8, 16, 16(unicode), 32 和 64 位.
没有头文件, 预处理程序,#define 等.
浮点数总是IEEE 754
特定窗口环境的区别的说明 (X Windows, MS Windows, Macintosh) 根据抽象窗口工具 Abstract Windowing Toolkit (AWT) 消除掉了.
AWT 是由 ~60 Java 类(alpha)写成的, 它提供了一个通用的 GUI 编程模型, 可以在 UNIX, PC 和 Mac 上移动, 由Java解释器自动翻译成本地平台的窗口系统.

Java 特性 -- 部分解释
Java 代表了完全编译 (如 C/C++) 和完全解释 (如 Smalltalk 或者 Perl) 之间的一种折衷方案.
Java "编译器" 生成一种二进制 bytecode 输出, 它是可移动的, 比特定机器实际所需的二进制代码要小得多 .
Java "解释器" 执行这个 bytecode , 因此动态性比象Perl这样的解释器小 (后者内部实现一个等价的 bytecode 构造, 当阅读程序源码时 on-the-fly).
通常地, 编辑过程是: a) 时间消费和 b) 平台说明. 因此, 解释器用于促进 a) 快速原型化和/或 b) 可移动性. Java 模型主要考虑平台独立性但是效率也是适当的因为Java 编译器比较快, 生成简洁的 bytecode 输出.

Java 特性 -- 分布式
流行的 TCP/IP 为基础的协议如 FTP 或 HTTP 是根据网络协议类来支持的. 这方便了各种形式的分布式处理. 新的协议 (如 PVM ) 可以增加和动态安装.
Java 的分布式计算模型主要是客户-服务器, Java 编译器在服务器一方准备 opcodes, Java 解释器在客户一方执行它.
用户可以期待用服务器和客户的Java线索互相通讯实现更多的动态使用.

Java 特性 -- 鲁棒性
Java 增强了编译时的类型检查, 消除了 C/C++ 在这方面的一些错误.
指针算法被完全放弃, 这样是为了运行时检查数组下标和增强了Java模型的安全性.
始终要求显式说明, 即 C 类型的隐式说明被放弃. 这样使得Java 编译器可以完成早期的错误检查.
Java中快速原型化(prototyping )不如 JavaScript,Lisp, Tcl, Smalltalk 或 Perl, 但是Java的软件质量保证比这些更加动态和 ´宽大的´ 语言要好.

Java 特性 -- (希望的) 安全性
Java 二进制代码在网络中传送, 在客户机器上执行. 因此安全性是一个至关重要的问题, 在Java中得到着力加强.
Java 有它自己的已安全方式设计的网络类
C++ 模型的修改如去掉指针算法和强制类型转换主要是基于安全要求的考虑.
多数病毒是基于对私用的/保护的计算机存储器的访问实现的, 这在Java中是不可能的.
Java opcode 是由Java解释器在客户一端独占的虚拟存储器中执行的. 因此除非Java解释器自己存在安全漏洞, 否则模块是安全的, 用户无法通过不正确地或者恶意地编写applet产生安全漏洞.
穿过网络发送的 bytecode在客户端被检验, 阻止恶意/错误的类引发问题

Java 特性 -- 高性能
Java 解释器完成Java bytecode的on-the-fly runtime 执行, 获得了满意的性能.
NOT true in initial software which is often 100 times slower than C but this is expected to improve as true compilers are produced and general software improves!
支持生成从bytecode中生成与本地机器相关的代码, 作为中级编译器形式来看, 这一点满足了对性能要求较高的应用程序.
从Jave bytecode中生成的机器代码的性能与同样平台下的典型的 C/C++ 编译器提供的性能相当.
这里的一些概念实际上和 OSF/ANDF 相似. 使用 ANDF 术语的话, 我们可以称 Java 编译器为 ´生产者producer´, 这里讨论的机器代码生成器是一个 ´安装者installer´. 缺省情况下 Java 的工作模式不使用 installer 而是直接解释中级代码形式 (这种方式在 ANDF 中是用 GAI -- Generalized ANDF Interpreter支持的).
ANDF 模型在原理上可以应用到所有的语言上. Java/HotJava 系统为Java语言实现了 ANDF 概念.

Java 特性 -- 多线索
Java 模型提供优先权多线索, 在Thread类上面执行. 线索方法基于C.A.R. Hoare的监视者和条件变量变化表提供一套时间同步原语. Java 线索从Xerox Park的先驱性的Cedar/Mesa系统(它创造了Macintosh和面向对象程序设计)中继承了一些特性.
Java 多线索在applet 编程中的一个典型应用是有几个独立但又相互关联的情况的模拟 (例如各种排序算法的), 它们同时在一个applet窗口中运行. 多线索还内部用于 HotJava 浏览器, 处理多个动态文档.
另一个有趣的应用领域是多-HotJava 环境的情况, 例如合作实验室或游戏
Java 线索内置的点对点通讯原语. 各种线索的通讯环境可以通过线索和网络协议对象的联合来提供.

Java 特性 -- It 动态性
Java 模型比C++的动态性要好, 接近于Smalltalk 或 Perl.
在父类实现被更新后, 子类不需要重新编译.
类有runtime 陈述(按照Class类实现), 它允许用户在运行时察看一个给定对象实例的类型 (在 C 中如果指针是指向整数或浏览器则无法知道)
C++ 有 "脆弱父类" 问题, 如果改变了父类或引用的类中的任意内容(方法/实例变量), 必须重新编译子类. Java 在运行时解决类的引用, 解决了这个问题.
分享到:
评论

相关推荐

    黑马程序员_java8新特性详解笔记和源码

    本文将深入探讨Java 8的三大关键新特性:接口的默认方法实现、Lambda表达式以及一系列相关的变化。 一、接口的默认方法实现 在Java 8之前,接口只能定义抽象方法,而不能包含具体实现。Java 8引入了默认方法...

    java9新特性大全详解

    本文将详细介绍 Java 9 中的关键新特性,帮助开发者更好地理解并应用这些技术。 #### 二、模块系统(Jigsaw) 模块系统是 Java 9 最具革命性的特性之一,它的引入主要是为了解决 Java 平台长期以来存在的“jar ...

    java8新特性代码

    本篇文章将深入探讨其中三个关键特性:Lambda表达式、函数式接口以及接口中的默认方法和静态方法。 首先,Lambda表达式是Java8的核心特性之一,它允许我们以一种更简洁的方式表示匿名函数。在之前的版本中,如果...

    java9新特性

    除了模块化和JShell工具,Java 9还新增了其他一些重要特性。比如“接口的私有方法”,允许开发者在接口内部编写私有方法来实现某些共通逻辑,这增加了代码的复用性,并且让接口设计更加灵活。再如“进程API更新”,...

    java7新特性与java高级编程

    Java 7是Java编程语言的一个重大更新,发布于2011年,它引入了许多新的特性和改进,旨在提升开发者的效率和代码的可读性。在这个主题中,我们将深入探讨Java 7的新特性以及Java的高级编程概念。 **1. 多线程并行流...

    java 8 新特性练习

    在本练习中,我们将重点探讨两个关键特性:Lambda表达式和Stream API,它们在处理集合数据时尤为实用。 Lambda表达式是Java 8的标志性特性,它为函数式编程提供了支持。Lambda允许我们以一种简洁的方式定义匿名函数...

    北大青鸟Java高级特性

    通过北大青鸟的Java高级特性课程,初学者将有机会深入理解和掌握这些关键概念,提升自己的编程技能。练习及答案、授课源代码的提供则为学习者提供了实践和验证理论的宝贵资源,有助于更好地消化和应用所学知识。

    Java5新特性

    本篇文章将详细介绍 Java 5 中的一些关键特性,这些新特性不仅提高了开发效率,还增强了代码的安全性和可读性。 #### 二、泛型 (Generics) 泛型是 Java 5 中最显著的新特性之一。它的引入主要是为了提高类型安全性...

    java-jdk1.4 新特性介绍

    以下是对JDK 1.4中一些关键新特性的详细解析: ### 1. NIO(New Input/Output) 在JDK 1.4中,NIO(New Input/Output)的引入标志着Java I/O模型的一次重大变革。传统的Java I/O操作主要基于流模型,即数据读写都...

    2019最新 java9新特性课程讲解.rar

    9. **改进的字符串处理**:Java 9提供了一些新的字符串方法,如`strip()`, `stripIndent()`, `isBlank()`等,以简化字符串的清理和检查操作。 10. **G1垃圾收集器优化**:Java 9对G1垃圾收集器进行了优化,提升了...

    Java8新特性尚硅谷-百度网盘

    本文将基于尚硅谷提供的Java8新特性教程,详细介绍其中的关键知识点。 #### 二、Lambda表达式 Lambda表达式是Java8中最引人注目的新特性之一。它提供了一种更简洁的方式来定义接口实现类的方法,尤其适用于函数式...

    java1.8 java1.8

    Java 1.8,也被称为Java 8,...以上只是Java 1.8中部分关键特性,实际上,这个版本还包括对并发、反射、注解处理等方面的改进。理解并熟练掌握这些特性,对于Java开发者来说至关重要,可以显著提升编程效率和代码质量。

    java高级特性增强(源码展示)

    本教程将深入探讨几个关键的Java高级特性,包括多线程、并发包下的队列、Java消息服务(JMS)、虚拟机(JVM)技术和反射与动态代理。下面将对这些主题进行详细的讲解。 1. **多线程**:Java提供了强大的多线程支持...

    Java-Java8十大特性详解教程

    在这个Java8十大特性详解教程中,我们将深入探讨这些关键特性,旨在帮助你更好地理解和应用Java 8。 1. **lambda表达式**: Lambda表达式是Java 8中最显著的特性之一,它简化了函数式编程,使得处理集合数据变得...

    java8新特性

    下面是详细介绍Java 8所引入的一些关键新特性。 1. Lambda表达式和函数式接口: - Lambda表达式是Java 8引入的一种表示匿名函数的方式,可以使代码更加简洁。Lambda表达式允许直接传递代码块作为参数,减少了声明...

    超实用的Java新特性 - 2020最新版.zip

    在学习这些新特性时,"超实用的Java14新特性 - 2020.pdf"文档应该是一个很好的资源,它详细解释了Java 14的关键更新。而"本资源分享自www.cx1314.cn.txt"可能包含了获取更多学习资料的链接,"更多最流行最优质的IT...

    深入解读Java12&13;新特性.zip

    本篇将重点解析Java 12和13中的关键新特性,帮助开发者更好地理解和运用这些改进。 **Java 12新特性** 1. **Switch Expressions (JEP 325)**: Java 12引入了开关表达式,这是对传统switch语句的扩展,使其更符合...

    JAVA核心技术 卷1 高级特性

    总的来说,《JAVA核心技术 卷1 高级特性》涵盖了Java平台的诸多关键知识点,不仅讲解了基本概念,还深入探讨了如何在实际项目中有效利用这些特性。无论是初学者还是经验丰富的开发者,都能从中受益匪浅,提升自己的...

    java和java8特性功能

    本篇文章将深入探讨Java及其在Java8版本中引入的关键特性。 1. **基础特性** - **面向对象**:Java是一种纯面向对象的语言,它支持封装、继承和多态等核心概念。类、对象和接口是构建Java程序的基础。 - **...

    667.665.JAVA基础教程_动态代理与Java8新特性-Java8新特性的好处(667).rar

    Java 8引入了许多新特性,以下是其中一些重要的亮点: 1. **Lambda表达式**:Lambda表达式简化了函数式编程,使代码更加简洁。它可以被用来代替具有一组参数但没有显式名称的方法,并且可以直接传递给支持函数式...

Global site tag (gtag.js) - Google Analytics