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...

Descripción completa

Detalles Bibliográficos
Otros Autores: Verhas, Peter, author (author)
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.