本文主要根据Java的诞生,Java的特性 进行描述。有错误,欢迎指正。
一:Java的诞生
Java 是从1995年的7月开始在计算机业界就受到了高度关注,特别是在Internet和多媒体(Multimedia)相关产品类方面。
Java为何有如此这么大的魅力?
Java是一种软件技术
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
是一种为 Internet发展的计算机语言
是一种使网页(Web Page)产生生动活泼画面的语言
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
是一种语言,用以产生「小应用程序(Applet(s))」
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
是一种将安全性(Security)列为第一优先考虑的语言
是一种使用者不需花费很多时间学习的语言
是一种突破用户端机器环境和CPU结构的语言
是一种「写一次,即可在任何机器上执行(Write OnceRun Anywhere)」的语言是有史以来
,第一套允使用者将应用程序(Applications)通过Internet从远端的服务器(Remote Server)传输到本地端的机器上(LocalMachine)并执行
是一种应用程序提供者不需要知道使用者的计算机硬件(如:Sun, Intel, 或MAC等)与软件(如:SW- UNIX, MAC O/S, Windows, 或NT等)环境的语言(Kestenbaum, 1995)。
二:Java的特性
Java是一种简单,健壮,多态,安全,网络,面向对象,搞性能的程序语言。
简单的 (Simple)
C/C++学习复杂,程序运行需要在各个平台运行。而Java是一次编译到处运行的。
Java是在C/C++的基础上面产生的,且同时屏蔽了C/C++的一些 指针 (Pointer) 、运算符重载 (Operator Overloading) 和多重继承 (Multiple Inheritance) 的特性。
面向对象的 (Object-Oriented)
面向对象分析 (Object-Oriented Analysis) 是分析问题的一种方式,面向对象设计 (Object-Oriented Design) 是使用面向对象的思考方式来设计问题的解决方案。但是,要了解什么是面向对象,以及学会使用面向对象的方式进行设计与解决问题,并不是一件简单 的事情,事实上让您了解面向对象正是这本书的目标之一。
网络的 (Network-Savvy)
Java本身是通过网络而产生的,且好多功能与网络有关,从Applet,(简化的)Socket,(交互式的)Jsp/Servlet网络程序到今天的Web Service等等,其实Java也正是网络使用非常的高。EJB现在使用的相对较少。
编译的 (Interpreted)
程序在一个平台上要能够运行,必须先编译为该平台所能理解的原始机器语言 (Native Machine Instructions) ,但最大的问题在于每个平台所认识的机器语言各不相同。例如 Windows 操作系统认识的机器语言就与 Linux 认识的不相同,专为 Windows 操作系统所编写并编译好的程 序,并无法直接拿来在 Linux 操作系统上运行。
为了解决在不同平台间运行程序的问题, Java 的程序在进行编译时,并不直接编译为与平台相对应的原始机器语言,而是编译为与系统无关的“字节 码” (Bytecodes) 。为了要运行 Java 程序,运行的平台上必须安装有 JVM( Java Virtual Machine) , JVM 等于是为 Java 程序所虚拟的环境。当运行 Java 程序时, Java 实时编译器 (Just In Time Compiler , JIT) 会将字节码编译为目标平台所接受的原始机器语言,通过 JVM 使得 Java 程序在不同平台上都能运行的目的得以实现,如图 1-2 所示。
图 1-2 JVM 将 Java 字节码转换为与平 台相对应的机器语言
良葛格的话 匣子:
“平台” (Platform) 一词并没有较严谨的定 义,在计算机的领域中,平台有时指的是硬件,有时指的是作用于硬件之上的软件系统,有时则指硬件加上软件,这里的平台指的是“操作系统”。由于不同的硬件 会运行不同的操作系统,所以这里对平台的定义也就是硬件加上软件。
您可以在 Google(http://www.google.com/) 上搜寻 define:platform 来查询网络上各种对平台的定义。
健壮的 (Robust)
Java 将 C/C++ 中一些功能强大但不容易掌握的功能去除了。以指针 (Point) 功能为例,即使是有经验的开发 人员在使用指针功能时也得小心翼翼,避免编写出使程序崩溃 (Crash) 的错误,诸如此类的功能在 Java 中被去除,为的是让 Java 在使用时更为简单,编写出来的程序更为健壮。
舍弃了 C/C++ 的一些特性曾使得许多开发人员质疑没有了 C/C++ 的这些特性, Java 还能开发什么软件?但从 Java 正式提出至今 10 年来已经证明, Java 确实适用于开发各个领域的软件,而且拥有广大的网络资源。
安全的 (Secure)
Java 加入了垃圾回收 (Garbage Collection) 机制,让开发人员无需担心对象资源的回收问题,异 常 (Exception) 处理架构让开发人员可以掌握程序中各种突发的异常状况。另外,像 synchronized 、 final 等存取关键词的使用,目的都在于加强 Java 程序的安全性。
可移植的 (Portable)
要让程序跨平台运行并不是一件容易的事,有相当多的因素必须考虑,例如数 据类型所占内存长度就是一个问题, Java 在不同的平台上的数据类型长度是 统一的 ( 而 C/C++ 则不然 ) 。这是 Java 在提高程序可移植性上最显而易见的一个例子。
高性能的 (High-Performance)
高性能是 Java 所宣称的,在某些条件的配合下, Java 号称可以与 C/C++ 拥有同样甚至更好的运行性能,但更多的人只是将这个 宣称视为一个商业宣传的口号。 Java 是在运行时期才将中间的字节码编译为原始机器语 言,这就花上了一段不短的启动时间,而早期的 Java 在运行性能上确实是一直被诟病的。
不过在历经数个版本的变更, Java 一直尝试提高其运行的性能,像使用 Java HotSpot 技术。在第一次加载 Java 字节码时, JIT 会以编译模式开始加载,分析并尝试以 最佳化编译为目标平台的原始机器语言。每一次的版本更新, Java 皆尝试在性能上做出改进。