Java的关键术语

1 ) 简单性

Java在设计的时候尽可能的接近C++,是为了便于系统更加易于理解。同时,Java剔除了C++中许多很少使用、难以处理、易混淆的特性。可以说Java语法是C++语法的一个”纯净版本”。这里没有头文件、指针、结构、联合、操作符重载、虚基类等,这些特性带来的麻烦在多数情况下远远多于其带来的好处。因此,这些特性的剔除能够让Java在一些情况下能够更加简便。然而,Java的设计者并没有试图去清除C++中所有不适当的特性,比如一些语句的语法在Java中就没有改变,像switch语句、if语句等,因此熟悉C++的程序员可以轻而易举的转换到Java语法中来。
同时简单性的另一个方面就是小。Java的目标之一就是支持开发能够在小型机器商独立运行的软件。基本的解释器以及类支持大约仅为 40KB ; 再加上基础的标准类库和对 线程的支持(基本上是一个自包含的微内核)大约需要增加175KB。随着不断的拓展,现在类库已经相当庞大了。现在有一个独立的具有较小类库的Java微型版,仍然能够适应于 嵌入式设备。

2 ) 面向对象

面向对象设计是一种程序设计技术。它将设计的重点放在了数据(即对象)和对象的接口上。与C语言等面向过程设计的语言不同,它关注的是对象和对象间的关系,而不是关注函数模块的实现。用木匠打一个比方,一个“面向对象的”木匠始终关注的是所制作的椅子,第二位才是所使用的工具;一个“非面向对象的”木匠首先考虑的是所用的工具。在本质上,Java 的面向对象能力与C++是一样的。
Java与C++的主要不同点在于多重继承,在 Java 中,取而代之的是更简单的接口概念。与C++相比,Java 提供了更丰富的运行时自省功能(与Java的反射有关,可以先忽略)。

3 ) 分布式

Java 有一个丰富的例程库,用于处理像HTTP和FIT之类的 TCP/IP 协议。Java 应用 程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
也就是说,用户可以在本机上通过Java应用访问到其他网络地址上面的服务器,来完成自己的业务需求。
用一句话来说,分布式就是通过计算机网络将后端工作分布到多台主机上,多个主机一起协同完成工作。

4 ) 健壮性

Java的设计目标之一在于使得Java编写的程序具有多方面的可靠性。Java投入了大量的精力进行早期的问题检测、后期动态的(运行时)检测,并消除了容易出错的情况。
Java和C++最大的不同在于Java采用的指针模型可以消除重写内存 和损坏数据的可能性。Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。

5 ) 安全性

Java 适用于网络 / 分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java 就设计成能够防范各种攻击,其中包括:
•运行时堆栈溢出。如蠕虫和病毒常用的攻击手段。
•破坏自己的进程空间之外的内存。
•未经授权读写文件。
而随着Java的发展,Java浏览器插件也渐渐不再信任远程代码,除非代码有数字签名而且用户同意执行这个代码。(现在看来,尽管Java安全模型没有原先预想的那么成功, 但Java在那个时代确实相当超前)

6 ) 体系结构中立

Java程序在Java编译器编译之后会生成一个字节码文件(也就是所谓的.class文件)。这种文件的运行与特定的计算机体系结构无关,因此这种字节码文件可以很容易的在任何机器上解释执行,而且还可以动态的翻译成本地机器代码(前提是要有Java运行时系统)。
Java字节码文件的形成离不开Java的虚拟机。
当时,为“ 虚拟机” 生成代码并不是一个新思路。诸如 Lisp、 Smalltalk 和 Pascal 等编程语言多年前就已经采用了这种技术。
当然,解释虚拟机指令肯定会比全速运行机器指令慢很多。然而,虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码,这一过程被称为即时编译。
Java 虚拟机还有一些其他的优点。它可以检测指令序列的行为,从而增强其安全性。

7 ) 可移植性

与C和C++不同,Java规范中没有“依赖具体实现”的地方。基本教据类型的大小以及有关运算都做了明确的说明。
比如Java的int永远为32为的整数,而C/C++中int的范围与运行程序的机器有关,它有可能是16位、32位整数等。在Java中,数据类型具有固定的大小,这消除了代码移植时的主要问题。二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。字符串使用标准的Unicode格式存储的。
与此同时,由于Java程序体系结构中立,因此Java程序编译的字节码文件,可以在各种平台上通过虚拟机(通过虚拟机上的解释器将字节码翻译成机器语言交给机器)运行。

8 ) 解释型

Java的解释器(虚拟机的一部分)可以在任何移植了解释器的机器上执行Java字节码。解释器在解释字节码的过程中会根据解释信息进行链接(链接是为了生成可执行文件的一个过程)。由于链接是一个增量式且轻量级的过程,所以,开发过程也变得更加快捷,更加具有探索性。

9 ) 高性能

尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的性能。字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定CPU的机器码。

10 ) 多线程

多线程可以带来更好的交互响应和实时行为。
多线程问题通常与并发相关。对于一些事务(比如转账、商品交易等)的并发如果没有进行严密的设计,可能会导致一些数据安全的问题。但Java在这方面表现的很出色,可以很好地管理这个工作。

11 ) 动态性

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值