笨鸟先飞:JAVA学习之对java“白皮书”的十一个关键术语的理解

1.简单性

------首先,java 可以看作是c++的一个纯净版本,它去除了很多累赘的特性,譬如说,头文件,指针,结构,联合,操作符重载,虚基类等等。使得初学者在学习Java过程中比较简单易懂。
------其次,Java比较小,Java诞生之初,很大一个目的就是为了支持在小型机器上的开发运行。而它在当时的基本的解释器以及类的支持大约只有40kb,再加上基础的标准类库和对线程的支持也才只需要增加175kb。对于当时内存普遍较小,网速较慢的情况下,可谓是非常友好了。

2.面向对象

------即便是对于初学者来说,面向对象的概念想必也是耳熟能详了。众所周知,Java是一个非常典型的面向对象的语言,它将一切的重点都放在了数据和接口之上,其实与其将Java称之为面向对象的语言,不如称它是面向接口的语言。有一点特别值得注意,那就是Java并不是一款纯面向对象的对象的语言,当时为了方便初学者,Java中还增加了八种基本数据类型,这八种基本数据类型并不是对象。
------c语言中继承的很多特性,最主要的就是多继承,在Java中为了避免多继承存在的多继承存在着一个十分致命的缺陷,所以只支持单继承,但是可以多实现。那这个致命的缺陷是什么呢?即是说,若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量。同样的,若一个子类继承的多个父类拥有相同方法,同时子类并未覆盖该方法(若覆盖,则直接使用子类中该方法),那么调用该方法时将无法确定调用哪个父类的方法。为了避免子类在继承中产生歧义,所以Java就摒弃了多继承。其实不只是多继承,Java还摒弃了很多会产生歧义的特性,不在这里详细说明。

3.分布式

------Java中有着 一个十分丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP的协议。Java程序在通过URL打开和访问网络上的对象的时候,其便捷程度,就如同打开本地文件一般。

4.健壮性

-----Java在设计之初的目标之一就是让Java程序具有多方面的可靠性。所以Java在进行早期的问题检测和后期的动态的检测方面投入了大量的精力,还消除了十分容易出错的情况。

5.安全性

------Java如今在市场中一直占有比较重要的份额,其中很大的一个原因就是因为java的安全性。java适用于网络/分布式环境,而为了达到这个目标,java在安全方面投入十分大的精力。使用java可以构建防病毒,防篡改的系统。
------ java的设计者们一开始就打算将java设计成能够防范各种的攻击的语言,因为它所有的代码都在一个沙箱中执行,不论代码来自哪里,都不会影响到主系统。所以刚一开始,java对于下载代码的态度是“来者不拒”,但是之后普林斯顿大学的安全专家们发现了,java的安全模型中还是存在这一些小bug能够使得代码脱离沙箱攻击主系统,再加上黑客们也越来越擅长寻找安全体系结构的小漏洞,这导致之后的sun公司以及oracle公司为了修复bug付出了很大的代价。而经历一系列风波之后,java浏览器插件不再信任远程远程代码,除非有数字签名和用户同意执行这个代码双重验证。

6.体系结构中立

------java的还有一个特性十分受开发者们的欢迎,那就是java是一门跨平台性的语言,这极大的减少了开发者们的工作量。java的编译器会生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有java运行时系统,这些代码就会就可以在许多处理器上运行。java编译器通过生成与计算机系统无关的字节码文件指令来实现这一特性。这些代码不仅可以在任何机器上解释执行(只要使用不同的虚拟机),也可以动态的翻译成本地机器代码。
------当然,虚拟机并不完美,它比起全速运行机器代码指令要慢的多,但这个弊处相比起能够极大的减少开发者们工作量的好处来说以及能够忽略平台的体系结构的好处来说,是非常不值得一提的。

7.可移植性

-------java中对于数据类型的分配的内存空间都是固定的,而它的字符串采用标准的Unicode格式存储.,而在c和c++中,基本数据类型的内存空间都不是固定的,一切都依赖于编译器提供商指定的大小。而java采用固定基本数据类型大小的方式不仅消除代码移植时一个十分令人头痛的内存问题,还消除了代码在存储和传输过程中,关于字节顺序的困扰。
------不过,java当初了为了构建一个在任何平台上看起来都觉的不错的界面程序花费了大量的心血,最终却失败了,导致了java的用户界面在任何平台上都不受欢迎。所以跨平台的可移植性到今天仍旧是一个问题。当然,除了用户界面外,其它的类库都能很好的支持平台独立性。

8.解释型

---- -java的解释器可以在任何移植了解释器的机器上执行java字节码文件。因为链接是一个增量式且轻量级的过程,所以开发过程也变得更加的便捷,更加的具有探索性。

9.高性能

------解释后的字节码文件的性能已经很不错了,但是有些场合下,还需要更加高效的性能。而java字节码可以在运行时刻动态的翻译成对应运行这个应用的特点CPU的机器码。
------其实在使用java的前几年,许多人都不同意性能就是“适用性更强”的这种看法,然而如今的即时编译器已经十分的出色,甚至有时候都成为了传统编译器的强有力的竞争对手,这是因为它们包含有更多的可用信息。比如说,即时编译器可以监控经常哪些代码并优化这些代码来提高速度。还有就是更为复杂的优化,是消除函数调用,也就是内联。即时编译器知道哪些类已经加载。基于当前加载的 类集,若特点的函数不会被覆盖,就可以使用内联,必要时还可以撤销优化。

10.多线程

------多线程可以带来更好的交互响应和实时行为。java其实在当时是非常超前的一门语言,它是第一门支持逼格发程序设计的主流语言。而它产生的背景,多核处理器还没有问世,web编程也才刚刚起步,处理器甚至得花费很多时间来等待服务器响应,在当时这种情况下,支持多线程的这种构思十分令人震惊的。

11.动态性

------java比起c/c++有着更好的动态性,它能够适应不断发展的环境。在它的库中可以 不断的添加各种新方法和实例变量,而这对于客户端来说,没有丝毫的影响。

补充:

----- java在推出不久之后,微软意识到了这种语言的好处,随即就发布了一款叫做J++的产品,它跟java有着几乎一模一样的预言体系以及虚拟机。然而,之后微软不再支持J++,却代之的是一门叫做C#的语言,你会发现c#的语言体系跟java相差不多,但是使用的虚拟机却完全不同,虽然C#中带有一个C字,C#跟C/C++一点关系没有。

参考文献:java核心技术(原书第10版) 卷Ⅰ 基础知识

发布了7 篇原创文章 · 获赞 7 · 访问量 289
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览