Java 9 programming by example your guide to software development
Get the steps you need to discover the world of Java 9 programming using real-world examples About This Book We bridge the gap between “learning” and “doing” by providing real-world examples that will improve your software development Our example-based approach will get you started quickly with soft...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Birmingham, England ; Mumbai, [India] :
Packt
2017.
|
Edición: | 1st edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009629982206719 |
Tabla de Contenidos:
- Cover
- Copyright
- Credits
- About the Author
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Table of Contents
- Preface
- Chapter 1: 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
- 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
- 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
- Chapter 4: 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
- 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
- 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
- Chapter 6: 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
- 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 test
- Application test
- 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 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
- 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 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
- Project alive
- Maturity
- Number of users
- The
- Continuous integration and deployment
- Release management
- Code repository
- Walking up the ladder
- Summary
- Index.