3 options
Java 9 high performance / Mayur Ramgir and Nick Samoylov.
- Format:
- Book
- Author/Creator:
- Ramgir, Mayur, author.
- Samoylov, Nick, author.
- Language:
- English
- Subjects (All):
- Performance.
- Physical Description:
- 1 online resource (1 volume) : illustrations
- Edition:
- 1st edition
- Place of Publication:
- Birmingham, England ; Mumbai, [India] : Packt Publishing, 2017.
- System Details:
- text file
- Biography/History:
- Ramgir Mayur: 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.
- Summary:
- Best practices to adapt and bottlenecks to avoid About This Book Tackle all kinds of performance-related issues and streamline your development Master the new features and new APIs of Java 9 to implement highly efficient and reliable codes Gain an in-depth knowledge of Java application performance and obtain best results from performance testing Who This Book Is For This book is for Java developers who would like to build reliable and high-performance applications. Prior Java programming knowledge is assumed. What You Will Learn Work with JIT compilers Understand the usage of profiling tools Generate JSON with code examples Leverage the command-line tools to speed up application development Build microservices in Java 9 Explore the use of APIs to improve application code Speed up your application with reactive programming and concurrency In Detail Finally, a book that focuses on the practicalities rather than theory of Java application performance tuning. This book will be your one-stop guide to optimize the performance of your Java applications. We will begin by understanding the new features and APIs of Java 9. You will then be taught the practicalities of Java application performance tuning, how to make the best use of garbage collector, and find out how to optimize code with microbenchmarking. Moving ahead, you will be introduced to multithreading and learning about concurrent programming with Java 9 to build highly concurrent and efficient applications. You will learn how to fine tune your Java code for best results. You will discover techniques on how to benchmark performance and reduce various bottlenecks in your applications. We'll also cover best practices of Java programming that will help you improve the quality of your codebase. By the end of the book, you will be armed with the knowledge to build and deploy efficient, scalable, and concurrent applications in Java. Style and approach This step-by-step guide provides real-world examples to give you a hands-on experience.
- Contents:
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Chapter 9: Multithreading and Reactive Programming
- Prerequisites
- Thread pools
- Monitoring threads
- Sizing thread pool executors
- Thread synchronization
- Tuning JVM
- Reactive programming
- 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
- Index.
- Notes:
- Description based on online resource; title from PDF title page (EBC, viewed December 2, 2017).
- ISBN:
- 9781787122307
- 1787122301
- OCLC:
- 1017754247
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.