Java程序員修煉之道

《Java程序員修煉之道》
基本信息
原書名:The well-grounded Java developer:vital techniques of Java 7 and polyglot programming
做者: (英)Benjamin J.Evans (荷蘭)Martijn Verburg
譯者: 吳海星
叢書名: 圖靈程序設計叢書
出版社:人民郵電出版社
ISBN:9787115321954
上架時間:2013-6-28
出版日期:2013 年7月
開本:16開
頁碼:1
版次:1-1
所屬分類:計算機
更多關於 》》》《 Java程序員修煉之道
內容簡介
計算機書籍
  《java程序員修煉之道》分爲四部分,第一部分全面介紹java 7 的新特性,第二部分探討java 關鍵編程知識和技術,第三部分討論jvm 上的新語言和多語言編程,第四部分將平臺和多語言編程知識付諸實踐。從介紹java 7 的新特性入手,本書涵蓋了java 開發中最重要的技術,好比依賴注入、測試驅動的開發和持續集成,探索了jvm 上的非java 語言,並詳細講解了多語言項目, 特別是涉及groovy、scala 和clojure 語言的項目。此外,書中含有大量代碼示例,幫助讀者從實踐中理解java 語言和平臺。
   《java程序員修煉之道》適合java 開發人員以及對java7 和jvm 新語言感興趣的各領域人士閱讀。
   隨着核心平臺以及生態系統的不斷創新,java技術一直在快速向前發展。《java程序員修煉之道》涵蓋了java 7的最新特性和java開發的關鍵技術,對當前大量開源技術並存,多核處理器、併發以及海量數據給java開發帶來的挑戰做出了精闢的分析,提供了實踐前沿的深入洞見,涉及依賴注入、現代併發、類與字節碼、性能調優等底層概念的剖析。
   今天,掌握jvm上的新語言對java開發人員的意義非比尋常。所以本書除了深刻探討java關鍵技術,還用較大篇幅全面討論了jvm上的多語言開發和項目控制,包括groovy、scala和clojure這些優秀的新語言。這些技術能夠幫助java開發人員構建下一代商業軟件。java開發人員若要修煉進階,本書絕對不容錯過!
目錄
《java程序員修煉之道》
第一部分 用java 7作開發
第1章 初識java 7  2
1.1  語言與平臺  2
1.2  coin項目:濃縮的都是精華  4
1.3  coin項目中的修改  7
1.3.1  switch語句中的string  7
1.3.2  更強的數值文本表示法  8
1.3.3  改善後的異常處理  9
1.3.4  try-with-resources(twr)  11
1.3.5  鑽石語法  13
1.3.6  簡化變參方法調用  14
1.4  小結  15
第2章 新i/o  17
2.1  java i/o簡史  18
2.1.1  java 1.0到1.3  19
2.1.2  在java 1.4中引入的nio  19
2.1.3  下一代i/o-nio.2  20
2.2  文件i/o的基石:path  20
2.2.1  建立一個path  23
.2.2.2  從path中獲取信息  23
2.2.3  移除冗餘項  24
2.2.4  轉換path  25
2.2.5  nio.2 path和java已有的file類  25
2.3  處理目錄和目錄樹  26
2.3.1  在目錄中查找文件  26
2.3.2  遍歷目錄樹  27
2.4  nio.2的文件系統i/o  28
2.4.1  建立和刪除文件  29
2.4.2  文件的複製和移動  30
2.4.3  文件的屬性  31
2.4.4  快速讀寫數據  34
2.4.5  文件修改通知  35
2.4.6  seekablebytechannel  37
2.5  異步 i/o操做  37
2.5.1  未來式  38
2.5.2  回調式  40
2.6  socket和channel的整合  41
2.6.1  networkchannel  42
2.6.2  multicastchannel  42
2.7  小結  43
第二部分 關鍵技術
第3章 依賴注入  46
3.1  知識注入:理解ioc和di  46
3.1.1  控制反轉  47
3.1.2  依賴注入  48
3.1.3  轉成di  49
3.2  java中標準化的di  53
3.2.1  @inject註解  54
3.2.2  @qualifier註解  55
3.2.3  @named註解  57
3.2.4  @scope註解  57
3.2.5  @singleton註解  57
3.2.6  接口provider[t]  58
3.3   java中的di參考實現:guice 3  59
3.3.1  guice新手指南  59
3.3.2  水手繩結:guice的各類綁定  62
3.3.3  在guice中限定注入對象的生命週期  64
3.4  小結  66
第4章 現代併發  67
4.1  併發理論簡介  68
4.1.1  解釋java線程模型  68
4.1.2  設計理念  69
4.1.3  這些原則如何以及爲什麼會相互衝突  70
4.1.4  系統開銷之源  71
4.1.5  一個事務處理的例子  71
4.2  塊結構併發(java 5以前)  72
4.2.1  同步與鎖  73
4.2.2  線程的狀態模型  74
4.2.3  徹底同步對象  74
4.2.4  死鎖  76
4.2.5  爲何是synchronized  77
4.2.6  關鍵字volatile  78
4.2.7  不可變性  79
4.3  現代併發應用程序的構件  80
4.3.1  原子類:java.util. concurrent.atomic  81
4.3.2  線程鎖:java.util. concurrent.locks  81
4.3.3  countdownlatch  85
4.3.4  concurrenthashmap  86
4.3.5  copyonwritearraylist  87
4.3.6  queue  90
4.4  控制執行  95
4.4.1  任務建模  96
4.4.2  scheduledthread-poolexecutor  97
4.5  分支/合併框架  98
4.5.1  一個簡單的分支/合併例子  99
4.5.2  forkjointask與工做竊取  101
4.5.3  並行問題  102
4.6  java內存模型  103
4.7  小結  104
第5章 類文件與字節碼  106
5.1  類加載和類對象  107
5.1.1  加載和鏈接概覽  107
5.1.2  驗證  108
5.1.3  class對象  108
5.1.4  類加載器  109
5.1.5  示例:依賴注入中的類加載器  110
5.2  使用方法句柄  111
5.2.1  methodhandle  112
5.2.2  methodtype  112
5.2.3  查找方法句柄  113
5.2.4  示例:反射、代理與方法句柄  114
5.2.5  爲何選擇methodhandle  116
5.3  檢查類文件  117
5.3.1  介紹javap  117
5.3.2  方法簽名的內部形式  118
5.3.3  常量池  119
5.4  字節碼  121
5.4.1  示例:反編譯類  121
5.4.2  運行時環境  123
5.4.3  操做碼介紹  124
5.4.4  加載和儲存操做碼  125
5.4.5  數學運算操做碼  125
5.4.6  執行控制操做碼  126
5.4.7  調用操做碼  126
5.4.8  平臺操做操做碼  127
5.4.9  操做碼的快捷形式  127
5.4.10  示例:字符串拼接  127
5.5  invokedynamic  129
5.5.1  invokedynamic如何工做  129
5.5.2  示例:反編譯invokedynamic調用  130
5.6  小結  132
第6章 理解性能調優  133
6.1  性能術語  134
6.1.1  等待時間  135
6.1.2  吞吐量  135
6.1.3  利用率  135
6.1.4  效率  135
6.1.5  容量  136
6.1.6  擴展性  136
6.1.7  退化  136
6.2  務實的性能分析法  136
6.2.1  知道你在測量什麼  137
6.2.2  知道怎麼測量  137
6.2.3  知道性能目標是什麼  138
6.2.4  知道何時中止優化  139
6.2.5  知道高性能的成本  139
6.2.6  知道過早優化的危險  140
6.3  哪裏出錯了?咱們擔憂的緣由  140
6.3.1  過去和將來的性能趨勢:摩爾定律  141
6.3.2  理解內存延遲層級  142
6.3.3  爲何java性能調優存在困難  143
6.4  一個來自於硬件的時間問題  144
6.4.1  硬件時鐘  144
6.4.2  麻煩的nanotime()  144
6.4.3  時間在性能調優中的做用  146
6.4.4  案例研究:理解緩存未命中  147
6.5  垃圾收集  149
6.5.1  基本算法  149
6.5.2  標記和清除  150
6.5.3  jmap  152
6.5.4  與gc相關的jvm參數  155
6.5.5  讀懂gc日誌  156
6.5.6  用visualvm查看內存使用狀況  157
6.5.7  逸出分析  159
6.5.8  併發標記清除  160
6.5.9  新的收集器:g1  161
6.6  hotspot的jit編譯  162
6.6.1  介紹hotspot  163
6.6.2  內聯方法  164
6.6.3  動態編譯和獨佔調用  165
6.6.4  讀懂編譯日誌  166
6.7  小結  167
第三部分 jvm上的多語言編程
第7章 備選jvm語言  170
7.1  java 太笨?純粹誹謗  170
7.1.1  整合系統  171
7.1.2  函數式編程的基本原理  172
7.1.3  映射與過濾器  173
7.2  語言生態學  174
7.2.1  解釋型與編譯型語言  175
7.2.2  動態與靜態類型  175
7.2.3  命令式與函數式語言  176
7.2.4  從新實現的語言與原生語言  176
7.3  jvm上的多語言編程  177
7.3.1  爲何要用非java語言  178
7.3.2  嶄露頭角的語言新星  179
7.4  如何挑選趁心的非java語言  180
7.4.1  低風險  181
7.4.2  與java的交互操做  181
7.4.3  良好的工具和測試支持  182
7.4.4  備選語言學習難度  182
7.4.5  使用備選語言的開發者  182
7.5  jvm對備選語言的支持  183
7.5.1  非java語言的運行時環境  183
7.5.2  編譯器小說  184
7.6  小結  185
第8章 groovy:java的動態伴侶  187
8.1  groovy入門  189
8.1.1  編譯和運行  189
8.1.2  groovy控制檯  190
8.2  groovy 101:語法和語義  191
8.2.1  默認導入  192
8.2.2  數字處理  192
8.2.3  變量、動態與靜態類型、做用域  193
8.2.4  列表和映射語法  195
8.3  與java的差別——新手陷阱  196
8.3.1  可選的分號和返回語句  196
8.3.2  可選的參數括號  197
8.3.3  訪問限定符  197
8.3.4  異常處理  198
8.3.5  groovy中的相等  198
8.3.6  內部類  199
8.4  java不具有的groovy特性  199
8.4.1  groovybean  199
8.4.2  安全解引用操做符  200
8.4.3  貓王操做符  201
8.4.4  加強型字符串  201
8.4.5  函數字面值  202
8.4.6  內置的集合操做  203
8.4.7  對正則表達式的內置支持  204
8.4.8  簡單的xml處理  205
8.5  groovy與java的合做  207
8.5.1  從groovy調用java  207
8.5.2  從java調用groovy  208
8.6  小結  211
第9章 scala:簡約而不簡單  212
9.1  蜻蜓點水scala  213
9.1.1  簡約的scala  213
9.1.2  match表達式  215
9.1.3  case類  217
9.1.4  actor  218
9.2  scala能用在個人項目中嗎  219
9.2.1  scala和java的比較  219
9.2.2  什麼時候以及如何開始使用scala  220
9.2.3  scala可能不適合當前項目的跡象  220
9.3  讓代碼因scala從新綻開  221
9.3.1  使用編譯器和repl  221
9.3.2  類型推斷  222
9.3.3  方法  223
9.3.4  導入  224
9.3.5  循環和控制結構  224
9.3.6  scala的函數式編程  225
9.4  scala對象模型:類似但不一樣  226
9.4.1  一切皆對象  226
9.4.2  構造方法  228
9.4.3  特質  228
9.4.4  單例和伴生對象  230
9.4.5  case類和match表達式  232
9.4.6  警世寓言  234
9.5  數據結構和集合  235
9.5.1  list  235
9.5.2  map  238
9.5.3  泛型  239
9.6  actor介紹  242
9.6.1  代碼大舞臺  242
9.6.2  用mailbox跟actor通訊  243
9.7  小結  244
第10章 clojure:更安全地編程  245
10.1  clojure介紹  245
10.1.1  clojure的hello world  246
10.1.2  repl入門  247
10.1.3  犯了錯誤  248
10.1.4  學着去愛括號  248
10.2  尋找clojure:語法和語義  249
10.2.1  特殊形式新手營  249
10.2.2  列表、向量、映射和集  250
10.2.3  數學運算、相等和其餘操做  252
10.3  使用函數和循環  253
10.3.1  一些簡單的clojure函數  253
10.3.2  clojure中的循環  255
10.3.3  讀取器宏和派發器  256
10.3.4  函數式編程和閉包  257
10.4  clojure序列  258
10.4.1  懶序列  260
10.4.2  序列和變參函數  261
10.5  clojure與java的互操做  262
10.5.1  從clojure中調用java  262
10.5.2  clojure值的java類型  263
10.5.3  使用clojure代理  264
10.5.4  用repl作探索式編程  264
10.5.5  在java中使用clojure  265
10.6  clojure併發  265
10.6.1  將來式與並行調用  266
10.6.2  ref形式  267
10.6.3  代理  271
10.7  小結  272
第四部分 多語種項目開發
第11章 測試驅動開發  274
11.1  tdd概覽  275
11.1.1  一個測試用例  276
11.1.2  多個測試用例  280
11.1.3  深刻思考紅—綠—重構循環  282
11.1.4  junit  283
11.2  測試替身  285
11.2.1  虛設對象  286
11.2.2  存根對象  287
11.2.3  假裝替身  290
11.2.4  模擬對象  295
11.3  scalatest  296
11.4  小結  298
第12章 構建和持續集成  300
12.1  與maven 3相遇  302
12.2  maven 3入門項目  303
12.3  用maven 3構建java7developer項目  305
12.3.1  pom  305
12.3.2  運行示例  311
12.4  jenkins:知足ci需求  314
12.4.1  基礎配置  315
12.4.2  設置任務  316
12.4.3  執行任務  319
12.5  maven和jenkins代碼指標  320
12.5.1  安裝jenkins插件  321
12.5.2  用checkstyle保持代碼一致性  322
12.5.3  用findbugs設定質量標杆  323
12.6  leiningen  325
12.6.1  leiningen入門  326
12.6.2  leiningen的架構  326
12.6.3  hello lein  327
12.6.4  用leiningen作面向repl的tdd  329
12.6.5  用leiningen打包和部署  330
12.7  小結  332
第13章 快速web開發  333
13.1  java web框架的問題  334
13.1.1  java編譯爲何很差  335
13.1.2  靜態類型爲何很差  335
13.2  選擇web框架的標準  336
13.3  grails入門  338
13.4  grails快速啓動項目  338
13.4.1  建立域對象  340
13.4.2  測試驅動開發  340
13.4.3  域對象持久化  342
13.4.4  建立測試數據  343
13.4.5  控制器  343
13.4.6  gsp/jsp頁面  344
13.4.7  腳手架和ui的自動化建立  346
13.4.8  快速週轉的開發  347
13.5  深刻grails  347
13.5.1  日誌  347
13.5.2  gorm:對象關係映射  348
13.5.3  grails插件  349
13.6  compojure入門  350
13.6.1  hello compojure  350
13.6.2  ring和路由  352
13.6.3  hiccup  353
13.7  我是否是一隻水獺  353
13.7.1  項目設置  354
13.7.2  核心函數  357
13.8  小結  359
第14章 保持優秀  361
14.1  對java 8的期待  361
14.1.1  lambda表達式(閉包)  362
14.1.2  模塊化(拼圖jigsaw)  363
14.2  多語言編程  365
14.2.1  語言的互操做性及元對象協議  365
14.2.2  多語言模塊化  366
14.3  將來的併發趨勢  367
14.3.1  多核的世界  367
14.3.2  運行時管理的併發  367
14.4  jvm的新方向  368
14.4.1  vm的合併  368
14.4.2  協同程序  369
14.4.3  元組  370
14.5  小結  372
附錄a  java7developer:源碼安裝  373
附錄b  glob模式語法及示例  380
附錄c  安裝備選jvm語言  382
附錄d  jenkins的下載和安裝  388
附錄e  java7developer:maven pom  390
圖書信息來源: 互動出版網
相關文章
相關標籤/搜索