Java Language Fundamentals

Paths

Java Language Fundamentals

Authors: Sander Mak, Jim Wilson, Richard Warburton, Sarah Holderness, Jose Paumard, Esteban Herrera , Maurice Naftalin, Zoran Horvat, Richard Monson-Haefel, Josh Cummings

Java is one of the most widely used programming languages in the world. Originally developed by Sun Microsystems in the 1990s, Java is used to develop everything from web... Read more

What you will learn

  • Java language syntax and fundamentals
  • Java collections
  • Working with Streams in Java
  • Collections
  • Lambda expressions
  • Object oriented programming
  • Exception handling
  • Java IO
  • Java Database Connectivity (JDBC)
  • Java's HttpClient

Pre-requisites

No previous experience is required, and all necessary tools and concepts will be introduced throughout the path.

Beginner

These introductory Java courses will teach you the basics of the Java language and how to effectively work with Java. Some of the concepts you will master in this section include control flow in Java, object orientation and collections. By the end of these courses you will have the skillset to start writing your own Java applications.

Modern Java: The Big Picture

by Pluralsight

Nov 2, 2018 / 1h 58m

1h 58m

Start Course
Description

You’ve heard about Java and want to get started with it, but what is Java really about? In this course, Modern Java: The Big Picture, you'll gain an overview of what you can expect from Java as a development platform. First, you'll learn the answers to important questions like “What does Java code look like?" and "How is it run?” Next, you'll explore the JDK and learn when you should use Java and when you shouldn't. Finally, you’ll discover the most popular libraries, practices, and tools used in modern Java development. After finishing this course, you’ll have a broad outlook on modern Java development and you will know which Java skills to focus on next in your personal development.

Table of contents
  1. Course Overview
  2. Introducing the Java Platform
  3. Adopting Java
  4. From Desktop to Enterprise Java to the Cloud
  5. Popular Java Libraries
  6. Practices and Common Tools
  7. Examining Alternative JVM Languages

Setting up a Java Development Environment

by Sander Mak

Jan 3, 2020 / 50m

50m

Start Course
Description

To develop Java applications you need the right tools installed. In this course, Setting up a Java Development Environment, you will go through all the steps necessary to set up a fully functioning Java development environment. First, you will learn how to install and use the Java Development Kit, which is required to compile and run Java code. Next, you will see how an IDE like IntelliJ makes Java development more productive. Last, you will explore how to package Java applications into JAR files for wider distribution. After finishing this course, you will have a working Java development environment, so you can start your Java learning journey.

Table of contents
  1. Course Overview
  2. Installing and Running Java
  3. Using IntelliJ for Java Development
  4. Packaging Java Applications

Getting Started with Programming in Java

by Jim Wilson

Feb 13, 2020 / 4h 42m

4h 42m

Start Course
Description

Java is one of the most popular and widely-used programming languages in the world. It is supported by billions of devices. Whether you are interested in client-based, server-side, Android, or big data development, understanding how to program in Java is a critical part of being successful. In this course, Getting Started with Programming in Java, you will learn everything you need to know to get started developing applications using the Java programming language. First, you will learn how to create an application, structure statements, declare variables, use primitive types, and provide application control flow. Next, you will explore how to work with more sophisticated language elements such as arrays, methods, and parameters. Finally, you will discover how to accept command-line arguments, interact with the user, and work with rich data types such as strings and dates. When you are finished with this course, you will have the foundational knowledge of the Java programming language that will enable you to become a successful Java programmer.

Table of contents
  1. Course Overview
  2. Creating Your First Java App
  3. Variables, Data Types, and Math Operators
  4. Conditional Logic and Block Statements
  5. Looping and Arrays
  6. Understanding Methods
  7. Working with Strings
  8. String Formatting
  9. More About Data Types

Working with Classes and Interfaces in Java

by Jim Wilson

May 21, 2020 / 4h 45m

4h 45m

Start Course
Description

Java is one of the most popular and widely-used programming languages in the world. It is supported by billions of devices. Whether you are interested in client-based, server-side, Android, or big data development, understanding how to program in Java is a critical part of being successful. Java is a multiparadigm language with rich object-oriented features. In this course, Working with Classes and Interfaces in Java, you will learn to how to work effectively with the core of the Java type system: classes and interfaces. First, you will learn how to implement a class including class constructors, fields, getters/setters, and polymorphic methods. Next, you will explore class inheritance, method overloading, and abstract classes. Finally, you will discover how to work with Enums, interfaces, nested types, and anonymous classes. When you are finished with this course, you will have the foundational knowledge of working with classes and interfaces that will enable you to become a successful Java programmer.

Table of contents
  1. Course Overview
  2. Understanding Java Classes and Objects
  3. Implementing Class Constructors and Initializers
  4. Using Static Members
  5. A Closer Look at Methods
  6. Class Inheritance
  7. More About Inheritance
  8. Working with Enums
  9. Creating Abstract Relationships with Interfaces
  10. Nested Types and Anonymous Classes

Java Fundamentals: Collections

by Richard Warburton

Mar 7, 2016 / 4h 2m

4h 2m

Start Course
Description

Working with data is fundamental to any business problem. Java Collections are data structures designed to store and process data in memory. We start with why you want to use collections instead of arrays, cover the capabilities of Lists, Sets, and Maps and explain the different data structure tradeoffs.

Table of contents
  1. What Are Collections and Why Use Them?
  2. Defining and Iterating Collections
  3. Collections with Iteration Order: Lists
  4. Collection with Uniqueness: Sets
  5. Collections with Modification Order: Queues, Deques, and Stacks
  6. Collections of Pairs: Maps
  7. Collection Operations
Interactive

Java: Using Maps

by Sarah Holderness

Jun 13, 2019 / 28m

28m

Start Course
Description

Learn how to organize keys and values with a Map, and then practice what you've learned.

Table of contents
  1. Using Maps3 Videos - 4 Challenges
Interactive

Java: Using Sets

by Sarah Holderness

Jun 13, 2019 / 32m

32m

Start Course
Description

Learn how to organize unique data into a collection with a Set, and then practice what you've learned.

Table of contents
  1. Using Sets3 Videos - 4 Challenges
Interactive

Java: Using Lists

by Sarah Holderness

Jun 13, 2019 / 32m

32m

Start Course
Description

Learn how to organize data into an ordered collection with a List, and then practice what you've learned.

Table of contents
  1. Using Lists3 Videos - 5 Challenges
Interactive

Java: Using Lambda Expressions

by Sarah Holderness

Jun 19, 2019 / 20m

20m

Start Course
Description

In this course, you will learn how to pass code as an argument with lambda expressions, while at the same time making your code more readable and concise.

Table of contents
  1. Using Lambda Expressions2 Videos - 4 Challenges

Intermediate

Java is a feature rich language and the courses in this section are designed to help you explore all you can do with Java. This includes working with generics, using lambda expressions and how to take advantage of Java streams.

Java Fundamentals: The Core Platform

by Jim Wilson

Jul 21, 2016 / 7h 24m

7h 24m

Start Course
Description

Java is the most in-demand programming language skill amongst software developers, and one of the most important skills for big data specialists. This course, Java Fundamentals: The Core Platform, provides thorough coverage of the core Java platform, giving you the foundation you need to begin developing Java applications using the features and capabilities of the Java Runtime Environment (JRE), as well as providing you with the skills you need to quickly ramp-up and begin developing effectively with Java using the JRE. First, you'll learn about working with streams, files, and the file system. You'll also learn about I/O topics specific to working with files such open/closing files, detecting end-of-file, and buffering. Next, you'll learn about configuring application execution and environments, the features available, and detailed discussions of the PATH and CLASSPATH environment variables that affect the Java runtime. Finally, you'll learn about multithreading and concurrency, taking a look at the basic ideas of the thread startup lifecycle along with the more sophisticated executor service. After watching this course, you'll be ready to begin working within any of the many environments that rely on Java.

Table of contents
  1. Course Overview
  2. Introduction
  3. Input and Output with Streams and Files
  4. String Formatting and Regular Expressions
  5. Working with Collections
  6. Controlling App Execution and Environment
  7. Capturing Application Activity with the Java Log System
  8. Multithreading and Concurrency
  9. Runtime Type Information and Reflection
  10. Adding Type Metadata with Annotations
  11. Persisting Objects with Serialization

Java Fundamentals: The Java Reflection API Method Handles

by Jose Paumard

Jan 18, 2019 / 3h 9m

3h 9m

Start Course
Description

As a Java developer, mastering the reflection API allows you to build powerful frameworks that will bring advanced functionalities to your application. In this course, Java Fundamentals: The Java Reflection API Method Handles, you will learn how you can use reflection API efficiently. This API is very technical, so this course is organized around the study of two real-life use cases: the building of an Object Relational Mapper, on the model of Hibernate, and the creation of a dependency injection framework, on the model of Spring. First, you will understand how to introspect classes and objects and how to discover their structure. Next, you will learn how to build objects without knowing their class at compile time, to set values to their fields and to invoke their methods. Finally, you will understand the performance issues of this API, and be able to use method handles and var handles to fix these issues. By the end of this course, you will be able to master the reflection API that will help you in creating performant and versatile Java applications.

Table of contents
  1. Course Overview
  2. Introducing Java Reflection
  3. Creating an Object Metamodel Using Annotations and Reflection
  4. Creating an Object Relational Mapper Using an Object Metamodel
  5. Injecting Dependencies in an Object Using an Object Metamodel
  6. Improving Performance Using Method Handles

Java Fundamentals: Asynchronous Programming Using CompletionStage

by Pluralsight

Jul 30, 2018 / 3h 3m

3h 3m

Start Course
Description

As a Java developer, being able to create asynchronous systems allows you to develop very efficient applications, that need both throughput and performance. In this course, Java Fundamentals: Asynchronous Programming Using CompletionStage, you will learn all the patterns brought to you by this API. First, you will learn the concepts of asynchronous programming: tasks, non-blocking calls and multi-threaded systems. Then, you will see how to build data processing pipelines where the completion of a first task automatically triggers the execution of a next task, passing data to it. Finally, you will see how to create performant systems by controlling the execution of each task in the right thread. Mastering all of this will help you in creating performant and error-free asynchronous systems with the only dependency being the JDK itself.

Table of contents
  1. Course Overview
  2. Introducing Asynchronous vs. Concurrent Tasks
  3. Setting up an Asynchronous Operations with CompletionStage
  4. Triggering a Task on the Completion of Other Tasks
  5. Dealing with Exception in the CompletionStage Pipeline
  6. Creating Performant Asynchronous Pipelines with CompletionStage

Java Fundamentals: Generics

by Richard Warburton

Oct 31, 2019 / 4h 7m

4h 7m

Start Course
Description

Java’s powerful generics has been available to developers for ten years now and is extensively used throughout both core and third party libraries. Unfortunately, it's not as well understood as it could be. This course is here to help. We’ll both shine a light on the common use cases of generics on classes, methods, or interfaces and also peer into some of the darker corners such as type bounds and wildcards.

Table of contents
  1. The What and Why of Java Generics
  2. Java's Generic Collections and Friends
  3. Generic Classes and Interfaces
  4. Generics on Methods
  5. Wildcards
  6. Raw Types and Compatibility
  7. Reflection
  8. Advanced Topics

Working with Nulls in Java

by Esteban Herrera

Dec 30, 2019 / 1h 12m

1h 12m

Start Course
Description

How many times have you thought "this object can never be null" only to be proven wrong? In this course, Working with Nulls in Java, you'll learn best practices for effectively handling nulls and avoid NullPointerExceptions. First, you'll see what nulls mean and some common ways to deal with them. Next, you'll explore how to use annotations to check for nulls. Finally, you'll discover how to use the Null Object pattern and the Optional type to reduce unexpected exceptions even further. When you're finished with this course, you'll understand the different techniques to handle nulls effectively in Java programs.

Table of contents
  1. Course Overview
  2. Working with Reference Types and Nulls
  3. Checking for Null Using Annotations
  4. Using the Null Object Pattern
  5. Using Optional Instead of Null

Programming with Dates and Times in Java 8

by Maurice Naftalin

Jul 23, 2018 / 2h 12m

2h 12m

Start Course
Description

Handling dates and times is an essential part of most business and scientific applications. In this course, Programming with Dates and Times in Java 8, you will learn all about the much-needed new library in Java 8: the java.time API. First, you will learn the basic use of the core java.time classes. Next, you will discover how the library handles the complexities of time zones and daylight saving time transitions. Finally, you will explore the interconversion of java.time classes with other Java types and with database representations. When you are finished with this course, you will have a thorough knowledge of how to use this modern Java library for the fundamentally important problems of handling dates and times in your applications.

Table of contents
  1. Course Overview
  2. Overview of java.time
  3. The Basics of java.time
  4. Working with Time Zones
  5. Formatting and Parsing

Making Your Java Code More Object-oriented

by Zoran Horvat

Aug 26, 2019 / 2h 12m

2h 12m

Start Course
Description

Procedural code can be replaced with objects to increase correctness, flexibility, and maintainability. In this course, Making Your Java Code More Object-oriented, you’ll learn how to design truly object-oriented classes in the Java programming language. First, you’ll learn how to represent a discrete object state and behavior to avoid imperative branching constructs. Next, you’ll discover that null references are a needless pain. Finally, you'll explore alternatives to null - substitute objects and optional objects. When you're finished with this course, you’ll have the skills and knowledge of designing classes that avoid traditional imperative constructs, with features resulting from orchestrating well-encapsulated objects rich in behavior.

Table of contents
  1. Course Overview
  2. Attaining Extensibility with Object-oriented Code
  3. Rendering Branching over Boolean Flags Obsolete
  4. Using Immutable Objects and Value Objects
  5. Leveraging Special Case Objects to Remove Null Checks
  6. Turning Optional Calls into Calls on Optional Objects

Mastering Object-oriented Programming in Java

by Zoran Horvat

Nov 6, 2019 / 3h 20m

3h 20m

Start Course
Description

Procedural implementation is hurting flexibility and maintainability of code to such an extent that further development often becomes nearly impossible. In this course, Mastering Object-oriented Programming in Java, you’ll develop skills to help you design truly object-oriented code when modeling complex and convoluted business logic. First, you’ll learn the power of streams as a replacement for explicit loops and branching, and how they can be turned more readable and easier to manage. Next, you’ll discover the realm of fluent interface designs, that will help construct composable domain-related code. Finally, you'll explore alternatives to hard-coded decisions with the Rules design pattern. By the end of this course, you will gain insight on how rules can become composable and flexible, taming even the scariest pieces of domain logic.

Table of contents
  1. Course Overview
  2. Turning Everything into Objects
  3. Staying Focused on Domain Logic with Streams
  4. Untangling Operations from Structure on Business Data
  5. Advancing to a Domain - Specific Language
  6. Increasing Flexibility by Removing Enums and Switch Statements
  7. Turning Chained Branching into the Chain of Rule Objects
  8. Refactoring to Bind It All Together

Advanced

Every program needs to access and write information. Two of the most common ways to do that today are by using relational databases and calling APIs. The courses in this section are designed to help you understand how to do this from your Java programs.

Java Fundamentals: HttpClient

by Sander Mak

May 15, 2019 / 1h 44m

1h 44m

Start Course
Description

It used to be that performing HTTP calls in Java meant relying on an external library like Apache HttpClient. Since Java 11, a modern HTTP client is now part of the core platform. In this course, Java Fundamentals: HttpClient, you will gain the ability to work with this HttpClient API. First, you will learn to use HttpClient in a synchronous and asynchronous manner, including the use of CompletableFuture. Next, you will discover how to configure and use HttpClient in different scenarios, focusing on secure communication as well. Finally, you will explore some of the more advanced features of HttpClient, such as HTTP/2 Server Push, WebSocket communication, and Reactive Streams integration. When you're finished with this course, you will have the skills and knowledge of the HttpClient API needed to use it effectively in your own applications.

Table of contents
  1. Course Overview
  2. Introducing HttpClient
  3. Performing Your First HTTP Requests
  4. Using HttpClient
  5. Security
  6. Exploring Advanced HttpClient Features

Java Core Libraries: JDBC

by Richard Monson-Haefel

Oct 14, 2019 / 1h 46m

1h 46m

Start Course
Description

Being able to read and write data to a relational database is an absolute, must-have skill when working with Java applications. In this course, Java Core Libraries: JDBC, you will gain the ability to access and modify data in relational databases using the JDBC API. First, you will learn how to connect the JDBC API to a database. Next, you will discover how to read and update data in a database using the JDBC API. Finally, you will explore advanced techniques for working with large chunks of data, calling stored procedures, using instance pooling, transactions, and the JDBC RowSet. When you’re finished with this course, you will have the skills and knowledge needed to utilize the JDBC API in your work with complete confidence.

Table of contents
  1. Course Overview
  2. Overview and Setup
  3. Connecting JDBC to the Relational Database
  4. Using JDBC to Query Databases
  5. Using JDBC to Update Databases
  6. Using Blobs, Clobs and CallableStatements
  7. Using Connection Pooling, Transactions, and RowSets

Working with Files in Java Using the Java NIO API

by Jose Paumard

Apr 3, 2020 / 53m

53m

Start Course
Description

The Java I/O API is a fundamental API of the JDK, at the core of database access APIs and web access APIs. In this course, Working with Files in Java Using the Java NIO API, you will learn how to handle files using the Files factory class, and how to deal with text files in Java. First, you will see how to manipulate files on the file system: how to create, copy, move, and delete them. Then, you will discover how to find files in a set of directories with two different approaches: visitor pattern, and the map / filter / reduce pattern, as implemented by the Stream API. Next, you will explore how to create and analyze text files. Finally, you will be shown how to deal with CharSets to handle exotic formats, as well as a real-world case study: the analysis of a CSV file. After watching this course, you will be ready to deal with file handling problems and you will be able to conduct advanced tasks to handle complex text files, which is essential for web and REST services.

Table of contents
  1. Course Overview
  2. Accessing Files and Directories Using Java NIO Path
  3. Reading and Writing Text Files Using the Java NIO API
  4. Analyzing CSV Text Files Using the Stream API
  5. Manipulating Files on a File System Using the Java NIO API

Securing Java Web Application Data

by Josh Cummings

Jun 21, 2019 / 2h 40m

2h 40m

Start Course
Description

Nearly every website holds onto or transmits user data, and that user data is a gold mine for hackers. We hear about penetrations into big companies with large troves of personal data almost daily. In this course, Securing Java Web Application Data, you will gain the ability to secure web application data using JCA, JSSE, and common open source Java libraries like Spring Vault Client and Google Tink. First, you will learn how to safely hash data. Next, you will discover secure serialization and deserialization. Finally, you will explore how to sign, verify, encrypt, and decrypt data. When you’re finished with this course, you will have the skills and knowledge of Web Application Security needed to secure its data.

Table of contents
  1. Course Overview
  2. Hashing Data
  3. Managing Keys and Certificates
  4. Serializing and Deserializing Data
  5. Signing and Verifying Data
  6. Encrypting and Decrypting Data
  7. Transmitting Data over the Network