
Java 9 High Performance
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Person
Mayur Ramgir has more than 16 years of experience in the software industry, working at various levels. He is a Sun Certified Java Programmer and Oracle Certified SQL Database Expert. He completed an MS in computational science and engineering at Georgia Tech, USA (rank 7th in the world for computer science), and an M.Sc. in multimedia application and virtual environments at University of Sussex, UK. He has also attended various universities for other degrees and courses, such as MIT for applied software security, and University of Oxford for system and software security. He is the CEO of a software company, Zonopact, Inc. headquartered in Boston, USA, which specializes in bringing innovative applications based on AI, robotics, big data, and more. He has single-handedly developed Zonopacts flagship product, Clintra (B2B-integrated AI-assisted business management software). He is also the inventor of two patent pending technologies, ZPOD (an automated cloud-based medical kiosk system) and ZPIC (an AI-enabled robotic in-car camera system). Apart from this, he is also a prolific business writer who has authored two international award-winning books, Unbarred Innovation: A Pathway to Greatest Discoveries and Evolve Like a Butterfly: A Metamorphic Approach to Leadership. He was featured on the TV and in print media, including Fox News, NBC News, CBS News, Fox Business, Bloomberg International TV, Forbes, Inc. magazine, Daily Mirror, and The Huffington Post. He is also a contributing author of New York Daily Newspaper, the Software Development Times magazine, Newsmax Finance, AlleyWatch, Singapore's top entrepreneurship magazine Young Upstarts, and several more. He is frequently invited as a guest lecturer at various technical and management schools. He has also been invited as a judge at an international innovation challenge competition (Living Talent) in Dubai in December 2017.Samoylov Nick :
Nick Samoylov graduated from Moscow Institute of Physics and Technology, working as a theoretical physicist and learning to program as a tool for testing his mathematical models. After the demise of the USSR, Nick created and successfully ran a software company, but was forced to close it under the pressure of governmental and criminal rackets. In 1999, with his wife Luda and two daughters, he emigrated to the USA and has been living in Colorado since then, working as a Java programmer. In his free time, Nick likes to write and hike in the Rocky Mountains.
Content
- Cover
- Title Page
- Copyright
- Credits
- About the Authors
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Table of Contents
- Preface
- Chapter 1: Learning Java 9 Underlying Performance Improvements
- Introducing the new features of Java 9
- Modular development and its impact
- Quick introduction to modules
- String operations performance
- Compact string
- The world of heap
- Why bother compressing strings?
- What did they do?
- What is the escape route?
- What is the performance gain?
- Indify String Concatenation
- Invokedynamic
- Storing interned strings in CDS archives
- Concurrency performance
- Compiler improvements
- Tiered Attribution
- Ahead-of-Time compilation
- Security manager improvements
- Graphics rasterizers
- Summary
- Chapter 2: Identifying Performance Bottlenecks
- CPU infrastructure
- Memory utilization
- Java heap
- Java stack
- Java heap versus stack memory
- Escape analysis
- Common memory problems
- OutOfMemory
- Mismanagement of object life cycle: java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: GC Overhead limit exceeded
- java.lang.OutOfMemoryError: Permgen space
- java.lang.OutOfMemoryError: Metaspace
- java.lang.OutOfMemoryError: Unable to create new native thread
- java.lang.OutOfMemoryError: request size bytes for reason
- java.lang.OutOfMemoryError: Requested array size exceeds VM limit
- Out of memory: kill process or sacrifice child
- StackOverFlow
- Database operations
- I/O operations
- Network operations
- WebSocket Client API
- Summary
- Chapter 3: Learning How to Troubleshoot Code
- Measuring performance
- Performance checklist
- Basic principles of troubleshooting
- Why some developers find troubleshooting difficult?
- Setting up the environment for troubleshooting
- Importance of error handling
- A basic try-catch-finally block and its usages
- What are try-catch-finally blocks?
- Usage of try-catch-finally blocks
- Mistakes programmers make when using error handling
- Why swallowing exception is bad?
- Use of logging
- Logging vs Debugging
- What are the main components?
- How to do logging?
- What logging frameworks are available?
- Java Util Logging
- Log4j 2
- Logback
- Performance
- Support
- Ease of Use
- Best use case for logging
- Analyzing thread dump
- What is a thread dump?
- Benefits of thread dump analysis
- How to collect a thread dump
- How to analyze a thread dump
- Best practices
- Analyzing heap dump
- What is a heap dump
- Benefits of analyzing heap dumps
- When do you analyze a heap dump
- How to collect heap dump
- How to analyze heap dump
- Best practices
- Summary
- Chapter 4: Learning How to Use Profiling Tools
- Introducing profiling
- Why a developer should use a profiling tool
- The art of profiling
- Profiling areas
- CPU profiling
- Memory profiling
- Thread profiling
- The different types of Java profiling tool
- Jmap
- VisualVM
- JProfiler
- XRebel
- YourKit
- JRockit
- BTrace
- AQtime
- Reporting issues
- Summary
- Chapter 5: Understanding Garbage Collection and Making Use of It
- Understanding the Java 9 garbage collector for top optimization
- Garbage Collection
- The principle of GC
- Benefits and demerits of garbage collection
- Unpredictability
- GC methods
- Escape analysis
- Reference counting
- Space reduction
- Cycles
- Atomic tasks
- GC in Java
- Understanding the current Parallel GC
- Generations
- Heap sizing
- Parallelism
- Why parallelism?
- The new G1 collector
- A brief history
- Impact on programming
- Deep insight on G1GC
- Comparing G1 collector to ParallelGC
- Common points
- The qualities of ParallelGC
- The qualities of G1GC
- Concurrent mode failures
- Understanding memory errors
- Summary
- Chapter 6: Optimizing Code with Microbenchmarking
- The concept of microbenchmarking
- Microbenchmarks in Java
- Understanding the JMH
- Setting up the JMH
- Building up in the JMH
- Benchmark modes in the JMH
- Throughput measure
- Time-based measures
- Applying the JMH in Java projects
- What is Maven?
- Why use microbenchmarking?
- The challenges associated with microbenchmarks
- Wrong solutions from microbenchmarks
- Wrong component use
- Wrong hierarchy
- Wrong memory use
- Use of a specific environment
- The benefits of using the JMH
- Understanding the limitations of the JMH
- Summary
- Chapter 7: Speeding Up JSON Generation
- A transparent understanding of JSON in Java
- A brief history of JSON and examples
- Understanding JSON generation
- What is Javax.json?
- JSON object model
- JSON stream
- What are events?
- How does an event work?
- Types in JSON for object modeling
- Types in JSON for streaming API
- JSON trees
- Understanding the tree model
- Converting CSV to JSON
- Converting Excel to JSON
- Understanding value trees
- The benefits of using JSON
- Summary
- Chapter 8: Tools for Higher Productivity and Faster Application
- The JShell tool usage
- Creating a JShell session and setting context
- JShell commands
- Ahead-of-Time (AOT)
- Static versus dynamic compilation
- The AOT commands and procedures
- Summary
- Chapter 9: Multithreading and Reactive Programming
- Prerequisites
- Thread pools
- Monitoring threads
- Sizing thread pool executors
- Thread synchronization
- Tuning JVM
- Reactive programming
- Summary
- Chapter 10: Microservices
- Why microservices?
- Building microservices
- Container-less deployment
- Self-contained microservices
- In-container deployment
- Summary
- Chapter 11: Making Use of New APIs to Improve Your Code
- Filtering streams
- Basic filtering
- Using other stream operations for filtering
- Stack-walking APIs
- Stack analysis before Java 9
- New better way to walk the stack
- Convenience factory methods for collections
- Why new factory methods?
- The new factory methods in action
- CompletableFuture in support of asynchronous processing
- The CompletableFuture API overview
- The CompletableFuture API enhancements in Java 9
- The problem and the solution using Future
- The solution with CompletableFuture
- Other useful features of CompletableFuture
- Stream API improvements
- Summary
- Index
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.