什么叫JAVA
发布时间:2025-05-21 15:06:42 发布人:远客网络
一、什么叫JAVA
『Java』从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和多媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计算机(PC)的关系。那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的发展历史与Java语言介绍,其次依序是Java Applet和HotJava的简单介绍。
下面以问答的方式来说明Java的发展历史与其背景(下列内容整理自 Java FAQ list and Tutorial和The Java Language: A White Paper,读者若欲深入了解,请自行参阅原文):
最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品(Consumer Electronics),所使用的语言是C、C++、及Oak(为Java语言的前身),后因语言本身和市场的问题,使得消费性电子产品的发展无法达到当初预期的目标,再加上网络的兴起,绿色计划也因此而改变发展的方向,这已是1994年了。
为何称之为Java?(Why)"Java"是美国SUN计算机公司Java发展小组历经无数次的激烈讨论之后才被选择出。生动(Liveliness)、动画(Animation)、速度(Speed)、交互性(Interactivity)为当初选择名字时所欲表达出的特色。"Java"是在无数的建议中脱颖而出的,而"Java"不是由几个单字的首字所组成,而是从许多程序设计师钟爱的热腾腾、香浓咖啡中产生灵感的。
谁开发了Java?(Who) Java是美国SUN计算机公司Java发展小组开发的,早期的成员(绿色工程)是Patrick Naughton, James Gosling,& Mike Sheridan,而现在大家较为熟悉的成员是James Gosling。
也就是问Java的出生地?答案是美国。
如何可以找到所需的Java信息?(How to)
在网路上,您可以连到Sun公司的Java WWW网站,URL是,或是 。在那里几乎可以找到您所需要的所有Java信息,但是语言多少是一个障碍,至少对某些人而言;没关系,目前国内已有很多个网站提供中文 Java信息。在清华和中科院的FTP站点上有不少有关资料。想象以后应会有更多的站点提供相关信息。
如何才能看到Java的效果?(How Do I)
首先您需要有含有Java解释器的浏览器(Browser),例如:Netscpae公司的Netscape Navigator 2.0以上或是Sun公司的HotJava浏览器,对个人计算机使用者而言,操作系统需是Windows 95或是Windows NT。
Java是因为撰写C++语言程序时的困难而研制开的,起先,只是一个消费性电子产品大计划中的一部份,C++语言是当初被考虑采用的,但从一开始的编译问题一直到最后的一连串问题迫使得放弃C++语言,而有Java语言的产生。Sun是要Java成为一个简单(Simple)、面向对象的(Object Oriented)、分布式的(Distributed)、解释的(Interpreted)、健壮的(Robust)、安全的(Secure)、结构中立的(Architecture Neutral)、可移植的(Portable)、高效能的(High Performance)、多线程的(Multithreaded)、动态的(Dynamic)的程序语言(摘译自 TheJava Language: A White Paper, 1995)。
在Sun的Java语言白皮书中明白地说明上述Java语言的技巧。若以木工为比喻,一个面向对象的木工,他(她)最主要的重点是即将要做的木椅子,其次才是所需要的工具;反之;一个以非面向对象的木工,他(她)所关心的只是工具。最近的即插即用(Plug and Play)亦是面向对象设计的重点。分布式的(Distributed):Java有一个很周全的程薪录JAVA介绍。
『Java』从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和多媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计算机TTP和FTP等TCP/IP通讯协定相配合。Java应用程序(Applications)能在网路上开启及连结使用物件,就如同透过URLs连结使用一个本地文件系统(Local File System)。健壮的(Robust):由Java所编写出的程序能在多种情况下执行而具有其稳定性。Java与 C/C++最大不同点是Java有一个指针模型(Pointer Model)来排除内存被覆盖(Overwriting Memory)和毁损数据(Corrupting Data)的可能性。
安全的(Secure):Java是被设计用于网络及分布式的环境中,安全性自必是一个很重要的考虑。Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病毒的侵入和破坏行为的发生。
结构中立的(Architecture Neutral):一般而言,网络是由很多不同机型的机器所组合而成的,CPU和作业系统体系结构均有所不同;因此,如何使一个应用程序可以在每一种机器上执行,是一个难题。所幸,Java的编译器产生一种结构中立的目标文件格式(Object File Format);这使得编译码得以在很多种处理器中执行。
可移植的(Portable):原始资料型式的大小是被指定的,例如"float"一直是表示一个32位元IEEE 754浮点运算数字,因绝大多数的CPU都具有此共同特征。程序库属于系统的一部份,它定义了一些可移植的程序接口,Java本身具备有很好的可移植性。
解释的(Interpreted):Java解释器能直接地在任何机器上执行Java位元码(Bytecodes),因此在进行程序连结时,时间的节省,这对于缩短程序的开发过程,有极大的帮助。
高效能的(High Performance):Java位元码迅速地能被转换成机器码(Machine Code),从位元码转换到机器码的效能几乎与C与C++没有分别。
多线程的(Multi threaded):Java语言具有多线程的功能,这对于交互回应能力及即时执行行为是有帮助的。
动态的(Dynamic):Java比C或C++语言更具有动态性,更能适应时刻在变的环境, Java不会因程序库的更新,而必须重新编译程序。
此外,Hank Shiffman(Making Sense of Java)亦针一般对Java的错误看法及观念提出他的说明,特在此摘译如下:
"Java是一种编写Web Pages的一种语言,就如同HTML和VRML一样"事实上,Java并不像是HTML此一类的描述语言(Description Language),而是一种编程语言(Programming 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一般。
二、你知道java的运行原理是什么吗
1、Java这一语言的执行过程也遵循这样的过程:源代码--->机器码。但是,从源代码到机器码之间,究竟经过什么样的过程,则是Java独一无二的了。宽泛地讲,Java源代码(.java)经过java编译器(javac.exe)编译之后,并没有直接转化为机器码,而是转化成一种中间格式,成为字节码(.class),字节码再经过java虚拟机转化成特定CPU架构的机器码。也正是因为这一中间物,java才有所谓的跨平台。在windows平台上编译好的字节码,copy到linux平台后,经过为linux而设计的Java虚拟机解释后即可执行。跨平台这一特征,是通过字节码和JVM来实现的。
2、因此,想搞清楚java程序到底是如何运行的,重点在于弄明白字节码是如何被转化成跟CPU架构相关的机器码然后被执行的。也就是要理解JVM到底是如何工作的。在了解JVM之前,我们再跳出来一下,先看看什么是虚拟机。所谓虚拟机,我是这么理解的:用软件的方式模拟出跟硬件类似的环境,比如说寄存器、存储器等等。当然,所有最终的工作还是由原来的CPU来完成。比如说VirtualBox这个虚拟机产品,它其实就是一个应用程序,用某种编程语言编写的应用程序。当运行这个应用程序时,它会要求操作系统给它独立施展手脚的空间:给我一些内存,给我一定的CPU时间片,然后不用管我了。你可能会问,寄存器是硬件啊,它怎么能划分啊,难道是时间划分?不是的,像内存这样的硬件,可以给虚拟机一块独立的内存块,但是寄存器之后的,则需要用“模拟仿真”的方式来模拟。OK,回到Java虚拟机。到底什么是Java虚拟机,很难有一个十分明确的定义,狭窄一点说,它就是一个应用程序,大部分用C++编写的。宽泛地说,它就是执行字节码的一整个环境。
三、为什么要学Java
在 Java技术诞生后的这五年,Java变成了大家朗朗上口的名词,种种的说法中,有些是事实,有也一些夸大不实。你可能会想知道:你该不该去学 Java,我给你的答案是肯定的,请听听我的说法。 Java是什么?你必须先了解 Java究竟是什么?当人们提到「Java」,他们指的可能是: Java程序语言:一个类似 C++或 Smalltalk的对象导向程序语言。学习 Java程序语言类似学人类语言,都有一套规则和文法。 Java虚拟机器(JVM):用来执行 Java程序。JVM有许多平台的版本,比方说 Linux和 Windows版。有了 JVM,Java程序就可以在不同的平台上执行,也就是所谓的「写一次,到处都可执行」。 Java APIs(指的是函式库的程序设计接口):是一组预先定义好的类别,可以在你的程序中直接使用。这些东西是免费的,功能包含了像是档案存取,网络读写,图形接口等等。当人们提到「学习 Java」,通常他们指的是 Java语言和 API。大家可能对 JVM所知不多,虽然对 JVM有基本的认识对 Java的学习是很有帮助的。对象导向程序设计对象导向程序设计已经广为接受,凌驾于传统的程序导向程序设计。对象导向程序设计带来许多额外的威力,但对象导向的学习曲线也较陡。如果你已经懂一套对象导向语言,那么你学 Java就会容易多了。如果你不了解对象导向程序设计,你有一个漫长的旅程必须经历。以我自己来说,我花了约四年的光阴,才领悟了对象导向的精髓,不过这四年我的学习是蛮随兴的。如果你正在上好老师的课,或正埋首于一堆好书之中,或许可以缩短到几个月就够了。千万别轻忽对象导向观念的学习,因为 Java语法好学,但是要写出良好的对象导向程序可不容易。学习Java的理由中,有些是技术性的,有些则是非技术性的。我先描述两个程序的特色(垃圾搜集和例外处理),然后我告诉你:为什么在程序设计的领域中,Java几乎是必备的技能。我也会告诉你 Java开发工具的信息和它们吸引人的售价。感谢老天,有「垃圾收集」真好!使用C++,你可能一不小心就写出会当机的程序;如果使用 Java,情况就大不相同了。C++程序的头号 bug是内存配置的失误。C++的程序员很辛苦,必须直接配置一块内存,这块内存不用时还必须主动归还。这听起来简单,做起来可不容易,所以 C++的程序常常会耗尽内存。 Java就不同了。虽然你仍需要主动配置内存,但此内存一旦不再使用时就会自动释放,这就称为「垃圾收集(garbage collection)」。垃圾收集机制使得写程序时轻松许多,虽然因此执行时效率稍微变差,但影响可能轻微得你根本感觉不到。例外处理机制让程序更稳固不管是什么程序语言,都可以轻易地写出很糟糕的程序,但是使用 Java想写出很糟糕的程序就不容易了。原因之一是垃圾收集,原因之二是「例外处理机制」。良好的程序员写出来的程序应该在一些意外状况发生时程序依然正常。档案无法开启,怎么办?万一读档读到一半时出问题,怎么办?如果你是用 C++或其它语言,你可能会疏于考虑而没进行这些意外状况的处理。你可能会辩白:「我只是在试试看这样写能否行得通,我稍后会回过头来把程序改得更周延」。但结果通常是:程序执行正常后,你又会忙着写新的程序,这么一拖后来就忘了回头处理还不完整的部分。问题终究还是会爆发出来,你终究还是要面对烂摊子。 Java强迫你在一遇到有可能出问题的地方就要准备好因应之道。Java的 method可以丢出例外,用来通知呼叫者程序出状况了,这是相当好的机制。即使你的程序要开启档案,你都必须在程序中写好例外处理方式。到处都是 Java到处都可见到 Java,这是一大好处。如果你靠写程序为生,你可能迟早都会接触到 Java。Java已经渐渐地渗透到各领域,你可以写出 Java servlet,将其挂在 Apache或其它网页服务器上,你可以写出 Java applet,在网页浏览器上执行。你甚至可以用 Java写出数据库的 stored procedure,然后安装到 Oracle 8i上。我打赌,你身边使用 Java的同事也会渐渐多起来。1997年开始,许多大学已经用 Java取代 C当作程序设计教学的语言。如此一来,Java变成了程序员共通的语言。如果学习 Java所为你带来的唯一好处是方便和同事沟通,那么也值得。最后,我要提的是:「写一次,到处都可执行」。Java早期版本(1.0和 1.1)比较无法完全跨平台,但现在就好多了。如果你想散布一个程序到多个平台,又不想改写大部分的程序,那么 Java是绝佳的选择。Java 2现在已经可以在 Linux、许多 Unix、和 Windows上执行了。 MacOS 9的 Java仍在 1.1时代。然而,Apple的下一代操作系统 OS X是以 Unix为核心,这使得移植软件的过程大大简化了。我不知道 Apple官方的说法为何,但是在今年三月的时候,我就已经看到 OS X developer release 3上面执行着 Java 2。我很有自信 Java 2将可以在 Linux、OS X、和 Windows上执行,这样已经涵盖了大部分的计算机世界。 Java免费 Sun提供 Java相关的工具,让你可以开发与执行 Java程序。你无须支付授权费,你也不用花钱买 Java开发工具。当然,Sun这么做自有他们的如意算盘,Scott McNealy(Sun的老板)恨不得能征服世界,但是不管怎样,我们的的确确是不用付钱给任何人就可以享受 Java。而且,Java的 API是珍贵的宝藏,让我们可以轻易地写出功能强大的程序。想写网络程序?已经有 API了!想连接数据库?已经有 API了!想写 GUI程序?已经有 API了!或者是想做数字影像处理、音乐文件处理、字符串剖析、数字签章?通通有 API了!身为一个程序员,有这么多好用的 API真的是再高兴不过的事了,这些 Java API让我们不用「重新发明轮子」,省却不少功夫。Java有这么广泛、标准、先进的 API,简直是让 C++程序员忌妒死了。C++程序员常要花时间学一些 C++类别库(比方说 MFC),然后到 Linux上又得归零学另一套(因为 Linux上没有 MFC)。一旦你学会了某 Java API,到哪儿都一样不会变动,不用重学。最后,Java的信息文件都可从网站上免费取得。如果你有网络而且有空,你可以直接透过网络学习对象导向、Java语言、以及 Java API。Sun在网站上放了一大堆很棒的线上教材。如果你习惯看书来学习,市面上有一堆 Java的书可以参考(比方说,我写的 Learning Java)。日光浴 Java比其它语言来得有趣许多。Java程序语言有许多「防呆装置」让你不会在程序中犯下大错,所以你可以很快地把程序写完,而如果使用其它语言必须要花更多时间。一份有趣的资料显示:用 Java写程序比用其它语言快了四到十倍。我知道这听起来很不可思议,不过你可以问问周遭懂 Java的人看看。不用花很多时间找 bug,意味着你可以在海滩上休息更久,意味着你可以接受阳光的日光浴而非「屏幕的日光浴」。用 Java为你赚进的银两为自己买一副太阳眼镜吧!