www.it-ebooks.info www.it-ebooks.info TABLE OF CONTENTS INTRODUCTION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXXI LESSON 1 Introducing Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 LESSON 2 Eclipse IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 LESSON 3 Object-Oriented Programming with Java. . . . . . . . . . . . . . . . . . . . . . . . . . . 21 LESSON 4 Class Methods and Constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 LESSON 5 Java Syntax: Bits and Pieces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 LESSON 6 Packages, Interfaces, and Encapsulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 LESSON 7 Programming with Abstract Classes and Interfaces. . . . . . . . . . . . . . . . . . . 73 LESSON 8 Introducing the GUI with Swing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 LESSON 9 Event Handling in Swing GUI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 LESSON 10 Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 LESSON 11 Introduction to Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 LESSON 12 Introduction to Generics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 LESSON 13 Lambda Expressions and Functional Style Programming. . . . . . . . . . . . . 151 LESSON 14 Working with I/O Streams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 LESSON 15 Java Serialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 LESSON 16 Network Programming Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 LESSON 17 Concurrency and Multithreading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 LESSON 18 Introduction to GUI with JavaFX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 LESSON 19 Developing JavaFX Calculator and Tic-Tac-Toe . . . . . . . . . . . . . . . . . . . . 251 LESSON 20 Stream API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 LESSON 21 Working with Relational DBMS Using JDBC. . . . . . . . . . . . . . . . . . . . . . 297 LESSON 22 Rendering Tabular Data in the GUI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 LESSON 23 Annotations and Reflection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 LESSON 24 Remote Method Invocation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 www.it-ebooks.info LESSON 25 Java EE 7 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 LESSON 26 Programming with Servlets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 LESSON 27 JavaServer Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 LESSON 28 Developing Web Applications with WebSockets. . . . . . . . . . . . . . . . . . . 395 LESSON 29 Introducing JNDI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 LESSON 30 Introducing JMS and MOM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 LESSON 31 Introduction to Enterprise JavaBeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 LESSON 32 Overview of the Java Persistence API. . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 LESSON 33 Working with RESTful Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 LESSON 34 Java Logging API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 LESSON 35 Introduction to Unit Testing with JUnit Framework. . . . . . . . . . . . . . . . 511 LESSON 36 Build Automation with Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 LESSON 37 Java Technical Interviews. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 INDEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 www.it-ebooks.info Java Programming ® 24-Hour Trainer Second Edition Yakov Fain www.it-ebooks.info Java® Programming 24-Hour Trainer, Second Edition Published by Wiley Publishing, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256 www.wiley.com Copyright © 2015 by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada ISBN: 978-1-118-95145-3 ISBN: 978-1-118-95146-0 (ebk) ISBN: 978-1-118-95157-6 (ebk) Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1 No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per- copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions. Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read. For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002. Wiley publishes in a variety of print and electronic formats and by print-on-demand. Some material included with standard print versions of this book may not be included in e-books or in print-on-demand. If this book refers to media such as a CD or DVD that is not included in the version you purchased, you may download this material at http://booksupport.wiley.com. For more information about Wiley products, visit www.wiley.com. Library of Congress Control Number: 2015930542 Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Wrox Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. Java is a registered trademark of Oracle, Inc. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book. www.it-ebooks.info In memory of my parents. www.it-ebooks.info www.it-ebooks.info CREDITS EXECUTIVE EDITOR PROFESSIONAL TECHNOLOGY & Robert Elliott STRATEGY DIRECTOR Barry Pruett PROJECT EDITOR Adaobi Obi Tulton BUSINESS MANAGER Amy Knies TECHNICAL EDITORS Chád Darby ASSOCIATE PUBLISHER Rajesuwer P. Singaravelu Jim Minatel Martijn Verburg PROJECT COORDINATOR, COVER PRODUCTION MANAGER Brent Savage Kathleen Wisor PROOFREADER COPY EDITOR Jennifer Bennett, Word One Charlotte Khugen INDEXER MANAGER OF CONTENT DEVELOPMENT & Johnna VanHoose Dinse ASSEMBLY Mary Beth Wakefield COVER DESIGNER Wiley MARKETING DIRECTOR David Mayhew COVER IMAGE ©iStock.com/gpointstudio MARKETING MANAGER Carrie Sherrill www.it-ebooks.info www.it-ebooks.info