起初網(wǎng)景公司用了十天時間創(chuàng)建了一個 JAVA,后來它成為事實上的 Web 標準,并橫掃各大編程語言榜單成為開發(fā)者最受歡迎的語言之一。
近日,有開發(fā)者對 Java 的開發(fā)周期提出了質(zhì)疑,以及想要了解 Java 現(xiàn)存的一些缺陷譬如隱式類型轉(zhuǎn)換導(dǎo)致代碼可讀性差的存在是否與最初的開發(fā)時間有關(guān)。于是,其在從《Java:第一個 20 年》(https://www.wirfs-brock.com/allen/jshopl.pdf)等系列資料中進行了深入挖掘,并根據(jù)自己的了解撰寫了此文,希望能夠更清晰地了解 Java 的過去。
原文:https://buttondown.emAIl/hillelwayne/archive/did-brendan-eich-really-make-java-in-10-days/
作者 | Hillel 編譯 | 蘇宓
出品 | CSDN(ID:CSDNnews)
我曾經(jīng)聽說 Java 有很多缺點,因為第一個版本只用了十天來開發(fā)。我很好奇這是否屬實,并且是否因為初版開發(fā)時間的短暫導(dǎo)致了這門語言存在一些缺點。
經(jīng)過一些研究,我可以不太確定地說:事情比較復(fù)雜。
Java 的“第一個版本”確實只花了十天的時間。確切的日期沒有得到確認,但是據(jù) Java 之父 Brendan Eich 回憶,Java 是在 1995 年 5 月 6 日至 15 日之間開發(fā)出來的。但起初這只是一個用于內(nèi)部演示的最小原型(Mocha)。
Java 1.0 在 1996 年 3 月公開發(fā)布,第一個“完整”的版本則在 1996 年 8 月發(fā)布。
即使在那之后?.NETscape 團隊仍經(jīng)常調(diào)整 Java 的設(shè)計。Eich 回憶說,在 1996 年秋天,「Bill Gates一直在抱怨我們一直在改動 JS」。
擁有大約十年的語言設(shè)計和編譯器開發(fā)經(jīng)驗的 Eich,明確受雇于 Netscape 公司,為瀏覽器開發(fā)一門編程語言。最初計劃使用的是 Scheme 語言,但之后 Netscape 與 Sun 達成協(xié)議,同意使其變得更加“像 Java”。
這是否能解釋這些缺陷呢?
可以說,Java 現(xiàn)代版本中的大多數(shù)缺陷并不是由于開發(fā)時間短造成的:
- 最初的 Mocha 版本并沒有隱式類型轉(zhuǎn)換,但用戶要求 Eich 在 1.0 版本中添加這個功能。他對此深感遺憾。
- Java 1.0 增加了與 Java 的兼容性。Java 的兼容性也解釋了為什么有 ".nulltypeof null = object" 這樣的情況。
- 任何 Java API 的缺陷必定是在 Mocha 之后出現(xiàn)的,因為所有 API 的工作都是在 Mocha 之后進行的。Mocha 是一門相當簡單的語言!
- “所有數(shù)字都是浮點數(shù)”的問題最初出現(xiàn)在 Mocha 中,但我認為這始終是預(yù)期的行為。Java 1.0 手冊中提到 HyperTalk 是其主要靈感來源。我從未使用過 HyperTalk,但快速瀏覽手冊讓我覺得它的行為是相同的。
我找到一個確鑿的證據(jù)表明,這十天的開發(fā)確實對 Java 造成了傷害:Brendan Eich 沒有時間添加垃圾回收器,后來試圖添加垃圾回收器時引入了一系列安全漏洞。