Java 8 recipes, 2nd edition

627 237 0
Java 8 recipes, 2nd edition

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

www.it-ebooks.info For your convenience Apress has placed some of the front matter material after the index Please use the Bookmarks and Contents at a Glance links to access them www.it-ebooks.info Contents at a Glance About the Author xli About the Technical Reviewers xliii Acknowledgments xlv Introduction xlvii N Chapter 1: Getting Started with Java .1 N Chapter 2: New Features of Java 29 N Chapter 3: Strings 49 N Chapter 4: Numbers and Dates 65 N Chapter 5: Object-Oriented Java .97 N Chapter 6: Lambda Expressions 133 N Chapter 7: Data Structures and Collections 153 N Chapter 8: Input and Output 187 N Chapter 9: Exceptions and Logging .207 N Chapter 10: Concurrency .223 N Chapter 11: Debugging and Unit Testing .249 N Chapter 12: Unicode, Internationalization, and Currency Codes 263 N Chapter 13: Working with Databases 283 N Chapter 14: JavaFX Fundamentals 331 N Chapter 15: Graphics with JavaFX 405 N Chapter 16: Media with JavaFX .445 v www.it-ebooks.info N CONTENTS AT A GLANCE N Chapter 17: JavaFX on the Web .473 N Chapter 18: Nashorn and Scripting .505 N Chapter 19: E-mail .527 N Chapter 20: XML Processing 537 N Chapter 21: Networking .553 N Chapter 22: Security 571 Index 579 vi www.it-ebooks.info Introduction The Java programming language was introduced in 1995 by Sun Microsystems Derived from languages such as C and C++, Java was designed to be more intuitive and easier to use than older languages, specifically due to its simplistic object model and automated facilities such as memory management At the time, Java drew the interest of developers because of its object oriented, concurrent architecture; its excellent security and scalability; and because applications developed in the Java language could run on any operating system that contained a Java Virtual Machine (JVM) Since its inception, Java has been described as a language that allows developers to “write once, run everywhere” as code is compiled into class files that contain bytecode, and the resulting class files can run on any compliant JVM This concept made Java an immediate success for desktop development, which later branched off into different technological solutions over the years, including development of web-based applications and rich Internet applications (RIAs) Today, Java is deployed on a broad range of devices, including mobile phones, printers, medical devices, Blu-ray players, and so on The Java platform consists of a hierarchy of components, starting with the Java Development Kit (JDK), which is composed of the Java Runtime Environment (JRE), the Java programming language, and platform tools that are necessary to develop and run Java applications The JRE contains the Java Virtual Machine (JVM), plus the Java application programming interfaces (APIs) and libraries that assist in the development of Java applications The JVM is the base upon which compiled Java class files run and is responsible for interpreting compiled Java classes and executing the code Every operating system that is capable of running Java code has its own version of the JVM To that end, the JRE must be installed on any system that will be running local Java desktop or stand-alone Java applications Oracle provides JRE implementations for most of the major operating systems Each operating system can have its own flavor of the JRE For instance, mobile devices can run a scaled down version of the full JRE that is optimized to run Java Mobile Edition (ME) and Java SE embedded applications The Java platform APIs and libraries are a collection of predefined classes that are used by all Java applications Any application that runs on the JVM makes uses the Java platform APIs and libraries This allows applications to use the functionality that has been predefined and loaded into the JVM and leaves developers with more time to worry about the details of their specific application The classes that comprise the Java platform APIs and libraries allow Java applications to use one set of classes in order to communicate with the underlying operating system As such, the Java platform takes care of interpreting the set of instructions provided by a Java application into operating system commands that are required for the machine on which the application is being executed This creates a facade for Java developers to write code against so that they can develop applications that can be written once and ran on every machine that contains a relevant JVM The JVM and the Java platform APIs and libraries play key roles in the lifecycle of every Java application Entire books have been written that explore the platform and JVM This book focuses on the Java language itself, which is used to develop Java applications, although the JVM and Java platform APIs and libraries are referenced as needed The Java language is a robust, secure, and modern object oriented language that can be used to develop applications to run on the JVM The Java programming language has been refined over several iterations and it becomes more powerful, secure, and modern with each new release This book covers many features of the Java programming language from those that were introduced in Java 1.0 through those that made their way to the language in Java In 2014, Oracle Corporation released Java 8, which was another milestone release for the Java ecosystem Not only was Java already the most modern, statically typed, object oriented language available for development, but Java adds important new enhancements to the language, such as lambda expressions, streams processing, and default methods JavaFX was also released at the same time, advancing desktop Java applications more than ever JavaFX can be used for developing rich desktop and Internet applications using the Java language, or any other language that runs xlvii www.it-ebooks.info N INTRODUCTION on the JVM It provides a rich set of graphical and media user interfaces to develop extraordinary visual applications This release is another nice update to the JavaFX platform, adding in features such as the Swing node and the Print API This book covers the fundamentals of Java development, such as installing the JDK, writing classes, and running applications It delves into essential topics such as the development of object oriented constructs, exception handling, unit testing, and localization The book also provides solutions for desktop application development using the JavaFX, and some web-based and database solutions It covers JavaFX in depth and is an essential guide for developers beginning to use JavaFX This book can be used as a guide for solving problems that ordinary Java developers may encounter at some point A broad range of topics is discussed, and the solutions to the problems that are covered in this book are concise and to the point If you are a novice Java developer, we hope that this book will help you get started on your journey to working with one of the most advanced and widely used programming languages available today For those of you who have used the Java language for some time, we hope that this book will provide you with updated material that is new to Java and JavaFX 2.0 so that you can further refine your Java development skills We ensure that advanced Java application developers will also learn a thing or two regarding the new features of the language and perhaps even stumble upon some techniques that were not used in the past Whatever your skill level, this book is good to have close at hand as a reference for solutions to those problems that you encounter in your daily programming Who This Book Is For This book is intended for all those who are interested in learning the Java programming language and/or already know the language but would like some information regarding the new features included in Java SE and JavaFX Those who have not yet programmed in the Java language can read this book, and it will allow them to start from scratch to get up and running quickly Intermediate and advanced Java developers who are looking to update their arsenal with the latest features that Java SE and JavaFX make available to them can also read the book to quickly update and refresh their skill set Java desktop programmers will find this book useful for its content on developing desktop applications using the JavaFX API There are, of course, a myriad of other essential topics that will be useful to Java developers of any type How This Book Is Structured This book is structured so that it does not have to be read from cover to cover In fact, it is structured so that developers can chose which topics they want to read about and jump right to them Each recipe contains a problem to solve, one or more solutions to solve that problem, and a detailed explanation of how the solution works Although some recipes may build upon concepts that have been discussed in other recipes, they contain the appropriate references so that the developer can find other related recipes that are beneficial to the solution The book is designed to allow developers to get up and running quickly with a solution so that they can be home in time for dinner xlviii www.it-ebooks.info CHAPTER Getting Started with Java In this chapter we present a handful of recipes to help programmers who are new to the Java language, as well as those having experience in other languages, become accustomed to Java You will learn to install Java 8, and also install an Interactive Development Environment (IDE) from which you’ll develop applications and experiment with the solutions provided in this book You will learn basics of Java such as how to create a class and how to accept keyboard input Documentation is often overlooked, but in this chapter you will quickly learn how to create great documentation for your Java code N Note Java Recipes is not intended as a complete tutorial Rather, it covers key concepts of the Java language If you are truly new to Java, we recommend buying and reading one of the many Beginning Java books that are also published by Apress 1-1 Creating a Development Environment Problem You want to install Java and experiment with the language You’d also like a reasonable IDE to use with it Solution Install Java Development Kit (JDK) That gives you the language and a compiler Then install the NetBeans IDE to provide a more productive working environment Java Standard Edition (Java SE) is sufficient for most recipes in this book To download the release, visit the following page on the Oracle Technology Network (OTN): http://www.oracle.com/technetwork/java/javase/overview/index.html Figure 1-1 shows the Downloads tab, and you can see the Java Platform download link and image prominently on the page Next to that link is an image for the NetBeans IDE, which provides the option of downloading the JDK and NetBeans together Choose the option that you prefer, download the release for your platform, and run the setup wizard to install www.it-ebooks.info CHAPTER N GETTING STARTED WITH JAVA Figure 1-1 Java SE Downloads page on the Oracle Technology Network N Note If you chose to only install the Java Platform (JDK) and not NetBeans, you can download NetBeans at a later time by visiting netbeans.org How It Works The name Java™ is a trademark owned by Oracle Corporation The language itself is open source, and its evolution is controlled by a process known as the Java Community Process SM (JCP SM) You can read more about that process at www.jcp.org There are many editions of Java, such as the Mobile Edition (ME) and the Enterprise Edition (EE) Java SE is the Standard Edition and represents the heart of the language We’ve built the recipes in this book for Java SE programmers Those interested in the development of mobile or embedded applications may be interested in learning more about Java ME Similarly, those interested in developing web applications and working with enterprise solutions may be interested in learning more about Java EE N Note Enterprise Edition programmers may want to buy and read a copy of Java EE Recipes (Apress, 2013) There are several good websites that you can visit to learn more about Java and keep up-to-date with the latest on the platform A good place to begin for all things Java is the following page on the Oracle Technology Network: http://www.oracle.com/technetwork/java/index.html The wealth of resources available from this page can be overwhelming at first, but it’s worth your time to look around and get passingly familiar with the many links that are available One of the links will be to Java SE, which takes you to the page shown earlier in Figure 1-1 It is from there that you can download Java SE and the NetBeans IDE Also from there you have access to the official documentation, to community resources such as forums and newsletters, and to training resources designed to help you build knowledge in Java and become certified in the language www.it-ebooks.info CHAPTER N GETTING STARTED WITH JAVA 1-2 Getting to “Hello, World” Problem You’ve installed Java SE and the NetBeans IDE Now you want to run a simple Java program to verify that your installation is working properly Solution Begin by opening the NetBeans IDE You should see a workspace resembling the one in Figure 1-2 You may see some projects in the left-hand pane if you’ve already been working on projects within the IDE Figure 1-2 Opening the NetBeans IDE www.it-ebooks.info CHAPTER N GETTING STARTED WITH JAVA Go to the File menu and select New Project You’ll see the dialog in Figure 1-3 Choose the Java category, and then Java Application Click Next to advance to the dialog shown in Figure 1-4 Figure 1-3 Creating a new Java SE project www.it-ebooks.info N CONTENTS 13-8 Creating a Scrollable ResultSet .303 Problem 303 Solution 303 How It Works 304 13-9 Creating an Updatable ResultSet .305 Problem 305 Solution 305 How It Works 306 13-10 Caching Data for Use When Disconnected .307 Problem 307 Solution 307 How It Works 310 13-11 Joining RowSet Objects When Not Connected to the Data Source 313 Problem 313 Solution 313 How It Works 317 13-12 Filtering Data in a RowSet .318 Problem 318 Solution 318 How It Works 322 13-13 Querying and Storing Large Objects 323 Problem 323 Solution 323 How It Works 325 13-14 Invoking Stored Procedures 326 Problem 326 Solution 326 How It Works 327 xxix www.it-ebooks.info N CONTENTS 13-15 Obtaining Dates for Database Use 327 Problem 327 Solution 328 How It Works 328 13-16 Handling Resources Automatically 328 Problem 328 Solution 328 How It Works 329 Summary 329 N Chapter 14: JavaFX Fundamentals 331 14-1 Creating a Simple User Interface .332 Problem 332 Solution 332 Solution 333 How It Works 334 14-2 Drawing Text 336 Problem 336 Solution 336 How It Works 337 14-3 Changing Text Fonts .338 Problem 338 Solution 338 Solution 339 How It Works 341 14-4 Creating Shapes .343 Problem 343 Solution 343 How It Works 347 xxx www.it-ebooks.info N CONTENTS 14-5 Assigning Colors to Objects .348 Problem 348 Solution 348 How It Works 351 14-6 Creating Menus 353 Problem 353 Solution 353 How It Works 355 14-7 Adding Components to a Layout 356 Problem 356 Solution 356 How It Works 357 14-8 Generating Borders 358 Problem 358 Solution 358 How It Works 360 14-9 Binding Expressions 361 Problem 361 Solution 361 How It Works 364 14-10 Creating and Working with Observable Lists 365 Problem 365 Solution 365 How It Works 368 14-11 Generating a Background Process .368 Problem 368 Solution 369 How It Works 372 xxxi www.it-ebooks.info N CONTENTS 14-12 Associating Keyboard Sequences with Applications .373 Problem 373 Solution 373 How It Works 375 14-13 Creating and Working with Tables 376 Problem 376 Solution 376 How It Works 380 14-14 Organizing the UI with Split Views 381 Problem 381 Solution 381 How It Works 383 14-15 Adding Tabs to the UI .384 Problem 384 Solution 384 How It Works 386 14-16 Developing a Dialog Box 387 Problem 387 Solution 387 How It Works 391 14-17 Printing with JavaFX 392 Problem 392 Solution 392 How It Works 398 14-18 Embedding Swing Content in JavaFX 399 Problem 399 Solution 399 How It Works 403 Summary 403 xxxii www.it-ebooks.info N CONTENTS N Chapter 15: Graphics with JavaFX 405 15-1 Creating Images .406 Problem 406 Solution 406 How It Works 411 15-2 Generating an Animation 414 Problem 414 Solution 414 How It Works 418 15-3 Animating Shapes Along a Path .422 Problem 422 Solution 422 How It Works 425 15-4 Manipulating Layout via Grids 427 Problem 427 Solution 427 How It Works 435 15-5 Enhancing the Interface with CSS 438 Problem 438 Solution 438 How It Works 442 Summary 444 N Chapter 16: Media with JavaFX .445 16-1 Playing Audio 445 Problem 445 Solution 446 How It Works 452 xxxiii www.it-ebooks.info N CONTENTS 16-2 Playing Video 456 Problem 456 Solution 456 How It Works 461 16-3 Controlling Media Actions and Events .464 Problem 464 Solution 464 How It Works 465 16-4 Marking a Position in a Video 466 Problem 466 Solution 466 How It Works 469 16-5 Synchronizing Animation and Media .469 Problem 469 Solution 470 How It Works 471 Summary 471 N Chapter 17: JavaFX on the Web .473 17-1 Embedding JavaFX Applications in a Web Page 473 Problem 473 Solution 473 How It Works 477 17-2 Loading Scalable Vector Graphics File Content 479 Problem 479 Solution 479 How It Works 482 17-3 Manipulating HTML5 Content with Java Code 483 Problem 483 Solution 483 How It Works 487 xxxiv www.it-ebooks.info N CONTENTS 17-4 Responding to HTML Events 489 Problem 489 Solution 489 How It Works 491 17-5 Displaying Content from the Database 492 Problem 492 Solution 492 How It Works 501 Summary 503 N Chapter 18: Nashorn and Scripting .505 18-1 Loading and Executing JavaScript from Java 505 Problem 505 Solution 505 How It Works 506 18-2 Executing JavaScript via the Command Line 507 Problem 507 Solution 507 Solution 508 How It Works 508 18-3 Embedding Expressions in Strings 509 Problem 509 Solution 509 How It Works 509 18-4 Passing Java Parameters 510 Problem 510 Solution 510 How It Works 511 18-5 Passing Return Values from JavaScript to Java 511 Problem 511 Solution 511 How It Works 512 xxxv www.it-ebooks.info N CONTENTS 18-6 Using Java Classes and Libraries 513 Problem 513 Solution 513 How It Works 515 18-7 Accessing Java Arrays and Collections in Nashorn 515 Problem 515 solution 515 How It Works 516 18-8 Implementing Java Interfaces 517 Problem 517 Solution 517 How It Works 518 18-9 Extending Java Classes 518 Problem 518 Solution 518 How It Works 519 18-10 Creating Executable Scripts in Unix .519 Problem 519 Solution 519 How It Works 520 18-11 Implementing JavaFX with Nashorn 520 Problem 520 Solution 520 Solution 523 How It Works 525 Summary 525 N Chapter 19: E-mail 527 19-1 Installing JavaMail 527 Problem 527 Solution 527 How It Works 527 xxxvi www.it-ebooks.info N CONTENTS 19-2 Sending an E-mail 528 Problem 528 Solution 528 How It Works 529 19-3 Attaching Files to an E-Mail Message 529 Problem 529 Solution 529 How It Works 530 19-4 Sending an HTML E-Mail 530 Problem 530 Solution 530 How It Works 531 19-5 Sending E-Mail to a Group of Recipients 531 Problem 531 Solution 531 How It Works 532 19-6 Checking E-Mail .532 Problem 532 Solution 532 How It Works 533 19-7 Monitoring an E-Mail Account 533 Problem 533 Solution 533 How It Works 535 Summary 535 N Chapter 20: XML Processing 537 20-1 Writing an XML File 537 Problem 537 Solution 537 How It Works 539 xxxvii www.it-ebooks.info N CONTENTS 20-2 Reading an XML File 540 Problem 540 Solution 540 Solution 541 How It Works 542 20-3 Transforming XML 543 Problem 543 Solution 543 How It Works 544 20-4 Validating XML 546 Problem 546 Solution 546 How It Works 547 20-5 Creating Java Bindings for an XML Schema 548 Problem 548 Solution 548 How It Works 548 20-6 Unmarshalling XML to a Java Object .549 Problem 549 Solution 549 How It Works 550 20-7 Building an XML Document with JAXB 550 Problem 550 Solution 550 How It Works 551 Summary 551 N Chapter 21: Networking .553 21-1 Listening for Connections on the Server 553 Problem 553 Solution 553 How It Works 555 xxxviii www.it-ebooks.info N CONTENTS 21-2 Defining a Network Connection to a Server .556 Problem 556 Solution 556 How It Works 558 21-3 Bypassing TCP for InfiniBand to Gain Performance Boosts .559 Problem 559 Solution 559 How It Works 560 21-4 Broadcasting to a Group of Recipients 561 Problem 561 Solution 561 How It Works 564 21-5 Generating and Reading from URLs 566 Problem 566 Solution 566 How It Works 567 21-6 Parsing a URL 568 Problem 568 Solution 568 How It Works 569 Summary 570 N Chapter 22: Security 571 22-1 Asserting a Subset of Privileges 572 Problem 572 Solution 572 How It Works 572 22-2 Indicating a Server Name for Handshaking .573 Problem 573 Solution 573 How It Works 575 xxxix www.it-ebooks.info N CONTENTS 22-3 Specifying a Keystore Password 575 Problem 575 Solution 575 How It Works 576 22-4 Generating the Strongest Random Number Possible .576 Problem 576 Solution 576 How It Works 576 22-5 Granting Permissions for Rich Internet Applications .576 Problem 576 Solution 576 How It Works 577 Summary 578 Index 579 xl www.it-ebooks.info About the Author Josh Juneau has been developing software and enterprise applications since the early days of Java EE Application and database development have been his focus since the start of his career He became an Oracle database administrator and adopted the PL/SQL language for performing administrative tasks and developing applications for the Oracle database In an effort to build more complex solutions, he began to incorporate Java into his PL/SQL applications and later developed stand-alone and web applications with Java Josh wrote his early Java web applications utilizing JDBC and servlets or JSP to work with backend databases Later, he began to incorporate frameworks into his enterprise solutions, such as Java EE and JBoss Seam Today, he primarily develops enterprise web solutions utilizing Java EE and other technologies He also includes the use of alternative languages, such as Jython and Groovy, for some of his projects Over the years, Josh has dabbled in many different programming languages, including alternative languages for the JVM in particular In 2006, Josh began devoting time to the Jython Project as editor and publisher of the Jython Monthly newsletter In late 2008, he began a podcast dedicated to the Jython programming language Josh was the lead author for The Definitive Guide to Jython, Oracle PL/SQL Recipes, and Java Recipes, and a solo author of Java EE Recipes and Introducing Java EE 7, which were all published by Apress He works as an application developer and system analyst at Fermi National Accelerator Laboratory, and he also writes technical articles for Oracle and OTN Josh enjoys spending time with his wonderful wife and five children, especially swimming, fishing, playing ball, and watching movies To hear more from Josh, follow his blog at http://jj-blogger.blogspot.com You can also follow him on Twitter at @javajuneau xli www.it-ebooks.info About the Technical Reviewers Rohan Walia is a Senior Software Consultant with extensive experience in client-server, web-based, and enterprise application development He is an Oracle Certified ADF Implementation Specialist and a Sun Certifi ed Java Programmer Rohan is responsible for designing and developing end-to-end applications consisting of various cutting-edge frameworks and utilities His areas of expertise are Oracle ADF, Oracle WebCenter, Fusion, Spring, Hibernate, and Java/J2EE When not working, Rohan loves to play tennis, hike, and travel Rohan would like to thank his wife, Deepika Walia, for using all her experience and expertise to review this book James Weaver is a developer, author, teacher, and international speaker focused on client-side Java and the Internet of Things He tweets at @JavaFXpert xliii www.it-ebooks.info Acknowledgments To my wife Angela: As the years pass, I am still amazed by you and always will be I want to thank you again for always being there for me and our children You’ve helped me make it through this book, and your inspiration always keeps me moving forward Thanks for always supporting the work I I love you very much To my children, Kaitlyn, Jacob, Matthew, Zachary, and Lucas: I love you all so much and I cherish every moment we have together You all continue to make me so proud through your schoolwork, scouting, sports, and the myriad of other things that you achieve I hate to see you growing up so quickly…sometimes I wish that I could pause time I hope that you will understand why I’ve worked so hard on the weekends when you read this book some day I want to thank my original co-authors of the first edition of this book: Carl Dea, Freddy Guime, John O’Conner, and Mark Beaty You guys know your stuff, and your expertise is engrained within the pages of this second edition just as much as the first I had a great time working with you on the original and hope to so again in the future To the folks at Apress: I thank you for providing me with the chance to share my knowledge with others I especially thank Jonathan Gennick for the continued support of my work and for providing the continued guidance to produce useful content for our readers I also thank Jill Balzano for doing a great job coordinating this project, and Kezia Endsley for copyediting The technical reviewers, Jim Weaver and Rohan Walia, have done an excellent job of solidifying the book content I really thank you for your hard work and expertise Lastly, I’d like to thank everyone else at Apress who had a hand in this book To the Java community: Thanks for helping to make the Java platform such an innovative and effective realm for application development We all have the privilege of working with a mature and robust platform, and it would not be successful today if it weren’t for everyone’s continued contributions to the technology I also thank all the Oracle Java experts Once again, the roadmap for the future is still looking great I am looking forward to using Java technology for many years to come xlv www.it-ebooks.info ... Windows: javac org java8 recipeschapter01 ecipe1_02HelloWorld .java OS X: javac org /java8 recipes/chapter01/recipe1_02/HelloWorld .java You should now have a class file in the same directory as your java. .. Listing 1 -8 shows a method commented with Javadoc Listing 1 -8 Comments Made in Javadoc Form package org .java8 recipes.chapter01.recipe1_ 08; import java. math.BigInteger; public class JavadocExample... bits, -32,7 68 to 32,7 68 */ /* 32 bits, -2147 483 6 48 to 2147 483 647 */ /* 64 bits, -(2^64) to 2^64 - */ float floatval = 10.123456F; /* 32-bit IEEE 754 */ double doubleval = 10.123456 789 87654; /*

Ngày đăng: 12/03/2019, 13:26

Từ khóa liên quan

Mục lục

  • Contents at a Glance

  • Contents

  • About the Author

  • About the Technical Reviewers

  • Acknowledgments

  • Introduction

  • Chapter 1: Getting Started with Java 8

    • 1-1. Creating a Development Environment

      • Problem

      • Solution

      • How It Works

      • 1-2. Getting to “Hello, World”

        • Problem

        • Solution

        • How It Works

          • Packages

          • JavaBeans-Style Classes

          • The Main Program

          • 1-3. Compiling and Executing from the Command-line Interpreter

            • Problem

            • Solution

            • How It Works

            • 1-4. Declaring Simple Variables

              • Problem

              • Solution

              • How It Works

Tài liệu cùng người dùng

Tài liệu liên quan