Java projects learn the fundamentals of Java 11 programming by building industry grade practical projects

Learn how to build scalable, resilient, and effective applications in Java that suit your software requirements. Key Features Explore advanced technologies that Java 11 delivers such as web programming and parallel computing Discover modern programming paradigms such as microservices, cloud computin...

Descripción completa

Detalles Bibliográficos
Otros Autores: Verhas, Peter, author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham ; Mumbai : Packt 2018.
Edición:Second edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630708206719
Tabla de Contenidos:
  • 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.