博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java白皮书的关键术语
阅读量:4150 次
发布时间:2019-05-25

本文共 2381 字,大约阅读时间需要 7 分钟。

Java的设计者已经编写了颇有影响力的白皮书,用来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要。这个摘要要用一下关键术语进行描述:  1.简单性2.面向对象性  3.分布式   4.健壮性   5.安全性  6.体系结构中立   7.可移植性   8.解释型 9.高性能  10.多线程  11.动态性

注意:白皮书可以在此链接找到                                                                          

对于11个关键术语的讨论请参考

1.简单性  

人们希望构建一个无须深奥的专业训练就可以进行编程的系统,并且要符合当今的标准惯例。因此,尽管人们发现C++不太适合,但在设计java的时候还是尽可能地接近C++,以便系统更易于理解。Java挑剔了C++中许多很少使用、难以理解、易混淆的特性。在目前看来,这些新特性带来的麻烦远远多于其带来的好处

的确,Java语言是C++语法的一个纯净版本。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等。然而设计者并没有试图清除C++中所有不适当的特性。例如,switch语句在Java中就没有改变。如果你了解C++你就会发现可以轻而易举地转换到Java语法。以前,Java刚发布时,许多开发人员肯定觉得Java并不简单。很多年以后Java的开发环境才迎头而上。如今,Java发开环境已经远远超过了大多数其他编程语言的开发环境。简单的另一方面是小。能够在小型机器上独立运行的软件。随着时代的发展,现在已经适用于嵌入式设备。

2.面向对象性 

简单来说,面向对象设计是一种程序设计技术。它的重点在于对象。举一个例子:有一个木匠想做一把椅子,一个有面向对象特点的木匠,他始终关注的是所制造的椅子,然后再关注所使用的工具;一个不具有面向对象特点的木匠,他首先考虑的是所用的工具。在本质上,Java的面向对象能力和C++是一样的。主要不同点在于,C++可以多重继承,在Java中取而代之的是更简单的接口概念。总的来说,就是Java先考虑的是结果,再考虑怎么实现它。

3.分布式

Java有一个丰富的例程库,到这里是不是想问例程库 是什么? 有什么用? 它是用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能通过URL打开和访问网络上的对象,它的编写程度就相当于我们访问本地一样。

4.健壮性 

Java的设计目标之一就在于Java编写的程序可以具有多方面的可靠性。Java编译器能够检测许多在其他语言中仅在运行时才能检测出来的问题。至于第二点,对于以前需要花费几个小时才能检查出指针bug而引起的内存冲突的人来说,一定会爱上Java的这一特性。简单来说,健壮性是指出错了也能继续运行的能力。

5.安全性

Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java就设计成能够防范各种攻击,其中包括:* 运行时堆栈溢出时。如蠕虫和病毒常用的攻击手段。*破坏自己的进程空间之外的内存。*未经授权读写文件。 不过黑客已经擅长找出全体系结构实现中的小漏洞,Java安全模型没有原先预想的那么成功,不过我相信迟早有一天,它会出现奇迹的。

6.体系结构中立

编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。通过生成与特定的无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易地在任何机器上,而且还可以迅速地翻译成本地机器的代码。字节码可以实现了结构中立。

7.可移植性

因为Java有一个JVM(Java Virtual Machine)Java虚拟机,源程序*.java被编译成字节码文件,字节码是与平台无关的,是面向jvm编写的,而Jvm又有自己的一套指令系统,在不同的平台上jvm的指令也是不一样的,也就是说不同操作平台有自己的Jvm但是Jvm向上的字节码接口是与平台无关的,Jvm接口向下是与硬件有关的,jvm是个中间件,这样只要有字节码和Jvm,不管在任何平台都可以运行Java程序。全靠的是Jvm虚拟机,可以跨平台,这就是可移植性。

8.解释型

Java解释器可以在任何移植解释器的机器上执行Java字节码。由于链接是一个轻量级的过程,所以,开发过程也变得更加敏捷,更加具有探索性。它其实就是把做好的源程序翻译一句,然后执行一句,直至结束。特点:执行速度慢、效率低;依靠解释器、跨平台性好。javascript语言也是解释型的

9.高性能

尽管现在我们对解释后的字节码的性能已经比较满意了,但在有些场合还需要更高的性能,这时候我们该怎么办呢?字节码可以在运行时刻 动态地 翻译成对应这个应用的特定CPU的机器码。

10.多线程

多线程可以带来更好的交互响应和实时行为。如今,我们非常关注并发性,现在我们不再追求更快的处理器,而是获得更多的处理器,而且要它们一直保持工作。并发程序设计绝非易事,不过Java在这方面表现很出色,可以很好地管理这个工作;web编程因为时间不是很长,处理器则要花很长时间来等待服务器响应,需要并发程序设计来确保用户界面不会被冻住

11.动态性

从各种角度看,Java与C或C++相比更加具有动态性。因为它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而客户端却没有任何影响。在Java中找出运行时类型信息十分简单。

当需要将某些代码添加到正在运行的程序中时,动态性将是一个非常重要的特性。比如说:从网上下载代码,然后在浏览器上运行。如果使用C或C++,这确实难度很大,不过Java可以很容易实现程序的推演。(C#与Java有很多相同之处,不过使用的虚拟机却是完全不同的)

-------------------------如果大家喜欢我的博客,可以点击左上角的关注

转载地址:http://aupti.baihongyu.com/

你可能感兴趣的文章
SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页
查看>>
文章标题 标签提取
查看>>
读《构建之法》前三章有感
查看>>
CSS 绝对定位与弹性布局合作居中
查看>>
数学口袋精灵感受与BUG
查看>>
mysql_connect(): Headers and client library minor version mismatch.
查看>>
ChildEBP RetAddr的解释
查看>>
Mysql 数据库之修改标的结构
查看>>
curl命令详解
查看>>
JVM内存模型、指令重排、内存屏障概念解析
查看>>
MooTools 1.4 源码分析 - Class 修正版
查看>>
优质代码
查看>>
我的五官和四肢:C++程序=预编译指令+程序代码+注释
查看>>
Django-url路由映射与views逻辑处理
查看>>
select 练习2
查看>>
JAVA 内部类
查看>>
【安富莱专题教程第7期】终极调试组件Event Recorder,各种Link通吃,支持时间和功耗测量,printf打印,RTX5及中间件调试...
查看>>
【Java基础一】String创建对象"" && null
查看>>
AngularJS学习之旅—AngularJS Select(十)
查看>>
HDU 5340 Three Palindromes (Manacher)
查看>>