国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

跳入JAVA

2019-11-18 11:50:27
字體:
來源:轉載
供稿:網友

  我看到,很多人在問:我是否應該學習java;我看到,很多人在問:JAVA和C++哪個更好?
  
   我想我沒有資格回答這些問題。但我想CUJ有資格。本文出自CUJ的import.java.*專欄 ——以CUJ而開設JAVA專欄,這本身已經證實廣大C++程序員對JAVA的重視程度。究竟哪個好?好在何處?是否應該學?應該怎樣學?應該學什么?……太多的問題。希望本文能起拋磚引玉之效。希望本文的讀者能親自看看這些專家指點,從而形成自己的判定。
  
   本文作者ChUCk Allison對程序設計有豐富的經驗,并且有多年使用C++的歷史。而我也是一個C++的狂熱愛好者。因此,我想這篇文章應該很對你——C++開發者——的胃口。
  
  一次JAVA旅游的質量取決于本次旅游的向導。我們是幸運的,Chuck Allison是一個經驗豐富的向導,無論對于C++還是對于JAVA都是。
  
  --------------------------------------------------------------------------------
  
   再一次向你問好。“import java.*”歡迎你們——C/C++程序員們——來學習JAVA。在你以前的案例中,你可能有很多理由想要這樣做。JAVA遠不止是一種增強WEB頁面的機制。它是一種用途廣泛的面向對象程序設計語言,它建立在對軟件工程工業的許多需求之上。當你開始學習JAVA之后,你將成為一個更好的C/C++程序員,因為JAVA的語法與C++非常相似。并且,假如你是一個喜歡面向對象編程原則的C++程序員,你將感到象是回到了自己的家。就如同很多C程序員選擇了C++一樣,許多C++程序員正在尋找自然轉向JAVA的途徑。
  
   我將分析JAVA所有的特征:語言、庫、以及思想,但是從C/C++的視角。這意味著我不是一個JAVA的盲目信仰者(可能是一個狂熱愛好者,但不是一個盲目信仰者:-))。實際上,我對C++的把握和愛好可能在某些時候讓我偏向另一個方向。這也意味著我將可能做一些壞不堪言的事情:我將比較這兩種語言并嘗試說明一些有用的東西。在這篇文章中,我只提供對JAVA的一個大概的觀察,而把具體的教學留在將來的部分中。但首先,我讓你看一點背景。
  
  關于“騙局”的一些話
  
   在1984年與Apple MacIntosh的聯系中,我第一次聽到了“面向對象”這個術語。當我問“面向對象是什么意思”時,他們胡亂說了一通關于屏幕上的圖形對象的話。這就是一個神話:圖形化用戶接口讓某些東西變得面向對象。
  
   在20世紀80年代中期,“面向對象”這個術語被濫用,以至于刺穿這個騙局唯一的方法就是:找到一種毫無疑義的面向對象編程語言并使用它。當我在1987年發現LISP時,我開始領悟面向對象的思想,并對“語言對封裝、繼續和多態的支持”有了第一手的經驗。
  
   在那一年的晚些時候,我參加了某個關系數據庫治理系統(relational DBMS)廠商的現場銷售演示會。我已經非常精通他們的產品,并且我是我們公司內的“專家”。在演示會的過程中我聽到這樣的說法:“<產品X>是面向對象的。”我跑到前面問那位演示者:“你說<產品X>是面向對象的,這是什么意思?”然后我在整個演示會中再也不說一句話。其后的討論表明,<產品X>根本不是面向對象的——它只是他們經常說的一種東西:騙局。
  
   你也許知道,70年代的時髦詞匯是“結構化設計”,它最終在80年代的工業中得到了很好的應用;80年代的騙局是“面向對象”,而它正是今天的正統。那么,今天的騙局是什么?模式,我猜;以及,是的,JAVA。
  
  基礎 vs. 騙局
  
   C++的聲望在沒有任何推銷的情況下如此爆炸性的增長,這是件有趣的事。在1982年,C++的設計者Bjarn Stroustrup面臨一個困難的選擇:對“C with Classes”(后來被命名為C++)的用戶的支持吞噬掉了他一大半的時間,但還沒有足夠的用戶讓他有資金成立一個正式機構。對于這種情況,Bjarne說:
  
   “我看只有兩種脫離困境的辦法:
  
  1. 停止支持C with Classes。
  2. 開發一種更好的新語言,使它擁有足夠多的用戶,以獲得足夠的資金來支持和發展一個機構。當時我估計至少需要5000個工業用戶。
  
   第三種選擇——通過推銷(騙局)來增加用戶數量——從來沒有在我的腦海中出現過[1]。”
  
   在1991年,C with Classes誕生后的第12年,C++的用戶數量已經達到了四十萬,而且這個數量每7.5個月就翻一番[2]。(一點點數學知識告訴我:假如這個增長率一直保持下去,到2000年時地球上的每個人都將是C++開發者——一個真正可怕的Y2K問題!)
  
   因為沒有計劃周密的銷售計劃,而且,因為C++是如此“復雜的語言”(也許我們曾經聽到過這種說法),我們可以相當有把握的說:C++只靠它的技術優勢成為了面向對象開發工具的領袖。就和以前的C語言一樣,C++從基礎做起,它滿足開發者的熱情,它不斷增強自己的能力以滿足更多的需要。
  
   但是,C++快速成長的故事與JAVA的故事沒有任何相似之處。
  
  JAVA人
  
   在Bruce Eckel——聞名的作者和教授——的JAVA公開討論會上,他送給每個與會者一件T-shirt。當你穿上它時,在你的左胸上有一個圖案:一個原始人正為生活而奔波。Bruce將這個人叫做“JAVA人”,因為他正代表著你和我和大多數現代計算機工業的從業者——我們正試圖跟上JAVA的浪潮。稍微瀏覽一下JAVA庫,你就會看到這個浪潮發展的速度。當太陽微系統公司(SUN)在1995年中期推出JDK(JAVA開發包)版本1.0時,它的庫里有212個類和接口。其后1997年的1.1版有504個。現在的1.2版JDK庫中有1592個類和接口(以及13635個方法),而且它還在beta測試階段中!而且,好象幾個新增加的語言特性(內嵌類、新的事件模型、Swing組件、可插入VM體系等等)還不足以讓我們的腦子和手指忙亂似的,JAVA的每個版本還都會反對以前的許多類和方法——我們還必須忘掉他們。
  
   美國公司在應用新技術方面都有略微保守的傳統。我所工作過的三家大公司都只首先選用ANSI標準定義過的編程語言。這就是我在1978年我的第一份工作中仍然使用Fortran的原因。直到1986年,我才偷偷在我的工作中引入了C語言——C語言的標準化在幾年之后才完成,但它當時已經有16年的歷史、而且非常穩定。我第一次能正式在工作中使用C++是在1994年——在它被發明之后的第15年、公開之后的第9年、標準化之后的第5年。一般來說,IT公司只使用那些“得到驗證的技術。”
  
   那么,為什么幾乎所有主要的軟件廠商都不顧新的JAVA語言的不穩定性而飛快的提供了JAVA工具來跟上需要呢?為什么JAVA能對這么多通常謹小慎微的大公司造成如此的影響呢?相關的事件還包括:我在這個春天向一家非常保守的公司傳授JAVA的知識,這樣他們可以用JAVA來重寫他們的國內記帳系統。這是為什么?
  
   當然,答案很簡單:Internet。當訪問Internet已經成為家庭日常時,JAVA來了。“自由發布”當然沒有錯,但正是Internet讓“自由發布”切實可行。添加applet的能力是無可爭議的。applet讓靜態的頁面活動起來,這從我國的CFO們手中誘惑出了無數的美圓。
  
   所以,騙局——呃,我是指,推銷——是答案中理所當然的一部分。在1996年我與Bjarn Stroustrup的一次會見中,我問他對“JAVA革命”有什么想法。他回答我:
  
   “假如我沒有兼容C語言的約束,我肯定也不會設計出JAVA這樣的語言。可是,SUN能靠它獲得如此多的美圓,這讓我感到驚奇。這是不會被忘記的一課,并且這將是單個程序員、小公司和學院的惡兆。假如人們堅持要對C++和JAVA進行比較——看起來他們正在這樣做——我建議他們看看D&E(The Design and Evolution of C++),看看C++為什么是現在這個樣子,并考慮這兩種語言在設計標準中的效果。C++和JAVA的差異不止是表面上的,并且不可能有哪個語言擁有所有的優點。[3]
  
  牛肉在哪里?
  
   推銷可能可以吸引我們的注重力,但不能保證持續的成功。盡管JAVA革命仍在繼續,但現在javascript和GIF動畫已經做了我們以前用applet做的大多數工作。JAVA獲得持續的成功,那是因為在騙局的背后它有自己的價值。JAVA對程序員有吸引力,因為它是一種干凈的、設計良好的軟件開發工具,并且學習它不是“太困難”。JAVA對開發投資者有吸引力,因為它強調對象和包,還因為它的虛擬機體系,因為它支持可控的、劃算的、(通常)安全的應用程序建造、發布途徑。除了操作系統廠商之外,所有人都喜歡“編寫一次,到處運行”的概念。而且JAVA對網絡編程舉世無雙的支持讓它在電子商務領域中獲勝。讓我們面對這樣一個事實:JAVA很酷!
  
   但是,不要就這樣把你的C++編譯器擱置起來。JAVA不可能做所有事。這也就是它支持JNI(JAVA固有接口)的原因。在運行速度確實重要的地方,C++仍然是勝利者(至少現在是)。而且,盡管SUN已經發布了嵌入式JAVA的規范,你仍然可以肯定:JAVA取代C作為嵌入式編程混合語言還需要一段時間。
  
   另外,JAVA并不象你想象的那么輕易學習。在我前面提到過的為某公司進行的教學的第四天,相當數量的學生帶著疲憊的表情說:“伙計,這并不象我想象的那么輕易!”(在我的記憶中,那天我們在談論對象克隆、反射和I/O。)我想Larry O'Brien做出了最好的總結,他說:“說‘JAVA比C++簡單’,就好象說‘2000年比珠穆朗瑪峰短’一樣。”JAVA是復雜的,但復雜的方式與C++不同。它是否真的更簡單,這取決于你和你的需要。解決實際問題從來不會輕易,不管你使用什么工具。
  
  缺少了什么?
  
   JAVA來自Oak,一種剝除了C++的一些特性以用于嵌入式系統的語言。雖然你現在從JDK里得到的JAVA比Oak大(并且不再適用于嵌入式應用),但JAVA還是不支持C++的下列特性:
  
   顯式指針和引用
   delete運算符
   析構子
  &

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英超| 永顺县| 白山市| 玉门市| 遂平县| 固原市| 定远县| 微博| 平阴县| 将乐县| 商都县| 高唐县| 德阳市| 延长县| 大姚县| 哈巴河县| 乡宁县| 正定县| 淄博市| 酉阳| 斗六市| 海原县| 安岳县| 霍山县| 横峰县| 德阳市| 江门市| 革吉县| 中山市| 祥云县| 巴彦淖尔市| 柳河县| 岚皋县| 松滋市| 尼木县| 新宾| 兴业县| 南投县| 仲巴县| 万州区| 大港区|