We may earn an affiliate commission when you visit our partners.
Huw Collingbourne

Java is one of the most important of all computer programming languages. But learning Java can seem like a daunting task. Not any longer. With this course you will learn Java step-by-step, from the basics right through to advanced topics. This course is, quite simply, the fastest, easiest way to learn Java programming.

Read more

Java is one of the most important of all computer programming languages. But learning Java can seem like a daunting task. Not any longer. With this course you will learn Java step-by-step, from the basics right through to advanced topics. This course is, quite simply, the fastest, easiest way to learn Java programming.

The course instructor Huw Collingbourne has already taught over 22,000 people to program on Udemy. This Java Programming Master Course includes over 85 videos to explain every topic in detail. All the source code is provided in sample programs ready-to-run on a PC or a Mac. And there is even a 125-page eBook, The Little Book Of Java, to provide even more information on all the topics discussed.

If you want to master Java programming quickly and easily, this is course for you.

What you will learn

  • The fundamentals of programming – from the ground up
  • How to program Java on a Mac or on Windows
  • The nitty-gritty details of the Java language
  • Advanced topics such as generics, exception-handling, streams and serialization

Who should take the course

  • Beginners – if you've never coded before, you can learn Java step by step
  • Programmers switching to Java from some other language such as Ruby, Python, C or C#
  • Cross-platform developers – Java programs run on all major operating systems
  • Anyone who wants to make a career in programming
Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Master java programming concepts from the ground up
  • Use the source code examples to learn step-by-step
  • Learn the basics - perfect for beginners
  • Understand the special features of java: object orientation, garbage collection, cross-platform development and serialization
  • Videos explain everything in minute detail
  • Read the supplied ebook, the little book of java, to explore the topics in even more depth

Syllabus

Set up all the software you need and get ready to follow this course

Welcome to this course on Java programming.

This document contains some updated information and notes on additional learning resources

Read more

First install Java and an IDE (Integrated Development Environment) to help you write programs. This video explains how to do this on a Mac or on Windows.

An overview of the Java language.

Download the Source Code Archive from the Download page of the Resources...

This is the course text – an eBook of 125 pages, which covers the same topics as the video tutorials. Use this book to revise the lessons and study Java in more depth.

A short overview of the NetBeans IDE. Find out how to create Project groups to load and build the projects from the source code archive.

The Java language and the NetBeans Integrated Development Environment (IDE)

In this lesson I’ll show you how to create a simple ‘Hello world’ Java program step-by-step using the NetBeans IDE.

Let’s take a closer look at my ‘Hello world’ program in order to identify some important features of the Java language.

Sometimes you may want to run your programs from the ‘command prompt’ or Terminal. Here I explain some simple ways of doing that on a Mac and on Windows.

It is sometimes useful to pass arguments to a program when it first starts. Here I show how to do this at the commandline or within NetBeans.

Many of the projects in this course will be created as ‘visual’ applications with a windowed user interface. This video explains how to create visual Java programs.

How does your Java code get compiled? And what happens when it is run? Here I explain the basics of the Java compiler and the Java Virtual Machine.

When you want to display text at the system prompt, you will need to be familiar with the print, println and printf methods. Here I explain what these are and how to use them.

When you want to display text in visual components such as text fields and buttons, you need to use special methods such as setText(), as we’ll discover in this lesson.

The basic building-blocks of Java code

By now you should be familiar with the basics of writing, compiling and running simple Java programs. In this step we’ll be find out more about the building blocks of those programs – and here I want to take a first look at data types and variables.

Variables give you a way of storing values that can be changed. But sometimes you want to make sure that certain values cannot be changed. That’s what constants are for.

In this hands-on lesson I show you exactly how I designed and coded my Tax Calculator application. If you are new to NetBeans you might find this step-by-step guide useful.

Packages give you a way of grouping together related classes. Once you create a package you will need to import its contents to other code files. This lesson explains how.

Often you will need to convert numbers to strings and vice versa. Here I explain the difference between numeric and string data types and show how Java can help convert one to the other.

What’s the difference between and int and an Integer or a double and a Double? In this lesson I explain primitive data types and Java’s corresponding ‘wrapper’ classes.

Sometimes it may be useful to tell the Java compiler to treat one data type as another data type – you can do that by ‘type casting’.

Numbers that you enter in your code are ‘numeric literals’ – here I explain how Java treats these.

You don’t always have to convert numbers (and other types of data) to strings – sometimes Java does it for you.

Java provides a shorthand way of converting number primitives into number objects. Here I explain ‘boxing’ and ‘unboxing’.

We use strings all the time in our programs so it’s worth considering what a string actually is.

More core features of Java

Java is an object oriented programming language. What does that mean and why does it matter?

What are classes and how are they used to create objects? That’s the subject of this lesson.

Here we find out how to create a ‘family tree’ of classes in such a way that one or more classes inherit the features of another class.

In this hands-on session I’ll show you, step-by-step, how to create a Java subclass in NetBeans.

Methods are object-oriented functions. Here we look at methods in some detail and I explain method signatures and method overloading.

Sometimes it is useful to call a method without having to create an object first. In this video I explain how to do this using static or ‘class’ methods.

Java's object orientation

Operators are special symbols that are used to do specific operations such as the add­ition and multiplication of numbers. Here we look at some of the most important operators.

Here I show some examples of using the addition, subtraction, multiplication, division and remainder (modulo) operators.

How do you test if one string is the same as another string? It’s not quite as simple as it may appear.

There are exceptions to the rule that two identical strings compared using == will return false. Here I explain why.

Here I explain how to take different actions by using if, else and else if to perform a series of different tests.

If you need to perform many tests, it is often quicker to write them as ‘switch statements’. This lesson explains how to do that.

In some of the examples in this step, I have used the && operator to mean ‘and’ and the || operator to mean ‘or’. Here I explain these logical operators and the Boolean values they test.

You can combine arithmetic and assignment operations using ‘compound assignment operators’ such as += and -=, as I explain in this lesson.

You can increment and decrement values using the ++ and -- operators. But be careful: when you assign the results of these operations, the value may differ according to the position of the operator!

Operations to change and test values

Many programs need to work with collections of objects. Here we look at the most basic type of collection, a sequential list or ‘array’ of elements.

In Java, the first element of an array is at index 0. It is vital that you understand the importance of this fact, and that is the topic of this lesson.

In this lesson I show a simple way of creating arrays and filling them with data items all in a single line of code.

You can do operations on the items in an array using a ‘for’ loop to handle each item one by one. Here I explain the basics of ‘for’ loops in Java.

Java automatically frees up memory that is no longer needed. This is called garbage collection.

Fixed size arrays may not be the best solution for programs in which lists of objects may grow in size. For such programs, Java’s ArrayList class may be a better choice.

Interfaces are like abstract classes that contain method definitions but omit the code needed to implement the methods. This lesson explains the basics of Java interfaces.

Java ‘Generics’ allow the same methods to operate on objects of various types while giving your code the benefit of type-checking. Here I explain the basics. We’ll look at generics in more depth in Step Nine.

Sometimes it may be useful to index a collection of objects by something other than their numerical positions in a list. Associative arrays, hashes or Maps let you do just that.

If you need to ensure that only keys and values of specific types are permitted to be added to hashes or Maps you can used a typed HashMap.

How to enforce type-checking on list elements

When you want to repeat actions, you may need to ‘loop’ over some blocks of code. Here I take a closer look at for loops to count up and down or iterate through array items.

Here we look at another type of for loop that lets you process the items in a linear collection or array in a similar way to ‘foreach’ loops in other languages.

When you need to loop an unknown number of times, a while loop may be a good choice. A while loop continues to execute as long as some test condition remains true.

Here is an example of how you might use a while loop to read data from files of various sizes stored on your computer’s disk.

Sometimes you may want to be sure that the code in a loop is run at least once. In such a case you might want to use a do..while loop.

You can even create an array containing arrays as its elements. In this lesson I explain the essential feature of multidimensional arrays in Java.

When one array contains ‘nested arrays’ as its elements, how can you get at the elements inside each nested array? That’s the subject of this lesson.

Sometimes you may want to break out of a loop immediately. One way of doing that is by using the break keyword.

Sometimes you may want to break out of a loop once only and then carry on running the loop. One way of doing that is by using the continue keyword.

Using break or continue can change the logic of your code. Here I explain the problem and consider one way of avoiding it.

If you break out of one loop nested inside another loop, which of the two loops do you break from? That’s explained in this lesson.

If you want to break out of both an inner loop and an outer loop you can use labelled breaks. But use with extreme caution or you may regret it!

The art of repetition

You can clarify your code by creating lists of named constants – for example, Hearts, Diamonds, Clubs and Spades in a gambling program. Here I explain how to do that using enums.

Sometimes you may want to give specific values to the constants in an enum. Here I show how I created an int constant in the Directions enum of my adventure game.

In Java, unlike in many other languages, Enums are classes. You can even give them their own methods! This video explains.

I’ve created a project from example code supplied by Oracle. But I can’t understand exactly how it works. Now is a good time to use the NetBeans debugger.

We looked very briefly at Interfaces in Step 6. Interfaces may declare ‘empty’ methods that define a ‘contract’ with the classes that implement the Interface. Here I explain how this works.

There may be occasions when you want to create your own interfaces to be implemented by various different classes. Here I explain how to do that.

Variables in your Java programs are all ‘visible’ within certain limits. Those limits define their ‘scope’.

What happens when a variable name is repeated in different ‘scope’ levels? Let’s find out!

You can restrict the visibility of methods by declaring them using the keywords private, public or protected.

Enumerated types and abstract classes

Generic classes let you work safely with lists of objects of a specified type. Amongst other things, this can help avoid problem that might occur when you add objects of mixed types to a list.

If you want to use an ArrayList which will only accept elements of a certain type – for example, Strings but not Integers – you can do so. That’s what this lesson is about.

Generic ‘type parameters’ are placeholders that can be replaced with real types when you create objects from a generic class.

You can write your own generic classes from which objects can be created to call the same generic methods on different types of data.

Generics are often used to manipulate the elements of lists and other types of collection. Here I explain how to create a custom generic list class.

Sometimes you may want different methods with the same name in ancestor and descendent classes – that’s method overriding.

Sometimes you may want different methods with the same name but different arguments in the same class – that’s method overloading.

Sometimes an error may occur when the program is running. You can deal with many types of error by handling exceptions.

You can ‘catch’ an exception object to access its methods and properties.

Here I explain how to catch specific types of exception.

More on generic collections - and handling errors

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Includes an eBook, 'The Little Book Of Java', which provides additional information and depth, reinforcing learning through multiple formats
Covers setting up Java and an IDE (Integrated Development Environment) on both Mac and Windows, making it accessible to users of either operating system
Explores cross-platform development, highlighting Java's ability to run on all major operating systems, which is a key advantage for developers targeting multiple platforms
Teaches the fundamentals of programming from the ground up, making it suitable for individuals with no prior coding experience, which builds a strong foundation
Explores advanced topics such as generics, exception-handling, streams, and serialization, which are essential for developing robust and efficient Java applications
Uses NetBeans IDE, which is a popular and widely-used development environment, and familiarizes learners with industry-standard tools

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Comprehensive java fundamentals for beginners

According to learners, this course offers a solid and comprehensive introduction to Java programming, particularly for those starting from scratch. Students appreciate the clear explanations provided by the instructor, Huw Collingbourne, and find the step-by-step approach effective. Many highlight the value of the practical examples and the source code provided. While the course covers core Java concepts well, some more recent reviews suggest certain sections or technologies might be slightly outdated or that the pace can feel slow for those with prior programming experience. Overall, it is frequently recommended as a strong foundation for beginners.
Covers core Java concepts from basic to intermediate.
"This course covers all the fundamental Java topics you need to know to get started."
"It provides a comprehensive overview of Java basics, OOP, and some advanced features."
"I feel like I have a solid understanding of the core Java language after taking this."
"The syllabus covers a wide range of essential Java programming concepts."
Course includes helpful examples and provided source code.
"The source code examples are very helpful for following along."
"I learned best by working through the practical examples provided."
"Having the ready-to-run sample programs made learning much easier."
"The hands-on coding and projects are the strongest part of the course for me."
Instructor explains concepts in a clear, easy-to-follow way.
"Huw is a very good instructor, making complex topics seem simple."
"The lectures are easy to follow and the explanations are very clear."
"The instructor's teaching style is engaging and easy to understand."
"I really appreciated how the instructor broke down each concept step-by-step."
Highly recommended as a starting point for newcomers.
"This course is excellent for anyone starting out in Java. It really lays the groundwork clearly."
"If you've never coded before, this is a perfect place to start learning Java. Everything is explained simply."
"I had zero programming experience, and this course made Java understandable for me."
"Great course for absolute beginners. It doesn't assume any prior knowledge."
Some content/technologies may feel slightly dated.
"Some parts of the course seem a bit outdated compared to current Java practices."
"It would be great if the course was updated with newer features and best practices."
"While the fundamentals are timeless, some of the tools or examples feel slightly old."
Pace can be slow for experienced programmers.
"As someone with some prior coding knowledge, the initial sections felt a bit slow."
"If you know another language, you might be able to skip some of the very early lessons."
"This course is definitely geared towards absolute beginners; intermediate learners might find it too basic initially."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Java Programming – the Master Course with these activities:
Review Object-Oriented Programming (OOP) Concepts
Reinforce your understanding of OOP principles before diving into Java's object-oriented features. This will make grasping Java classes, objects, and inheritance much easier.
Show steps
  • Read articles or watch videos explaining OOP concepts.
  • Create diagrams illustrating inheritance and polymorphism.
  • Write pseudocode examples of classes and objects.
Review 'Head First Java' by Kathy Sierra and Bert Bates
Reinforce your understanding of Java fundamentals with a visually engaging book. This book will help you grasp core concepts in a fun and memorable way.
Show steps
  • Read chapters related to topics covered in the course.
  • Complete the exercises and quizzes in the book.
  • Discuss the book's approach with other learners.
Review 'Effective Java' by Joshua Bloch
Learn best practices in Java programming. This book will help you write cleaner and more efficient code.
Show steps
  • Read and summarize key chapters related to course topics.
  • Implement examples from the book in your own projects.
  • Discuss the book's recommendations with peers.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Java Cheat Sheet
Consolidate your knowledge by creating a cheat sheet of important Java syntax, concepts, and best practices. This will serve as a valuable reference for future projects.
Show steps
  • Identify key Java concepts and syntax elements.
  • Organize the information in a clear and concise format.
  • Share your cheat sheet with other learners for feedback.
Solve Java Coding Problems on HackerRank
Sharpen your Java coding skills by solving problems on HackerRank. This will help you apply the concepts learned in the course and improve your problem-solving abilities.
Show steps
  • Create a HackerRank account and choose Java as your language.
  • Solve problems related to data structures and algorithms.
  • Analyze your solutions and optimize for efficiency.
Build a Simple Java Application with GUI
Solidify your understanding of Java by building a GUI application. This will give you hands-on experience with event handling, UI components, and application design.
Show steps
  • Design the user interface using Swing or JavaFX.
  • Implement event handlers for user interactions.
  • Test and debug the application thoroughly.
Answer Java Questions on Stack Overflow
Deepen your understanding of Java by helping others. Answering questions on Stack Overflow will force you to think critically and explain concepts clearly.
Show steps
  • Browse Java-related questions on Stack Overflow.
  • Answer questions you feel confident in addressing.
  • Provide clear and concise explanations with code examples.

Career center

Learners who complete Java Programming – the Master Course will develop knowledge and skills that may be useful to these careers:
Java Developer
A Java Developer specializes in developing applications using the Java programming language. For anyone looking to work as a Java Developer, this Java Programming Master Course helps build a solid foundation in Java. The course covers basic to advanced Java concepts, including object orientation, garbage collection, and cross-platform development, all of which are essential for any Java Developer. This course is particularly helpful, as it teaches Java step-by-step with runnable examples.
Software Developer
A Software Developer designs, develops, and tests software applications. This Java Programming Master Course helps build skills in Java, a language widely used in software development. The course covers the fundamentals of programming, object orientation, and advanced topics such as generics and exception handling. A software developer should take this course to learn core java concepts from the ground up, and to understand the special features of Java, such as cross-platform development.
Application Developer
Application Developers create software applications for various platforms. This Java Programming Master Course helps build the necessary skills to develop Java-based applications. The course covers essential elements of the Java language, object orientation, and exception handling, providing a full base for any Application Developer. All the source code is provided in sample programs ready-to-run on a PC or a Mac, which is particularly helpful.
Software Engineer
A Software Engineer applies engineering principles to software development. The Java Programming Master Course may be useful by providing a solid grounding in Java, which is a versatile language used in many engineering contexts. The course covers key concepts like object orientation, data structures, and algorithms, and how to program in windowed environments, which helps any software engineer. The course offers a step-by-step approach, making it easier to learn Java programming, and master what one needs to know quickly.
Backend Developer
Backend Developers work on the server-side logic of applications, and Java is often used to build robust and scalable backend systems. For anyone interested in becoming a Backend Developer, this Java Programming Master Course helps build a strong understanding of Java fundamentals, as it is crucial for backend development. Topics like streams and serialization, covered in the course, are directly applicable to building efficient and reliable backend services. Taking this comprehensive course is a way to quickly and easily master Java programming.
Full-Stack Developer
Full Stack Developers work on both the front-end and back-end of applications. A Full Stack Developer may find this Java Programming Master Course useful if they want to enhance their back-end skills with Java. The course covers Java from the basics to advanced topics, providing a good base for building server-side logic and APIs. The course is particularly useful, as it provides source code examples to facilitate step-by-step learning.
Android Developer
Android Developers create applications for the Android mobile platform, which relies heavily on Java. This Java Programming Master Course may be useful because foundational Java knowledge helps build a base for Android development. Understanding the fundamentals of Java, as taught in this course, helps with understanding the Android software development kit (SDK). Specific topics like object orientation and exception handling come into play when developing Android applications and are covered in detail in this course.
Web Developer
Web Developers build and maintain websites and web applications. Though web development involves many language, the Java Programming Master Course may be useful as Java is used for backend web development. The course covers Java fundamentals and advanced topics, and introduces Java as a cross-platform development tool. The course provides a 125-page eBook, to provide even more information on all the topics discussed, which may be helpful to the web developer.
Data Engineer
Data Engineers design, build, and manage data pipelines and infrastructure. While Data Engineers may use languages focused on statistical computing, knowing Java can be beneficial for building scalable data processing systems. This Java Programming Master Course may be useful to learn the fundamentals of Java, which is beneficial in data-intensive applications. The course covers topics such as streams and serialization, which are relevant to data handling and processing.
Quality Assurance Engineer
Quality Assurance Engineers test software to identify and fix defects. While their work doesn't specifically require knowledge, the Java Programming Master Course may be useful by providing a perspective on how code is constructed. By understanding Java fundamentals, a Quality Assurance Engineer may learn how to design better test cases and understand the root cause of defects. This is useful for anyone who wants to make a career in programming.
Game Developer
Game Developers create video games for various platforms. While some game development uses specialized engines a Game Developer may find this Java Programming Master Course helpful as it is possible to develop games in Java especially for mobile platforms. The course covers Java fundamentals and advanced topics. In particular, topics like the debugging of code, using constants in enums, and coding interfaces is extremely useful.
DevOps Engineer
DevOps Engineers focus on automating and streamlining the software development lifecycle. While DevOps Engineers use various tools and languages, the Java Programming Master Course may be useful as Java is used in some automation and configuration management tools. Understanding Java may help with customizing and extending these tools. This includes subjects such as setting up software, and using debuggers, enums, and interfaces.
Embedded Systems Engineer
Embedded Systems Engineers design and develop software for embedded systems, such as those found in consumer electronics and industrial equipment. Though C and C++ are more common languages for this kind of work, some embedded platforms support Java. This Java Programming Master Course focuses on all the basics, and helps give a grounding to understand the special features of Java, such as cross-platform development and serialization.
Data Scientist
Data Scientists analyze data to extract insights and build predictive models. Though data science work is commonly done in languages such as Python and R, a Data Scientist may find it helpful to take this course. Java is sometimes used for building scalable data processing pipelines. This Java Programming Master Course may be useful to learn the fundamentals of Java, which is useful when working with large datasets and distributed systems.
Database Administrator
Database Administrators manage and maintain databases. While a Database Administrator uses SQL and other database-specific tools, they sometimes need to interact with databases programmatically. This Java Programming Master Course may be useful because Java can be used to build database management tools. The course provides a base in Java programming, and teaches the details of exceptions.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Java Programming – the Master Course.
Provides invaluable insights into Java best practices and design patterns. It's a great resource for understanding how to write robust, maintainable, and efficient Java code. While not strictly a beginner's book, it offers a deeper understanding of the nuances of the Java language and is commonly used by industry professionals. It adds depth to the course by providing practical advice beyond the basics.
Offers a visually engaging and brain-friendly approach to learning Java. It's particularly helpful for beginners who struggle with traditional textbooks. The book covers fundamental Java concepts in an accessible and memorable way. It is more valuable as additional reading to reinforce concepts covered in the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser