Objective-c for Java 程式員 第一部分Java的設計構想大都來自Objective-C,但許多人發現學習過Java後再學習Objective-C是困難。在第一個由兩部分組成的系列“ChisnallCocoa編程開發手冊”中,
作者大衛著眼於兩種語言的語義的相似性和差異進行了分析和研究。
早在1986年建立的Objective-C,但是非常高效的語言。在過去十年出貨量的總和只有50000台電腦的NeXT公司的影響下,大大限制了語言的發展。當蘋果電腦買下了NeXT,這種狀況開始有所好轉。Objective-C在Mac上發展成為主要的語言,它佔據5-10%左右的案頭應用開發的市場份額。Objective-C中沒有OS
X上雖然只支援的開發語言,和很多開發商使用的東西,他們比較熟悉。相比之下,iPhone的,不支援任何第三方開發除了Objective-C以外。
如果你來自一個Java背景兩種平台,那麼你可能會發現變化艱巨。Objective-C中看起來非常不同與Java。幸運的是,一旦你過了文法這關,語言是非常相似的,你會發現,過渡並不困難。
一些Java的設計者不得不使用Objective-C的經驗,包括一些曾OPENSTEP規範“下一步工作。很多想法在Java的Objective-C直接被取消,或採取從Smalltalk,這激發了兩種語言。這並不是說,一切是在Objective-C相同。有一些重要的差異,這在下一篇文章中,我將探討。
語言哲學
Objective-C的設計帶來Smalltalk中享有的C語言的封裝支援。它的設計者之一,作為一種混合語言描述它作為一個指示從C代碼過渡的標誌的方括弧文法,對象土地。“
Java的目標是使平均程式員可用的語言。這種結合的Smalltalk般的語義與C + +文法。後者決定了營銷比技術的原因更多。C + +中有一個大的市場份額(現在仍然存在,一些奇怪的原因),它使開發人員切換到一種語言,看著看著不同的類似更容易。
不幸的是,這是一些人的重大問題交換或從Java開發的原因。Java的看起來像C + +,但這樣的Objective-C的行為很多。Java和Objective-C的有像Smalltalk中的語義,而C + +增加了類似Simula的語義C. Java和C +涉及Smalltalk和Simula的語義之間切換,沒有任何相應的變化在文法。
之間進行中的C + +和Objective-C很容易在文法的變化,伴隨著語義上的變化。之間的Objective-C和Java是有點混亂。在文法上有一個大的變化,但只有在小的語義變化。
在少數地方,在目標的差別是顯而易見的。Java的目標是要成為隱約類似於C和容易為C或C + +程式員學習,但不介意打破東西時C方式做事不理想。的Objective-C是一個純C的超集,每一個有效C程式是一個有效Objective-C程式。Objective-C的主要設計目標之一就是要製作成可重用的組件很容易parceling C庫的語言。
Objective-C的最初並沒有拿出一個標準庫。您預計使用C庫。現在作為一個Objective-C的標準庫是常用的設計,的OPENSTEP規範,由Sun和NeXT,如可可或GNUstep的大多數平台上執行。的Java沒有可以很容易地重用現有的代碼,所以它從一開始就需要一個全面的標準庫。