JAVA給你講它的故事

計算機語言若是你將它當作一個產品,就像咱們平時用的電視機、剃鬚刀、電腦、手機等, 他的發展也是有規律的。

任何一個產品的發展規律都是:向着人更加容易使用、功能愈來愈強大的方向發展。java

    那麼,咱們的計算機語言的發展也是這樣,向着人更加容易使用,即更加容易寫代碼、更加容易實現現實邏輯的方向發展。套用奧林匹克的口號「更高、更快、更強」。那麼計算機發展的主線能夠總結爲四個字:「更易、更強」。c++

    這個」更易、更強」的主線,也適用於任何的產品。若是,讀者朋友之後要開公司創造本身的產品或者服務(服務也是一種產品)。你的產品是否符合」更易、更強」這個規律,也決定了產品可否取得成功,可否擊敗現有市場上同類型的產品!固然,也直接決定了你可否發財,可否養得起老婆孩子啦!程序員

    計算機語言通常意義上劃分爲:編程

blob.png

第一代語言:機器語言

    咱們都知道計算機的基本計算方式都是基於二進制的方式。以下就是一段典型的機器語言代碼:c#

 

blob.png

    這種代碼是直接輸入給計算機使用的,不通過任何的轉換!固然,在計算機剛發明的時候,計算機也是稀罕物,人卻有不少。物以稀爲貴嘛,人就只能遷就計算機,採用了這樣一種計算機能夠直接識別的代碼。固然,這種代碼計算機很是受用,不須要作任何轉換,直接執行,太爽了!windows

    但是,人就不爽了!這樣的代碼,又有幾我的能寫,又有幾我的能讀懂!若是用來解決最簡單的計算問題,湊合着用,沒問題。若是要解決複雜問題,須要寫幾千行、幾萬行這樣的代碼,估計誰寫誰瘋。若是如今咱們仍然使用第一代語言,我相信全部程序員最終只能將精神病院做爲最後的歸宿了。緩存

第二代語言:彙編語言

    爲了解決機器語言沒法讀懂的問題。很天然,咱們就想到能不能使用人能夠讀懂的單詞來代替一些二進制指令和數據,方便咱們人去讀、編寫代碼。因而,彙編語言誕生了。他使用了大量的助記符來代替二進制指令,方便咱們人去編寫代碼。以下是一段典型的彙編語言代碼:安全

blob.png

    顯然,這樣的代碼,要比起機器語言來,對於咱們程序員來講,爽了不少,至少不須要再去背誦那些難記的二進制指令了!因而,有了更好的武器,意味着咱們能夠解決更復雜的代碼,寫個幾百行、幾千行彙編語言代碼也成爲不那麼複雜的事情。服務器

    【注】如今仍然有不少領域在使用匯編語言,好比:操做工業機器人、單片機編程、甚至某些計算機病毒的編寫等。網絡

第三代語言

     隨着晶體管、集成電路的出現,計算機的功耗愈來愈小、速度愈來愈快,計算機很快深刻到了各行各業。有個很著名的定律叫作摩爾定律,他深入的展現了計算機發展的規律:

「當價格不變時,集成電路上可容納的晶體管數目,約每隔18個月便會增長一倍,性能也將提高一倍。換言之,每一美圓所能買到的電腦性能,將每隔18個月翻兩倍以上」 

摩爾定律在咱們身邊有着實實在在的體驗,咱們如今手邊用的電腦、手機比起十年前強大的不少倍,可是價格實際上確愈來愈低!十年前,北京房價是3000一平的地方,如今漲到了4萬,漲了十多倍。十年前,一個筆記本須要兩萬人民幣,如今只須要幾千元,可是性能確更好。咱們多麼但願,房價也能遵循摩爾定律啊!

這樣,隨着計算機深刻更多的企業、單位、甚至更人。咱們很天然的就但願使用計算機解決咱們身邊的問題。這種需求愈來愈明確,愈來愈複雜。彙編語言在體系結構設計上的缺陷,根本沒法勝任解決複雜問題。使用匯編語言寫幾萬行代碼,幾十萬行代碼,那真的能夠稱之爲」噩夢」.

因而,各類各樣,結構化設計更加優良的第三代語言誕生了。例如:C語言、Fortran、cobol、pascal、ada、c++、java、c#。

第三代語言數量衆多,大致上分爲:面向過程和麪向對象兩大類。C語言是典型的面向過程的語言。C++、JAVA是典型的面向對象的語言。

你們在學習過程當中,不要有這樣的誤解。學了面向過程會對學習面向對象有很差的影響,影響思惟。那純屬扯淡,只能說明你面向過程根本沒入門! 事實上,面向過程和麪向對象是相輔相成的。在面向對象編程中,也離不開面向過程。關於,面向過程和麪向對象的區別,咱們將在面向對象章節中詳細說明。

C語言

    第三代語言中,C語言是最重要的!能夠稱之爲「現代語言的鼻祖」。其餘不少語言都跟C語言有千絲萬縷的聯繫!

C語言是一種計算機程序設計語言,它既具備高級語言的特色,又具備彙編語言的特色。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已前後被移植到大、中、小及微型機上,它能夠做爲工做系統設計語言,編寫系統應用程序,也能夠做爲應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用範圍普遍,具有很強的數據處理能力,不只僅是在軟件開發上,並且各種科研都須要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用好比單片機以及嵌入式系統開發

C++語言

顯然就是C語言的升級版,看名字咱們就知道了,就是C語言面向對象的版本!在C基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C++。 C++進一步擴充和完善了C語言,成爲一種面向 對象的程序設計語言。

JAVA語言

SUN公司的JAVA也是以C/C++爲原型開發的,甚至有人將JAVA稱之爲「C++-」(C加加減).看名字就知道是將C++中某些不太好用的地方砍掉!

Object-C語言

如今IOS和Mac開發中的主流語言。 根據C語言所衍生出來的語言,繼承了C語言的特性,是擴充C的面向對象編程語言。它主要使用於Mac OS X和GNUstep這兩個使用OpenStep標準的系統,而在NeXTSTEP和OpenStep中它更是基本語言。 

C#語言

微軟發明的一種但願替代JAVA的語言。蓋茨曾經很是承認JAVA,,「JAVA是我見過最好的語言」,所以,微軟跟JAVA曾經有一段蜜月期,合做很是好。可是後來因爲版權糾紛,鬧掰了。蓋茨一怒之下,就要搞一個比JAVA更好的語言。所以,咱們在C#中能夠看到大量的JAVA中有的特性,很是明顯的」山寨」,固然也能夠稱爲」微創新」。創新都是源自」山寨」。可是,微軟山寨了JAVA的細節,可是沒有學到JAVA的精華,即跨平臺。固然,這跟微軟自己的公司特性有關,微軟名字叫作:Microsoft,可是咱們知道他的核心產品是windows,因此他但願將他全部的產品都跟windows綁定再一塊兒,這樣C#就失去了JAVA的跨平臺的優點。

附:貝爾實驗室(IT行業的聖地)

晶體管激光器太陽能電池、發光二極管、數字交換機通訊衛星、電子數字計算機、蜂窩移動通訊設備、長途電視傳送、仿真語言、有聲電影立體聲錄音,以及通訊網、C語言、C++語言等許多重大發明的誕生地。

附:歷史上最古老的IT公司IBM

IBM(International Business Machines Corporation),國際商業機器公司,或萬國商業機器公司的簡稱。總公司在紐約州阿蒙克市,1911年創立於美國,是全球最大的信息技術和業務解決方案公司。

附:微軟的前景堪憂

微軟的核心產品是windows. 微軟的成長基本上跟我的電腦PC的普及和發展是同步的。可是,隨着手機、平板電腦的發展,咱們發現我的電腦的地位明顯的在降低,這也意味着 windows的地位在顯著的降低。「成也PC,敗也PC」. 若是,微軟不在手機和平板電腦上發力,將不可避免的淪爲」第二個諾基亞」。

附:山寨和創新

任何一種創新都不是憑空天上來的, 都是基於之前的舊事物發展的。都是一種」山寨」. 咱們看到計算機語言的創新史其實就是一部山寨史。固然,若是把別人的跌出拿來只換個名字那叫耍流氓、不要臉,是真的」山寨」。 若是把別人的東西拿來進行改進,作的更好,那才就叫」創新」。

附:到底應該學哪門語言

    不少童鞋會有疑問,到底應該學什麼語言呢? 糾結了很長時間,仍然沒有下手。個人說法是,JUST DO IT!學了再說。其實,天下文章一大抄,語言之間當然有差別,可是隱藏在語言背後的編程思惟方式沒有差異。若是你精通了一門語言再去學其餘語言,很快就能夠上手。

糾結是個壞毛病。小時候,總是糾結於之後作愛因斯坦呢仍是蓋茨呢?糾結了不少年。長大了,才發現真的是想太多了!

JAVA語言的發展史

SUN公司介紹

       SUN公司全稱是:Stanford University Network.  SUN公司是從斯坦福大學孵化器出的高科技公司。創立後,曾經市值名列IT公司第一位。在2001年時,市值2100億美圓,遠超過google公司、IBM公司。SUN公司不只戰勝了包括 IBM 在內的所有工做站(Work Station)和小型機(Mini Computer)公司,並且依靠它的 Solaris(一種Unix)和風靡世界的 Java 程序語言,成爲在操做系統上最有可能挑戰微軟的公司。太陽公司不乏能人,它不只爲 Google 培養了 CEO埃裏克.施密特和首任工程部副總裁韋恩.羅森(Wayne Rosen),而且在必定程度上奠基了今天 Google 工程部門的基礎。

blob.png

固然,今天的SUN公司已經一落千丈,而且被oracle公司收購。sun公司從成立到市值2000億美圓通過了20年,可是走下坡路只用了1年時間!這就是IT行業的殘酷性!

JAVA的誕生和核心特色

       上世紀90年代初,SUN公司的James Gosling(高司令,^_^)領導的Green項目,着力打造一個分佈式的、能夠在消費類電子產品(如電視機頂盒)使用的系統架構。

這種架構中,要求寫的代碼能夠運行在各類消費類電子產品中,即要求代碼的中立性、跨平臺性。

最初,Green項目使用的C++,可是在研發過程當中發現C++並不能很好的適應新的需求。因而,這些高人對C++編譯器作了改寫,仍然不太理想,不太符合跨平臺的特性。 牛人有牛人特有的牛脾氣,因而,你們決定重起爐竈,開始研發一種新的語言,即JAVA. 

blob.png

通過一年半的研發,整個產品研發完成。可是,很遺憾,消費類電子產品並無高速的發展起來,JAVA進入蟄伏期。

【注】跨平臺特性,始終是JAVA的核心優點!

JAVA的飛速發展

      無意插柳柳成蔭!90年代中末期,有一個改變世界的大事出現了:互聯網的爆發式增加。在傳統產業,例如鋼鐵產業要想取得產量翻番,那須要不少年的時間。可是,在互聯網行業都是呈指數級增加,爆炸式的增加。google能夠在短短几年就增加到上千億美圓市值。

     互聯網將各類各樣的電腦連到了一塊兒,這時,咱們發現電 腦的操做系統各類不一樣。所以,急需一種跨平臺的語言,經過它編寫的程序能夠在各類平臺上運行。JAVA正好符合這種需求。使用JAVA編寫的applet程序給了90年代的人們極大的震撼,因而JAVA迎來了他的黃金時代!

JAVA誕生後,經歷了以下版本的發展變化:

•    1991年,Sun公司的Green項目,Oak

•    1995年,推出Java測試版

•    1996年,JDK1.0

•    1997年,JDK1.1

•    1998年,JDK1.2,大大改進了早期版本的缺陷,是一個革命性的版本,改名爲Java2

•    2004年,J2SE 5.0 (1.5.0)  Tiger老虎

•    2006年,J2SE 6.0 (1.6.0)  Mustang野馬

•    2011年,JAVASE7.0 

JAVA的特性和優點

簡單性

        就是c++語法的純淨版。沒有頭文件,指針運算,結構,聯合,操做符重載,虛基類等等。因爲語法基於c,所以學習起來徹底不費力。

面向對象

        面向對象是一種程序設計技術,他將重點放在數據(即對象)和對象之間的接口上。

可移植性(跨平臺性)

       這是JAVA的一個重要的優點。JAVA代碼或者說字節碼、二進制碼能夠跨平臺的移植,而不用管具體的操做系統和硬件環境。JAVA自己就是面向網絡的,只有在網絡環境中才能顯示出他的優點,好比:如今我有一個網絡環境,要讓個人筆記本和手機交互,筆記本環境是windows發出一個讓手機定時錄音的JAVA代碼,手機只有簡單Linux內核操做系統,照樣能夠完美的執行這個代碼。

「一次編寫,隨處運行」:「write once, run anywhere」

       JAVA在設計時就很注重移植和跨平臺性。好比:JAVA的Int永遠都是32位。不像c++多是16,32,多是根據編譯器廠商規定的變化。這樣的話程序的移植就會很是麻煩。

高性能

       JIT(JUST IN TIME)即時編譯。將一些「熱點」字節碼編譯成本地機器碼,並將結果緩存起來,在須要的時候從新調用。這樣的話,使JAVA程序的執行效率大大提升,某些代碼甚至接待c++的效率。隨着這種技術的一每天完善,也許有一天會超越編譯代碼的效率。

分佈式

       JAVA是爲internet的分佈式環境設計的,由於他可以處理tcp/ip協議。事實上,經過url訪問一個網絡資源和訪問本地文件是同樣簡單的。Java還支持遠程方法調用(RMI,remote method Invocation),使程序可以經過網絡調用方法。

動態性

       就是在須要時將某些代碼添加到正在運行的程序中。反射機制。當須要把某些代碼添加到正在運行的程序中時,動態性是一個很是重要的特性。Java的動態特性是其面向對象設計方法的擴展。它容許程序動態地裝入運行過程當中所須要的類,這是C++語言進行面向對象程序設計所沒法實現的。

多線程

       多線程的使用能夠帶來更好的交互響應和實時行爲。多線程的簡單性是Java成爲主流服務器端開發語言的主要緣由之一。

安全性

       Java適合於網絡/分佈式環境,爲了達到這個目標,在安全性方面投入了很大的精力,使Java能夠構建防病毒,防篡改的系統。

健壯性

       Java是一種健壯的語言,吸取了C/C++ 語言的優勢,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能形成計算機崩潰。Java系統仔細檢測對內存的每次訪問,確認它是合法的,並且不致引發任何問題。不過,即便Java程序也可能有錯誤。若是出現某種出乎意料之事,程序也不會崩潰,而是把該例外拋棄。再經過異常處理機制,程序就會發現這類例外,並加以處理。

JAVA三大版本的區別

      SUN公司推出了JAVAEE、JAVASE、JAVAME適應各類不一樣平臺上的開發和運行工做。咱們之後的學習會圍繞他們開展起來。

blob.png

•    J2EE (JAVAEE)

–    Java 2 Enterprise Edition:

–    定位在服務器端的應用

•    J2SE  (JAVASE)

–    Java 2  Standard  Edition

–    定位在我的計算機上的應用

•    J2ME  (JAVAME)

–    Java  2  Micro  Edition

–    定位在消費性電子產品的應用上。 

JAVA語言爲何可以成功 

        一個產品的成功和一我的的成功是一個道理。除了自身具有過硬的優點外,還須要那麼一點點狗屎運,甚至狗屎運很是關鍵。就是咱們所講的天時地利人和。JAVA的成功除了本身具有跨平臺特性外,更重要的是正好踩中了互聯網發展的節奏。微軟的成功除了windows好用外,也是正好踩中了我的電腦發展的節奏。因此,咱們除了本身努力外,也須要出去走走努力才踩一坨狗屎才行

附:斯坦福大學的房產生意經

       斯坦福大學依靠自身龐大的校區,建立了斯坦福科技園(硅谷的前身),初期採用房租免費等方式,鼓勵本身的畢業生在科技園創業、鼓勵社會企業入駐。因爲免費的方式再加上其餘優惠的政策,吸引了大量的創業者加入進來。最終你們添柴加火,造就了今天的硅谷。這纔是最高明的房地產商啊!相比我國的房產商殺雞取卵式的發展,無語!北京五環外房價都3萬多了,一個精英人才就算是年薪20萬,買個100平的房子,須要不吃不喝15年!若是要吃喝的話,基本一生都在爲這100平的房子打工!赤裸裸的剝削至此,還有什麼話說!

附:跟斯坦福大學有關的IT公司

牛逼的大學,難以想象的大學。看看這個大學的畢業生和教授創立的公司:

1.    惠普公司

2.    SUN公司

3.    思科公司

4.    雅虎公司

5.    Google公司

6.    英特爾公司

7.    NVidia(最大的顯卡公司)

8.    耐克(賣鞋的,斯坦福除了IT還有耐克)

相關文章
相關標籤/搜索