0
    Client-Server Web Apps with JavaScript and Java: Rich, Scalable, and RESTful

    Client-Server Web Apps with JavaScript and Java: Rich, Scalable, and RESTful

    by Casimir Saternos


    eBook

    $16.99
    $16.99
     $29.99 | Save 43%

    Customer Reviews

      ISBN-13: 9781449369293
    • Publisher: O'Reilly Media, Incorporated
    • Publication date: 03/28/2014
    • Sold by: Barnes & Noble
    • Format: eBook
    • Pages: 260
    • File size: 4 MB

    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

    Available on NOOK devices and apps

    • NOOK eReaders
    • NOOK GlowLight 4 Plus
    • NOOK GlowLight 4e
    • NOOK GlowLight 4
    • NOOK GlowLight Plus 7.8"
    • NOOK GlowLight 3
    • NOOK GlowLight Plus 6"
    • NOOK Tablets
    • NOOK 9" Lenovo Tablet (Arctic Grey and Frost Blue)
    • NOOK 10" HD Lenovo Tablet
    • NOOK Tablet 7" & 10.1"
    • NOOK by Samsung Galaxy Tab 7.0 [Tab A and Tab 4]
    • NOOK by Samsung [Tab 4 10.1, S2 & E]
    • Free NOOK Reading Apps
    • NOOK for iOS
    • NOOK for Android

    Want a NOOK? Explore Now

    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

    Read More

    Customers Who Bought This Item Also Bought

    Recently Viewed 

    Sign In Create an Account
    Search Engine Error - Endeca File Not Found