Java程序设计概述

hardwork
喝杯Java提提神~

虽然这部分内容好似并不是特别重要,但其实还是比较重要的。俗话说的好,高楼万丈平地起,古树千年幼苗成,所以哈,千万不能浮躁,平和的心态方能宁静而致远。带着你本来对Java的认识和理解,跟着我的文字,看看是否和你心里想的一样呢?

Java程序设计平台

Java并不只是一种程序设计语言,Java是一个完整的平台。它有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。(这种说法你是否听说过)

Java“白皮书”的关键术语

简单性

Java语法是C++语法的一个“纯净”版本。这里没有头文件、指针运算(甚至指针语法)、结构体、联合体、操作符重载、虚基类、友元函数等。
简单的另一方面是小,如JavaME。

面向对象

简单来说,面向对象是一种程序设计技术。它将重点放在数据(即对象)和对象的接口上。
Java的面向对象特性和C++旗鼓相当。Java与C++的主要不同点在于多继承,在Java中,取而代之的是简单接口的概念,以及Java的元类(Meta Class)模型。

分布式的(Network-Savvy)

Java有一个扩展的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java Application能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。另外RMI(Remote Method Invocation)使得分布式对象之间可以进行通信。
关于RMI请参阅:
Java RMI之HelloWorld篇

健壮性

Java的设计目标之在于使得Java编写的程序具有多方面的可靠性。Java投入了大量的精力进行早期的问题检测、后期动态的(运行时)检测,并消除了有出错倾向的状态……
Java与C++最大的区别在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。

安全性

Java适用于网络/分布式系统。为了达到这一目标,在安全方面投入了很大精力。使用Java可以构建防病毒、防篡改的系统。
从一开始,Java就设计成能够防范各种攻击,其中包括:

  • 运行时堆栈溢出。(蠕虫等病毒常用攻击手段)
  • 在自己的处理空间外破坏内存。
  • 未经授权的文件读写。
    自Java 1.1以来,Java就有了数字签名类(digitally signed class)的概念。通过数字签名类,可以确定类的作者。如果信任该类的作者,这个类就可以在你的机器上拥有更多的权限。

体系结构中立

编译器生成一个体系结构中立的目标文件格式(.class),这是一种编译过的代码,只要有Java运行时系统(JRE),就可以在许多处理器上运行。精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以迅速地翻译成本地机器的代码。
当然解释字节码肯定会比全速运行机器指令慢得多。所以这是不是一个好的思路还很难讲!然而虚拟机有一个选项,可以将使用最频繁的字节码序列翻译成机器码,这一过程被称为即时编译。这一策略已经被证明十分有效,致使.NET平台也依赖虚拟机。
VM还有一些其它优点。VM可以检测指令序列的行为,以增强其安全性。有些程序还可以快速地生成字节码,并动态地增强所运行的程序处理能力。

可移植性

与C、C++不同,Java规范中没有“依赖具体实现”,基本数据类型的大小和有关算法都做了明确的说明。
在Java中,数据类型具有固定的大小,例如,Java中的int永远是32位的整数,这消除了代码移植时令人头痛的主要问题;二进制数据以固定的格式进行存储和传输,消除了字节顺序的干扰;字符串是用标准的Unicode格式存储的。
作为系统组成部分的类库,定义了可移植的接口。例如,有一个抽象的Windows类给出了在UNIX、Windows和Macintosh环境下的不同实现。

解释型

Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程,所以,开发过程也变得更加便捷,更加具有探索性。
增量式链接有其优势,但给开发过程带来的好处显然是言过其实了。事实上,早期的Java开发工具的速度相当慢。现在,使用即时编译器将字节码翻译成机器码。

高性能

字节码可以在(运行时)快速地翻译成运行这个应用程序的特定CPU的机器码。
现在的即时编译器已经非常出色,在某些情况下甚至超越了传统的编译器,原因是它们含有更多的可用信息。例如,即时编译器可以监控经常执行哪些代码并优化这些代码以提高速度。
更为复杂的优化是内嵌函数。即时编译器知道哪些类已经加载,如果基于当前已经加载的类集,且特定的函数不被覆盖的话就可以内嵌。必要时,还可以撤销优化。

多线程

多线程可以带来更好的交互响应和实时行为。
只要操作系统支持,Java中的线程就可以利用多个处理器。在底层,主流平台的线程实现机制各不相同,Java并没有花费太大的力气对此实现平台无关性。在不同的机器上,只是调用多线程的代码完全相同;Java把多线程的实现交给了底层的操作系统或线程库来完成。尽管如此,多线程编译的简单性是Java成为颇具魅力的服务器端开发语言的主要原因之一。

动态性

Java与C、C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。在Java中找出运行时类型信息十分简单。
Java的当前版本允许程序员指导对象的结构和行为。这对于必须在运行时分析对象的系统来说非常有用。这些系统有:Java GUI构建器、智能调试器、可插拔组件以及对象数据库。

Java applet 与 Internet

applet 已死,取而代之的是Java Script 和 Flash。

Java发展史

这部分其实还是蛮重要的,我打算等我什么时候有时间,好好研究下关于Java的历史,以及与之相关的故事等,预知详情如何,请听下回分解。

坚持原创技术分享,您的支持将鼓励我继续创作