ããJAVAä»ç»
ããä¸ãåè¨
ãããJavaãä»1995å¹´çæåå¼å§å¨è®¡ç®æºä¸çå°±åå°äºé«åº¦æ³¨æï¼ç¹å«æ¯å¨Internetåå¤ åªä½(Multimedia)ç¸å
³äº§åç±»æ¹é¢ãJava为ä½æå¦æ¤è¿ä¹å¤§çé
åï¼äººä½å¦æ¤çæ¯å»ï¼ Javaå¨å
¨çèµè®¯ç½(World Wide Web, WWW )å°ä½å°±å¦åçµåè¡¨æ ¼(Spreadsheet)ä¸ä¸ªäººè®¡ ç®æº(PC)çå
³ç³»ãé£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çåå±åå²ä¸Javaè¯è¨ä»ç»ï¼å
¶æ¬¡ä¾åºæ¯Java AppletåHotJavaçç®åä»ç»ã
ããäºãJava FAQ
ããä¸é¢ä»¥é®ççæ¹å¼æ¥è¯´æ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"æ¯ç¾å½SUN计ç®æºå
¬å¸Javaåå±å°ç»åç»æ æ°æ¬¡çæ¿ç讨论ä¹åæ被éæ©åºã çå¨(Liveliness)ãå¨ç»(Animation)ãé度(Speed)ã交äºæ§(Interactivity)ä¸ºå½ åéæ©ååæ¶æ欲表达åºçç¹è²ã"Java"æ¯å¨æ æ°ç建议ä¸è±é¢èåºçï¼è"Java" ä¸æ¯ç±å 个ååçé¦åæç»æï¼ èæ¯ä»è®¸å¤ç¨åºè®¾è®¡å¸éç±ççè
¾è
¾ãé¦æµåå¡ä¸ 产ççµæçã
ããè°å¼åäºJavaï¼(Who) Javaæ¯ç¾å½SUN计ç®æºå
¬å¸Javaåå±å°ç»å¼åçï¼æ©æçæå(绿è²å·¥ç¨)æ¯Patrick Naughton, James Gosling, & Mike Sheridanï¼èç°å¨å¤§å®¶è¾ä¸ºçæçæåæ¯James Goslingã
ããå¨é£éå¼åäºJavaï¼(Where)
ããä¹å°±æ¯é®Javaçåºçå°ï¼çæ¡æ¯ç¾å½ã
ããå¦ä½å¯ä»¥æ¾å°æéçJavaä¿¡æ¯ï¼(How to)
ããå¨ç½è·¯ä¸ï¼æ¨å¯ä»¥è¿å°Sunå
¬å¸çJava WWW ç½ç«ï¼URLæ¯
http://java.sun.com/ï¼ææ¯
http://www.javasoft.com/ãå¨é£éå ä¹å¯ä»¥æ¾å°æ¨æéè¦çææ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ä¸è¬ã