面向對象技術最先是在編程語言Simula中提出的。1967年5月20日,在挪威奧斯陸郊外的小鎮莉沙布舉行的IFIP TC-2 工做會議上,挪威科學家Ole-Johan Dahl和Kristen Nygaard正式發佈了Simula 67語言。Simula 67被認爲是最先的面向對象程序設計語言,是面向對象的開山祖師,它引入了全部後來面向對象程序設計語言所遵循的基礎概念:對象、類、繼承,但它的實現並非很完整。程序員
Simula雖然最先提出面向對象的概念,但由於其自己複雜,比較難學,而並無大規模流行。但Simula提出的面向對象的概念對程序語言後繼的發展產生了巨大和深遠的影響。編程
Smalltalk是公認爲歷史上第二個面向對象的程序語言,並且是第一個完整實現了面向對象技術的語言。設計模式
最先的Smalltalk原型由艾倫·凱於70年代初提出。類(來自Simula-67)、海龜繪圖(來自MIT的LOGO)以及圖形界面等概念的有機組合,構成了Smalltalk的最初的藍圖。在1971年到1975年之間,艾倫·凱在Xerox PARC的小組設計並實現了第一個真正的Smalltalk語言系統。安全
Smalltalk引領了面向對象的設計思想的思潮,對其它衆多的程序設計語言的產生起到了極大的推進做用。C++,C#,Objective-C,Actor,Java和Ruby等,無一不受到Smalltalk的影響,這些程序語言中也隨處可見Smalltalk的影子。多線程
除了編程語言受到Smalltalk的影響外,90年代的許多軟件開發思想得利於Smalltalk,例如設計模式、敏捷編程和代碼重構等。編程語言
C++是第一個大規模使用的面嚮對象語言,面向對象程序設計在80年代成爲了一種主導思想,這很大程度上得益於C++的流行。並且與Simula、Smalltalk不一樣的是,C++到如今爲止仍是排名前三的編程語言,並無湮沒在歷史的洪流中。分佈式
C++由貝爾實驗室的Bjarne Strou-strup與1983年推出,C++進一步擴充和完善了C語言,成爲一種面向 對象的程序設計語言。性能
C++最開始的時候不是叫作C++,而是C with class,這是把它看成一種C語言的有效擴充。因爲當時C語言在編程界居於老大的地位,要想發展一種新的語言,最強大的競爭對手就是C語言,因此當時有兩個問題最受關注:C++要在運行時間、代碼緊湊性和數據緊湊性方面可以與C語言相媲美,可是還要儘可能避免在語言應用領域的限制。在這種狀況下,一個很天然的想法就是讓C++從C語言繼承過來,但若是隻是簡單繼承的話,就不能有所突破了,所以Bjarne博士採起了拿來主義,參考了不少的語言,將它們的優勢「繼承」過來了。例如:從Simula繼承了類的概念,從Algol68繼承了運算符重載、引用以及在任何地方聲明變量的能力,從BCPL得到了//註釋,從Ada獲得了模板、名字空間,從Ada、Clu和ML取來了異常。線程
正是由於C++兼容C,同時又具有了面向對象的能力,使得C++可以大行其道,廣受歡迎;然而也正是C++是一個超級大雜燴,語言自己很複雜,致使針對C++存在不少批評和爭議。有一個玩笑是說:Bjarne Strou-strup發明C++語言的時候就沒有期望任何一個程序員可以徹底掌握C++!設計
Java是目前使用最廣的面向對象編程語言,擁有全球最多的開發者,常年穩居開發語言排行榜第一名(偶爾和C交換一下位置)。若是說C++促進了面向對象的流行,那麼Java就將面向對象推上了王座。比爾蓋茨曾這樣評價「Java是很長時間以來最優秀的程序設計語言」。
Java是由Sun Microsystems公司於 1995年5月推出,由「Java之父」James Gosling和一羣技術天才創造,並在1995年正式推出。最初的Java被稱爲Oak —— 以Gosling辦公室外的一棵橡樹命名,後來因爲商標版權問題,更名爲Java —— 聽說取名的靈感來自印尼爪哇島味道優美的咖啡。
Sun 公司在推出 Java 之際就將其做爲一種開放的技術,而且定位於互聯網應用。所以隨着互聯網的發展和流行,加上開源運動的發展,Java逐漸成爲了最流行的編程語言。
相比C++來講,Java語言是一個更加純淨、更加易用的面向對象編程語言。Java語言的編程風格和C++比較類似,但去掉了不少C++中複雜和容易出錯的特性,例如指針,多繼承等,同時增長了垃圾回收等大大提高生產率的特性。Sun公司對Java語言的解釋是:「Java編程語言是個簡單、面向對象、分佈式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和動態的語言」,雖然有點王婆賣瓜的味道,但Java針對C++的改進,確實大大提高了生產力,下降了複雜度,客觀上也促進了Java的流行。