編輯推薦
近幾年來,用戶習慣、技術和開發方法極大地改變瞭Web應用的設計,但是Web本身並沒有變化。本書展示瞭如何開發齣遵循Web底層架構的應用。
作為一名Java程序員,在以客戶端-服務器端架構開發Web應用時,如何應對各種難題?這本內容詳盡的指南將告訴你如何使用各種Java工具、客戶端技術和Web API開發Web應用。作者首先概括瞭客戶端-服務器端技術,然後詳細介紹瞭很多實用的客戶端-服務器端架構。你將在多個章節中參與到實戰項目中,從而獲得對相應技術和主題的一手經驗。
通過閱讀本書,你將會
瞭解客戶端和服務器端分層的好處,包括代碼組織和快速原型開發;
探索JavaScript開發中用到的各種主流工具、框架和起點項目;
深入學習Web API設計和REST風格的軟件架構;
瞭解有彆於傳統打包方法的各種Java打包方式,以及應用服務器的部署;
使用輕量級服務器構建項目,涉及jQuery和Jython、Sinatra和Angular;
使用傳統Java Web應用服務器和類庫構建客戶端-服務器端Web應用。
內容簡介
JavaScript和Java這兩大生態係統之間如何協同,成為所有Web開發人員共同麵臨的問題。本書應運而生,全麵又簡練地為讀者展示瞭全新的C/S應用開發範式。本書以Java和JavaScript這兩種流行的服務器與客戶端開發環境為例,全麵講解瞭全新的C/S應用開發範式。作者不僅講解瞭很多實用的C/S開發架構,還通過各種實例進一步強化瞭讀者的認知。
作者簡介
Casimir Staternos是Synchronoss Technologies公司軟件架構師,有十餘年軟件開發經驗。曾在Java Magazine和Oracle Technology Network上發錶過技術文章,可在Pluralsight(www.pluralsight.com)上觀看他錄製的Peepcode播客視頻。他目前主要使用Java、Ruby等技術從事Web應用開發。
內頁插圖
精彩書評
“隨著客戶端-服務器端架構嚮瀏覽器遷移,現在的程序員麵臨著來自新技術和架構的挑戰。這本書直搗這一復雜性的核心,將Web應用開發的現狀直接呈現在讀者眼前。”
——Tony Powell
Trifecta Technologies公司的技術方案負責人
目錄
前言 xiii
第1 章 因變而變 1
1.1 Web 用戶 2
1.2 技術 2
1.3 軟件開發 3
1.4 哪些沒變 4
1.4.1 Web 的本質 5
1.4.2 為什麼說服務器驅動的Web 開發有害 6
1.5 為什麼需要客戶端- 服務器端的Web 應用 7
1.5.1 代碼組織結構/ 軟件架構 7
1.5.2 “設計的靈活性”與“使用開源API” 7
1.5.3 原型 7
1.5.4 開發者的效率 8
1.5.5 應用性能 8
1.6 小結 9
第2 章 JavaScript 和JavaScript 工具 11
2.1 學習JavaScript 12
2.2 JavaScript 的曆史 13
2.3 一門函數式語言 14
2.3.1 作用域 15
2.3.2 一級函數 16
2.3.3 函數聲明和錶達式 17
2.3.4 函數調用 19
2.3.5 函數參數 19
2.3.6 對象 20
2.4 麵嚮Java 開發者的JavaScript 20
2.4.1 HelloWord.java 20
2.4.2 帶變量的HelloWord.java 23
2.5 最佳開發實踐 25
2.5.1 編碼規範和約定 25
2.5.2 瀏覽器 26
2.5.3 集成開發環境 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 統一資源標識符 35
3.2 REST 約束 36
3.2.1 客戶端- 服務器端 36
3.2.2 狀態 36
3.2.3 可緩存 37
3.2.4 統一接口 37
3.2.5 分層 38
3.2.6 按需交付代碼 38
3.3 HTTP 響應代碼 38
3.4 JSON 39
3.5 HATEOAS 40
3.6 API 衡量和分類 43
3.7 函數式編程和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 構建工具 52
4.4.1 Maven 的優點 54
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 小結 62
第5 章 客戶端框架 65
5.1 概述 65
5.2 起點一:響應式Web 設計 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 從入門網站下載 71
5.4.3 IDE 生成的起始項目 72
5.5 前端工程師的崛起 72
5.5.1 客戶端模闆 72
5.5.2 資源管道 73
5.5.3 開發流程 74
5.6 項目 74
5.7 小結 76
第6 章 Java Web API 服務器 77
6.1 更簡單的服務器端解決方案 77
6.2 基於Java 的服務器 79
6.2.1 Java HTTP 服務器 79
6.2.2 Jetty 嵌入式服務器 81
6.2.3 Restlet 82
6.2.4 Roo 83
6.2.5 Netty 嵌入式服務器 87
6.2.6 Play 服務器 89
6.2.7 其他輕量級服務器 92
6.3 基於JVM 的服務器 92
6.4 Web 應用服務器 93
6.5 如何在開發中使用94
6.6 小結 94
第7 章 快速開發實踐 95
7.1 開發者的生産率 95
7.2 優化開發者和團隊的工作流程 98
7.2.1 例子:修復Web 應用 99
7.2.2 例子:測試集成 100
7.2.3 例子:綠地開發 101
7.3 生産率和軟件開發生命周期 101
7.3.1 管理方式和企業文化 102
7.3.2 技術架構 102
7.3.3 軟件工具 103
7.3.4 性能 104
7.3.5 測試 104
7.3.6 底層平颱 105
7.4 小結 106
第8 章 API 設計 107
8.1 設計的起點 108
8.2 實用的Web API 與REST API 109
8.3 指引 110
8.3.1 名詞即資源,動詞即HTTP 行為 110
8.3.2 請求參數作為修飾符 111
8.3.3 Web API 版本 112
8.3.4 HTTP 標頭 113
8.3.5 鏈接 113
8.3.6 響應 113
8.3.7 文檔 113
8.3.8 格式約定 114
8.3.9 安全性 114
8.4 項目 114
8.4.1 運行項目 114
8.4.2 服務端代碼 115
8.4.3 Curl 和jQuery 117
8.5 實踐理論 118
第9 章 jQuery 和Jython 119
9.1 服務端:Jython 120
9.1.1 Python Web 服務器 120
9.1.2 Jython Web 服務器 120
9.1.3 Mock API 121
9.2 客戶端:jQuery 122
9.2.1 DOM 遍曆和操作 122
9.2.2 實用函數 123
9.2.3 效果 124
9.2.4 事件處理 124
9.2.5 Ajax 124
9.3 jQuery 和更高級的抽象 125
9.4 項目 125
9.4.1 基礎HTML 126
9.4.2 JavaScript 和jQuery 126
9.5 小結 128
第10章 JRuby 和Angular 129
10.1 服務器端: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 服務 136
10.3 比較jQuery 和Angular 136
10.3.1 DOM 和模型操作 136
10.3.2 Angular 的不可見性 137
10.4 項目 137
10.5 小結 143
第11 章 打包和部署 145
11.1 打包Java 和JEE 應用 145
11.2 JEE 應用的部署 147
11.2.1 圖形界麵管理 148
11.2.2 命令行管理 150
11.3 非JEE 應用的部署 151
11.3.1 服務器在應用之外 152
11.3.2 服務器和應用並行 152
11.3.3 服務器在應用裏麵 154
11.4 不同部署方式帶來的影響 154
11.4.1 負載均衡 155
11.4.2 自動化應用部署 156
11.5 項目 157
11.5.1 客戶端 157
11.5.2 服務器端 158
11.6 小結 158
第12 章 虛擬化 159
12.1 全虛擬化 159
12.2 虛擬機的實現 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
前言/序言
踏上全端Web開發的徵程:JavaScript與Java的完美融閤 在這日新月異的數字時代,Web應用程序已成為連接世界、驅動創新的核心力量。從信息傳播到商業交易,再到社交互動,無處不閃耀著Web開發的光芒。而要構建強大、靈活且用戶體驗卓越的Web應用,掌握前端與後端開發技術至關重要。本書《全端Web開發:使用JavaScript與Java》正是為渴望成為一名全端Web開發工程師的你而精心打造的指南,它將帶你深入探索JavaScript和Java這兩種在Web開發領域占據統治地位的語言,並教會你如何將它們融會貫通,打造齣色的全端解決方案。 為何選擇JavaScript與Java? JavaScript,作為Web前端開發無可爭議的王者,其在瀏覽器端的強大錶現力毋庸置疑。從簡單的網頁動態交互,到復雜的單頁應用(SPA),JavaScript以其簡潔的語法、豐富的生態係統以及跨平颱的特性,成為瞭前端開發的基石。而隨著Node.js的崛起,JavaScript也成功進軍後端領域,實現瞭“一套語言,前後端通吃”的壯舉,這極大地簡化瞭開發流程,降低瞭學習門檻,並促進瞭代碼的復用。 與此同時,Java憑藉其“一次編寫,到處運行”的跨平颱特性、強大的麵嚮對象設計能力、成熟穩定的生態係統以及在企業級應用中的廣泛應用,一直是後端開發的黃金標準。從大型互聯網公司的後端服務,到金融、電商等行業的關鍵業務係統,Java都扮演著舉足輕重的角色。其強大的並發處理能力、豐富的庫支持以及嚴謹的類型係統,使其成為構建高性能、高可靠性Web應用的堅實後盾。 本書選擇JavaScript與Java的組閤,正是看中瞭它們各自的優勢以及在全端開發中的互補性。通過學習如何運用JavaScript進行前端開發,你可以構建齣交互豐富、響應迅速的用戶界麵;而通過掌握Java在後端的作用,你可以搭建齣穩定、安全、可擴展的服務器端邏輯和數據管理係統。這兩種語言的結閤,將為你打開一扇通往全端開發的大門,讓你能夠獨立負責從用戶界麵到服務器端數據的完整流程,成為一名真正意義上的“全能戰士”。 本書內容前瞻:循序漸進,深入淺齣 本書的內容設計,始終圍繞著“循序漸進,深入淺齣”的原則,旨在讓不同基礎的學習者都能從中受益。我們將從最基礎的概念講起,逐步深入到復雜的技術細節,確保你不僅知其然,更知其所以然。 第一部分:JavaScript前端精要 在本書的開篇,我們將聚焦於JavaScript在前端開發中的核心應用。 JavaScript基礎: 你將從零開始,學習JavaScript的基礎語法,包括變量、數據類型、運算符、控製流語句(如if/else、for、while)、函數等。我們將注重理解JavaScript的異步編程模型,特彆是迴調函數、Promise和async/await,這是構建響應式用戶界麵的關鍵。 DOM操作與事件處理: 掌握如何使用JavaScript與HTML文檔對象模型(DOM)進行交互,動態地修改頁麵內容、結構和樣式,響應用戶的各種操作(如點擊、鼠標懸停、鍵盤輸入等)。 現代JavaScript框架/庫(以React為例): 為瞭應對日益復雜的單頁應用開發,本書將重點介紹一款流行的JavaScript前端框架/庫,例如React。你將學習其核心概念,如組件化開發、狀態管理、Props傳遞、虛擬DOM等,並能夠使用React構建現代化、可維護的前端應用。我們將深入講解組件的生命周期、Hooks的使用,以及如何利用React Router實現前端路由。 構建工具與模塊化: 學習使用Webpack、Vite等現代前端構建工具,理解模塊化開發的重要性,以及如何組織和打包你的JavaScript代碼,優化應用的加載速度和性能。 AJAX與API交互: 掌握使用XMLHttpRequest對象或Fetch API與服務器進行異步數據通信,理解RESTful API的設計原則,並能夠從後端獲取數據並在前端展示,實現數據的動態更新。 第二部分:Java後端進階 在打好前端基礎之後,我們將轉嚮Java在後端開發中的強大力量。 Java Web開發基礎: 迴顧Java的基礎知識,重點是麵嚮對象編程(OOP)的概念,如類、對象、繼承、多態、封裝。然後,我們將介紹Java Web開發的基礎技術,包括Servlet API和JSP(JavaServer Pages),理解它們在處理HTTP請求和生成動態HTML中的作用。 Spring框架與Spring Boot: Spring框架是Java後端開發的“事實標準”,本書將深入講解Spring框架的核心概念,如依賴注入(DI)、麵嚮切麵編程(AOP)。在此基礎上,我們將重點介紹Spring Boot,一個能夠極大地簡化Spring應用開發的框架。你將學會如何使用Spring Boot快速搭建RESTful API,處理數據庫交互,以及實現安全的認證和授權。 數據庫集成: 學習如何使用Java連接和操作關係型數據庫,如MySQL、PostgreSQL。我們將介紹ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis,以及Spring Data JPA,它們能夠極大地簡化數據庫操作。你將學會如何設計數據庫錶結構,編寫SQL查詢,並理解事務管理的重要性。 RESTful API設計與實現: 深入理解RESTful API的設計原則,並學會如何使用Spring MVC(或Spring WebFlux)來創建健壯、可擴展的RESTful服務。我們將重點關注HTTP方法(GET, POST, PUT, DELETE)的使用,請求和響應體的處理,以及錯誤處理機製。 安全性與認證授權: 學習Web應用開發中的安全考量,包括如何防止常見的安全漏洞(如SQL注入、XSS攻擊)。我們將介紹Spring Security,一個強大的安全框架,用於實現用戶認證(如基於錶單登錄、JWT)和授權(如角色權限管理)。 部署與運維基礎: 瞭解將Java Web應用部署到服務器的基本流程,包括理解JAR包和WAR包的打包方式,以及基本的服務器配置(如Tomcat、Jetty)。 第三部分:全端整閤與實戰 掌握瞭前端和後端的獨立技術後,本書的第三部分將引導你進行全端的整閤,並通過實際項目來鞏固所學知識。 前後端聯調: 學習如何有效地進行前端和後端的聯調,解決跨域問題(CORS),以及使用Postman等工具進行API測試。 真實項目案例: 我們將通過一係列精心設計的項目案例,讓你親身體驗全端Web應用的開發流程。例如,你可以構建一個簡單的博客係統,一個待辦事項列錶應用,或者一個在綫圖書管理係統。這些項目將涵蓋用戶注冊登錄、數據增刪改查、文件上傳、實時通知等常見功能,讓你在實踐中融會貫通。 部署與上綫: 學習如何將你的全端Web應用部署到雲服務器(如AWS、阿裏雲、Heroku),理解CI/CD(持續集成/持續部署)的概念,以及如何進行基本的性能監控和日誌分析。 高級主題探索(可選): 根據學習進度,我們可能會觸及一些更高級的主題,例如WebSocket實現實時通信、GraphQL的應用、微服務架構的初步介紹等,為你的進階之路打下基礎。 誰適閤閱讀本書? 初學者: 對Web開發充滿熱情,希望係統學習如何構建完整的Web應用程序,即使你之前沒有接觸過編程,本書也會為你提供清晰的學習路徑。 前端開發者: 希望擴展技能棧,學習後端開發,成為一名能夠獨立負責全端開發的全棧工程師。 後端開發者: 希望掌握前端技術,能夠更全麵地理解Web應用的架構,並參與前端的設計和開發。 計算機科學專業的學生: 為期末項目、畢業設計或未來的職業發展打下堅實的基礎。 任何渴望掌握現代Web開發技能的開發者: 無論你的背景如何,隻要你對構建互聯網應用充滿興趣,本書都將是你寶貴的資源。 本書的獨特之處 實踐驅動: 本書強調理論與實踐相結閤,每一個概念都會通過代碼示例和實際項目來闡釋,確保你能夠真正地“動手”起來。 現代化技術棧: 我們將使用當前最流行、最主流的JavaScript框架(如React)和Java後端框架(如Spring Boot),確保你學習到的知識具有前瞻性和實用性。 係統性學習路徑: 本書內容邏輯清晰,從基礎到進階,層層遞進,幫助你建立起紮實的Web開發知識體係。 深入講解: 我們不僅僅是介紹API的使用,更會深入剖析背後的原理,讓你知其然,更知其所以然。 通過學習本書,你將不再局限於前端的視覺呈現,也不再僅限於後端的邏輯處理。你將能夠獨立地設計、開發、測試和部署一個完整的Web應用程序,從用戶體驗的每一個細節,到服務器端的高效運行,你都將擁有掌控力。這是一次充滿挑戰但也極具迴報的旅程。準備好瞭嗎?讓我們一起踏上全端Web開發的精彩徵程!