<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # [簡介](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=%e7%ae%80%e4%bb%8b) > “我的語言極限,即是我的世界的極限。” ——路德維希·維特根斯坦(*Wittgenstein*) 這句話無論對于自然語言還是編程語言來說都是一樣的。你所使用的編程語言會將你的思維模式固化并逐漸遠離其他語言,而且往往發生在潛移默化中。Java 作為一門傲嬌的語言尤其如此。 Java 是一門派生語言,早期語言設計者為了不想在項目中使用 C++ 而創造了這種看起來很像 C++,卻比 C++ 有了改進的新語言(原始的項目并未成功)。Java 最核心的變化就是加入了“虛擬機”和“垃圾回收機制”,這兩個概念在之后的章節會有詳細描述。 此外,Java 還在其他方面推動了行業發展。例如,現在絕大多數編程語言都支持文檔注釋語法和 HTML 文檔生成工具。 Java 最主要的概念之一“對象”來自 SmallTalk 語言。SmallTalk 語言恪守“對象”(在下一章中描述)是編程的最基本單元。于是,萬物皆對象。歷經時間的檢驗,人們發現這種信念太過狂熱。有些人甚至認為“對象”的概念是完全錯誤的,應該舍棄。就我個人而言,把一切事物都抽象成對象不僅是一項不必要的負擔,同時還會招致許多設計朝著不好的方向發展。盡管如此,“對象”的概念依然有其閃光點。固執地要求所有東西都是一個對象(特別是一直到最底層級別)是一種設計錯誤;相反,完全逃避“對象”的概念似乎同樣太過苛刻。 Java 語言曾規劃設計的許多功能并未按照承諾兌現。本書中,我將嘗試解釋這些原因,力爭讓讀者知曉這些功能,并明白為什么這些功能最終并不適用。這無關 Java 是一種好語言或者壞語言,一旦你了解了該語言的缺陷和局限性,你就能夠: 1. 明白有些功能特性為什么會被“廢棄”。 2. 熟悉語言邊界,更好地設計和編碼。 編程的過程就是復雜性管理的過程:業務問題的復雜性,以及依賴的計算機的復雜性。由于這種復雜性,我們的大多數軟件項目都失敗了。 許多語言設計決策時都考慮到了復雜性,并試圖降低語言的復雜性,但在設計過程中遇到了一些更棘手的問題,最終導致語言設計不可避免地“碰壁”,復雜性增加。例如,C++ 必須向后兼容 C(允許 C 程序員輕松遷移),并且效率很高。這些目標非常實用,并且也是 C++ 在編程界取得了成功的原因之一,但同時也引入了額外的復雜性,導致某些用 C++ 編寫的項目開發失敗。當然,你可以責怪程序員和管理人員手藝不精,但如果有一種編程語言可以幫助你在開發過程中發現錯誤,那豈不是更好? 雖然 VB(Visual BASIC)綁定在 BASIC 上,但 BASIC 實際上并不是一種可擴展的語言。大量擴展的堆積造成 VB 的語法難以維護。Perl 向后兼容 awk、sed、grep 以及其它要替換的 Unix 工具。因此它常常被詬病產生了一堆“只寫代碼”(*write-only code*,寫代碼的人自己都看不懂的代碼)。另一方面,C ++,VB,Perl 和其他語言(如 SmallTalk)在設計時重點放在了對某些復雜問題的處理上,因而在解決這些特定類型的問題方面非常成功。 通信革命使我們相互溝通更加便利。無論是一對一溝通,還是團隊里的互相溝通,甚至是地球上不同地區的溝通。據說下一次革命需要的是一種全球性的思維,這種思維源于足量的人以及足量相互連接。我不知道 Java 是否能成為這場革命的工具之一,但至少這種可能性讓我覺得:我現在正在做的傳道授業的事情是有意義的! ## [前提條件](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=%e5%89%8d%e6%8f%90%e6%9d%a1%e4%bb%b6) 閱讀本書需要讀者對編程有基本的了解: * 程序是一系列“陳述(語句、代碼)”構成 * 子程序、方法、宏的概念 * 控制語句(例如**if**),循環結構(例如**while**) 可能你已在學校、書籍或網絡上學過這些。只要你覺得對上述的編程基本概念熟悉,你就可以完成本書的學習。 你可以通過在 On Java 8 的網站上免費下載 《Think in C》來補充學習 Java 所需要的前置知識。本書介紹了 Java 語言的基本控制機制以及面向對象編程(OOP)的概念。在本書中我引述了一些 C/C++ 語言中的一些特性來幫助讀者更好的理解 Java。畢竟 Java 是在它們的基礎之上發明的,理解他們之間的區別,有助于讀者更好地學習 Java。我會試圖簡化這些引述,盡量讓沒有 C/C++ 基礎的讀者也能很好地理解。 ## [JDK文檔](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=jdk%e6%96%87%e6%a1%a3) 甲骨文公司已經提供了免費的標準 JDK 文檔。除非有必要,否則本書中將不再贅述 API 相關的使用細節。使用瀏覽器來即時搜索最新最全的 JDK 文檔好過翻閱本書來查找。只有在需要補充特定的示例時,我才會提供有關的額外描述。 ## [C編程思想](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=c%e7%bc%96%e7%a8%8b%e6%80%9d%e6%83%b3) *Thinking in C*已經可以在[www.OnJava8.com](https://archive.org/details/ThinkingInC)免費下載。Java 的基礎語法是基于 C 語言的。*Thinking in C*中有更適合初學者的編程基礎介紹。 我已經委托 Chuck Allison 將這本 C 基礎的書籍作為獨立產品附贈于本書的 CD 中。希望大家在閱讀本書時,都已具備了學習 Java 的良好基礎。 ## [源碼下載](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=%e6%ba%90%e7%a0%81%e4%b8%8b%e8%bd%bd) 本書中所有源代碼的示例都在版權保護的前提下通過 GitHub 免費提供。你可以將這些代碼用于教育。任何人不得在未經正確引用代碼來源的情況下隨意重新發布此代碼示例。在每個代碼文件中,你都可以找到以下版權聲明文件作為參考: **Copyright.txt** ?2017 MindView LLC。版權所有。如果上述版權聲明,本段和以下內容,特此授予免費使用,復制,修改和分發此計算機源代碼(源代碼)及其文檔的許可,且無需出于下述目的的書面協議所有副本中都有五個編號的段落。 1. 允許編譯源代碼并將編譯代碼僅以可執行格式包含在個人和商業軟件程序中。 2. 允許在課堂情況下使用源代碼而不修改源代碼,包括在演示材料中,前提是 “On Java 8” 一書被引用為原點。 3. 可以通過以下方式獲得將源代碼合并到印刷媒體中的許可:MindView LLC,PO Box 969,Crested Butte,CO 81224[MindViewInc@gmail.com](mailto:MindViewInc@gmail.com) 4. 源代碼和文檔的版權歸 MindView LLC 所有。提供的源代碼沒有任何明示或暗示的擔保,包括任何適銷性,適用于特定用途或不侵權的默示擔保。MindView LLC 不保證任何包含源代碼的程序的運行不會中斷或沒有錯誤。MindView LLC 不對任何目的的源代碼或包含源代碼的任何軟件的適用性做出任何陳述。包含源代碼的任何程序的質量和性能的全部風險來自源代碼的用戶。用戶理解源代碼是為研究和教學目的而開發的,建議不要僅僅因任何原因依賴源代碼或任何包含源代碼的程序。如果源代碼或任何產生的軟件證明有缺陷,則用戶承擔所有必要的維修,修理或更正的費用。 5. 在任何情況下,MINDVIEW LLC 或其出版商均不對任何一方根據任何法律理論對直接,間接,特殊,偶發或后果性損害承擔任何責任,包括利潤損失,業務中斷,商業信息丟失或任何其他保險公司。由于 MINDVIEW LLC 或其出版商已被告知此類損害的可能性,因此使用本源代碼及其文檔或因無法使用任何結果程序而導致的個人受傷或者個人受傷。MINDVIEW LLC 特別聲明不提供任何擔保,包括但不限于對適銷性和特定用途適用性的暗示擔保。此處提供的源代碼和文檔基于“原樣”基礎,沒有MINDVIEW LLC的任何隨附服務,MINDVIEW LLC 沒有義務提供維護,支持,更新,增強或修改。 **請注意**,MindView LLC 僅提供以下唯一網址發布更新書中的代碼示例,[https://github.com/BruceEckel/OnJava8-examples](https://github.com/BruceEckel/OnJava8-examples)。你可在上述條款范圍內將示例免費使用于項目和課堂中。 如果你在源代碼中發現錯誤,請在下面的網址提交更正:[https://github.com/BruceEckel/OnJava8-examples/issues](https://github.com/BruceEckel/OnJava8-examples/issues) ## [編碼樣式](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=%e7%bc%96%e7%a0%81%e6%a0%b7%e5%bc%8f) 本書中代碼標識符(關鍵字,方法,變量和類名)以粗體,固定寬度代碼字體顯示。像 “\*class” 這種在代碼中高頻率出現的關鍵字可能讓你覺得粗體有點乏味。(譯者注:由于中英排版差異,中文翻譯過程并未完全參照原作者的說明。具體排版格式請參考[此處](https://github.com/ruanyf/document-style-guide))其他顯示為正常字體。本書文本格式盡可能遵循 Oracle 常見樣式,并保證在大多數 Java 開發環境中被支持。書中我使用了自己喜歡的字體風格。Java 是一種自由的編程語言,你也可以使用 IDE(集成開發環境)工具(如 IntelliJ IDEA,Eclipse 或 NetBeans)將格式更改為適合你的格式。 本書代碼文件使用自動化工具進行測試,并在最新版本的 Java 編譯通過(除了那些特別標記的錯誤之外)。本書重點介紹并使用 Java 8 進行測試。如果你必須了解更早的語言版本,可以在[www.OnJava8.com](http://www.onjava8.com/)免費下載 《Thinking in Java》。 ## [BUG提交](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=bug%e6%8f%90%e4%ba%a4) 本書經過多重校訂,但還是難免有所遺漏被新讀者發現。如果你在正文或示例中發現任何錯誤的內容,請在[此處](https://github.com/BruceEckel/OnJava8-examples/issues)提交錯誤以及建議更正,作者感激不盡。 ## [郵箱訂閱](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=%e9%82%ae%e7%ae%b1%e8%ae%a2%e9%98%85) 你可以在[www.OnJava8.com](http://www.onjava8.com/)上訂閱郵件。郵件不含廣告并盡量提供干貨。 ## [Java圖形界面](https://lingcoder.gitee.io/onjava8/#/book/00-Introduction?id=java%e5%9b%be%e5%bd%a2%e7%95%8c%e9%9d%a2) Java 在圖形用戶界面和桌面程序方面的發展可以說是一段悲傷的歷史。Java 1.0 中圖形用戶界面(GUI)庫的原始設計目標是讓用戶能在所有平臺提供一個漂亮的界面。但遺憾的是,這個理想沒有實現。相反,Java 1.0 AWT(抽象窗口工具包)在所有平臺都表現平平,并且有諸多限制。你只能使用四種字體。另外,Java 1.0 AWT 編程模型也很笨拙且非面向對象。我的一個曾在 Java 設計期間工作過的學生道出了緣由:早期的 AWT 設計是在僅僅在一個月內構思、設計和實施的。不得不說這是一個“奇跡”,但同時更是“設計失敗”的絕佳教材。 在 Java 1.1 版本的 AWT 中 情況有所改善,事件模型帶來更加清晰的面向對象方法,并添加了JavaBeans,致力于面向易于創建可視化編程環境的組件編程模型(已廢棄)。 Java 2(Java 1.2)通過使用 Java 基類(JFC)內容替換來完成從舊版 Java 1.0 AWT 的轉換。其中 GUI 部分稱為 Swing。這是一組豐富的 JavaBeans,它們創建了一個合理的 GUI。修訂版 3(3之前都不好)比以往更適用于開發圖形界面程序。 Sun 在圖形界面的最后一次嘗試,稱為 JavaFX。當 Oracle 收購 Sun 時,他們將原來雄心勃勃的項目(包括腳本語言)改為庫,現在它似乎是 Java 官方唯一還在開發中的 UI 工具包(參見維基百科關于 JavaFX 的文章) - 但即使如此,JavaFX 最終似乎也失敗了。 現今 Swing 依然是 Java 發行版的一部分(只接受維護,不再有新功能開發)。而 Java 現在是一個開源項目,它應該始終可用。此外,Swing 和 JavaFX 有一些有限的交互性。這些可能是為了幫助開發者過渡到 JavaFX。 桌面程序領域似乎從未嘗勾起 Java 設計師的野心。Java 沒有在圖形界面取得該有的一席之地。另外,曾被大肆吹噓的 JavaBeans 也沒有獲得任何影響力。(許多不幸的作者花了很多精力在 Swing 上編寫書籍,甚至只用 JavaBeans 編寫書籍)。Java 圖形界面程序大多數情況下僅用于 IDE(集成開發環境)和一些企業內部應用程序。你可以采用 Java 開發圖形界面,但這并非 Java 最擅長的領域。如果你必須學習 Swing,可以參考*Thinking in Java*第4版(可從[www.OnJava8.com](http://www.onjava8.com/)獲得)或者通過其他專門的書籍學習。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看