Quentin Charatan
University of East London, London, UK
Aaron Kans
University of East London, London, UK
ISSN 1868-0941 e-ISSN 1868-095X
Texts in Computer Science
ISBN 978-3-319-99419-2 e-ISBN 978-3-319-99420-8
https://doi.org/10.1007/978-3-319-99420-8
Library of Congress Control Number: 2018961214
Springer Nature Switzerland AG 2019
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed.
The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use.
The publisher, the authors and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication. Neither the publisher nor the authors or the editors give a warranty, express or implied, with respect to the material contained herein or for any errors or omissions that may have been made. The publisher remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
This Springer imprint is published by the registered company Springer Nature Switzerland AG
The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
Preface
Accompanying Web site: https://www.springer.com/book/9783319994192 .
As with previous editions, this book is designed for university students taking a first module in software development or programming, followed by a second, more advanced module. This book uses Java as the vehicle for the teaching of programming conceptsdesign concepts are explained using the UML notation. The topic is taught from first principles and assumes no prior knowledge of the subject.
This book is organized so as to support two twelve-week, one-semester modules, which might typically comprise a two-hour lecture, a one-hour seminar, and a one- or two-hour laboratory session. The outcomes at the start of each chapter highlight its key learning objectives, the self-test questions at the end of each chapter ensure that the learning objectives for that chapter have been met, while the programming exercises that follow allow these learning objectives to be applied to complete programs. In addition to these exercises and questions, a case study is developed in each semester to illustrate the use of the techniques covered in the text to develop a non-trivial application. Lecturers who teach on modules that run for fewer than twelve weeks in a semester could treat these case studies as a self-directed student learning experience, rather than as taught topics.
The approach taken in this book is ideal for all students including those entering university with little or no background in the subject matter, perhaps coming from pre-degree courses in other disciplines, or perhaps returning to study after long periods away from formal education. It is the authors experience that such students have enormous difficulties in grasping the fundamental programming concepts the first time round and therefore require a simpler and gentler introduction to the subject that is presented in most standard texts.
This book takes an integrated approach to software development by covering such topics as basic design principles and standards, testing methodologies, and the user interface, as well as looking at detailed implementation topics.
In the first semester, considerable time is spent concentrating on the fundamental programming concepts such as declarations of variables and basic control structures, methods and arrays, prior to introducing students to classes and objects, inheritance, graphics, and event-driven programming.
The second semester covers more advanced topics such as interfaces, exceptions, collection classes from the Java collections framework, advanced graphics, file-handling techniques, packages, the implementation of multi-threaded programs, socket programming, and processing collections using streams.
The fourth edition achieves three main goals. Firstly, it incorporates all the very useful feedback on the third edition that we have received from students and lecturers since its publication. Secondly, it includes many new questions and programming exercises at the end of the chapters. Finally, it includes new material to bring it completely up to date with the current developments in the fieldin particular a number of key developments that were introduced in Java 8 which, according to Oracle TM , is the most significant re-engineering of the language since its launch.
One key feature of this new edition is that all graphical user interface developments are based on JavaFX , rather than the Swing Technology used in previous editions. JavaFX allows for the creation of sophisticated modern graphical interfaces that can run on a variety of devices and is now Oracles preferred technology for building such interfaces, having decided that Swing will no longer be developed. JavaFX therefore plays a very significant role throughout the new text, and three new chapters are devoted to it.
Other key developments arising from Java 8 that have been incorporated into the new text include lambda expressions, which allow us to simplify development considerably by passing functions as arguments to methods, and the new Stream API , a technology that allows us to process collections in a very concise, declarative style of programming.
In addition to the above key changes, we also introduce techniques to improve the robustness of codein particular the Optional class for dealing with empty values and the try-with-resources construct to ensure resources such as files are safely closed before exiting methods.
As well as adding these new features, some existing chapters have undergone significant enhancements. The Java Collections Framework chapter, for example, has been expanded to include a comprehensive section on the sort methods available in various classes and interfaces in Java. The coverage of generics has also been considerably expanded and the packages chapter now introduces the Hibernate ORM technology for accessing remote databases.
The accompanying Web site (see URL above) contains all the codes from the textbook and a guide on how to install and use the NetBeans Java IDE, as well as a collection of other useful resources.