不介绍Java 常用语
对Java 的总体介绍就是不完整的
尽管促使Java 诞生的源动力是可移植性和安全性
但在Java 语言最终成型的过程中
其他一些因素也起了重要的作用
Java 设计开发小组的成员总结了这些关键因素
称其为Java 的专门用语
包括下面几个
· 简单(Simple)
· 安全(Secure)
· 可移植(Portable)
· 面向对象(Objectoriented)
· 健壮(Robust)
· 多线程(Multithreaded)
· 体系结构中立(Architectureneutral)
· 解释执行(Interpreted)
· 高性能(High performance)
· 分布式(Distributed)
· 动态(Dynamic)
在这些特性中安全和可移植已经在前面介绍过了下面让我们看看其他特性的含义
一 简单
Java 设计目的是让专业程序员觉得既易学又好用假设你有编程经历你将不觉得Java 难掌握如果你已经理解面向对象编程的基本概念学习Java 将更容易如果你是一个经验丰富的C++ 程序员那就最好了学习Java 简直不费吹灰之力因为Java 承C/C++ 语法和许多C++ 面向对象的特性大多数程序员在学习Java 时都不会觉得太难另外C++中许多容易混淆的概念或者被Java 弃之不用了或者以一种更清楚更易理解的方式实现
除了和C/C++ 类似以外Java 的另外一个属性也使它更容易学习设计人员努力使Java 中不出现显得让人吃惊的特性在Java 中很少明确地告诉你如何才能完成一项特定的任务
二 面向对象
尽管受到其前辈的影响但Java 没被设计成兼容其他语言源代码的程序这允许Java 开发组自由地从零开始这样做的一个结果是Java 语言可以更直接更易用更实际的接近对象通过对近几十年面向对象软件优点的借鑒Java 设法在纯进化论者的任何事物都是一个对象和实用主义者的不讨论对象不对象的论点之间找到了平衡Java 的对象模型既简单又容易扩展对于简单数据类型例如整数它保持了高性能但不是对象
三健壮
万维网上多平台的环境使得它对程序有特别的要求因为程序必须在许多系统上可靠地执行这样在设计Java 时创建健壮的程序被放到了高度优先考虑的地位为了获得可靠性Java 在一些关键的地方限制你强迫你在程序开发过程中及早发现错误同时Java 使你不必担心引起编程错误的许多最常见的问题因为Java 是一种严格的类型语言它不但在编译时检查代码而且在运行时也检查代码事实上在运行时经常碰到的难以重现的难以跟蹤的许多错误在Java 中几乎是不可能产生的要知道使程序在不同的运行环境中以可预见的方式运行是Java 的关键特性
为更好理解Java 是如何具有健壮性的让我们考虑使程序失败的两个主要原因内存管理错误和误操作引起的异常情况(也就是运行时错误)在传统的编程环境下内存管理是一项困难乏味的任务例如在C/C++ 中程序员必须手工地分配并且释放所有的动态内存这有时会导致问题因为程序员可能忘记释放原来分配的内存或者释放了其他部分程序正在使用的内存Java 通过替你管理内存分配和释放可以从根本上消除这些问题(事实上释放内存是完全自动的因为Java 为闲置的对象提供内存垃圾自动收集)在传统的环境下异常情况可能经常由被零除或文件未找到这样的情况引起而我们又必须用既繁多又难以理解的一大堆指令来对它们进行管理Java 通过提供面向对象的异常处理机制来解决这个问题一个写得很好的Java 程序所有的运行时错误都可以并且应该被你的程序自己进行管理
四多线程
设计Java 的目标之一是为了满足人们对创建交互式网上程序的需要为此Java 支持多线程编程因而你用Java 编写的应用程序可以同时执行多个任务Java 运行时系统在多线程同步方面具有成熟的解决方案这使你能够创建出运行平稳的交互式系统Java 的多线程机制非常好用因而你只需关注程序细节的实现不用担心后台的多任务系统
五结构中立
Java 设计者考虑的一个主要问题是程序代码的持久性和可移植性程序员面临的一个主要问题是不能保证今天编写的程序明天能否在同一台机器上顺利运行操作系统升级处理器升级以及核心系统资源的变化都可能导致程序无法继续运行Java 设计者对这个问题做过多种尝试Java 虚拟机(JVM )就是试图解决这个问题的他们的目标是只要写一次程序在任何地方任何时间该程序永远都能运行在很大程度上Java 实现了这个目标
六解释性和高性能
前面已提到通过把程序编译为Java 字节码这样一个中间过程Java 可以产生跨平台运行的程序字节码可以在提供Java 虚拟机(JVM )的任何一种系统上被解释执行早先的许多尝试解决跨平台的方案对性能要求都很高其他解释执行的语言系统如BASICTclPERL 都有无法克服的性能缺陷然而Java 却可以在非常低档的CPU 上顺利运行前面已解释过Java 确实是一种解释性语言Java 的字节码经过仔细设计因而很容易便能使用JIT 编译技术将字节码直接转换成高性能的本机代码Java 运行时系统在提供这个特性的同时仍具有平台独立性因而高效且跨平台对Java 来说不再矛盾
七分布式
Java 为Internet 的分布式环境而设计因为它处理TCP/IP 协议事实上通过URL 地址存取资源与直接存取一个文件的差别是不太大的Java 原来的版本(Oak) 包括了内置的地址空格消息传递(intraaddressspace) 特性这允许位于两台不同的计算机上的对象可以远程地执行过程Java 最近发布了叫做远程方法调用(Remote Method Invocation RMI )的软件包这个特性使客户机/服务器编程达到了无与伦比的抽象级
八动态
Java 程序带有多种的运行时类型信息用于在运行时校验和解决对象访问问题这使得在一种安全有效的方式下动态地连接代码成为可能对小应用程序环境的健壮性也十分重要因为在运行时系统中字节码内的小段程序可以动态地被更新