Foreword

Table of Contents

1. Mastering App Development Requires More than Coding Skills
2. Why is JavaScript a Good Choice for Building Web Apps?
3. Why is Java a Good Choice for Building Web Apps?
4. Comparing Java with JavaScript
5. Good Programs Are: Effective, Robust, Efficient and Maintainable
6. Run the Apps and Get Their Code

This two-volume book shows how to design and implement web applications with a model-based engineering approach, using the two most relevant technology platforms for web development: JavaScript and Java. Web apps are designed with the help of information models in the form of UML class diagrams and implemented as:

  1. JavaScript front-end apps, using one of the two local storage technologies offered by web browsers;

  2. Java back-end apps, using Java Server Faces (JSF) as the user interface technology, the Java Persistence API (JPA) for object-to-storage mapping, and a MySQL/MariaDB database management system;

  3. dynamically distributed JavaScript apps with

    1. a front-end component for managing the user interface and taking care of certain parts of the application logic (including constraint-based data validation), and

    2. a NodeJS-based back-end component for managing persistent storage and taking care of certain parts of the application logic (including constraint-based data validation).

The focus of the book are general concepts and techniques concerning the fundamental information management issues of

  1. integrity constraints and data validation,

  2. enumerations and enumeration attributes

  3. unidirectional and bidirectional associations between object types,

  4. subtyping and inheritance in class hierarchies.

The first two issues of this list are discussed in Volume 1 of the book, while the last two issues are discussed in Volume 2.

We assume that the reader is already familiar with HTML and with at least one object-oriented programming language, such as C++, Java, PHP, Python or C#. In addition, we assume that the reader has some familiarity with CSS and JavaScript, and is willing to learn more about programming with modern JavaScript.

The book can be used

  1. in web development courses for students of Computer Science and related disciplines;

  2. by JavaScript developers for learning Java;

  3. by Java developers for learning JavaScript;

  4. by JavaScript and Java (and PHP/Python/C# etc.) developers for learning

    • object-oriented (OO) programming with JavaScript and Java EE,

    • how to implement basic information management concepts and build complete web apps with plain JavaScript and Java EE.

The book comes with the complete source code of six example apps that you can run, or download, from our web server.

1. Mastering App Development Requires More than Coding Skills

For mastering app development, it's not sufficient that you master coding in your favorite programming language. It's essential that you understand all basic concepts and techniques, not just in programming, but also in information management.

A programming (or software development) technology typically combines a programming language, such as JavaScript, Java or C#, with a framework or library, such as BackboneJS, JSF or ASP.NET MVC, for programming user interfaces and data storage management.

Many developers seem to believe that all they need to learn and master for their professional career are the right programming technologies. However, they fail to master app development, if they don't manage to learn the general concepts and techniques needed for being able to apply programming technologies in the right way.

Understanding general concepts and techniques, in programming and information management, helps you to

  • better understand the elements of a language or framework by recognizing them as specific incarnations of general concepts,

  • compare different technologies and assess their strengths and weaknesses,

  • make an informed choice of a new promising language/technology suitable for your purposes.

While technology-specific knowledge is important (in fact, it is the basis) for mastering programming and app development, it is also true that its half-time value is pretty short. In this book, we do not only explain programming and information management concepts and techniques in a technology-independent way, we also explain in which way these concepts and techniques are supported in the two most relevant technologies: JavaScript and Java.