全端Web開發(fā):使用JavaScript與Java.pdf下載
百度網(wǎng)盤:
鏈接:https://pan.baidu.com/s/1fISVdnPm8ZIqC0F34nOBBQ
提取碼:cnot
城通網(wǎng)盤:
https://u1762355.ctfile.com/fs/1762355-365403410

圖靈社區(qū)的電子書沒有采用專有客
戶端,您可以在任意設(shè)備上,用自
己喜歡的瀏覽器和PDF閱讀器進行
閱讀。
但您購買的電子書僅供您個人使用,
未經(jīng)授權(quán),不得進行傳播。
我們愿意相信讀者具有這樣的良知
和覺悟,與我們共同保護知識產(chǎn)權(quán)。
!
如果購買者有侵權(quán)行為,我們可能
對該用戶實施包括但不限于關(guān)閉該
帳號等維權(quán)措施,并可能追究法律
責任。
數(shù)字版權(quán)聲明
圖靈程序設(shè)計叢書
人 民 郵 電 出 版 社
北 京
Client-Server Web
Apps with JavaScript and Java
[美]Casimir Saternos 著
王群鋒 杜歡 譯
全端Web開發(fā)
使用JavaScript與Java
Beijing ? Cambridge ? Farnham ? K?ln ? Sebastopol ? Tokyo
O’Reilly Media, Inc.授權(quán)人民郵電出版社出版
內(nèi) 容 提 要
JavaScript 和Java 這兩大生態(tài)系統(tǒng)之間如何協(xié)同,成為所有Web 開發(fā)人員共同面臨的問題。
本書應(yīng)運而生,全面又簡練地為讀者展示了最新的C/S 應(yīng)用開發(fā)范式。本書以Java 和JavaScript
這兩種最流行的服務(wù)器與客戶端開發(fā)環(huán)境為例,全面講解了最新的C/S 應(yīng)用開發(fā)范式。作者不僅
講解了很多實用的C/S 開發(fā)架構(gòu),還通過各種實例進一步強化了讀者的認知。
這是一本寫給Java 程序員的完整的最新C/S 應(yīng)用開發(fā)范式的指南。
定價:59.00元
讀者服務(wù)熱線:(010)51095186轉(zhuǎn)600 印裝質(zhì)量熱線:(010)81055316
反盜版熱線:(010)81055315
廣告經(jīng)營許可證:京崇工商廣字第 0021 號
著 [美] Casimir Saternos
譯 王群鋒 杜 歡
責任編輯 毛倩倩
執(zhí)行編輯 毛倩倩 岳新欣
責任印制 楊林杰
人民郵電出版社出版發(fā)行 北京市豐臺區(qū)成壽寺路11號
郵編 100164 電子郵件 315@ptpress.com.cn
網(wǎng)址 http://www.ptpress.com.cn
北京 印刷
開本:800×1000 1/16
印張:13.75
字數(shù):326千字 2015年 8 月第 1 版
印數(shù):1 — 3 500冊 2015年 8 月北京第 1次印刷
著作權(quán)合同登記號 圖字:01-2014-8385號
◆
◆
◆
iii
版權(quán)聲明
? 2014 by O’Reilly Media, Inc.
Simplified Chinese Edition, jointly published by O’Reilly Media, Inc. and Posts & Telecom
Press, 2015. Authorized translation of the English edition, 2015 O’Reilly Media, Inc., the
owner of all rights to publish and sell the same.
All rights reserved including the rights of reproduction in whole or in part in any form.
英文原版由O’Reilly Media, Inc. 出版,2014。
簡體中文版由人民郵電出版社出版, 2015。英文原版的翻譯得到 O’Reilly Media, Inc. 的
授權(quán)。此簡體中文版的出版和銷售得到出版權(quán)和銷售權(quán)的所有者——O’Reilly Media, Inc.
的許可。
版權(quán)所有,未得書面許可,本書的任何部分和全部不得以任何形式重制。
O’Reilly Media 通過圖書、雜志、在線服務(wù)、調(diào)查研究和會議等方式傳播創(chuàng)新知識。
自1978 年開始,O’Reilly 一直都是前沿發(fā)展的見證者和推動者。超級極客們正在開創(chuàng)
著未來,而我們關(guān)注真正重要的技術(shù)趨勢——通過放大那些“細微的信號”來刺激社
會對新科技的應(yīng)用。作為技術(shù)社區(qū)中活躍的參與者,O’Reilly 的發(fā)展充滿了對創(chuàng)新的
倡導、創(chuàng)造和發(fā)揚光大。
O’Reilly 為軟件開發(fā)人員帶來革命性的“動物書”;創(chuàng)建第一個商業(yè)網(wǎng)站(GNN);組
織了影響深遠的開放源代碼峰會,以至于開源軟件運動以此命名;創(chuàng)立了Make 雜志,
從而成為DIY 革命的主要先鋒;公司一如既往地通過多種形式締結(jié)信息與人的紐帶。
O’Reilly 的會議和峰會集聚了眾多超級極客和高瞻遠矚的商業(yè)領(lǐng)袖,共同描繪出開創(chuàng)
新產(chǎn)業(yè)的革命性思想。作為技術(shù)人士獲取信息的選擇,O’Reilly 現(xiàn)在還將先鋒專家的
知識傳遞給普通的計算機用戶。無論是通過書籍出版,在線服務(wù)或者面授課程,每一
項O’Reilly 的產(chǎn)品都反映了公司不可動搖的理念——信息是激發(fā)創(chuàng)新的力量。
業(yè)界評論
“O’Reilly Radar 博客有口皆碑?!?/p>
——Wired
“O’Reilly 憑借一系列(真希望當初我也想到了)非凡想法建立了數(shù)百萬美元的業(yè)務(wù)?!?/p>
——Business 2.0
“O’Reilly Conference 是聚集關(guān)鍵思想領(lǐng)袖的絕對典范?!?/p>
——CRN
“一本O’Reilly 的書就代表一個有用、有前途、需要學習的主題。”
——Irish Times
“Tim 是位特立獨行的商人,他不光放眼于最長遠、最廣闊的視野并且切實地按照
Yogi Berra 的建議去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顧過去
Tim 似乎每一次都選擇了小路,而且有幾次都是一閃即逝的機會,盡管大路也不錯?!?/p>
——Linux Journal
O’Reilly Media, Inc.介紹
v
目錄
前言 ........................................................................................................................................................xiii
第1 章 因變而變 ................................................................................................................................1
1.1 Web 用戶 ....................................................................................................................................2
1.2 技術(shù) .............................................................................................................................................2
1.3 軟件開發(fā) .....................................................................................................................................3
1.4 哪些沒變 .....................................................................................................................................4
1.4.1 Web 的本質(zhì) ....................................................................................................................5
1.4.2 為什么說服務(wù)器驅(qū)動的Web 開發(fā)有害 .......................................................................6
1.5 為什么需要客戶端- 服務(wù)器端的Web 應(yīng)用 ...........................................................................7
1.5.1 代碼組織結(jié)構(gòu)/ 軟件架構(gòu) .............................................................................................7
1.5.2 “設(shè)計的靈活性”與“使用開源API” .........................................................................7
1.5.3 原型 ................................................................................................................................7
1.5.4 開發(fā)者的效率 ................................................................................................................8
1.5.5 應(yīng)用性能 ........................................................................................................................8
1.6 小結(jié) .............................................................................................................................................9
第2 章 JavaScript 和JavaScript 工具 .....................................................................................11
2.1 學習JavaScript .........................................................................................................................12
2.2 JavaScript 的歷史 .....................................................................................................................13
2.3 一門函數(shù)式語言 .......................................................................................................................14
2.3.1 作用域 ..........................................................................................................................15
2.3.2 一級函數(shù) ......................................................................................................................16
2.3.3 函數(shù)聲明和表達式 ......................................................................................................17
2.3.4 函數(shù)調(diào)用 ......................................................................................................................19
vi | 目錄
2.3.5 函數(shù)參數(shù) ......................................................................................................................19
2.3.6 對象 ..............................................................................................................................20
2.4 面向Java 開發(fā)者的JavaScript ................................................................................................20
2.4.1 HelloWord.java .............................................................................................................20
2.4.2 帶變量的HelloWord.java ............................................................................................23
2.5 最佳開發(fā)實踐 ...........................................................................................................................25
2.5.1 編碼規(guī)范和約定 ..........................................................................................................25
2.5.2 瀏覽器 ..........................................................................................................................26
2.5.3 集成開發(fā)環(huán)境 ..............................................................................................................26
2.5.4 單元測試 ......................................................................................................................27
2.5.5 文檔 ..............................................................................................................................27
2.6 項目 ...........................................................................................................................................27
第3 章 REST 和JSON ................................................................................................................33
3.1 什么是REST ............................................................................................................................34
3.1.1 資源 ..............................................................................................................................34
3.1.2 動詞(HTTP 請求) .....................................................................................................34
3.1.3 統(tǒng)一資源標識符 ..........................................................................................................35
3.2 REST 約束 ................................................................................................................................36
3.2.1 客戶端- 服務(wù)器端 ......................................................................................................36
3.2.2 無狀態(tài) ..........................................................................................................................36
3.2.3 可緩存 ..........................................................................................................................37
3.2.4 統(tǒng)一接口 ......................................................................................................................37
3.2.5 分層 ..............................................................................................................................38
3.2.6 按需交付代碼 ..............................................................................................................38
3.3 HTTP 響應(yīng)代碼 ........................................................................................................................38
3.4 JSON .........................................................................................................................................39
3.5 HATEOAS ................................................................................................................................40
3.6 API 衡量和分類 .......................................................................................................................43
3.7 函數(shù)式編程和REST ................................................................................................................43
3.8 項目 ...........................................................................................................................................44
3.9 其他Web API 工具 ..................................................................................................................48
3.10 約束回顧 .................................................................................................................................48
第4 章 Java 工具 ............................................................................................................................49
4.1 Java 語言 ...................................................................................................................................49
4.2 Java 虛擬機 ...............................................................................................................................50
4.3 Java 工具 ...................................................................................................................................51
4.4 構(gòu)建工具 ...................................................................................................................................52
4.4.1 Maven 的優(yōu)點 ..............................................................................................................54
目錄 | vii
4.4.2 Maven 的功能 ..............................................................................................................54
4.4.3 版本控制 ......................................................................................................................55
4.4.4 單元測試 ......................................................................................................................56
4.5 處理JSON 的Java 類庫 ..........................................................................................................56
4.6 項目 ...........................................................................................................................................57
4.6.1 用Java 處理JSON .......................................................................................................57
4.6.2 用JVM 上的腳本語言處理JSON ..............................................................................59
4.7 小結(jié) ...........................................................................................................................................62
第5 章 客戶端框架 .........................................................................................................................65
5.1 概述 ...........................................................................................................................................65
5.2 起點一:響應(yīng)式Web 設(shè)計 .....................................................................................................67
5.2.1 HTML5 Boilerplate ......................................................................................................68
5.2.2 Bootstrap .......................................................................................................................68
5.3 起點二:JavaScript 庫和框架 .................................................................................................69
5.3.1 瀏覽器兼容性 ..............................................................................................................69
5.3.2 框架 ..............................................................................................................................69
5.3.3 功能 ..............................................................................................................................70
5.3.4 流行程度 ......................................................................................................................70
5.4 獲取起始項目 ...........................................................................................................................71
5.4.1 直接從倉庫下載 ..........................................................................................................71
5.4.2 從入門網(wǎng)站下載 ..........................................................................................................71
5.4.3 IDE 生成的起始項目 ...................................................................................................72
5.5 前端工程師的崛起 ...................................................................................................................72
5.5.1 客戶端模板 ..................................................................................................................72
5.5.2 資源管道 ......................................................................................................................73
5.5.3 開發(fā)流程 ......................................................................................................................74
5.6 項目 ...........................................................................................................................................74
5.7 小結(jié) ...........................................................................................................................................76
第6 章 Java Web API 服務(wù)器 .....................................................................................................77
6.1 更簡單的服務(wù)器端解決方案 ...................................................................................................77
6.2 基于Java 的服務(wù)器 ..................................................................................................................79
6.2.1 Java HTTP 服務(wù)器 .......................................................................................................79
6.2.2 Jetty 嵌入式服務(wù)器 ......................................................................................................81
6.2.3 Restlet ...........................................................................................................................82
6.2.4 Roo ................................................................................................................................83
6.2.5 Netty 嵌入式服務(wù)器.....................................................................................................87
6.2.6 Play 服務(wù)器 ..................................................................................................................89
6.2.7 其他輕量級服務(wù)器 ......................................................................................................92
viii | 目錄
6.3 基于JVM 的服務(wù)器 .................................................................................................................92
6.4 Web 應(yīng)用服務(wù)器 ......................................................................................................................93
6.5 如何在開發(fā)中使用 ...................................................................................................................94
6.6 小結(jié) ...........................................................................................................................................94
第7 章 快速開發(fā)實踐 ....................................................................................................................95
7.1 開發(fā)者的生產(chǎn)率 .......................................................................................................................95
7.2 優(yōu)化開發(fā)者和團隊的工作流程 ...............................................................................................98
7.2.1 例子:修復Web 應(yīng)用 .................................................................................................99
7.2.2 例子:測試集成 ........................................................................................................100
7.2.3 例子:綠地開發(fā) ........................................................................................................101
7.3 生產(chǎn)率和軟件開發(fā)生命周期 .................................................................................................101
7.3.1 管理方式和企業(yè)文化 ................................................................................................102
7.3.2 技術(shù)架構(gòu) ....................................................................................................................102
7.3.3 軟件工具 ....................................................................................................................103
7.3.4 性能 ............................................................................................................................104
7.3.5 測試 ............................................................................................................................104
7.3.6 底層平臺 ....................................................................................................................105
7.4 小結(jié) .........................................................................................................................................106
第8 章 API 設(shè)計 ............................................................................................................................107
8.1 設(shè)計的起點 .............................................................................................................................108
8.2 實用的Web API 與REST API ..............................................................................................109
8.3 指引 .........................................................................................................................................110
8.3.1 名詞即資源,動詞即HTTP 行為 ............................................................................110
8.3.2 請求參數(shù)作為修飾符 ................................................................................................ 111
8.3.3 Web API 版本 .............................................................................................................112
8.3.4 HTTP 標頭 .................................................................................................................113
8.3.5 鏈接 ............................................................................................................................113
8.3.6 響應(yīng) ............................................................................................................................113
8.3.7 文檔 ............................................................................................................................113
8.3.8 格式約定 ....................................................................................................................114
8.3.9 安全性 ........................................................................................................................114
8.4 項目 .........................................................................................................................................114
8.4.1 運行項目 ....................................................................................................................114
8.4.2 服務(wù)端代碼 ................................................................................................................115
8.4.3 Curl 和jQuery ............................................................................................................117
8.5 實踐理論 .................................................................................................................................118
目錄 | ix
第9 章 jQuery 和Jython .............................................................................................................119
9.1 服務(wù)端:Jython ......................................................................................................................120
9.1.1 Python Web 服務(wù)器 ....................................................................................................120
9.1.2 Jython Web 服務(wù)器 .....................................................................................................120
9.1.3 Mock API ....................................................................................................................121
9.2 客戶端:jQuery ......................................................................................................................122
9.2.1 DOM 遍歷和操作 ......................................................................................................122
9.2.2 實用函數(shù) ....................................................................................................................123
9.2.3 效果 ............................................................................................................................124
9.2.4 事件處理 ....................................................................................................................124
9.2.5 Ajax .............................................................................................................................124
9.3 jQuery 和更高級的抽象 .........................................................................................................125
9.4 項目 .........................................................................................................................................125
9.4.1 基礎(chǔ)HTML ................................................................................................................126
9.4.2 JavaScript 和jQuery ...................................................................................................126
9.5 小結(jié) .........................................................................................................................................128
第10 章 JRuby 和Angular ........................................................................................................129
10.1 服務(wù)器端:JRuby 和Sinatra ...............................................................................................130
10.1.1 工作流 .....................................................................................................................130
10.1.2 交互式Ruby shell ...................................................................................................131
10.1.3 Ruby 版本管理器 ...................................................................................................131
10.1.4 包 .............................................................................................................................132
10.1.5 Sinatra ......................................................................................................................133
10.1.6 JSON 處理 ..............................................................................................................134
10.2 客戶端:AngularJS ..............................................................................................................135
10.2.1 模型 .........................................................................................................................135
10.2.2 視圖 .........................................................................................................................135
10.2.3 控制器 .....................................................................................................................136
10.2.4 服務(wù) .........................................................................................................................136
10.3 比較jQuery 和Angular ........................................................................................................136
10.3.1 DOM 和模型操作 ...................................................................................................136
10.3.2 Angular 的不可見性 ...............................................................................................137
10.4 項目 .......................................................................................................................................137
10.5 小結(jié) .......................................................................................................................................143
第11 章 打包和部署 .....................................................................................................................145
11.1 打包Java 和JEE 應(yīng)用 .........................................................................................................145
11.2 JEE 應(yīng)用的部署 ...................................................................................................................147
x | 目錄
11.2.1 圖形界面管理 .........................................................................................................148
11.2.2 命令行管理 .............................................................................................................150
11.3 非JEE 應(yīng)用的部署 ..............................................................................................................151
11.3.1 服務(wù)器在應(yīng)用之外 .................................................................................................152
11.3.2 服務(wù)器和應(yīng)用并行 .................................................................................................152
11.3.3 服務(wù)器在應(yīng)用里面 .................................................................................................154
11.4 不同部署方式帶來的影響 ...................................................................................................154
11.4.1 負載均衡 .................................................................................................................155
11.4.2 自動化應(yīng)用部署 .....................................................................................................156
11.5 項目 .......................................................................................................................................157
11.5.1 客戶端 .....................................................................................................................157
11.5.2 服務(wù)器端 .................................................................................................................158
11.6 小結(jié) .......................................................................................................................................158
第12 章 虛擬化 ..............................................................................................................................159
12.1 全虛擬化 ...............................................................................................................................159
12.2 虛擬機的實現(xiàn) .......................................................................................................................161
12.2.1 VMWare ..................................................................................................................161
12.2.2 VirtualBox ...............................................................................................................161
12.2.3 Amazon EC2 ...........................................................................................................161
12.3 虛擬機的管理 .......................................................................................................................162
12.3.1 Vagrant ....................................................................................................................162
12.3.2 Packer ......................................................................................................................162
12.3.3 DevOps 配置管理 ...................................................................................................163
12.4 容器 .......................................................................................................................................163
12.4.1 LXC .........................................................................................................................164
12.4.2 Docker .....................................................................................................................164
12.5 項目 .......................................................................................................................................165
12.5.1 Docker 幫助 ............................................................................................................166
12.5.2 鏡像和容器的維護 .................................................................................................166
12.5.3 在Docker 里使用Java ...........................................................................................167
12.5.4 Docker 和Vagrant 的網(wǎng)絡(luò)設(shè)置 ..............................................................................169
12.6 小結(jié) .......................................................................................................................................170
第13 章 測試和文檔 .....................................................................................................................171
13.1 測試的種類 ...........................................................................................................................172
13.1.1 “正式”與“非正式” .............................................................................................172
13.1.2 測試范圍 .................................................................................................................172
13.1.3 誰來測?測什么?為誰測 .....................................................................................173
13.2 測試反映了組織的成熟度 ...................................................................................................173
目錄 | xi
13.2.1 使用軟件能力成熟度模型評價流程 .....................................................................173
13.2.2 使用Maven 促進流程統(tǒng)一 ....................................................................................174
13.2.3 使用行為驅(qū)動開發(fā)促進流程統(tǒng)一 .........................................................................176
13.3 測試框架 ...............................................................................................................................176
13.3.1 JUnit ........................................................................................................................177
13.3.2 Jasmine ....................................................................................................................177
13.3.3 Cucumber ................................................................................................................178
13.4 項目 .......................................................................................................................................179
13.4.1 JUnit ........................................................................................................................180
13.4.2 Jasmine ....................................................................................................................180
13.4.3 Cucumber ................................................................................................................181
13.4.4 Maven 報告 .............................................................................................................181
13.5 小結(jié) .......................................................................................................................................182
第14 章 總結(jié) ..................................................................................................................................183
14.1 社區(qū) .......................................................................................................................................183
14.2 歷史 .......................................................................................................................................184
14.3 尾聲 .......................................................................................................................................184
附錄A JRuby IRB 及Java API ................................................................................................185
附錄B REST 式的Web API 總結(jié) ............................................................................................191
附錄C 參考文獻 ............................................................................................................................196