目錄(302章)
倒序
- 封面
- 版權信息
- Credits
- About the Author
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Preface
- What this book covers
- What you need for this book
- Who this book is for
- Conventions
- Reader feedback
- Customer support
- Downloading the example code
- Errata
- Piracy
- Questions
- Getting Started with Java 9
- Getting started with Java
- Installing Java
- Installation on Windows
- Installation on MAC OS X
- Installation on Linux
- Setting JAVA_HOME
- Executing jshell
- Looking at the byte code
- 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
- Build the code and run 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
- Quick sort
- Project structure and build tools
- Maven dependency management
- Code the sort
- Creating the interfaces
- Creating BubbleSort
- Amending the interfaces
- Architectural considerations
- Creating unit tests
- Adding JUnit as 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
- Refactor 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
- Method equals
- Method hashCode
- 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
- ForkJoinPool
- Variable access
- The CPU heartbeat
- Volatile variables
- Synchronized block
- Wait and notify
- Lock
- Condition
- ReentrantLock
- ReentrantReadWriteLock
- Atomic classes
- BlockingQueue
- LinkedBlockingQueue
- LinkedBlockingDeque
- ArrayBlockingQueue
- LinkedTransferQueue
- IntervalGuesser
- ParallelGamePlayer
- Microbenchmarking
- Summary
- Making Our Game Professional - Do it as a Webapp
- Web and network
- IP
- TCP/IP
- DNS
- The HTTP protocol
- HTTP methods
- Status codes
- HTTP/2.0
- Cookies
- Client server and web architecture
- Writing servlets
- Hello world servlet
- Java Server 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 9 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 test
- Application test
- 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 annotations
- JDK annotations
- Using reflection
- Getting annotations
- Invoking methods
- Setting fields
- Functional programming in Java
- Lambda
- Streams
- Functional interfaces
- Method references
- Scripting in Java 9
- 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 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
- Project alive
- Maturity
- Number of users
- The "I like it" factor
- Continuous integration and deployment
- Release management
- Code repository
- Walking up the ladder
- Summary 更新時間:2021-07-02 23:38:15
推薦閱讀
- TypeScript Blueprints
- 機器學習系統:設計和實現
- HTML5 移動Web開發從入門到精通(微課精編版)
- HTML5+CSS3+JavaScript Web開發案例教程(在線實訓版)
- Learning Raspbian
- C#程序設計(項目教學版)
- Microsoft 365 Certified Fundamentals MS-900 Exam Guide
- Django 5企業級Web應用開發實戰(視頻教學版)
- SQL Server 2016 從入門到實戰(視頻教學版)
- ASP.NET Web API Security Essentials
- Getting Started with Electronic Projects
- Web開發的平民英雄:PHP+MySQL
- 軟件測試(慕課版)
- MongoDB Administrator’s Guide
- Java EE基礎實用教程
- 詩意的邊緣
- Windows 10 for Enterprise Administrators
- TensorFlow.NET實戰
- IBM Cognos 10 Report Studio Cookbook(Second Edition)
- 軟件測試實用教程
- Hadoop實戰
- Architecting Modern Java EE Applications
- 深入理解JVM字節碼
- Arduino Essentials
- Building Android Games with Cocos2d-x
- XML實用技術自學經典
- 深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)
- 青少年人工智能編程:光環板玩轉慧編程mBlock
- Beginning C# 7 Hands-On:Advanced Language Features
- Android開發寶典