Mastering Java 11

Develop modular and secure Java applications using concurrency and advanced JDK libraries, 2nd Edition
 
 
Packt Publishing
  • 1. Auflage
  • |
  • erschienen am 27. September 2018
  • |
  • 462 Seiten
 
E-Book | PDF mit Adobe-DRM | Systemvoraussetzungen
E-Book | ePUB mit Adobe-DRM | Systemvoraussetzungen
978-1-78913-893-1 (ISBN)
 
Update your Java knowledge with the latest features of Java 11, such as the low-Overhead Garbage Collector, Local-Variable Syntax for Lambda Parameters, and Dynamic Class-File ConstantsKey FeaturesExplore the latest features in Java 9,Java 10, and Java 11Enhance your Java application development and migration approaches Full coverage of modular Java applications, G1 Garbage Collector, JMHBook DescriptionJava 11 is a long-term release and its new features add to the richness of the language. It emphasizes variable-type inference, performance improvements, along with simplified multithreading.The Java platform has a special emphasis on modularity, making this the programming platform of choice for millions of developers. The modern Java platform can be used to build robust software applications, including enterprise-level and mobile applications. Fully updated for Java 11, this book stands to help any Java developer enjoy the richness of the Java programming language.Mastering Java 11 is your one-stop guide to fully understanding recent Java platform updates. It contains detailed explanations of the recent features introduced in Java 9, Java 10, and Java 11 along with obtaining practical guidance on how to apply the new features. As you make your way through the chapters, you'll discover further information on the developments of the Java platform and learn about the changes introduced by the variable handles and Project Coin, along with several enhancements in relation to import statements processing. In the concluding chapters, you'll learn to improve your development productivity, making your applications more efficient. You'll also be able to get to grips with the command-line flags with respect to various utilities and the command-line utility changes featured in the current Java platform. By the end of the book, you'll have obtained an advanced level understanding of the Java platform and its recent changes.What you will learnWrite modular Java applicationsMigrate existing Java applications to modular onesUnderstand how the default G1 garbage collector worksLeverage the possibilities provided by the newly introduced Java ShellPerformance test your application effectively with the JVM harnessLearn how Java supports the HTTP 2.0 standardFind out how to use the new Process APIExplore the additional enhancements and features of Java 9, 10, and 11Who this book is forMastering Java 11 is for experienced Java developers with a solid understanding of the Java language and want to progress to an advanced level.
  • Englisch
  • Birmingham
  • |
  • Großbritannien
  • Für Beruf und Forschung
  • Überarbeitete Ausgabe
  • 14,13 MB
978-1-78913-893-1 (9781789138931)
weitere Ausgaben werden ermittelt
Dr. Edward Lavieri is a veteran developer with a strong academic background. He has earned a doctorate in computer science from Colorado Technical University, an MS in management information systems (Bowie State University), an MS in education (Capella University), and an MS in operations management (University of Arkansas). He has been creating and teaching computer science courses since 2002. Edward retired from the US Navy as a Command Master Chief after 25 years of active service. As the founder and creative director of three19, a software design and development studio. Edward is constantly designing and developing software. This is Edward's 10th book.
  • Cover
  • Title Page
  • Copyright and Credits
  • Dedication
  • Packt Upsell
  • Contributors
  • Table of Contents
  • Preface
  • Chapter 1: The Java 11 Landscape
  • Technical requirements
  • Understanding the Java platform's new versioning model
  • Feature-driven releases
  • Time-based releases
  • Understanding the significance of Java 9
  • Breaking the monolith
  • Using the Java Shell
  • Taking control of external processes
  • Boosting performance with G1
  • Measuring performance with JMH
  • Getting ready for HTTP 2.0
  • Encompassing reactive programming
  • Benefiting from changes introduced with Java 10
  • Local variable type inference
  • Consolidation of the JDK forest into a single repository
  • Garbage collection interface
  • Parallel full garbage collector for G1
  • Application class-data sharing
  • Thread-local handshakes
  • Removal of the native-header generation tool (javah)
  • Additional Unicode language-tag extensions
  • Heap allocation on alternative memory devices
  • Experimental Java-based JIT compiler
  • Root certificates
  • Benefiting from changes introduced with Java 11
  • Dynamic class-file constants
  • Epsilon - an arbitrarily low-overhead garbage collector
  • Removal of the Java EE and CORBA modules
  • Local variable syntax for Lambda parameters
  • Summary
  • Questions
  • Further reading
  • Chapter 2: Discovering Java 11
  • Technical requirements
  • Improved contended locking
  • Improvement goals
  • Segmented code cache
  • Memory allocation
  • Smart Java compilation
  • Resolving lint and doclint warnings
  • Tiered attribution for Javac
  • Annotations pipeline 2.0
  • New version-string scheme
  • Generating runtime compiler tests automatically
  • Testing class-file attributes generated by Javac
  • Storing interned strings in class-data sharing archives
  • The problem
  • The Java 9 solution
  • The Java 10 improvement
  • Class determination
  • AppCDS archive creation
  • Using the AppCDS archive
  • Preparing JavaFX UI controls and Cascading Style Sheet APIs for modularization
  • JavaFX overview
  • Implications for Java 9, 10, and 11
  • Compact strings
  • Merging selected Xerces 2.11.0 updates into JAXP
  • Updating JavaFX/Media to the newer version of GStreamer
  • HarfBuzz font-layout engine
  • HiDPI graphics on Windows and Linux
  • Marlin graphics renderer
  • Unicode 8.0.0
  • New in Unicode 8.0.0
  • Updated classes in Java 9
  • Reserved stack areas for critical sections
  • The pre-Java 9 situation
  • New in Java 9
  • Dynamic linking of language-defined object models
  • Proof of concept
  • Additional tests for humongous objects in G1
  • Improving test-failure troubleshooting
  • Environmental information
  • Java process information
  • Optimizing string concatenation
  • HotSpot C++ unit-test framework
  • Enabling GTK3 on Linux
  • New HotSpot build system
  • Consolidating the JDF forest into a single repository
  • Summary
  • Questions
  • Further reading
  • Chapter 3: Java 11 Fundamentals
  • Technical requirements
  • Working with variable handlers
  • Working with the AtoMiC ToolKit
  • Using the sun.misc.Unsafe class
  • Import statement depreciation warnings
  • Milling Project Coin
  • Using the @SafeVarargs annotation
  • The try-with-resource statement
  • Using the diamond operator
  • Discontinuing use of the underscore
  • Making use of private interface methods
  • Import statement processing
  • Inferring local variables
  • Inferring declarations with the var identifier
  • Local variable syntax for Lambda parameters
  • Thread-local handshakes
  • Heap allocation on alternative memory devices
  • Root certificates
  • Dynamic class-file constants
  • Removal of the Java EE and CORBA modules
  • Summary
  • Questions
  • Further reading
  • Chapter 4: Building Modular Applications with Java 11
  • Technical requirements
  • A modular primer
  • The modular JDK
  • Modular source code
  • JDK source code organization before modularization
  • Development tools
  • Deployment
  • Internationalization
  • Monitoring
  • RMI
  • Security
  • Troubleshooting
  • Web services
  • JavaFX tools
  • Java runtime environment
  • Source code
  • Libraries
  • C header files
  • Database
  • JDK source code reorganization
  • Modular runtime images
  • Adopting a runtime format
  • Runtime image restructure
  • Supporting common operations
  • Deprivileging JDK classes
  • Preserving existing behaviors
  • Module system
  • Module paths
  • Access-control boundary violations
  • Runtime
  • Modular Java application packaging
  • An advanced look at the Java Linker
  • Java Packager options
  • The Java Linker
  • Encapsulating most internal APIs
  • Summary
  • Questions
  • Further reading
  • Chapter 5: Migrating Applications to Java 11
  • Technical requirements
  • A quick review of Project Jigsaw
  • Classpath
  • The monolithic nature of the JDK
  • How modules fit into the Java landscape
  • Base module
  • Reliable configuration
  • Strong encapsulation
  • Migration planning
  • Testing a simple Java application
  • Potential migration issues
  • The JRE
  • Accessing internal APIs
  • Accessing internal JARs
  • JAR URL depreciation
  • Extension mechanism
  • The JDK's modularization
  • Advice from Oracle
  • Preparatory steps
  • Getting the JDK early access build
  • Running your program before recompiling
  • Updating third-party libraries and tools
  • Compiling your application
  • Pre-Java 9 -source and -target options
  • Java 10 and 11 -source and -target options
  • Running jdeps on your code
  • Breaking encapsulation
  • The --add-opens option
  • The --add-exports option
  • The --permit-illegal-access option
  • Runtime image changes
  • Java version schema
  • JDK and JRE's layout
  • What has been removed?
  • Updated garbage collection
  • Deploying your applications
  • Selecting your JRE version
  • Serialized applets
  • JNLP update
  • Nested resources
  • FX XML extension
  • JNLP file syntax
  • Numeric version comparison
  • Useful tools
  • Java Environment -jEnv
  • Maven
  • Obtaining the M2Eclipse IDE
  • Summary
  • Questions
  • Further reading
  • Chapter 6: Experimenting with the Java Shell
  • Technical requirements
  • Understanding JShell
  • Getting started with JShell
  • Practical uses of JShell
  • Feedback modes
  • Creating a custom feedback mode
  • Listing your assets
  • Editing in JShell
  • Modifying text
  • Basic navigation
  • Historical navigation
  • Advanced editing commands
  • Working with scripts
  • Startup scripts
  • Loading scripts
  • Saving scripts
  • Advanced scripting with JShell
  • Summary
  • Questions
  • Further reading
  • Chapter 7: Leveraging the Default G1 Garbage Collector
  • Technical requirements
  • Overview of garbage collection
  • Object life cycle
  • Object creation
  • Object mid-life
  • Object destruction
  • Garbage collection algorithms
  • Mark and sweep
  • Concurrent Mark Sweep (CMS) garbage collection
  • Serial garbage collection
  • Parallel garbage collection
  • G1 garbage collection
  • Garbage collection options
  • Java methods relevant to garbage collection
  • The System.gc() method
  • The finalize() method
  • The pre-Java 9 garbage collection schema
  • Visualizing garbage collection
  • Garbage collection upgrades in Java 8
  • Case study - games written with Java
  • Collecting garbage with the new Java platform
  • Default garbage collection
  • Depreciated garbage collection combinations
  • Unified garbage collection logging
  • Unified JVM logging
  • Tags
  • Levels
  • Decorations
  • Output
  • Command-line options
  • Unified GC logging
  • Garbage collection logging options
  • The gc tag
  • Macros
  • Additional considerations
  • Garbage collection interface
  • Parallel full garbage collection for G1
  • Epsilon - an arbitrarily low-overhead GC
  • Persistent issues
  • Making objects eligible for garbage collection
  • Summary
  • Questions
  • Further reading
  • Chapter 8: Microbenchmarking Applications with JMH
  • Technical requirements
  • Microbenchmarking overview
  • Approach to using JMH
  • Installing Java and Eclipse
  • Hands-on experiment
  • Microbenchmarking with Maven
  • Benchmarking options
  • Modes
  • Time units
  • Techniques for avoiding microbenchmarking pitfalls
  • Power management
  • OS schedulers
  • Timesharing
  • Eliminating dead-code and constant folding
  • Run-to-run variance
  • Cache capacity
  • Summary
  • Questions
  • Further reading
  • Chapter 9: Making Use of the Process API
  • Technical requirements
  • Introducing processes
  • Working with the ProcessHandle interface
  • Getting the PID of the current process
  • Getting information about processes
  • Listing processes
  • Listing children
  • Listing descendants
  • Listing all processes
  • Waiting for processes
  • Terminating processes
  • Reviewing a sample process controller app
  • Main class
  • Parameters class
  • ParamsAndHandle
  • ControlDaemon
  • Summary
  • Questions
  • Further reading
  • Chapter 10: Fine-Grained Stack Tracing
  • Technical requirements
  • Overview of the Java Stack
  • The importance of stack information
  • Example - restricting callers
  • Example - getting loggers for callers
  • Working with StackWalker
  • Getting an instance of StackWalker
  • Enum options
  • RETAIN_CLASS_REFERNCE
  • SHOW_REFLECT_FRAMES
  • SHOW_HIDDEN_FRAMES
  • Final thoughts on enum constants
  • Accessing classes
  • Walking methods
  • StackFrame
  • Performance
  • Summary
  • Questions
  • Chapter 11: New Tools and Tool Enhancements
  • Technical requirements
  • Working with the HTTP client
  • The pre-Java 9 HTTP client
  • The Java 11 HTTP client
  • Limitations of the HTTP client API
  • Understanding Javadoc and the Doclet API
  • The pre-Java 9 Doclet API
  • API enums
  • API classes
  • API interfaces
  • Problems with the pre-existing Doclet API
  • Java 9's Doclet API
  • Compiler tree API
  • Language model API
  • The AnnotatedConstruct interface
  • The SourceVersion enum
  • The UnknownEntityException exception
  • Using the HTML5 Javadoc
  • Javadoc search
  • Introducing Camel Case search
  • Changes to the Multiple JRE feature
  • JavaScript Parser
  • Nashorn
  • Using Nashorn as a command-line tool
  • Using Nashorn as an embedded interpreter
  • ECMAScript
  • Parser API
  • Multiple-release JAR files
  • Identifying multi-release JAR files
  • Related JDK changes
  • Java-level JVM Compiler Interface
  • BeanInfo annotations
  • JavaBean
  • BeanProperty
  • SwingContainer
  • BeanInfo classes
  • TIFF support
  • Platform logging
  • The java.util.logging package
  • Logging in the modern Java platform
  • XML Catalogs
  • The OASIS XML Catalog standard
  • JAXP processors
  • Earlier XML Catalogs
  • Current XML Catalogs
  • Collections
  • Using collections prior to the modern Java platform
  • Using new collection literals
  • Platform-specific desktop features
  • Enhanced method handling
  • The reason for the enhancement
  • Lookup functions
  • Argument handling
  • Additional combinations
  • Enhanced depreciation
  • What the @Deprecated annotation really means
  • The native header generation tool (javah)
  • Summary
  • Questions
  • Further reading
  • Chapter 12: Concurrency Enhancements
  • Technical requirements
  • Reactive programming
  • Reactive programming standardization
  • The Flow API
  • The Flow.Publisher interface
  • The Flow.Subscriber interface
  • The Flow.Subscription interface
  • The Flow.Processor interface
  • Sample implementation
  • Additional concurrency updates
  • Java concurrency
  • Concurrency explained
  • System configurations
  • Java threads
  • Concurrency improvements
  • CompletableFuture API enhancements
  • Class details
  • Enhancements
  • Spin-wait hints
  • Summary
  • Questions
  • Further reading
  • Chapter 13: Security Enhancements
  • Technical requirements
  • Datagram Transport Layer Security
  • DTLS protocol version 1.0
  • DTLS protocol version 1.2
  • DTLS support in Java
  • Creating PKCS12 keystores
  • Keystore primer
  • Java Keystore (JKS)
  • Understanding the KeyStore.Builder
  • The CallbackHandlerProtection class
  • The PasswordProtection class
  • The PrivateKeyEntry class
  • The SecretKeyEntry class
  • The TrustedCertificateEntry class
  • PKCS12 default in Java 9, 10, and 11
  • Improving security application performance
  • Security policy enforcement
  • Permission evaluation
  • The java.Security.CodeSource package
  • Package checking algorithm
  • The TLS application-layer protocol negotiation extension
  • TLS ALPN extension
  • The javax.net.ssl package
  • The java.net.ssl package extension
  • Leveraging CPU instructions for GHASH and RSA
  • Hashing
  • OCSP stapling for TLS
  • OCSP stapling primer
  • Recent changes to the Java platform
  • DRBG-based SecureRandom implementations
  • Summary
  • Questions
  • Further reading
  • Chapter 14: Command-Line Flags
  • Technical requirements
  • Unified JVM logging
  • Command-line options
  • Decorations
  • Levels
  • Working with Xlog output
  • Tags
  • Compiler control
  • Compilation modes
  • The C1 compilation mode
  • The C2 compilation mode
  • Tiered compilation
  • Compiler control in Java 11
  • Diagnostic commands
  • The heap profiling agent
  • Removing your JHAT
  • Command-line flag argument validation
  • Compiling for older platform versions
  • The experimental Java-based JIT compiler
  • Summary
  • Questions
  • Further reading
  • Chapter 15: Additional Enhancements to the Java Platform
  • Technical requirements
  • Support for UTF-8
  • The ResourceBundle class
  • The nested class
  • Fields and constructors
  • Methods
  • Changes in the modern Java platform
  • Unicode support
  • The java.lang package
  • The java.text package
  • Additional significance
  • Linux/AArch64 port
  • Multiresolution images
  • Common Locale Data Repository
  • Summary
  • Questions
  • Chapter 16: Future Directions
  • Technical requirements
  • An overview of the JDK Enhancement Proposal
  • JEP Candidates
  • JEP 326: Raw String Literals
  • JEP 334: JVM Constants API
  • JEP 337: RDMA Network Sockets
  • JEP 338: Vector API
  • JEP 339: Edwards-Curve Digital Signature Algorithm
  • JEP Submitted
  • JEP Drafted
  • Ongoing special projects
  • Annotations Pipeline 2.0
  • Audio Synthesis Engine
  • Caciocavallo
  • Common VM Interface
  • Compiler Grammar
  • Device I/O
  • Graal
  • HarfBuzz integration
  • Kona
  • OpenJFX
  • Panama
  • Shenandoah
  • Summary
  • Questions
  • Chapter 17: Contributing to the Java Platform
  • Technical requirements
  • The Java Community
  • Participating in a Java User Group
  • Java Community Process
  • Oracle Technology Network
  • Writing technical articles
  • Summary
  • Questions
  • Assessment
  • Chapter 1
  • Chapter 2
  • Chapter 3
  • Chapter 4
  • Chapter 5
  • Chapter 6
  • Chapter 7
  • Chapter 8
  • Chapter 9
  • Chapter 10
  • Chapter 11
  • Chapter 12
  • Chapter 13
  • Chapter 14
  • Chapter 15
  • Chapter 16
  • Chapter 17
  • Other Books You May Enjoy
  • Index

Dateiformat: PDF
Kopierschutz: Adobe-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Installieren Sie bereits vor dem Download die kostenlose Software Adobe Digital Editions (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Adobe-DRM wird hier ein "harter" Kopierschutz verwendet. Wenn die notwendigen Voraussetzungen nicht vorliegen, können Sie das E-Book leider nicht öffnen. Daher müssen Sie bereits vor dem Download Ihre Lese-Hardware vorbereiten.

Bitte beachten Sie bei der Verwendung der Lese-Software Adobe Digital Editions: wir empfehlen Ihnen unbedingt nach Installation der Lese-Software diese mit Ihrer persönlichen Adobe-ID zu autorisieren!

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Dateiformat: ePUB
Kopierschutz: Adobe-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Installieren Sie bereits vor dem Download die kostenlose Software Adobe Digital Editions (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat ePUB ist sehr gut für Romane und Sachbücher geeignet - also für "fließenden" Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Adobe-DRM wird hier ein "harter" Kopierschutz verwendet. Wenn die notwendigen Voraussetzungen nicht vorliegen, können Sie das E-Book leider nicht öffnen. Daher müssen Sie bereits vor dem Download Ihre Lese-Hardware vorbereiten.

Bitte beachten Sie bei der Verwendung der Lese-Software Adobe Digital Editions: wir empfehlen Ihnen unbedingt nach Installation der Lese-Software diese mit Ihrer persönlichen Adobe-ID zu autorisieren!

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

49,09 €
inkl. 7% MwSt.
Download / Einzel-Lizenz
PDF mit Adobe-DRM
siehe Systemvoraussetzungen
E-Book bestellen

40,49 €
inkl. 7% MwSt.
Download / Einzel-Lizenz
ePUB mit Adobe-DRM
siehe Systemvoraussetzungen
E-Book bestellen