`
参照物
  • 浏览: 11858 次
  • 性别: 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 在运行时解决类的引用, 解决了这个问题.
分享到:
评论

相关推荐

    《Java 8 in Action》是一本关于 Java 编程语言的书籍,重点介绍了 Java 8 中引入的新特性和改进

    该书由 Mario Fusco、Alan Mycroft 和 Raoul-Gabriel Urma 合著,旨在帮助读者深入了解 Java 8,并掌握其中的关键概念和技术。 该书通常会涵盖以下内容: Lambda 表达式: 介绍 Java 8 中引入的 Lambda 表达式,...

    【Java基础】Java8新特性—接口中使用default和static关键字

    新特性二.defalut方法三.static方法 接口中的变量默认类型是public static final,也是就是说是 公有静态常量 。 而方法默认是public abstract,公有抽象方法,但是事实真的是这样吗? 一.新特性 Java 1.8对接口有两...

    Java核心技术 卷II 高级特性_第9版

    Java核心技术 卷II:高级特性(第9版·英文版)(上、下册)专为做实际项目的程序员编写,是一本真实可信、不偏不倚且简单直接的Java教程,书中使用了全面测试过的代码示例来阐述关键的Java语言与库的特性,体现了最佳的...

    新手学Java7编程(第5版)

    之后,《新手学java7编程(第5版)》介绍了java的一些高级特性,包括多线程程序设计和泛型。最后以对swing的介绍结束了全书。本教程节奏轻快,可以帮助读者快速掌握java程序设计。  《新手学java 7编程(第5版)》特色 ...

    java8新特性Lambda与stream视频教程-文档和代码.rar

    Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以...

    Java 7入门经典

    Java SE 7相对之前发布版本更新了超过30%的语言特性,《Java 7入门经典》从基础知识入门,介绍了使用这一最新发布版本编写Java程序的方方面面,涵盖了Java的所有语言新特性,可为读者打下坚实的基础。

    2023Java的学习

    这些内容是Java语言的高级特性,可以帮助程序员提高程序的性能和稳定性,是实现复杂程序的关键。 Java的应用部分主要包括JavaFX、Swing、AWT、Spring框架、Hibernate框架、Struts框架、MyBatis框架等内容。这些内容...

    写给大忙人看的java核心技术

    Horstmann的全新力作,以关键的核心技术为着眼点,以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更...

    java高级编程jdk6源代码

    全书共14章,其中前3章介绍了高效Java开发人员所需的特定思维方式,包括关键的Java语言特性和库、用于开发Java解决方案的各种工具和技术,以及Java开发模式。后面部分详细探讨了开发Java解决方案的各种工具和技术,...

    Java7入门经典

    书中包含大量的示例,清晰地解释了涉及的关键概念,演示了Java开发的复杂细节。在阅读各个章节的过程中,您还能获得无价的编程经验,并逐步开始编写功能全面的Java程序。Ivor Horton在编写入门类编程图书方面独具...

    写给大忙人看的Java核心技术.[美]Cay S. Horstmann(带详细书签) PDF 下载 高清 完整版

    Horstmann的全新力作,以关键的核心技术为着眼点,以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更...

    Java学习编程语言的五个关键技巧.docx

    Java是一门广泛应用于软件开发的编程语言,它具有高效、可移植、安全等特性。以下是学习Java编程语言的五个关键技巧: 1. **理解面向对象编程(OOP)**:Java是一门面向对象的编程语言,因此学习Java最重要的一步就是...

    Java 7入门经典(跟编程导师Ivor Horton学Java7)

    无论学习Java是为了编写嵌入...Java SE 7相对之前发布版本更新了超过30%的语言特性,本书从基础知识入门,介绍了使用这一最新发布版本编写Java程序的方方面面,涵盖了Java的所有语言新特性,可为读者打下坚实的基础。

    java核心技术·卷II·高级特征(第9版·英文版)及源码

     Java核心技术卷II:高级特性(第9版英文版)(上、下册)专为做实际项目的程序员编写,是一本真实可信、不偏不倚且简单直接的Java教程,书中使用了全面测试过的代码示例来阐述关键的Java语言与库的特性,体现了最佳的...

    Java7入门经典英文版

    Java SE 7相对之前发布版本更新了超过30%的语言特性,《Java 7入门经典》从基础知识入门,介绍了使用这一最新发布版本编写Java程序的方方面面,涵盖了Java的所有语言新特性,可为读者打下坚实的基础。

    Java双缓冲技术.doc

    Java的强大特性让其在游戏编程和多媒体动画处理方面也毫不逊色。在Java游戏编程和动画编程中最常见的就是对于屏幕闪烁的处理。本文从J2SE的一个再现了屏幕闪烁的Java Appilication简单动画实例展开,对屏幕闪烁的...

    论C#与Java之异同

    2001年的时候,Dare Obasanjo写过一篇文章,名为《论C#与Java之异同(Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java...哪些特性或者概念是只在Java中存在,而在C#中中不存在的? 结论

    JAVA上百实例源码以及开源项目

     这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...

    JAVA上百实例源码以及开源项目源代码

     这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...

Global site tag (gtag.js) - Google Analytics