ebook img

Java 13 Revealed - For Early Adoption and Migration. PDF

286 Pages·2020·2.185 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Java 13 Revealed - For Early Adoption and Migration.

Java 13 Revealed For Early Adoption and Migration — Second Edition — Kishori Sharan Java 13 Revealed For Early Adoption and Migration Second Edition Kishori Sharan Java 13 Revealed: For Early Adoption and Migration Kishori Sharan Montgomery, AL, USA ISBN-13 (pbk): 978-1-4842-5406-6 ISBN-13 (electronic): 978-1-4842-5407-3 https://doi.org/10.1007/978-1-4842-5407-3 Copyright © 2019 by Kishori Sharan This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Coordinating Editor: Mark Powers Cover designed by eStudioCalamar Cover image designed by Raw Pixel (www.rawpixel.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected]; for reprint, paperback, or audio rights, please email [email protected]. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484254066. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper To my friend Richard Castillo, who has been incredible in helping me in my journey of writing books. Without his help, I could not have published my three-book “Harnessing Java 7” series. Thank you, my friend, for all your help. Table of Contents About the Author �����������������������������������������������������������������������������������������������������xi About the Technical Reviewer �������������������������������������������������������������������������������xiii Acknowledgments ���������������������������������������������������������������������������������������������������xv Introduction �����������������������������������������������������������������������������������������������������������xvii Chapter 1: Local Variable Type Inference �����������������������������������������������������������������1 What Is Type Inference? ����������������������������������������������������������������������������������������������������������������1 What Is var? ����������������������������������������������������������������������������������������������������������������������������������2 A Quick Example ���������������������������������������������������������������������������������������������������������������������������5 Rules of Using var �������������������������������������������������������������������������������������������������������������������������9 No Uninitialized Variables ������������������������������������������������������������������������������������������������������10 No null Type Initializers ����������������������������������������������������������������������������������������������������������10 No Multiple Variable Declarations ������������������������������������������������������������������������������������������11 Cannot Reference the Variable in the Initializer���������������������������������������������������������������������11 No Array Initializers by Themselves ���������������������������������������������������������������������������������������11 No Array Dimensions �������������������������������������������������������������������������������������������������������������12 No Poly Expressions As Initializers ����������������������������������������������������������������������������������������12 Inferring Types on Both Sides ������������������������������������������������������������������������������������������������14 Inferring Non-denotable Types ����������������������������������������������������������������������������������������������14 Not Allowed in Fields and Methods Declarations ������������������������������������������������������������������17 Using final with var ���������������������������������������������������������������������������������������������������������������������17 Formal Parameters in Lambda Expressions �������������������������������������������������������������������������������18 Backward Compatibility ��������������������������������������������������������������������������������������������������������������20 Summary�������������������������������������������������������������������������������������������������������������������������������������21 v Table of ConTenTs Chapter 2: Java Versioning Scheme �����������������������������������������������������������������������23 Java Release Models ������������������������������������������������������������������������������������������������������������������23 What Is a Version String? ������������������������������������������������������������������������������������������������������������24 Old Version String Scheme ����������������������������������������������������������������������������������������������������������24 New Version String Scheme ��������������������������������������������������������������������������������������������������������26 Version Number ���������������������������������������������������������������������������������������������������������������������26 Pre-release Information ���������������������������������������������������������������������������������������������������������28 Build Information �������������������������������������������������������������������������������������������������������������������28 Additional Information �����������������������������������������������������������������������������������������������������������28 Parsing Old and New Version Strings ������������������������������������������������������������������������������������������29 Changes to System Properties ����������������������������������������������������������������������������������������������������29 Using the Runtime�Version Class ������������������������������������������������������������������������������������������������30 Printing Java Version Strings ������������������������������������������������������������������������������������������������������36 Summary�������������������������������������������������������������������������������������������������������������������������������������38 Chapter 3: The HTTP Client API �������������������������������������������������������������������������������41 What Is the HTTP Client API? �������������������������������������������������������������������������������������������������������41 Components of the HTTP Client API ��������������������������������������������������������������������������������������������43 Setting Up Examples �������������������������������������������������������������������������������������������������������������������45 A Quick Example �������������������������������������������������������������������������������������������������������������������������46 Creating HTTP Clients �����������������������������������������������������������������������������������������������������������������49 Processing HTTP Requests ���������������������������������������������������������������������������������������������������������52 Obtaining an HTTP Request Builder ���������������������������������������������������������������������������������������52 Setting Up HTTP Request Parameters �����������������������������������������������������������������������������������53 Setting Up Request Method and Body Publisher �������������������������������������������������������������������53 Overriding HTTP Version ��������������������������������������������������������������������������������������������������������56 Setting Up a Timeout �������������������������������������������������������������������������������������������������������������57 Setting Expect Continue Header ��������������������������������������������������������������������������������������������57 Setting Request Headers �������������������������������������������������������������������������������������������������������58 Creating HTTP Requests ��������������������������������������������������������������������������������������������������������59 vi Table of ConTenTs Processing HTTP Responses �������������������������������������������������������������������������������������������������������59 Processing Response Status and Headers ����������������������������������������������������������������������������60 Processing the Response Body ���������������������������������������������������������������������������������������������63 Using HTTP Basic Authentication ������������������������������������������������������������������������������������������������91 Using WebSockets�����������������������������������������������������������������������������������������������������������������������96 WebSocket Server Endpoint ��������������������������������������������������������������������������������������������������97 Creating a Client Endpoint �����������������������������������������������������������������������������������������������������97 Running the WebSocket Program ����������������������������������������������������������������������������������������106 Summary�����������������������������������������������������������������������������������������������������������������������������������110 Chapter 4: Launching Single File Source Code Programs ������������������������������������111 What Is the Java Launcher? ������������������������������������������������������������������������������������������������������111 Setting Up Examples �����������������������������������������������������������������������������������������������������������������113 Source-File Mode Selection ������������������������������������������������������������������������������������������������������114 Must Be a Single Source File ����������������������������������������������������������������������������������������������������115 The First Top-Level Class Is Run �����������������������������������������������������������������������������������������������118 Passing Arguments to the Program ������������������������������������������������������������������������������������������121 Passing Options to the Compiler �����������������������������������������������������������������������������������������������122 Class Loading Mechanism ��������������������������������������������������������������������������������������������������������123 Non-standard Source File Names ���������������������������������������������������������������������������������������������134 Supporting Shebang Files ���������������������������������������������������������������������������������������������������������135 Summary�����������������������������������������������������������������������������������������������������������������������������������140 Chapter 5: Enhanced Switch ���������������������������������������������������������������������������������143 What Is a Preview Feature? ������������������������������������������������������������������������������������������������������143 Example Programs ��������������������������������������������������������������������������������������������������������������������145 The Background ������������������������������������������������������������������������������������������������������������������������145 The Fall-Through Semantics �����������������������������������������������������������������������������������������������146 One Constant per Case Label ����������������������������������������������������������������������������������������������147 One Scope for the Switch Block ������������������������������������������������������������������������������������������148 A Switch Was a Statement ��������������������������������������������������������������������������������������������������149 vii Table of ConTenTs Enhanced Switch ����������������������������������������������������������������������������������������������������������������������150 Enhancements to Traditional Switch �����������������������������������������������������������������������������������150 New Switch Syntax��������������������������������������������������������������������������������������������������������������155 Does New switch Replace the Old One �������������������������������������������������������������������������������������160 Exhaustiveness of Case Labels �������������������������������������������������������������������������������������������������162 A Switch Expression Is a Poly Expression ���������������������������������������������������������������������������������167 The yield Statement ������������������������������������������������������������������������������������������������������������������170 Mixing Switch Label Syntax ������������������������������������������������������������������������������������������������������172 Summary�����������������������������������������������������������������������������������������������������������������������������������173 Chapter 6: Text Blocks ������������������������������������������������������������������������������������������175 The Background ������������������������������������������������������������������������������������������������������������������������175 What Is a Text Block? ����������������������������������������������������������������������������������������������������������������178 Text Blocks Are a Preview Feature ��������������������������������������������������������������������������������������������180 Text Blocks Are Transformed �����������������������������������������������������������������������������������������������������181 Transformation Rules ����������������������������������������������������������������������������������������������������������������186 Transforming Line Terminators ��������������������������������������������������������������������������������������������186 Transforming Incidental Whitespaces����������������������������������������������������������������������������������188 Transforming Escape Sequences ����������������������������������������������������������������������������������������195 A Complete Example������������������������������������������������������������������������������������������������������������200 Concatenating Text Blocks ��������������������������������������������������������������������������������������������������������204 Addition to the String API ����������������������������������������������������������������������������������������������������������205 Detecting Inconsistent Whitespaces �����������������������������������������������������������������������������������������209 Summary�����������������������������������������������������������������������������������������������������������������������������������211 Chapter 7: Class Data Sharing ������������������������������������������������������������������������������213 Class Data Sharing ��������������������������������������������������������������������������������������������������������������������214 Creating a Shared Archive ���������������������������������������������������������������������������������������������������214 Using a Shared Archive��������������������������������������������������������������������������������������������������������215 Knowing the Loaded Class Location ������������������������������������������������������������������������������������219 viii Table of ConTenTs Application Class Data Sharing (AppCDS) ���������������������������������������������������������������������������������220 Creating a Class List ������������������������������������������������������������������������������������������������������������221 Generating a Shared Archive for AppCDS ����������������������������������������������������������������������������222 Running Application Using AppCDS �������������������������������������������������������������������������������������223 Class Path and Module Path Rules ��������������������������������������������������������������������������������������225 Default CDS Archives ����������������������������������������������������������������������������������������������������������������227 Dynamic CDS Archives ��������������������������������������������������������������������������������������������������������������228 Summary�����������������������������������������������������������������������������������������������������������������������������������230 Chapter 8: Tools and APIs Changes ����������������������������������������������������������������������233 Deprecated Tools �����������������������������������������������������������������������������������������������������������������������233 The Nashorn JavaScript Engine�������������������������������������������������������������������������������������������234 The rmic Tool �����������������������������������������������������������������������������������������������������������������������234 The Pack200 Tools and API ��������������������������������������������������������������������������������������������������234 The Swing Motif Look and Feel �������������������������������������������������������������������������������������������235 Removed Tools ��������������������������������������������������������������������������������������������������������������������������235 The appletviewer Tool ����������������������������������������������������������������������������������������������������������235 The javah Tool ����������������������������������������������������������������������������������������������������������������������235 The Runtime Class ��������������������������������������������������������������������������������������������������������������������235 The Thread Class �����������������������������������������������������������������������������������������������������������������������236 The JVM Constants API �������������������������������������������������������������������������������������������������������������236 The String Class ������������������������������������������������������������������������������������������������������������������������238 Stripping Whitespaces ���������������������������������������������������������������������������������������������������������239 Testing for a Blank String ����������������������������������������������������������������������������������������������������239 Obtaining Stream of Lines ���������������������������������������������������������������������������������������������������239 Repeating a String ���������������������������������������������������������������������������������������������������������������240 Transforming Strings �����������������������������������������������������������������������������������������������������������241 Optional and Predicate ��������������������������������������������������������������������������������������������������������������245 Compact Number Format ����������������������������������������������������������������������������������������������������������248 Unicode Support �����������������������������������������������������������������������������������������������������������������������250 The Files Class ��������������������������������������������������������������������������������������������������������������������������250 ix Table of ConTenTs Collections ��������������������������������������������������������������������������������������������������������������������������������253 Creating Unmodifiable Copies of Collections �����������������������������������������������������������������������253 Converting Collections to an Array ��������������������������������������������������������������������������������������255 New Collectors ��������������������������������������������������������������������������������������������������������������������������258 Unmodifiable Collectors ������������������������������������������������������������������������������������������������������258 The Teeing Collector ������������������������������������������������������������������������������������������������������������259 The Buffer API ���������������������������������������������������������������������������������������������������������������������������262 Creating File Systems from a Path ��������������������������������������������������������������������������������������������263 Other Significant Changes in JDK11 �����������������������������������������������������������������������������������������266 Summary�����������������������������������������������������������������������������������������������������������������������������������266 Index ���������������������������������������������������������������������������������������������������������������������269 x

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.