

Jeff Friesen
Jeff Friesen teaches Java technology (including Android) to everyone via articles, blogs, books, and software. In addition to writing Java books for Apress, Jeff has written numerous articles on Java and other technologies for JavaWorld, InformIT, Java.net, and SitePoint. Jeff can be contacted via his website at JavaJeff.ca.


Android Studio for beginners, Part 1: Installation and setup
If you're new to Android Studio, start here: Part 1 walks through installing Android Studio 3.x and launching your first Android project

Get started with method references in Java
Why you should use method references instead of anonymous classes in your functional Java programs

Get started with lambda expressions in Java
Learn how to use lambda expressions and functional programming techniques in your Java programs

Exceptions in Java, Part 2: Advanced features and types
Take your Java exceptions to the next level with stack traces, exception chaining, try-with-resources, final re-throw, and more

Exceptions in Java, Part 1: Exception handling basics
Everything you need to know about throwing, trying, catching, and cleaning up after Java exceptions

Interfaces in Java
Learn the difference between classes and interfaces once and for all, then get started declaring, implementing, and extending interfaces in your Java programs

Class and object initialization in Java
Learn how to to initialize Java classes and objects for successful JVM execution

Java polymorphism and its types
Learn the four types of polymorphism in Java, then start using subtype polymorphism to execute different forms of the same Java method

Java tip: Fields and methods in Java
Learn seven advanced techniques for working with fields and methods in Java, including recursion, method call chaining, pass-by-value arguments, and rules for calling methods

When to use composition vs inheritance
Inheritance is a valuable programming technique, but in some conditions it breaks encapsulation. Find out why composition is the vital alternative to inheritance, and learn when and how to use it in your Java programs.

Inheritance in Java, Part 2: Object and its methods
Get to know Java's Object superclass and its methods for duplicating, comparing, cleaning up, and scheduling Java objects

Inheritance in Java, Part 1: The extends keyword
Use Java's extends keyword to derive a child class from a parent class, invoke parent class constructors and methods, override methods, and more

Classes and objects in Java
Learn how to make classes, fields, methods, constructors, and objects work together in your Java applications.

Loop, switch, or take a break? Deciding and iterating with Java statements
Learn how to use standby statements like for, while, if-else, and break, then get started with the new switch expressions in Java 12

Evaluate Java expressions with operators
Everything you need to know about the Java operator types and using them to write and evaluate Java expressions in Java 12

Elementary Java language features
Learn three ways to document your code, then get started using identifiers, types, literals, and variables in Java 12

Learn Java from the ground up
If you're new to Java then you've come to the right place. Get an overview of the Java platform, then code your first application using Java 12 and the new Java Shell

Java XML and JSON: Document processing for Java SE, Part 2: JSON-B
Use the Java API for JSON Binding (JSON-B) to serialize and deserialize Java objects, arrays, and collections in Java SE

Java XML and JSON: Document processing for Java SE, Part 1: SAXON and Jackson
Learn how to transform and convert XML and JSON documents with SAXON and Jackson