2015-08-04



<span><span><p>Java has been used by over 9 million programmers around the world since it was first released 20 years ago. Now with the release of Java 8, experienced programmers new to the Java platform will need to master an even more powerful language and learn new features such as lambda expressions and other enhancements that impact the core libraries and APIs.</p><p><em><strong><em>Learning Modern Java LiveLessons</em></strong></em>gives you a practical, fast-paced and hands-on introduction to programming with Java 8. It provides a crash course in a wide range of Java programming techniques, but with an emphasis on the new idioms and features.</p><p>
This course is geared for professional programmers who have programmed in other languages and are familiar with fundamental programming concepts. If you are an experienced Java developer seeking training on the new features in Java 8, see <em>Java 8 Lambda Expressions in Streams LiveLessons</em>.</p><p><strong>Description</strong></p><p>
In these LiveLessons, Java Champion Marty Hall provides thorough coverage of the foundational Java topics: basic syntax, object-oriented programming, and core data structures. It also delivers a fast-moving survey of some of the most important libraries: graphical user interfaces, multithreaded applications, network programming, serialization, and database access. In addition, it provides an introduction to lambdas and streams in Java 8, the most important features in the new release of Java. In each section, Marty presents details on the most important topics, surveys more advanced or lesser-used topics, stresses best practices, and furnishes plenty of working examples.</p><p>Please visit <a href="http://www.coreservlets.com/java-8-tutorial/" target="_blank">http://www.coreservlets.com/java-8-tutorial/</a> for the LiveLessons Web site. This site contains the complete source code for all examples in the video, as well as exercises and exercise solutions for each topic.</p><p>
Finally, you can contact the author directly at <a href="mailto:hall@coreservlets.com">hall@coreservlets.com</a> with questions or suggestions or to inquire about customized training courses on Java EE and JavaScript topics to be held onsite at your organization.</p><p><strong>About the Instructor</strong></p><p><strong>Marty Hall</strong> is president of <a title="" href="http://www.coreservlets.com/" target="_blank">coreservlets.com</a>, a training and consulting company focusing on server-side Java technology, Android development, and Rich Internet Apps with Ajax. In addition to long Java development and consulting experience, Marty has an extensive background in teaching and training, having given training courses on Java 8, JSF 2, PrimeFaces, Android, Ajax/jQuery, and other Java EE topics in dozens of U.S. venues and nine other countries.</p><p>
A popular and entertaining speaker, Marty has also spoken at conferences and user groups around the world, including Comdex, the Web 2.0 Expo, and five times at JavaOne. Marty is also an adjunct faculty in the Johns Hopkins University part-time graduate program in Computer Science, where he directs the Java and Web-related concentration areas.</p><p>
Marty is also the lead author of six popular Java EE books from Pearson, including <em>Core Servlets and JSP</em>, and is the coauthor of the upcoming JSF 2.3 edition of <em>Core JSF</em>.</p><p>
You can see more details on <a title="" href="http://courses.coreservlets.com/about-instructor.html" target="_blank">Marty's bio page</a>.</p><p><strong>About Sneak Peek</strong></p><p>Sneak Peek videos are available to Safari Books Online subscribers offering early access to the very latest information on a given topic. Sneak Peek videos do not include post-production editing and may include further revisions before the video is complete.</p><p><strong>Skill Level</strong></p><ul><li><div>Beginner to intermediate</div></li></ul><p><strong>What You Will Learn</strong></p><ul><li><div>Get started by learning how to obtain Java, where to find the official API documentation, how to create and run Java projects in the Eclipse development environment, and how to create and use loops, conditionals, and arrays.</div></li><li><div>Understand the core concepts of object-oriented programming. OOP is the core programming strategy in Java.</div></li><li><div>Understand data structures and syntax, including try/catch blocks, Lists, Maps, generic types, printf, inner classes, and unit testing with JUnit. </div></li><li><div>Understand how (and why) to run different processes at the same time. Concurrent programming with the Java threading framework and the parallel programming with the Java fork/join framework are both covered.</div></li><li><div>Understand lambda expressions, Java's way of representing functions and passing them around. You learn how combining this idea with the use of generic types can make your code significantly more flexible and reusable.</div></li><li><div>Understand streams, which are wrappers around data sources such as arrays or lists that make it surprisingly easy to do high-performance bulk processing on large data sets.</div></li><li><div>Understand I/O, including file I/O, which is surprisingly simple and powerful in the latest Java version; making network clients that connect on sockets; making network servers that listen on sockets; and serialization for sending complex Java data structures into files or sockets, then reading them back out again later.</div></li></ul><p><strong>Who Should Take This Course</strong></p><ul><li><div>This course is aimed at developers who have moderate to strong experience in some other programming language, but who are new to Java.</div></li></ul><p><strong>Course Requirements</strong></p><ul><li><div>Familiar with fundamental programming concepts</div></li><li><div>Moderate to strong experience in programming with another language</div></li><li><div>Experience with C, C++, C#, Objective-C, Python, Perl, or JavaScript is preferred</div></li><li><div>Little to no prior experience in programming with Java</div></li></ul><p><strong>Table of Contents</strong></p><p><strong>Lesson 1: Java with Eclipse: Setup and Getting Started<br/></strong>Topics<br/>
1.1    Installing Java<br/>
1.2    Installing and Using Eclipse<br/>
Summary <br/><br/><strong>Lesson 2: Basic Java Syntax<br/></strong>Topics<br/>
2.1    Setup, Execution, and Most Basic Syntax<br/>
2.2    The + Operator, Array Basics, and Command Line Args<br/>
2.3    Loops<br/>
2.4    Class Structure and Formatting<br/>
2.5    Conditionals<br/>
2.6    Strings<br/>
2.7    More on Arrays<br/>
2.8    Math Routines<br/>
2.9    Reading Input<br/>
Summary<br/><br/><strong>Lesson 3: Basic Object-Oriented Programming in Java<br/></strong>Topics<br/>
3.1    Overview<br/>
3.2    Basics<br/>
3.3    Instance Variables<br/>
3.4    Methods<br/>
3.5    Constructors<br/>
3.6    Interactive Example: Person Class<br/>
Summary<br/><br/><strong>Lesson 4: Object-Oriented Programming in Java: More Capabilities <br/></strong>Topics<br/>
4.1    Overloading<br/>
4.2    OOP Best Practices: Encapsulation and JavaDoc<br/>
4.3    Inheritance<br/>
4.4    Inheritance Example: Person Class<br/>
4.5    The toString Method<br/>
Summary<br/><br/><strong>Lesson 5: Object-Oriented Programming in Java: Advanced Capabilities</strong> <br/>
Topics<br/>
5.1    Sample Problem<br/>
5.2    Attempted Problem Solutions<br/>
5.3    Abstract Classes<br/>
5.4    Interfaces<br/>
5.5    @Override<br/>
5.6    Visibility Modifiers<br/>
5.7    Enums<br/>
5.8    JavaDoc Options<br/>
5.9    The Classpath<br/>
Summary</p><p><strong>Lesson 6: Applets and Basic Graphics<br/></strong>Topics<br/>
6.1    Motivation<br/>
6.2    Security Restrictions<br/>
6.3    Basic Applet Structure<br/>
6.4    Drawing in Applets: Basics<br/>
6.5    The Value of @Override<br/>
6.6    Applet Life Cycle Methods<br/>
6.7    Other Applet Methods<br/>
6.8    Attributes of the HTML Applet Tag<br/>
6.9    Applet Parameters: Letting the HTML Author Supply Data<br/>
6.10    Drawing in Applets: More Details<br/>
6.11    Loading and Drawing Images<br/>
6.12    Basic Try/Catch Blocks<br/>
Summary<br/><br/><strong>Lesson 7: More Syntax and Utilities<br/></strong>Topics<br/>
7.1    Lists<br/>
7.2    List Operation Performance<br/>
7.3    Using Generic Types<br/>
7.4    Autoboxing<br/>
7.5    Maps<br/>
7.6    Building Genericized Methods and Classes<br/>
7.7    The Arrays Utility Class<br/>
7.8    printf<br/>
7.9    Varargs<br/>
7.10    StringBuilder<br/>
Summary<br/><br/><strong>Lesson 8: Unit Testing with JUnit: A Very Brief Introduction</strong></p><p>Topics<br/>
8.1    Static Imports<br/>
8.2    JUnit Overview<br/>
8.3    Modern Approach<br/>
8.4    Traditional Approach<br/>
Summary<br/><br/><strong>Lesson 9: Asynchronous Event Handling<br/></strong>Topics<br/>
9.1    Overview<br/>
9.2    Using Separate Listner Classes: Basics<br/>
9.3    Using Separate Listner Classes: Drawing<br/>
9.4    Implementing a Listener Interface<br/>
9.5    Using Named Inner Classes<br/>
9.6    Using Anonymous Inner Classes<br/>
9.7    Preview: Using Java 8 Lambdas<br/>
Summary<br/><br/><strong>Lesson 10: Multithreaded Programming in Java<br/></strong>Topics<br/>
10.1    Overview<br/>
10.2    Basic Steps for Concurrent Programming<br/>
10.3    Approach One: Separate Classes that Implement Runnable<br/>
10.4    Approach Two: Main App Implements Runnable<br/>
10.5    Approach Three: Inner Class that Implements Runnable<br/>
10.6    Preview of Approach Four: Lambda Expressions<br/>
10.7    Summary of Approaches<br/>
10.8    Making a Reusable Multithreaded Server Template<br/>
10.9    Race Conditions: Problem<br/>
10.10    Race Conditions: Solution<br/>
10.11    Helpful Thread-Related Methods<br/>
10.12    Brief Summary of Advanced Topics<br/>
10.13    Tricky Synchronization Problem<br/>
Summary</p><p><strong>Lesson 11: Parallel Programming with the Fork/Join Framework<br/></strong>Topics<br/>
11.1    Overview<br/>
11.2    General Fork/Join Approach<br/>
11.3    Aside: Reusable Timing Code<br/>
11.4    Summing Large Array of Doubles: Version 1<br/>
11.5    Summing Large Array of Doubles Version 1: Verification Step<br/>
11.6    Making Reusable Parallel Array Processor<br/>
11.7    Summing Large Array of Doubles: Version 2<br/>
11.8    Computing Minimum Expensive Operation<br/>
11.9    Generating Large Prime Numbers<br/>
Summary<br/><br/><strong>Lesson 12: Lambda Expressions Part 1: Basics<br/></strong>Topics<br/>
12.1    Motivation and Overview<br/>
12.2    Lambdas: Most Basic Form<br/>
12.3    Type Inferencing<br/>
12.4    Expression for Body: Implied Return Values<br/>
12.5    Omitting Parens<br/>
12.6    Summary: Making Lambdas More Succinct<br/>
12.7    Example: Numerical Integration<br/>
12.8    Making a Reusable Timing Utility<br/>
12.9    A Few More Samples<br/>
Summary<br/><br/><strong>Lesson 13: Lambda Expressions in Java 8 Part 2<br/></strong>Topics<br/>
13.1    The @FunctionalInterfaceAnnotation<br/>
13.2    Method References<br/>
13.3    Variable Scoping in Lambdas<br/>
13.4    Effectively Final Local Variables<br/>
Summary<br/><br/><strong>Lesson 14: Lambda Expressions in Java 8 Part 3: Lambda Building Blocks in java.util.function<br/></strong>Topics<br/>
14.1    Overview: Lambda Building Blocks<br/>
14.2    Simply Typed Lambda Building Blocks<br/>
14.3    Generic Building Blocks: Predicate<br/>
14.4    Generic Building Blocks: Function<br/>
14.5    Other Generic Building Blocks<br/>
Summary <br/><br/><strong>Lesson 15: Lambda Expressions in Java 8 Part 4<br/></strong>Topics<br/>
15.1    Java 8 Interfaces: Static Methods<br/>
15.2    Java 8 Interfaces: Default Methods<br/>
15.3    Resolving Conflicts with Default Methods<br/>
15.4    Higher Order Functions: Methods That Return Functions<br/>
15.5    Higher Order Functions in Predicate<br/>
15.6    Higher Order Functions in Function<br/>
15.7    Higher Order Functions in Consumer<br/>
15.8    Higher Order Functions in Your Own Code<br/>
Summary<br/><br/><strong>Lesson 16: Streams in Java 8 Part 1<br/></strong>Topics<br/>
16.1    Overview of Streams<br/>
16.2    Getting Standard Data Structures Into and Out of Streams<br/>
16.3    Core Stream Methods: Overview<br/>
16.4    forEach--Calling a Lambda on Each Element of a Stream<br/>
16.5    6.5 map- Transforming a Stream by Passing EachElement through a Function<br/>
16.6    6.6 filter- Keeping Only the Elements That Pass a Predicate<br/>
16.7    findFirst- Returning the First Element of a Stream while Short-Circuiting Earlier Operations<br/>
16.8    Lazy Evaluation<br/>
Summary<br/><br/><strong>Lesson 17: Streams in Java 8--Part 2<br/></strong>Topics<br/>
17.1    Operations That Limit the Stream Size: limit, skip<br/>
17.2    Operations That Use Comparisons: sorted, min, max, distinct<br/>
17.3    Operations That Check Matches: allMatch, anyMatch, noneMatch, count<br/>
17.4    Number-Specialized Streams<br/>
17.5    The reduce method and Related Reduction Operations<br/>
Summary<br/><br/><strong>Lesson 18: Streams in Java 8--Part 3<br/></strong>Topics<br/>
18.1    Grouping Stream Elements: Fancy Uses of collect<br/>
18.2    Parallel Streams<br/>
18.3    Infinite (Unbounded On-the-Fly) Streams<br/>
Summary<br/><br/><strong>Lesson 19: Simple File I/O: Applying the Power of Streams<br/></strong>Topics<br/>
19.1    More on try/catch Blocks<br/>
19.2    Paths<br/>
19.3    Simple File Reading<br/>
19.4    File Reading Examples<br/>
19.5    Simple File Writing<br/>
19.6    Exploring Folders<br/>
19.7    Faster and More Flexible File Writing<br/>
Summary</p><p><strong>Lesson 20: Network Programming: Clients</strong></p><p>Topics<br/>
20.1    Overview<br/>
20.2    Basic Steps for a Client to Connect to a Server<br/>
20.3    A Reusable Network Client Base Class<br/>
20.4    Aside: String Formatting and Parsing<br/>
20.5    Problems withBlocking IO<br/>
20.6    Talking to Web Servers: General <br/>
20.7    Talking to Web Servers: A Java Client<br/>
Summary</p><p><strong>Lesson 21: Network Programming: Servers</strong></p><p>Topics<br/>
21.1    Basics<br/>
21.2    Simple Warmup: A Single-Threaded Server<br/>
21.3    A Base Class for a Multithreaded Server<br/>
21.4    A Simple Multithreaded HTTP Server<br/>
Summary<br/><br/><strong>Lesson 22: Serialization: Sending Complex Java Data Structures to Files or Over the Network</strong></p><p>Topics<br/>
22.1    Overview<br/>
22.2    Sending Data<br/>
22.3    Receiving Data<br/>
22.4    Example: Sending Entire Window to File or Socket<br/>
Summary<br/><br/><strong>Summary<br/></strong> </p><p><strong>About LiveLessons Video Training<br/></strong><br/>
The LiveLessons Video Training series publishes hundreds of hands-on, expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. This professional and personal technology video series features world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, IBM Press, Pearson IT Certification, Prentice Hall, Sams, and Que. Topics include IT Certification, Programming, Web Development, Mobile Development, Home and Office Technologies, Business and Management, and more. View all LiveLessons on InformIT at <a href="http://www.informit.com/livelessons" target="_blank">http://www.informit.com/livelessons</a>.</p></span></span>

Show more