![](/c49/30/1032864549.jpg)
出版社:人民郵電 ISBN:9787115321954 商品編碼:1032864549 開本:16 出版時間:2013-08-01 代碼:89 作者:埃文斯,費爾堡,譯者:吳海星
" 基本信息 - 商品名稱:Java程序員修煉之道/圖靈程序設計叢書
- 作者:(英)埃文斯//(荷蘭)費爾堡|譯者:吳海星
- 代碼:89
- 出版社:人民郵電
- ISBN號:9787115321954
其他參考信息 - 出版時間:2013-08-01
- 印刷時間:2013-08-01
- 版次:1
- 印次:1
- 開本:16開
- 包裝:平裝
- 頁數:395
- 字數:658千字
編輯推薦語 《Java程序員修煉之道》*開始是給德意志銀行外彙IT部的新人準備的培訓筆記。Ben覺得市面上沒有面向經驗匱乏的Java開發人員的書,所以決定寫一本來填補這個空白。全書分為四部分,**部分全面介紹Java 7 的新特性,第二部分探討Java 關鍵編程知識和技術,第三部分討論JVM 上的新語言和多語言編程,第四部分將平臺和多語言編程知識付諸實踐。本書由Benjamin J.Evans(埃文斯),Martijn Verburg(費爾堡)著。 內容提要 《Java程序員修煉之道》分為四部分,**部分 全面介紹Java 7 的新特性,第二部分探討Java 關 鍵編程知識和技術,第三部分討論JVM 上的新語言和 多語言編程,第四部分將平臺和多語言編程知識付諸 實踐。從介紹Java 7 的新特性入手,本書涵蓋了 Java 開發中*重要的技術,比如依賴注入、測試驅 動的開發和持續集成,探索了JVM 上的非Java 語言 ,並詳細講解了多語言項目, 特別是涉及Groovy、 Scala 和Clojure 語言的項目。此外,書中含有大 量代碼示例,幫助讀者從實踐中理解Java 語言和平 臺。 《Java程序員修煉之道》適合Java 開發人員以 及對Java7 和JVM 新語言感興趣的各領域人士閱讀 。本書由Benjamin J.Evans(埃文斯),Martijn Verburg(費爾堡)著。 作者簡介 Benjamin J.Evans(埃文斯),倫敦Java用戶組發起人、Java社區過程執行委員會成員。他擁有多年Java開發經驗,現在是一家面向金融業的Java技術公司的CEO。 Martijn Verburg(費爾堡),jClarity的CTO、倫敦Java用戶組領導人。作為一名技術專家和眾多初創企業的OSS導師,他擁有十多年的經驗。Martijn經常應邀出席Java界的大型會議(JavaOne、Devoxx、OSCON、FOSDEM等)並發表演講,人送雅號“開發魔頭”,贊頌他敢於向行業現狀挑戰的精神。 吳海星,具有10多年的Java軟件開發經驗,熟悉Java語言規範、基於Java的Web軟件開發以及性能調優,曾獲SCJP及SCWCD證書。 目錄 **部分 用Java 7做開發 **章 初識Java 7 1.1 語言與平臺 1.2 Coin項目:濃縮的都是精華 1.3 Coin項目中的修改 1.3.1 switch語句中的String 1.3.2 *強的數值文本表示法 1.3.3 改善後的異常處理 1.3.4 try-with-resources(TWR) 1.3.5 鑽石語法 1.3.6 簡化變參方法調用 1.4 小結
第2章 新I/O 2.1 Java I/O簡史 2.1.1 Java 1.0到1.3 2.1.2 在Java 1.4中引入的NIO 2.1.3 下一代I/O-NIO.2 2.2 文件I/O的基石:Path 2.2.1 創建一個Path 2.2.2 從Path中獲取信息 2.2.3 移除冗餘項 2.2.4 轉換Path 2.2.5 NIO.2 Path和Java已有的File類 2.3 處理目錄和目錄樹 2.3.1 在目錄中查找文件 2.3.2 遍歷目錄樹 2.4 NIO.2的文件繫統I/O 2.4.1 創建和刪除文件 2.4.2 文件的復制和移動 2.4.3 文件的屬性 2.4.4 快速讀寫數據 2.4.5 文件修改通知 2.4.6 SeekableByteChannel 2.5 異步 I/O操作 2.5.1 將來式 2.5.2 回調式 2.6 Socket和Channel的整合 2.6.1 NetworkChannel 2.6.2 MulticastChannel 2.7 小結
第二部分 關鍵技術 第3章 依賴注入 3.1 知識注入:理解IoC和DI 3.1.1 控制反轉 3.1.2 依賴注入 3.1.3 轉成DI 3.2 Java中標準化的DI 3.2.1 @Inject注解 3.2.2 @Qualifier注解 3.2.3 @Named注解 3.2.4 @Scope注解 3.2.5 @Singleton注解 3.2.6 接口Provider 3.3 Java中的DI參考實現:Guice 3 3.3.1 Guice新手指南 3.3.2 水手繩結:Guice的各種綁定 3.3.3 在Guice中限定注入對像的生命周期 3.4 小結
第4章 現代並發 4.1 並發理論簡介 4.1.1 解釋Java線程模型 4.1.2 設計理念 4.1.3 這些原則如何以及為何會相互衝突 4.1.4 繫統開銷之源 4.1.5 一個事務處理的例子 4.2 塊結構並發(Java 5之前) 4.2.1 同步與鎖 4.2.2 線程的狀態模型 4.2.3 完全同步對像 4.2.4 死鎖 4.2.5 為什麼是synchronized 4.2.6 關鍵字volatile 4.2.7 不可變性 4.3 現代並發應用程序的構件 4.3.1 原子類:java.util. concurrent.atomic 4.3.2 線程鎖:java.util. concurrent.locks 4.3.3 CountDownLatch 4.3.4 ConcurrentHashMap 4.3.5 CopyOnWriteArrayList 4.3.6 Queue 4.4 控制執行 4.4.1 任務建模 4.4.2 ScheduledThread-PoolExecutor 4.5 分支/合並框架 4.5.1 一個簡單的分支/合並例子 4.5.2 ForkJoinTask與工作竊取 4.5.3 並行問題 4.6 Java內存模型 4.7 小結
第5章 類文件與字節碼 5.1 類加載和類對像 5.1.1 加載和連接概覽 5.1.2 驗證 5.1.3 Class對像 5.1.4 類加載器 5.1.5 示例:依賴注入中的類加載器 5.2 使用方法句柄 5.2.1 MethodHandle 5.2.2 MethodType 5.2.3 查找方法句柄 5.2.4 示例:反射、代理與方法句柄 5.2.5 為什麼選擇MethodHandle 5.3 檢查類文件 5.3.1 介紹javap 5.3.2 方法簽名的內部形式 5.3.3 常量池 5.4 字節碼 5.4.1 示例:反編譯類 5.4.2 運行時環境 5.4.3 操作碼介紹 5.4.4 加載和儲存操作碼 5.4.5 數學運算操作碼 5.4.6 執行控制操作碼 5.4.7 調用操作碼 5.4.8 平臺操作操作碼 5.4.9 操作碼的快捷形式 5.4.10 示例:字符串拼接 5.5 invokedynamic 5.5.1 invokedynamic如何工作 5.5.2 示例:反編譯invokedynamic調用 5.6 小結
第6章 理解性能調優 6.1 性能術語 6.1.1 等待時間 6.1.2 吞吐量 6.1.3 利用率 6.1.4 效率 6.1.5 容量 6.1.6 擴展性 6.1.7 退化 6.2 務實的性能分析法 6.2.1 知道你在測量什麼 6.2.2 知道怎麼測量 6.2.3 知道性能目標是什麼 6.2.4 知道什麼時候停止優化 6.2.5 知道高性能的成本 6.2.6 知道過早優化的危險 6.3 哪裡出錯了?我們擔心的原因 6.3.1 過去和未來的性能趨勢:摩爾定律 6.3.2 理解內存延遲層級 6.3.3 為什麼Java性能調優存在困難 6.4 一個來自於硬件的時間問題 6.4.1 硬件時鐘 6.4.2 麻煩的nanoTime() 6.4.3 時間在性能調優中的作用 6.4.4 案例研究:理解緩存未命中 6.5 垃圾收集 6.5.1 基本算法 6.5.2 標記和清除 6.5.3 jmap 6.5.4 與GC相關的JVM參數 6.5.5 讀懂GC日志 6.5.6 用VisualVM查看內存使用情況 6.5.7 逸出分析 6.5.8 並發標記清除 6.5.9 新的收集器:G1 6.6 HotSpot的JIT編譯 6.6.1 介紹HotSpot 6.6.2 內聯方法 6.6.3 動態編譯和獨占調用 6.6.4 讀懂編譯日志 6.7 小結
第三部分 JVM上的多語言編程 第7章 備選JVM語言 7.1 Java 太笨?純粹誹謗 7.1.1 整合繫統 7.1.2 函數式編程的基本原理 7.1.3 映射與過濾器 7.2 語言生態學 7.2.1 解釋型與編譯型語言 7.2.2 動態與靜態類型 7.2.3 命令式與函數式語言 7.2.4 重新實現的語言與原生語言 7.3 JVM上的多語言編程 7.3.1 為什麼要用非Java語言 7.3.2 嶄露頭角的語言新星 7.4 如何挑選稱心的非Java語言 7.4.1 低風險 7.4.2 與Java的交互操作 7.4.3 良好的工具和測試支持 7.4.4 備選語言學習難度 7.4.5 使用備選語言的開發者 7.5 JVM對備選語言的支持 7.5.1 非Java語言的運行時環境 7.5.2 編譯器小說 7.6 小結
第8章 Groovy:Java的動態伴侶 8.1 Groovy入門 8.1.1 編譯和運行 8.1.2 Groovy控制臺 8.2 Groovy 101:語法和語義 8.2.1 默認導入 8.2.2 數字處理 8.2.3 變量、動態與靜態類型、作用域 8.2.4 列表和映射語法 8.3 與Java的差異--新手陷阱 8.3.1 可選的分號和返回語句 8.3.2 可選的參數括號 8.3.3 訪問限定符 8.3.4 異常處理 8.3.5 Groovy中的相等 8.3.6 內部類 8.4 Java不具備的Groovy特性 8.4.1 GroovyBean 8.4.2 安全解引用操作符 8.4.3 貓王操作符 8.4.4 增強型字符串 8.4.5 函數字面值 8.4.6 內置的集合操作 8.4.7 對正則表達式的內置支持 8.4.8 簡單的XML處理 8.5 Groovy與Java的合作 8.5.1 從Groovy調用Java 8.5.2 從Java調用Groovy 8.6 小結
第9章 Scala:簡約而不簡單 9.1 走馬觀花Scala 9.1.1 簡約的Scala 9.1.2 match表達式 9.1.3 case類 9.1.4 actor 9.2 Scala能用在我的項目中嗎 9.2.1 Scala和Java的比較 9.2.2 何時以及如何開始使用Scala 9.2.3 Scala可能不適合當前項目的跡像 9.3 讓代碼因Scala重新綻放 9.3.1 使用編譯器和REPL 9.3.2 類型推斷 9.3.3 方法 9.3.4 導入 9.3.5 循環和控制結構 9.3.6 Scala的函數式編程 9.4 Scala對像模型:相似但不同 9.4.1 一切皆對像 9.4.2 構造方法 9.4.3 特質 9.4.4 單例和伴生對像 9.4.5 case類和match表達式 9.4.6 警世寓言 9.5 數據結構和集合 9.5.1 List 9.5.2 Map 9.5.3 泛型 9.6 actor介紹 9.6.1 代碼大舞臺 9.6.2 用mailbox跟actor通信 9.7 小結
**0章 Clojure:*安全地編程 10.1 Clojure介紹 10.1.1 Clojure的Hello World 10.1.2 REPL入門 10.1.3 犯了錯誤 10.1.4 學著去愛括號 10.2 尋找Clojure:語法和語義 10.2.1 特殊形式新手營 10.2.2 列表、向量、映射和集 10.2.3 數學運算、相等和其他操作 10.3 使用函數和循環 10.3.1 一些簡單的Clojure函數 10.3.2 Clojure中的循環 10.3.3 讀取器宏和派發器 10.3.4 函數式編程和閉包 10.4 Clojure序列 10.4.1 懶序列 10.4.2 序列和變參函數 10.5 Clojure與Java的互操作 10.5.1 從Clojure中調用Java 10.5.2 Clojure值的Java類型 10.5.3 使用Clojure代理 10.5.4 用REPL做探索式編程 10.5.5 在Java中使用Clojure 10.6 Clojure並發 10.6.1 未來式與並行調用 10.6.2 ref形式 10.6.3 代理 10.7 小結
第四部分 多語種項目開發
**1章 測試驅動開發 11.1 TDD概覽 11.1.1 一個測**例 11.1.2 多個測**例 11.1.3 深入思考紅-綠-重構循環 11.1.4 JUnit 11.2 測試替身 11.2.1 虛設對像 11.2.2 存根對像 11.2.3 偽裝替身 11.2.4 模擬對像 11.3 ScalaTest 11.4 小結
**2章 構建和持續集成 12.1 與Maven 3相遇 12.2 Maven 3入門項目 12.3 用Maven 3構建Java7developer項目 12.3.1 POM 12.3.2 運行示例 12.4 Jenkins:滿足CI需求 12.4.1 基礎配置 12.4.2 設置任務 12.4.3 執行任務 12.5 Maven和Jenkins代碼指標 12.5.1 安裝Jenkins插件 12.5.2 用Checkstyle保持代碼一致性 12.5.3 用FindBugs設定質量標杆 12.6 Leiningen 12.6.1 Leiningen入門 12.6.2 Leiningen的架構 12.6.3 Hello Lein 12.6.4 用Leiningen做面向REPL的TDD 12.6.5 用Leiningen打包和部署 12.7 小結
**3章 快速Web開發 13.1 Java Web框架的問題 13.1.1 Java編譯為什麼不好 13.1.2 靜態類型為什麼不好 13.2 選擇Web框架的標準 13.3 Grails入門 13.4 Grails快速啟動項目 13.4.1 創建域對像 13.4.2 測試驅動開發 13.4.3 域對像持久化 13.4.4 創建測試數據 13.4.5 控制器 13.4.6 GSP/JSP頁面 13.4.7 腳手架和UI的自動化創建 13.4.8 快速周轉的開發 13.5 深入Grails 13.5.1 日志 13.5.2 GORM:對像關繫映射 13.5.3 Grails插件 13.6 Compojure入門 13.6.1 Hello Compojure 13.6.2 Ring和路由 13.6.3 Hiccup 13.7 我是不是一隻水獺 13.7.1 項目設置 13.7.2 核心函數 13.8 小結
**4章 保持** 14.1 對Java 8的期待 14.1.1 lambda表達式(閉包) 14.1.2 模塊化(拼圖Jigsaw) 14.2 多語言編程 14.2.1 語言的互操對像協議 14.2.2 多語言模塊化 14.3 未來的並發趨勢 14.3.1 多核的世界 14.3.2 運行時管理的並發 14.4 JVM的新方向 14.4.1 VM的合並 14.4.2 協同程序 14.4組 14.5 小結 附錄A java7developer:源碼安裝 附錄B glob模式語法及示例 附錄C 安裝備選JVM語言 附錄D Jenkins的下載和安裝 附錄E java7developer:Maven POM
" |