认识Java
2008-01-05 08:59:23 来源:WEB开发网核心提示:(本单元摘录自『java入门』一书之第一章,基峰资讯公司出版)熟悉Java Java(tm)系由美国升阳电脑公司(Sun Microsystems, Inc.)所发展出的第一种能在国际网际网路(Internet)上面具有「硬体/软体中立性」互动能力的程式语言,认识Java, Java一推出即引起世界各种媒体的注重
(本单元摘录自『java入门』一书之第一章,基峰资讯公司出版)
熟悉Java
Java(tm)系由美国升阳电脑公司(Sun Microsystems, Inc.)所发展出的第一种能在国际网际网路
(Internet)上面具有「硬体/软体中立性」互动能力的程式语言。 Java一推出即引起世界各种媒体的
注重与热烈叁与讨论,如 Time、 Business Weekly、CNN等,可见其功能及媚力,事实上,以Java的
功能,势必在资讯界掀起另一番高潮,对於网路的发展,又迈入另一个新的纪元。
一、前言
『Java』从1995年的暑假开始即受到电脑业界的高度注重,非凡是在Internet和多媒体(Multime-
dia)相关产品类方面。Java为何有如此这麽大的媚力?有人作如此的比喻:Java在全球资讯网(World
Wide Web,WWW)地位就如同试算表(SPReadsheet)与个人电脑(PC)的关系。
那Java究竟有那些特色呢?
Java 是一种软体技术
是一种由美国升阳电脑公司(Sun Microsystems, Inc.)所研发而成的语言
是一种为Internet发展的电脑语言
是一种使网页(Web Page)产生生动和活泼画面的语言
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
是一种语言,以产生「小应用程式(Applet(s))」
是一种简化的C++语言
是一种安全的语言,具有阻绝电脑病毒传输的功能
是一种将安全性(Security)列为第一优先考虑的语言
是一种使用者不需花费很多时间学习的语言
是一种突破使用者端机器环境和CPU架构的语言
是一种「写一次,即可在任何机器上执行(Write Once Run Anywhere)」的语言
是有史以来,第一套答应使用者将应用程式(applications)透过Internet从远端的
伺服器(Remote Server)传输到Local端的机器上(Local Machine)并执行之
是一种应用程式提供者不需要知道使用者的电脑硬体 (如:Sun, Intel, 或MAC等)
与软体(如:SW-UNIX,MAC O/S, Windows, 或NT等)环境的语言。
在此一单元中,将依序地介绍Java。首先是Java的发展历史与Java语言介绍,其次依序是Java
Applet和HotJava的简单介绍。
二、Java介绍
首先以问题的方式来说明Java的发展历史与其背景(下列内容整理自Java FAQ list and Tutorial
和The Java Language: A White Paper,读者若欲深入了解,请自行叁阅原文):
※Java何时开始发展?(When)
最早的大概可追??至1991年四月份,Sun的绿色计画(Green Project)开始着手於发展消费性电子
产品(Consumer Electronics),所使用的语言是C、C++、及Oak (为Java语言的前身),後因语言本身
和市场的问题,使得消费性电子产品的发展无法如当初预期的目标,再加上网路的兴起,绿色计画也
因此而改变发展的方向,这已是1994年了。
※ 为何称之为Java?(Why)
"Java"是美国升阳电脑公司Java发展小组历经无数次的脑力激荡会议之後才被选择出。生动(Live-
liness)、动画(Animation)、速度(Speed)、互动性(Interactivity)为当初选择名字时所欲表达出的
特色。
"Java"是在无数的建议中脱颖而出的,而"Java" 不是由几个单字的首字所组成,而是从许多程式设计
师锺爱的热腾腾、香浓咖啡中产生灵感的。
※ 谁开发了Java?(Who)
答案是美国升阳电脑公司Java发展小组,早期的成员(绿色计画)是Patrick Naughton, James
Gosling, & Mike Sheridan,而现在大家较为熟悉的成员是James Gosling,现在的Java发展小组成员
也增加了许多,当然您也有机会成为该小组的成员,机率永远是大於零。
※ 在那里开发了Java?(Where)
也就是问Java的出生地?答案是美国。
※ Java有何特色或是特点?(What)
详见本单元开头部份及下一段的说明。
※ 如何可以找到我所需要的Java资讯?(How to)
在网路上,您可以连线到Sun公司的Java WWW网站,网路位址是http://java.sun.com/,或是
http://www.javasoft.com/。在那里几??可以找到您所需要的Java资讯,但是语文多少是一个障碍,
至少对某些人而言;没关系,目前国内已有很多个网站提供中文Java资讯,尔後应会有更多的网站
提供相关资讯。
※ 我如何可以看到Java的效果?(How Do I)
首先您需要有与Java相容的浏览器(Browser),例如:网景公司的Netscape Navigator 2.0以上
或是Sun公司的HotJava浏览器,对个人电脑使用者而言,作业系统需是Windows 95或是Windows NT。
由"Java小史"我们知道了Java的发展历史?现进一步地介绍Java语言。Java乃是因应撰写C++语
言程式时的困难而研发的,起先,只是一个消费性电子产品大计划中的一部份,C++语言是当初被考
虑采用的,但从一开始的编译问题一直到最後的一连串问题迫使得放弃C++语言,而有Java语言的产
生。Sun是要Java成为一个简单(Simple)、物件导向的(Object Oriented)、分散式的(Distributed)、
解译的(Interpreted)、强韧性的(Robust)、安全性的(Secure)、架构中立性的(Architecture Neu-
tral)、可携带性的(Portable)、高效能的(High Performance)、多重线串Multithreaded)、动态性
的(Dynamic)的程式语言(摘译自The Java Language: A White Paper, 1995)。
在Sun的Java语言白皮书中明白地说明上述Java语言的特点?
1.简单(Simple):轻易撰写程式,不需要长时间的练习,而能满足现代的需求。程式小型亦是简单的
一种特性,使得软体能够在小型机器上执行,基本的解译器约为 40k,若加上基本的程式库,约为
215k。
2.物件导向的(Object-Oriented):物件导的设计是一种重心在资料和介面的技巧。若以木工为比喻,
一个以物件为导向的木工,他(她)最主要的重点是即将要做的木椅子,其次才是所需要的工具;反
之;一个以非物件为导向的木工,他(她)所关心的只是工具。最近的随??即用 (Plug and Play)亦
是物件导向设计的重点。
3.分散式的(Distributed):Java有一个很周全的程式库,且很轻易地与HTTP和FTP等TCP/ip通讯协定
相配合。Java应用程式(Applications)能在网路上开启及连结使用物件,就如同透过URLs连结使用
一个区域档案系统(Local File System)。
4.强韧性的(Robust):由Java所撰写出的程式能在多种情况下执行而具有其稳定性。Java与C/C++最
大不同点是Java有一个指标器模型(Pointer Model) 来排除记忆体被盖写(Overwriting Memory)和
资料毁损(Corrupting Data)的可能性。
5.安全性的(Secure):Java是被设计用於网路及分散性的环境中,安全性自必是一个很重要的考虑。
Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病毒的侵入和破坏行为的发生。
6.架构中立性的(Architecture Neutral):一般而言,网路是由很多不同机型的机器所组合而成的,
CPU和作业系统架构均有所不同;因此,如何使一个应用程式可以在每一种机器上执行,是一个难题。
所幸,Java的编译器产生一种结构中立物件的档案格式 (Object File Format);这使得编译码得
以在很多种处理器中执行。
7.可携带性的(Portable):原始资料型式的大小是被指定的,例如 "float" 一直是表示一个32位元
IEEE 754浮点运算数字,因绝大多数的CPU都具有此一共同的特徵。程式库属於系统的一部份,它
定义了一些可携带的介面,Java本身具备有很好的可携带性。
8.解译的(Interpreted):Java解译器能直接地在任何机器上执行Java位元码(Bytecodes),因此在
进行程式连结时,时间的节省,这对於缩短程式的开发过程,有莫大的助益。
9.高效能的(High Performance):Java位元码迅速地能被转换成机械码 (Machine Code),从位元码
转换到机械码的效能几??与C与C++没有分别。
10.多重线串的(Multi threaded):Java语言具有多重线串的功能,这对於互动回应能力及即时执行
行为是有助益的。
11.动态的(Dynamic):Java比C或C++语言更具有动态性,更能因应时刻在变的环境,Java不会因程
式库的更新,而必须重新编译程式。
有关Java中文白皮书的具体内容请叁阅美商升阳电脑台湾分公司所发行的「升阳月刊」1996年2月
号的「Java语言白皮书」一文。
此外,Hank Shiffman (Making Sense of Java) 亦针一般对Java的错误看法及观念提出
他的说明,特在此摘译如下:
1. "Java是一种撰写Web Pages的一种语言,就如同Html和VRML一样"
事实上,Java并不像是HTML此一类的叙述语言(Description Language),而是一种程式语言(Pro-
gramming Language)。叙述语言标明内容和位置,而程式语言描述一种产生结果的过程。
2. "Java语言轻易学习和使用,不像C、C++和其它程式语言"
Java是一种程式语言。Java轻易学吗?Java或许是比C或C++轻易学,但仍是一种程式语言,而不是
一种叙述语言。
3. "Java码是可携带的,但C及C++不是"
Java原始码(Source Code)是比C语言来得可携带性一点,差别在於Java的物件码。Java码在一种机
器上进行编译,而能在所有的机器上执行,只要那部机器上有Java解译器。
4. "Java能被拓展而在机器上执行任何事情"
理论上,Java Applet (Java小应用程式)能做任何事情,如模拟3D VRML模型、播放电影、产生声音
....等。但事实上,一个小应用程式(Applet)仅能在那一页上被执行,而无法在那一页之外执行。
同时,Java亦受限於程式库的功能。
5. "Java是适合於建立大型的应用程式"
假如Java适合於大型程式,则Java就不适合应用於Web浏览器了。第一个商业性的Java Applets
(Applix´s Java-Based Spreadsheet)并不是全然使用Java,它只使用Java作为使用者介面,而所有
的处理工作,是用CGI码。
6. "Java是可解译的,Basic是可解译的,因此Java=Basic"
虽然Java的确是使用解译器,但事实上,Java则与C或C++等完全编译语言较为相近,但与
Basic或APL等完全解译语言较不相近。
7. "Java删除了CGI命令稿(Scripts)和程式的需求"
Java Applets将会取代部份CGI的用途。在有些情况,Java Applets能够取代一些伺服器端的码
(Server-Side Code),但大多数的情况,基於安全性理由或是效能的考量,Java仍无法全然取代
CGI Scripts。
8. "Netscape´s Javascript是与Java有相关"
除了名称之外,Java和JavaScript是有一点点相关。JavaScript是一种命令稿语言,是可以在HTML
页中使用。Java码并未出现在HTML中,而在HTML中有一个链结来链结编译码组。Java和JavaScript
之间的关系就如同C语言和C Shell一般。
本页叁考资料:
1. The Java Language: A White Paper.
2. The HotJava Language: A White Paper.
3. Hank Shiffman, Making Sense of Java.
4. HotJava、Java与Internet,升阳月刊,1996年1月号,美商升阳电脑台湾分公司。
5. Java语言白皮书,升阳月刊,1996年2月号,美商升阳电脑台湾分公司。
6. Kestenbaum, Peter, (1995), Conceptually Understanding JAVA in ten
Minutes without Getting Lost in Cyberspace, JAVA BOOK, SUN Microsystems,
Inc., October, 1995.
7. 江福松、陈弘祥、叶苹,Java入门,基峰资讯公司,1996。
[]
更多精彩
赞助商链接