Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Copyright and Credits
Java Projects Second Edition
Packt Upsell
Why subscribe?
PacktPub.com
Contributors
About the author
About the reviewer
Packt is searching for authors like you
Acknowledgments
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
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
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
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
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
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
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
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
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
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
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
Leave a review - let other readers know what you think
← Prev
Back
Next →
← Prev
Back
Next →