Java Projects: Learn the fundamentals of Java 11 programming by building industry grade practical projects, 2nd Edition
Book information
Description
Learn how to build scalable, resilient, and effective applications in Java that suit your software requirements. Key FeaturesExplore advanced technologies that Java 11 delivers such as web programming and parallel computingDiscover modern programming paradigms such as microservices, cloud computing and enterprise structuresBuild highly responsive applications with this practical introduction to Reactive programmingBook Description Java is one of the most commonly used software languages by programmers and developers. In this book, you’ll learn the new features of Java 11 quickly and experience a simple and powerful approach to software development. You’ll see how to use the Java runtime tools, understand the Java environment, and create a simple namesorting Java application. Further on, you'll learn about advanced technologies that Java delivers, such as web programming and parallel computing, and will develop a mastermind game. Moving on, we provide more simple examples, to build a foundation before diving into some complex data structure problems that will solidify your Java 11 skills. With a special focus on the features of new projects: Project Valhalla, Project Panama, Project Amber, and Project Loom, this book will help you get employed as a top-notch Java developer. By the end of the book, you’ll have a firm foundation to continue your journey toward becoming a professional Java developer. What you will learnCompile, package, and run a program using a build management toolGet to know the principles of test-driven developmentSeparate the wiring of multiple modules from application logicUse Java annotations for configurationMaster the scripting API built into the Java languageUnderstand static versus dynamic implementation of codeWho this book is for This book is for anyone who wants to learn the Java programming language. No programming experience required. If you have prior experience, it will help you through the book more easily. Cover Title Page Copyright and Credits Packt Upsell Contributors Acknowledgments Table of Contents Preface Chapter 1: Getting Started with Java 11 Getting started with Java Version numbers Installing Java Installation on Windows Installation on macOS Installation on Linux Setting JAVA_HOME Executing jshell Looking at the bytecode Packaging classes into a JAR file Managing the running Java application Using an IDE NetBeans Eclipse IntelliJ IDE services IDE screen structure Editing files Managing projects Building the code and running it Debugging Java Summary Chapter 2: The First Real Java Program - Sorting Names Getting started with sorting Bubble sort Getting started with project structure and build tools Make Ant Installing Ant Using Ant Maven Installing Maven Using Maven Gradle Installing Gradle Setting up the project with Maven Coding the sort Understanding the algorithm and language constructs Blocks Variables Types Arrays Expressions Loops Conditional execution Final variables Classes Inner, nested, local, and anonymous classes Packages Methods Interfaces Argument passing Fields Modifiers Object initializers and constructors Compiling and running the program Summary Chapter 3: Optimizing the Sort - Making Code Professional The general sorting program A brief overview of various sorting algorithms Quicksort Project structure and build tools Maven dependency management Coding the sort Creating the interfaces Creating BubbleSort Architectural considerations Creating unit tests Adding JUnit as a dependency Writing the BubbleSortTest class Good unit tests A good unit test is readable Unit tests are fast Unit tests are deterministic Assertions should be as simple as possible Unit tests are isolated Unit tests cover the code Refactoring the test Collections with wrong elements Handling exceptions Generics Test-Driven Development Implementing QuickSort The partitioning class Recursive sorting Non-recursive sorting Implementing the API class Creating modules Why modules are needed What is a Java module? Summary Chapter 4: Mastermind - Creating a Game The game The model of the game Java collections Interface collection Set Hash functions The equals method The hashCode method Implementing equals and hashCode HashSet EnumSet LinkedHashSet SortedSet NavigableSet TreeSet List LinkedList ArrayList Queue Deque Map HashMap IdentityHashMap Dependency injection Implementing the game ColorManager The class color JavaDoc and code comments Row Table Guesser UniqueGuesser GeneralGuesser The Game class Creating an integration test Summary Chapter 5: Extending the Game - Run Parallel, Run Faster How to make Mastermind parallel Refactoring Processes Threads Fibers java.lang.Thread Pitfalls Deadlocks Race conditions Overused locks Starving ExecutorService Completable future ForkJoinPool Variable access The CPU heartbeat Volatile variables Synchronized block Wait and notify Lock Condition ReentrantLock ReentrantReadWriteLock Atomic variables BlockingQueue LinkedBlockingQueue LinkedBlockingDeque ArrayBlockingQueue LinkedTransferQueue IntervalGuesser ParallelGamePlayer Microbenchmarking Summary Chapter 6: Making Our Game Professional - Do it as a Web App Web and network IP TCP/IP DNS The HTTP protocol HTTP methods Status codes HTTP/2 Cookies Client server and web architecture Writing a servlet Hello world servlet JavaServer Pages HTML, CSS, and JavaScript Mastermind servlet Storing state HTTP session Storing state on the client Dependency injection with Guice The MastermindHandler class Storing state on the server The GameSessionSaver class Running the Jetty web servlet Logging Configurability Performance Log frameworks Java logging Logging practice Other technologies Summary Chapter 7: Building a Commercial Web Application Using REST The MyBusiness web shop Sample business architecture Microservices Service interface design JSON REST Model View Controller Spring framework Architecture of Spring Spring core Service classes Compiling and running the application Testing the application Integration tests Application tests Servlet filters Audit logging and AOP Dynamic proxy-based AOP Summary Chapter 8: Extending Our E-Commerce Application The MyBusiness ordering Setting up the project Order controller and DTOs Consistency checker Annotations Annotation retention Annotation target Annotation parameters Repeatable annotations Annotation inheritance @Documented annotation JDK annotations Using reflection Getting annotations Invoking methods Setting fields Functional programming in Java Lambda Streams Functional interfaces Method references Scripting in Java Summary Chapter 9: Building an Accounting Application Using Reactive Programming Reactive... what? Reactive programming in a nutshell Reactive systems Responsive Resilient Elastic Message-driven Back-pressure Reactive streams Reactive programming in Java Implementing the inventory Summary Chapter 10: Finalizing Java Knowledge to a Professional Level Java deep technologies Java agent Polyglot programming Polyglot configuration Polyglot scripting Business DSL Problems with polyglot Annotation processing Programming in the enterprise Static code analysis Source code version-control Software versioning Code review Knowledge base Issue tracking Testing Types of tests Test automation Black box versus white box Selecting libraries Fit for the purpose License Documentation An alive project Maturity Number of users The "I like it" factor Continuous integration and deployment Release management The code repository Walking up the ladder Summary Other Books You May Enjoy Index
Similar books
Java Projects
2018 · EPUB
Java Projects
2018 · EPUB
Mastering Java 9
2017 · PDF
Mastering Java 9: Write reactive, modular, concurrent, and secure code
2017 · ZIP
MySQL® Notes for Professionals book
2018 · PDF
MrExcel 2022: Boosting Excel
2022 · PDF
MrExcel 2022: Boosting Excel
2022 · PDF
Session C11: Ancient Cultural Landscapes in South Europe – their Ecological Setting and Evolution, Session C22: Gardeners from South America, Session S04: Agro-Pastoralism and Early Metallurgy Sessions, Session WS29: The Idea of Enclosure in Recent Iberian Prehistory, Session C88: Rhytmes et causalites des dynamiques de l'anthropisation en Europe entre 6500 ET 500 BC: Hypotheses socio-culturelles et/ou climatiques: Proceedings of the XV UISPP World Congress (Lisbon 4-9 September 2006) / Actes du XV Congrès Mondial (Lisbonne 4-9 Septembre 2006) Vol.36
2010 · PDF