Client-Server Web Apps with JavaScript and Java

Client-Server Web Apps with JavaScript and Java

by Casimir Saternos

Paperback

$34.99
View All Available Formats & Editions
Choose Expedited Shipping at checkout for guaranteed delivery by Tuesday, September 24

Overview

As a Java programmer, how can you tackle the disruptive client-server approach to web development? With this comprehensive guide, you’ll learn how today’s client-side technologies and web APIs work with various Java tools. Author Casimir Saternos provides the big picture of client-server development, and then takes you through many practical client-server architectures. You’ll work with hands-on projects in several chapters to get a feel for the topics discussed.

User habits, technologies, and development methods have drastically altered web app design in recent years. But the Web itself hasn’t changed. This book shows you how to build apps that conform to the web’s underlying architecture.

  • Learn the advantages of using separate client and server tiers, including code organization and speedy prototyping
  • Explore the major tools, frameworks, and starter projects used in JavaScript development
  • Dive into web API design and REST style of software architecture
  • Understand Java’s alternatives to traditional packaging methods and application server deployment
  • Build projects with lightweight servers, using jQuery with Jython, and Sinatra with Angular
  • Create client-server web apps with traditional Java web application servers and libraries

Product Details

ISBN-13: 9781449369330
Publisher: O'Reilly Media, Incorporated
Publication date: 04/21/2014
Pages: 260
Product dimensions: 6.90(w) x 9.00(h) x 0.60(d)

About the Author

Casimir Saternos has been developing software for more than a decade. He has written articles that have appeared in Java Magazine and the Oracle Technology Network and has collaborated on several projects for Peepcode screencasts. He spends a good deal of time these days creating web applications using Java, Ruby, and any other technology that happens to apply.

Table of Contents

Preface xi

1 Change Begets Change 1

Web Users 2

Technology 3

Software Development 4

What Has Not Changed 5

The Nature of the Web 6

Server-Driven Web Development Considered Harmful 7

Why Client-Server Web Applications? 8

Code Organization/Software Architecture 8

Flexibility of Design/Use of Open Source APIs 9

Prototyping 9

Developer Productivity 9

Application Performance 9

Conclusion 11

2 JavaScript and JavaScript Tools 13

Learning JavaScript 14

JavaScript History 15

A Functional Language 17

Scope 17

First-Class Functions 18

Function Declarations and Expressions 20

Function Invocations 22

Function Arguments 22

Objects 23

JavaScript for Java Developers 23

HelloWorld.java 23

Hello World.java (with Variables) 27

Development Best Practices 29

Coding Style and Conventions 29

Browsers for Development 29

Integrated Development Environments 30

Unit Testing 31

Documentation 31

Project 31

3 REST and JSON 37

What Is REST? 38

Resources 38

Verbs (HTTP Request Methods) 39

Uniform Resource Identifiers 40

RuST Constraints 41

Client-Server 41

Stateless 41

Cacheable 42

Uniform Interface 42

Layered 43

Code on Demand 43

HTTP Response Codes 43

What Is Success? 43

JSON (JavaScript Object Notation) 44

HATEOAS 46

REST and JSON 47

API Measures and Classification 49

Functional Programming and REST 49

Project 50

Other Web API Tools 54

Constraints Redux 54

4 Java Tools 57

Java Language 58

Java Virtual Machine (JVM) 58

Java Tools 60

Build Tools 61

Benefits of Maven 63

Functionality of Maven 64

Version Control 65

Unit Testing 65

JSON Java Libraries 66

Projects 66

Java with JSON 67

JVM Scripting Languages with JSON 69

Conclusion 72

5 Client-Side Frameworks 75

Overview 75

Starting Point One: Responsive Web Design 78

HTML5 Boilerplate 78

Bootstrap 79

Starting Point Two: JavaScript Libraries and Frameworks 79

Browser Compatibility 80

Frameworks 80

Functionality 81

Popularity 81

Obtaining Starter Projects 82

Download Directly from Repositories 82

Download from Starter Sites 83

IDE-Generated Starter Projects 83

The Rise of the Front-End Engineer 84

Client-Side Templating 84

Asset Pipelines 84

Development Workflow 85

Project 86

Conclusion 88

6 Java Web API Servers 89

Simpler Server-Side Solutions 90

Java-Based Servers 91

Java HTTP Server 92

Embedded Jetty Server 93

Restlet 95

Roo 96

Embedded Netty Server 100

Play Server 103

Other Lightweight Server Solutions 105

JVM-Based Servers 106

Jython 106

Web Application Servers 107

Development Usage 107

7 Rapid Development Practices 109

Developer Productivity 109

Optimizing Developer and Team Workflow 112

Example: Web Application Fix 114

Example: Testing Integration 115

Example: Greenfield Development 116

Productivity and the Software Development Life Cycle 117

Management and Culture 117

Technical Architecture 118

Software Tools 119

Performance 120

Testing 120

Underlying Platform(s) 122

Conclusion 122

8 API Design 123

A Decision to Design 124

Practical Web APIs Versus RESTful APIs 125

Guidelines 127

Nouns as Resources; Verbs as HTTP Actions 127

Query Parameters as Modifiers 128

Web API Versions 129

HTTP Headers 130

Linking 130

Responses 130

Documentation 130

Formatting Conventions 131

Security 131

Project 131

Running the Project 132

Server Code 132

Curl and jQuery 134

Theory in Practice 135

9 jQuery and Jython 137

Server Side: Jython 138

Python Web Server 138

Jython Web Server 138

Mock APIs 139

Client Side: jQuery 140

DOM Traversal anil Manipulation 141

Utility Functions 142

Effects 142

Event Handling 143

Ajax 143

jQuery and Higher-Level Abstractions 143

Project 144

Basic HTML 145

JavaScript and jQuery 145

Conclusion 147

10 JRuby and Angular 149

Server Side: JRuby and Sinatra 150

Workflow 150

Interactive Ruby Shell 151

Ruby Version Manager (RVM) 151

Packages 152

Sinatra 153

JSON Processing 154

Client Side: AngularJS 155

Model 155

Views 156

Controllers 156

Services 156

Comparing jQuery and Angular 157

DOM Versus Model Manipulation 157

Unobtrusiveness of Angular 157

Project 158

Conclusion 165

11 Packaging and Deployment 167

Java and JEE Packaging 167

JEE Deployment 169

GUI Administration 171

Command-Line Administration 173

Non-JEE Deployment 174

Server Outside 175

Server Alongside 176

Server Inside 177

Implications of Deployment Choice 178

Load Balancing 178

Automating Application Deployment 180

Project 181

Client 181

Server 182

Conclusion 182

12 Virtualization 183

Full Virtualization 183

Virtual Machine Implementations 185

VMWare 185

VirtualBox 185

Amazon EC2 186

Management of Virtual Machines 186

Vagrant 186

Packer 186

DevOps Configuration Management 187

Containers 188

LXC 188

Docker 189

Project 190

Docker Help 191

Image and Container Maintenance 191

Java on Docker 192

Docker and Vagrant Networking 194

Conclusion 195

13 Testing and Documentation 197

Types of Testing 198

Formal Versus Informal 198

Extent of Testing 198

Who Tests What for Whom? 199

Testing as an Indicator of Organizational Maturity 199

CMM to Assess Process Uniformity 200

Maven to Promote Uniform Processes 200

BDD to Promote Uniform Processes 203

Testing Frameworks 204

JUnit 204

Jasmine 205

Cucumber 205

Project 206

JUnit 207

Jasmine 207

Cucumber 209

Maven Site Reports 209

Conclusion 210

14 Conclusion 211

Community 211

History 212

Coda 212

A JRuby IRB and Java API 213

B RESTful Web API Summary m

C References 227

Index 229

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews