Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Arrow up icon
GO TO TOP
Java EE 8 High Performance

You're reading from   Java EE 8 High Performance Master techniques such as memory optimization, caching, concurrency, and multithreading to achieve maximum performance from your enterprise applications.

Arrow left icon
Product type Paperback
Published in Jan 2018
Publisher Packt
ISBN-13 9781788473064
Length 350 pages
Edition 1st Edition
Languages
Arrow right icon
Author (1):
Arrow left icon
Romain Manni-Bucau Romain Manni-Bucau
Author Profile Icon Romain Manni-Bucau
Romain Manni-Bucau
Arrow right icon
View More author details
Toc

Table of Contents (18) Chapters Close

Title Page
Copyright and Credits
Dedication
Packt Upsell
Contributors
Preface
1. Money – The Quote Manager Application FREE CHAPTER 2. Looking Under the Cover – What is This EE Thing? 3. Monitor Your Application 4. Application Optimization – Memory Management and Server Configuration 5. Scale Up – Threading and Implications 6. Be Lazy; Cache Your Data 7. Be Fault-Tolerant 8. Loggers and Performances – A Trade-Off 9. Benchmarking Your Application 10. Continuous Performance Evaluation 1. Another Book You May Enjoy Index

Index

A

  • algorithm benchmark / Benchmark, benchmark, benchmark
  • Amazon EC2 Container Service Plugin
    • URL / Continuous integration platform and performance
  • Amazon Web Services (AWS) / Writing performance tests – the pitfalls
  • Apache Maven
    • references / Setting up the environment
  • application
    • summary / Application summary
    • business / The application business
    • design / The application design
    • testing / Testing the application
    • quote price, obtaining with JAX-RS way / Get a quote price the JAX-RS way
    • price, obtaining with WebSocket way / Get the price, the WebSocket way
    • performance failure / It will fail, no doubt!
  • application architecture / The application architecture
  • application monitoring
    • about / Libraries monitor your application
    • code instrumentation / Instrumenting the code
    • CDI instrumentation / CDI instrumentation
  • Application Performance Management (APM) / APM
  • application project, features
    • about / Application project highlights
    • build / The build
    • persistence layer / The persistence layer
    • service layer / The service layer
    • JAX-RS layer / The JAX-RS layer
    • WebSocket layer / The WebSocket layer
    • data, provisioning / Provision some data
  • application server / The application server
  • asynchronous handling / Asynchronous or not?
  • AWS integration
    • reference / Gatling and continuous integration

B

  • benchmark
    • about / Benchmarking – validating your application against your SLA, Benchmark, benchmark, benchmark
    • algorithm benchmark / Benchmark, benchmark, benchmark
    • layer benchmark / Benchmark, benchmark, benchmark
    • sizing benchmark / Benchmark, benchmark, benchmark
    • deliverable benchmark / Benchmark, benchmark, benchmark
    • preparing / Preparing your benchmark
    • environment, defining / Defining the environment
    • scenarios, automating / Automatize your scenarios
    • issues / Ensuring you have support
    • procedures, installing / Installing and resetting procedures
    • procedures, resetting / Installing and resetting procedures
  • benchmark criteria
    • defining / Defining the benchmark criteria
    • metric, defining / Defining the metric
    • acceptance criteria / Defining acceptance criteria
    • scenario, defining / Defining the scenario
  • benchmarking / Benchmarking – validating your application against your SLA, Benchmark, benchmark, benchmark
  • benchmark iterations
    • about / Benchmark iterations, Iterating
    • single setting, modifying / Changing a single setting at a time
    • state, resetting between runs / Resetting any state between runs
    • system, warming up / Warming up your system
  • BlazeMeter
    • URL / JMeter and build integration
  • bulk head / Bulk head

C

  • cache eviction trigger
    • size / Cache eviction trigger
    • expiration / Cache eviction trigger
  • caching
    • challenges / Caching challenges
    • working / How does the cache work?
    • cache key / The cache key
    • eviction policy / Eviction policy
    • cache storage / Cache storage – memory or not
    • data consistency / Consistency of the data
    • about / HTTP and caching
    • adding / Cache once
  • CDI asynchronous events / CDI asynchronous events
  • circuit breaker / Circuit breaker
  • command line interface (CLI) / JMeter
  • concurrent data access / Concurrent data access
  • configurable monitoring interceptor
    • implementing / Implementing your own configurable monitoring interceptor
  • Context and Dependency Injection (CDI)
    • about / Context and Dependency Injection – what did you do to my beans?
    • Inversion of Control (IoC) / IoC – a pretty simple example
    • features / The main features of CDI
    • injections / Injections
    • scopes / Scopes
    • interceptors / Interceptors/decorators
    • decorators / Interceptors/decorators
    • events / Events
    • dynamic lookups / Dynamic lookups
  • Context and Dependency Injection 2.0 (CDI) / The application architecture
  • continuous integration
    • about / Gatling and continuous integration
    • platform / Continuous integration platform and performance
    • performance / Continuous integration platform and performance
  • ContiPerf
    • about / ContiPerf
    • diabolic pair / Arquillian and ContiPerf – the diabolic pair
  • counters / Counters, gauges, timers, and more

D

  • data aggregation / Sirona javaagent, Data aggregation
  • DataSource
    • configuration / DataSource configuration
  • deliverable benchmark / Benchmark, benchmark, benchmark
  • disruptor
    • URL / Asynchronous or not?
  • Domain Specific Language (DSL) / Gatling
  • DripStat
    • reference / APM
  • DynaTrace
    • reference / APM

E

  • Eclipse
    • URL / Setting up the environment
  • EE concurrency utilities
    • about / EE concurrency utilities for Java EE, ManagedScheduledExecutorService
    • ManagedExecutorService / ManagedExecutorService
    • Java EE threads / Java EE threads
    • ContextService / ContextService
  • EJB @Asynchronous requests / EJB @Asynchronous
  • EJB @Lock / EJB @Lock
  • Enterprise Java Bean 3.2 (EJB 3.2) / The service layer
  • Enterprise Java Beans (EJB) / Java EE threading model
  • environment
    • setting up / Setting up the environment
  • environment, benchmark
    • machines / The machines
    • network / The network
    • databases / Databases and remote services
    • remote services / Databases and remote services
    • server / The server
  • eviction policy
    • about / Eviction policy
    • Least Recently Used (LRU) / Least Recently Used (LRU)
    • First In First Out (FIFO) / First In First Out (FIFO)
    • random / Random
    • Least Frequently Used (LFU) / Least Frequently Used (LFU)
    • cache eviction trigger / Cache eviction trigger

F

  • failover
    • about / Failover
    • switching, to another system / Switching to another system
    • local fallback / Local fallback
    • circuit breaker / Circuit breaker
  • fallback code structure
    • about / Fallback code structure
    • microprofile, using / Microprofile to the rescue
    • failover extension / Failover extension
    • fallback handling, with caching / Fallback handling – caching, an alternative solution
  • features, gateway
    • security handling /  Load balancing or proxy – additional features
    • version handling /  Load balancing or proxy – additional features
    • rate limiting /  Load balancing or proxy – additional features
    • concurrent limiting /  Load balancing or proxy – additional features
  • features, load balancer
    • compression /  Load balancing or proxy – additional features
    • TCP buffering /  Load balancing or proxy – additional features
    • HTTP caching /  Load balancing or proxy – additional features
    • encryption /  Load balancing or proxy – additional features
  • Filter class / Filter
  • filters / Filters
  • First In First Out (FIFO) / First In First Out (FIFO)
  • Flood.IO
    • URL / JMeter and build integration
  • Formatter class / Formatter
  • formatters / Formatters

G

  • garbage collector
    • about / Garbage collector
    • algorithms / Garbage collector algorithms
    • common memory settings / Common memory settings
    • GC behavior, debugging / Debugging GC behavior
    • heap dump / Heap dump
  • garbage collector algorithms
    • serial collector / Garbage collector algorithms, The serial collector
    • parallel collector / Garbage collector algorithms, Parallel and parallel compacting collectors
    • parallel compacting collector / Garbage collector algorithms, Parallel and parallel compacting collectors
    • Concurrent Mark Sweep (CMS) collector / Garbage collector algorithms, Concurrent Mark Sweep (CMS)
    • garbage first collector (G1) / Garbage collector algorithms
    • parallel compacting collectors / Parallel and parallel compacting collectors
    • Garbage First (G1) / Garbage First (G1)
  • Gatling
    • about / Gatling, Gatling and continuous integration
    • reference / Gatling
    • used, for automating scenarios / Gatling
  • gauges / Counters, gauges, timers, and more
  • GlassFish
    • URL / The application server
    • ad hoc monitoring / GlassFish ad hoc monitoring
  • Glowroot
    • reference / APM

H

  • handlers
    • about / Handler
    • using / Using handlers
  • histogram / Counters, gauges, timers, and more
  • HTTP
    • implementing / HTTP and caching
    • cache-control / Cache-Control
    • ETag header / ETag
    • vary header / Vary
    • caching / HTTP caching and the Java EE API
    • Java EE API / HTTP caching and the Java EE API
    • HTTP 2 /  HTTP 2 promise
  • HTTP threads
    • about / HTTP threads
    • server side / Server side
    • client side / Client side

I

  • InspectIT
    • reference / APM
  • Integrated Development Environment (IDE) / Setting up the environment
  • Intellij Idea
    • URL / Setting up the environment
  • Inversion of Control (IoC) / The application architecture, Context and Dependency Injection – what did you do to my beans?, IoC – a pretty simple example

J

  • Java
    • and memory / Java and the memory
    • garbage collector / Garbage collector
    • and thread safety / Java and thread safety
    • synchronized / Synchronized
    • lock interface / Locks
    • java.util.concurrent / java.util.concurrent
    • volatile data / The volatile data
  • javaagent
    • about / Javaagent – a complex but powerful instrumentation
    • sirona javaagent / Sirona javaagent
  • Java Development Kit 8 (JDK 8) / Setting up the environment
  • Java EE
    • and resources / Java EE and the resources
    • DataSource example / DataSource
    • and pools / Java EE and pools
    • and HTTP pools / Java EE and HTTP pools
    • implicit features / Java EE implicit features
    • threading model / Java EE threading model
    • about / Java EE and threads
    • concurrency utilities / EE concurrency utilities for Java EE
    • logging components, implementing / Logging components and Java EE
  • JavaEE
    • DataSource example / DataSource
  • Java EE performances
    • about / Java EE and performances
    • server / Ensure you know the server
    • application / Ensure you know your application
    • resources / Ensure you know your resources
  • Java EE threading model
    • about / Java EE threading model
    • consistency / Thread data and consistency
    • thread data / Thread data and consistency
  • Java Flight Recorder (JFR) / The jcmd command – the small command line utility that does a lot, Java Mission Control
  • Java Microbenchmark Harness (JMH)
    • about / JMH – the OpenJDK tool
    • used, for writing benchmark / Writing a benchmark with JMH
    • state / The state
    • benchmark, creating / Creating your first JMH benchmark
    • BlackHole / BlackHole to be a star
    • benchmarks, executing / Running the benchmarks
    • integrating, with JUnit / Integrating JMH with JUnit
    • ContiPerf / ContiPerf
  • Java Mission Control (JMC) / Java Mission Control
  • Java Persistence API (JPA)
    • about / JPA – the database link
    • migrating, to database / From JPA to the database
    • model / Model and implications
    • implications / Model and implications
  • Java Standalone Edition (Java SE) / Setting up the environment
  • Java Transaction API (JTA) / The application architecture, The Java Transaction API
  • Java Util Logging (JUL) / I log, you log, they log
  • Java Virtual Machine 8 (JVM 8) / Setting up the environment
  • JAX-RS
    • about / JAX-RS – the servlet router
    • router / The router
    • marshalling / Marshalling
    • filter / Filter and interceptors
    • interceptors / Filter and interceptors
    • @Suspended / @Suspended or asynchronous operation
    • asynchronous operation / @Suspended or asynchronous operation
  • JCache
    • about / JCache – the standard cache of Java EE
    • setting up / Setting up JCache
    • programmatic API / Programmatic API
    • configuration / JCache configuration
    • CDI integration / CDI integration
    • cache, configuration / Cache configuration
    • @CacheDefaults / @CacheDefaults
    • cache key / Cache key
  • jcmd command
    • about / The jcmd command – the small command line utility that does a lot
    • Thread.print command / Thread.print
    • memory / Memory
  • JMeter
    • about / JMeter
    • reference / JMeter
    • used, for automating scenario / JMeter
    • download link / JMeter
  • JMX Technology
    • URL / How to connect remotely
  • JUL / JUL
  • just in time compilation (JIT) / BlackHole to be a star
  • JVisualVM
    • about / JVisualVM – the UI for JVM monitoring
    • remote connection / How to connect remotely
  • JVM Just-In-Time (JIT) compilation / Warming up your system
  • JVM monitoring
    • UI / JVisualVM – the UI for JVM monitoring

K

  • key usage, cache
    • by reference / The cache key
    • by contract / The cache key
    • by value / The cache key

L

  • layer benchmark / Benchmark, benchmark, benchmark
  • lazerycode
    • URL / JMeter and build integration
  • Least Frequently Used (LFU) / Least Frequently Used (LFU)
  • Least Recently Used (LRU) / Least Recently Used (LRU)
  • Load Balancer / Load balancing – pick the best one
  • load balancer configuration, strategies
    • about / Common strategies
    • round-robin algorithm / The round-robin algorithm
    • random load balancing / Random load balancing
    • link to failover / Link to failover
    • sticky session / Sticky session
    • scheduling algorithm / The scheduling algorithm
  • load balancing
    • about / Load balancing – pick the best one
    • transparent load balancing / Transparent load balancing – client versus server
    • additional features /  Load balancing or proxy – additional features
  • local fallback
    • about / Local fallback
    • code structure / Fallback code structure
  • Log4j / Log4j
  • Log4j2 / Log4j2
  • log4j2 API
    • reference / Logging facade – the good bad idea
  • Logback / Logback
  • logger / Logger
  • Logger Factory / Logger Factory
  • logging
    • about / I log, you log, they log
    • implementing / Logging implementations – which one to pick
  • logging facade / Logging facade – the good bad idea
  • logging frameworks
    • about / Logging frameworks and concepts, Logging frameworks
    • Log4j / Log4j
    • Log4j2 / Log4j2
    • Logback / Logback
    • JUL / JUL
  • logging implementation
    • selecting / Choosing an implementation
  • logging invocations / Logging invocations
  • logging levels
    • about / Level
    • OFF / Level
    • SEVERE (or ERROR) / Level
    • WARNING / Level
    • INFO / Level
    • CONFIG / Level
    • FINE / Level
    • FINER / Level
    • FINEST / Level
    • DEBUG / Level
    • ALL / Level
    • testing / Testing your level
  • logging patterns / Logging patterns
  • LogRecord / LogRecord

M

  • Mapped Diagnostic Context (MDC) / Filters
  • message passing pattern / Message passing and Java EE
  • Metrics from Dropwizard
    • reference / Counters, gauges, timers, and more
  • MySQL
    • setting up / Setting up MySQL

N

  • NetBeans
    • URL / Setting up the environment
  • New Relic
    • reference / APM

O

  • OpenTracing
    • reference / Tracing
  • optimization benchmark
    • time boxing / Time boxing your optimization benchmark

P

  • performance
    • critical factors / Java tools to know what my application is doing
  • performance tests
    • writing / Writing performance tests
    • ContiPerf / ContiPerf
    • JMeter / JMeter and build integration
    • build integration / JMeter and build integration
    • gatling / Gatling and continuous integration
    • continuous integration / Gatling and continuous integration
    • benchmark application, deploying / Deploying your (benchmark) application
  • PinPoint
    • reference / APM
  • post benchmark
    • about / After your benchmark
    • report, writing / Writing a report
    • default configurations, updating / Updating your default configurations
    • conclusions, reviewing / Reviewing the conclusions
    • project backlog, enriching / Enriching your project backlog

R

  • reactive programming
    • and Java EE / Reactive programming and Java EE
  • Redline.13
    • URL / JMeter and build integration
  • relational database management system database (RDBMS) / Databases and remote services
  • RxJava
    • reference / EE concurrency utilities for Java EE

S

  • server resources
    • about / Server resources
    • DataSource, configuration / DataSource configuration
  • Service Level Agreement (SLA) / Benchmarking – validating your application against your SLA
  • Service Provider Interface (SPI) / Cache storage – memory or not, Arquillian and ContiPerf – the diabolic pair
  • sirona
    • reference / SQL Monitoring
  • sirona javaagent / Sirona javaagent
  • sizing benchmark / Benchmark, benchmark, benchmark
  • SLF4J
    • reference / Logging facade – the good bad idea
  • Solid State Drive (SSD) / The server
  • SQL monitoring / SQL Monitoring

T

  • templates
    • using, in messages / Using templates in your messages
  • thread
    • about / Java EE and threads
  • Throttle Concurrent Build Plugin
    • URL / Continuous integration platform and performance
  • timeouts
    • about / Timeouts
    • for code without timeouts / Timeouts for code without timeouts
  • timers / Counters, gauges, timers, and more
  • tracing / Sirona javaagent, Tracing
  • transparent load balancing / Transparent load balancing – client versus server

W

  • Web Service Level Agreement (WSLA) / Benchmarking – validating your application against your SLA
  • WebSocket layer / The WebSocket layer
  • Wide Area Network (WAN) / Defining the metric
lock icon The rest of the chapter is locked
arrow left Previous Section
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime
Visually different images