Friday, June 19, 2015

Enterprise Web Development

[Excerpts from my review published in ACM's Computing Reviews.]

Enterprise web development : building HTML5 applications from desktop to mobile

Fain Y., Rasputnis V., Tartakovsky A., Gamov V., O’Reilly Media, Inc., Sebastopol, CA, 2014. 642 pp. Type: Book (978-1-449356-81-1)

Date Reviewed: Jun 18 2015

A basic truth about this book is that at 600 pages it is ambitious in scope and covers a whole lot of ground.

The book defines what it means for an app to be an enterprise app--that it is integrated with one or more company-specific business processes and helps an organization run its business online--and then goes about developing one.

The authors have earned their stripes having built and written books on enterprise web apps using Java, then Adobe Flex, and now Hypertext Markup Language 5 (HTML5).

HTML5, of course, isn’t just HTML. It’s a replacement term for what used to be called Web 2.0, and is short for the entire tech stack that comprises avant-garde HTML5 development today: HTML, cascading style sheets (CSS), JavaScript and “dozens” of JavaScript frameworks, libraries, and tools.

For those new to JavaScript, available online only is a 100-page “Advanced Introduction to JavaScript”; this document is well worth reading. The book also aims to recommend a broad tech stack for enterprise web app development. As the book’s introduction reveals, it is aimed at server-side developers who wish to learn HTML5 front-end development. Understandably, this is a rather large audience that needs to re-skin a well-designed back-end to provide modern-day user experiences.

The book takes a “continuous refactoring” (my words) approach to teaching web app development, wherein the application is continuously rewritten to embrace a new framework and a different or better way to accomplishing the application’s goals (all of the code examples from the book are available online). In that sense, the book serves as a fairly complete tutorial on web app development. The tutorials follow a show-and-tell style, whereby the reader is first shown a new application behavior and then told how to make it happen via code.

Broadly, the example enterprise web app is developed in the following stages:

(1) Pure HTML/CSS/JavaScript;

(2) jQuery rewrite;

(3) ExtJS rewrite (ExtJS introduces concepts similar to classes and classical inheritance.);

(4) Integration with HTML5’s geolocation application program interface (API) and Google Maps;

(5) Embedding videos and charts (using Canvas and SVG);

(6) Modularization and RequireJS;

(7) WebSocket for server-side push;

(8) Responsive design and mobile enablement using jQuery Mobile, Sencha Touch, and PhoneGap;

(9) Productivity tools: npm, Grunt, Bower, Jasmine, Yeoman, CDB;

(10) Security considerations;

(11) Hybrid development, using the HTML5 stack, along with native platform-specific APIs; and

(12) Appendices on key HTML5 APIs and leading integrated development environments (IDEs)

The book’s declared goal isn’t to convince readers to adopt HTML5 development, but to know when HTML5 is the right approach (as opposed to native development using a platform-specific development stack, for example, Android or iOS).

Developers coming to JavaScript from a Java background might find this book particularly helpful, for it routinely draws analogies between well-known Java constructs and the corresponding analogues in JavaScript.

This is the first book I’ve read that’s not dedicated to WebSocket and yet provides a serious chapter-length discussion on why WebSocket can serve as a replacement for hypertext transfer protocol (HTTP) in performance-conscious web applications.

The grammar and quality of prose is not quite up to the standards one has come to expect from an O’Reilly publication. Technology books, in particular those dealing with the always-moving target of front-end development, need to be published in a timely fashion so that they are relevant for at least six to 12 months. So it’s a significant challenge to provide editorial input in a short time frame. That challenge is multiplied when the book to be edited is as big as this one. The authors have done a good job of putting together a fairly elaborate treatise on enterprise web development. However, the book clearly didn’t receive the required editorial rigor, which can certainly cause a book to lose its audience, especially when that audience is already being asked to struggle with a complicated language and grammar, that is, the HTML5 development stack.

That said, considering the scarcity of good consolidated information on bleeding-edge web app development, I would highly encourage readers to look past the editorial gaps and dive into this treasure trove of guidance. It will vastly improve your understanding of developing enterprise-class web apps using current best practices.

If a beginner asked me for one book to get started with web app development, I would recommend Purewal’s book, which I reviewed earlier this year [1]. After completing Purewal’s book, this book would be a good next step to expand on your client-side development skills (note that it doesn’t cover server-side topics such as Node or MongoDB).

More reviews about this item: Amazon, Goodreads

Reviewer: Puneet Singh Lamba Review #: CR143538

1) Purewal, S. Learning web app development. O'Reilly Media, Sebastopol, CA, 2014. See CR Rev. No. 143127 (1505-0332).