Java for Complete Beginners (Video), Part 42: Equals and Comparing Strings
This is a tutorial on the vital .equals() method in Java, used for comparing the meaning of objects to find out whether they are equal or not. .equals() is vital in comparing Strings and Doubles; beginners often mistakenly use == … Continue reading
Java for Complete Beginners (Video), Part 41: Writing Text Files
A tutorial on writing text files, Java 7 style. If you want Java 6 style, you can easily take the code here and re-arrange it along the lines of the previous tutorial on reading text files in Java. Writing text … Continue reading
Model View Controller – An Example: Java Design Patterns and Architecture, Part 5
This is a tutorial on using MVC in Java; I’ll use Swing as an example, but don’t worry if you don’t know Swing because MVC is going to be somewhat the same, under the hood at least, regardless of what … Continue reading
Model View Controller – the Theory: Java Design Patterns and Architecture, Part 4
The theory of Model-View-Controller, also known as MVC; this tutorial outlines what MVC is and how it works, before we go on to an example skeleton implementation in the next tutorial. MVC can be used to structure a very wide … Continue reading
Front End / Back End: Java Design Patterns and Architecture, Part 3
Front end vs. back end; one of the most fundamental concepts in software design. If you develop stuff at home or you’re a one-man company, you need to understand both bits and how to separate them and test them. If … Continue reading
A Note on Methodologies: Java Design Patterns and Architecture, Part 2
A bit of a note on software design methodology and changing trends in software design, from someone who’s only SLIGHTLY bitter about being made to take part in “scrums” for the second time (the first time involved a ball and … Continue reading
Java for Complete Beginners (Video), Part 40: Try With Resources
Java 7 introduces a great new language feature, “try with resources”. In this tutorial we’ll see how we can use a try block to simply our file reading code quite a lot, ensuring that file handles are closed without the … Continue reading
Java for Complete Beginners (Video), Part 39: Reading Files with FileReader
The most flexible way to read files in Java involves using a sort of Russian doll system of objects; in this tutorial we’ll look at reading text files using such a method. Unfortunately prior to Java 7 we end up … Continue reading
Debugging in Eclipse: Java for Complete Beginners
A video on how to use the debugger in Eclipse. Debugging is something that a lot of developers happily get by without, but it’s something that’s sometimes very useful, and it’s certainly something that every aspiring developer should learn. Debuggers … Continue reading
Java for Complete Beginners (Video), Part 38: Abstract Classes
Abstract classes allow you to define the parent class of a new hierarchy without having to worry about the user actually instantiating the parent. For instance you could create an “Animal” class just to act as the basis for “Dog”, … Continue reading
Java for Complete Beginners (Video), Part 37: Runtime Exceptions
Runtime exceptions are a kind of exception that you’re not forced to handle. They usually point to serious problems with your code, indicating that you need to revise it. The infamous null pointer exception and array out-of-bounds exception are good … Continue reading
Java for Complete Beginners (Video), Part 36: Multiple Exceptions
In this tutorial we’ll take a look at throwing and handling multiple exceptions, plus a look at a popular exam/interview question. Java 7 introduced a new way of handling multiple exceptions; but even if you’re still on Java 6, there … Continue reading
Java for Complete Beginners (Video), Part 35: Throwing Exceptions
In this tutorial we’ll take a look at how to throw your own exceptions in Java. Throwing an exception is a useful thing to do when your method encounters an unexpected error; the exception will immediately return from your method, … Continue reading
Ten Tips to Make You a Better Programmer
In this video I’ll count down my top ten tips for improving your coding. Professionals will know these tips already (or should do), but beginners often ignore them, accidentally wasting a lot of time in the process. If you follow … Continue reading
Java for Complete Beginners (Video), Part 34: Handling Exceptions
Exceptions are a major part of the Java language; so much so that you can’t write very much code without at least having to handle some of them. In this tutorial we’ll get started with Exceptions, and I’ll also give … Continue reading
Deciding Which Collection to Use: Java Collections Framework Video Tutorial, Part 12
How to decide which collection to use. Not only is this the first thing anyone needs to know when they’re planning to use a Java Collections class, but it’s also a favourite question of interviewers and examiners (although quite not … Continue reading
Java Multithreading: Swing and SwingWorker (Video Tutorial Part 15)
If you’re doing Swing (GUI) programming in Java, you might want to consider using the SwingWorker class for your multithreading needs. SwingWorker is a ferocious-looking but useful class that’s perfect for running stuff in the background while simultaneously updating progress … Continue reading
Implementing Iterable; Downloading HTML Using Java: Java Collections Framework Video Tutorial, Part 11
How and why to implement Iterable and Iterator in Java, with an example of downloading HTML in Java while iterating through a “for-each” loop. After starting the video, click the maximise button to make it fullscreen so you can see … Continue reading
Using Iterators: Java Collections Framework Video Tutorial, Part 10
A look at using iterators in Java; how “for each” loops work and how to add or remove elements from a list while iterating through it. After starting the video, click the maximise button to make it fullscreen so you … Continue reading
Java for Complete Beginners (Video), Part 33: Reading Files
You can use the Scanner class to simplify reading text files quite a bit. In this tutorial we’ll see how to do it, and I’ll also explain how to locate your file on the disk and we’ll look at a … Continue reading
Queues: Java Collections Framework Video Tutorial, Part 9
A tutorial on the Java Queue interface, plus a couple of examples of Queues and a bit about the highly-useful (if you’re into multithreading) BlockingQueue interface. After starting the video, click the maximise button to make it fullscreen so you … Continue reading
Servlets and JSPs: Part 3 – A “Hello World” Servlet
Learn Java web programming Discover how to create a basic Java servlet with this, the third part in the series on Java web programming from Cave of Programming. Java servlets are the basic building blocks of Java-powered websites, and it’s … Continue reading
JSP and Servlet Tutorial: Learn Java Web Programming
Welcome to the Java web programming tutorial series from Cave of Programming! You can find the complete course here at Udemy.com At the above link you can find seven completely free videos and a 30% discount on the full course. … Continue reading
Java for Complete Beginners (Video), Part 32: Anonymous Classes
Anonymous classes in Java are a handy way of creating “one off” objects using un-named classes that you create on the fly. We’ll take a look at how to create them in this tutorial. When the video is running, click … Continue reading
Mastering Java Swing:Custom Components, Part 5
This is the fifth video in a complete course on desktop and browser-based programming in Java. The complete course covers almost every major topic in Swing programming, including desktop applications, databases and animation. Get two more free videos plus a … Continue reading
Mastering Java Swing: Responding to Button Clicks, Part 4
This is the fourth video in a complete course on desktop and browser-based programming in Java. The complete course covers almost every major topic in Swing programming, including desktop applications, databases and animation. Get two more free videos plus a … Continue reading
Java for Complete Beginners (Video), Part 31: Generics and Wildcards
A tutorial on using wildcards with generic classes in Java. Want to impress even hardened Java developers with the depth of your Java knowledge? This should do the trick. Wildcards are mostly useful when you want to pass parametrized classes … Continue reading
Mastering Java Swing: Adding Components, Part 3
This is the third video in a complete course on desktop and browser-based programming in Java. The complete course covers almost every major topic in Swing programming, including desktop applications, databases and animation. Get two more free videos plus a … Continue reading
Java for Complete Beginners (Video), Part 30: Using Generics
This tutorial is on generics; a system for creating “parametrized” classes that allow classes to work with other objects, the type of which you can specify when you instantiate (create objects from) the class. Confused? Hopefully this gentle introduction will … Continue reading
Mastering Java Swing: Hello World, Part 2
This is the second video in a complete course on desktop and browser-based programming in Java. The complete course covers almost every major topic in Swing programming, including desktop applications, databases and animation. Get two more free videos plus a … Continue reading
Java for Complete Beginners (Video), Part 29: Upcasting and Downcasting
Understand the import topic of upcasting and downcasting in Java with this tutorial; in this video I’ll explain both concepts, why downcasting requires a special syntax while upcasting doesn’t, and we’ll look at precisely what determines what methods can be … Continue reading
Mastering Java Swing: Useful Resources, Part 1
This is the first video in a complete course on desktop and browser-based programming in Java. The complete course covers almost every major topic in Swing programming, including desktop applications, databases and animation. Get two more free videos plus a … Continue reading
Java for Complete Beginners (Video), Part 28: Casting Numerical Values
A tutorial on casting numerical types; when and why you need casts, and a pitfall to watch out for. When the video is running, click the maximize button in the lower-right-hand corner to make it full screen. Code for this … Continue reading
Java for Complete Beginners (Video), Part 27: Encapsulation and the API Docs
What is encapsulation and what’s the point of it? We’ll take a look at the meaning and benefits of encapsulation in this tutorial. We’ll also see an example of encapsulation in the real world by looking at the API document … Continue reading
Java for Complete Beginners (Video), Part 26: Polymorphism
This is a tutorial on polymorphism; a big word for a fairly simple but very useful concept, without which object-oriented programming would be a lot trickier. When the video is running, click the maximize button in the lower-right-hand corner to … Continue reading
Java for Complete Beginners (Video), Part 25: Public, Private, Protected
Discover the meaning of public, private and protected in the Java programming language. Public, private and protected are confusing for beginners, but once you understand how to use classes, they’re actually quite simple. When the video is running, click the … Continue reading
Java for Complete Beginners (Video), Part 24: Packages
How to use packages in Java. Packages are an important tool for organising your code; you’ll also need to understand packages to use other people’s code. When the video is running, click the maximize button in the lower-right-hand corner to … Continue reading
Eclipse Shortcuts: Tips and Tricks for the Eclipse IDE for Java Developers
Learn some tips and tricks that can speed up your Java development in the Eclipse IDE, saving you time and making your code beautiful. When the video is running, click the maximize button in the lower-right-hand corner to make it … Continue reading
Java for Complete Beginners (Video), Part 23: Interfaces
A tutorial on interfaces in Java. Discover how you can use interfaces almost everywhere where you’d normally use classes, with one important exception. Interfaces have a variety of uses, including helping to specify functionality, helping to separate one class from … Continue reading
Java for Complete Beginners (Video), Part 22: Inheritance
A tutorial on the important topic of inheritance in Java — one of the fundamental building blocks of OOP (Object Oriented Programming). (Apologies for the dodgy sound on this video). When the video is running, click the maximize button in … Continue reading
Natural Ordering and the Comparable Interface: Java Collections Framework Video Tutorial, Part 8
Learn how to give your classes a “natural order”. A tutorial on ordering your objects in TreeSets and TreeMaps and with Collections.sort() for Lists, using the Comparable Interface. In this tutorial I also take a look at the Collection interface … Continue reading
Sorting Lists Using Comparators: Java Collections Framework Video Tutorial, Part 7
A tutorial on sorting ArrayLists and other lists using the Comparator interface. In this tutorial you’ll learn how to sort your Java lists in an arbitrary order. After starting the video, click the maximise button to make it fullscreen so … Continue reading
Using Custom Objects in Sets and as Map Keys: Java Collections Framework Video Tutorial, Part 6
A tutorial on using your own objects as keys in Maps or in Sets. To use your own objects as keys in Maps or in Sets you need to tell Java how to compare your objects, by implementing the hashCode() … Continue reading
HashSet and Sets: Java Collections Framework Video Tutorial, Part 5
A tutorial on sets in Java; in this tutorial I show you how to use HashSet, TreeSet and LinkedHashSet, plus how to use the Set interface methods and how to do stuff like finding the intersection of two sets. After … Continue reading
Java for Complete Beginners (Video), Part 21: toString()
How to use the important toString() method in Java, and a bit about the Object class that’s the grandfather of all objects in Java. When the video is running, click the maximize button in the lower-right-hand corner to make it … Continue reading
Sorted Maps: Java Collections Framework Video Tutorial, Part 4
A tutorial on sorted maps in Java, plus some explanation of the Map interface and interfaces in general. After starting the video, click the maximise button to make it fullscreen so you can see the code! Code For This Tutorial … Continue reading
Java for Complete Beginners (Video), Part 20: StringBuilder and String Formatting
How to use StringBuilder, StringBuffer and why you should use them. This video also unveils the mystery of formatting strings with printf() and related methods; vital skills for any Java course or aspiring software developer. When the video is running, … Continue reading
HashMap: Java Collections Framework Video Tutorial, Part 3
A tutorial on HashMap. Maps are data collections that function like lookup tables; basically you can store objects via “keys” (names, IDs, or even complex objects) and quickly retrieve them without having to look through an entire list. After starting … Continue reading
Java for Complete Beginners (Video), Part 19: Static (and Final)
A tutorial on the static keyword in Java. The first part of the tutorial covers the basic meaning of static; after that we look at what you can do with static, including counting objects, assigning IDs to objects automatically, and … Continue reading
LinkedList: Java Collections Framework Video Tutorial, Part 2
The second part of the tutorial series on the Java Collections Framework; in this tutorial I explain when to use LinkedList rather than ArrayList; we look at how the two classes work internally and I also explain a bit about … Continue reading
Java Multithreading: Interrupting Threads (Video Tutorial Part 14)
What exactly are those pesky InterruptedExceptions? In this video I show you how to interrupt running threads in Java using the built-in thread interruption mechanism. After starting the video, click the maximise button to make it fullscreen so you can … Continue reading
Java for Complete Beginners (Video), Part 18: Constructors
A tutorial on constructors in Java; what are they, how to create them, using multiple constructors with different parameters and calling constructors from within other constructors. When the video is running, click the maximize button in the lower-right-hand corner to … Continue reading
Java for Complete Beginners (Video), Part 17: Setters and ‘this’
How to use setters, also known as set methods or mutators, in Java. In this video I also take a look at the ‘this’ keyword and when to use it. When the video is running, click the maximize button in … Continue reading
Java for Complete Beginners (Video), Part 16: Method Parameters
How to pass parameters (values and variables) to your methods; a vital programming skill. I also discuss something that usually confuses beginners — namely, how data flows from one variable to another when you pass the variable to a method. … Continue reading
Java for Complete Beginners (Video), Part 15: Getters and Return Values
Using get methods or “getters” in your Java classes, and how to return values from methods in general. When the video is running, click the maximize button in the lower-right-hand corner to make it full screen. Code for this tutorial: … Continue reading
Java Multithreading: Callable and Future (Video Tutorial Part 13)
How to use Callable and Future in Java to get results from your threads and to allow your threads to throw exceptions. Plus, Future allows you to control your threads, checking to see if they’re running or not, waiting for … Continue reading
Java for Complete Beginners (Video), Part 14: Methods
How to add methods (subroutines) to your classes in Java. In this tutorial we’ll look at adding subroutines to our basic Person class, so that the Person objects can do stuff as well as containing data. When the video is … Continue reading
ArrayList: Java Collections Framework Video Tutorial, Part 1
The first part of a series on the Java Collections Framework, an absolutely vital set of classes for organising data in your code. In this part we’ll look at ArrayList; an expandable array. ArrayList is probably the most used and … Continue reading
Java Multithreading: Semaphores (Video Tutorial Part 12)
A tutorial on semaphores in Java. Semaphores are mainly used to limit the number of simultaneous threads that can access a resources, but you can also use them to implement deadlock recovery systems since a semaphore with one permit is … Continue reading
Java Swing: Events (Video Tutorial Part 5)
A tutorial on how to implement custom events and how to deal with events generally in Java Swing applications. This tutorial shows you how to wire up your Swing app, so that the different parts of the application can communicate … Continue reading
Java Multithreading: Deadlock (Video Tutorial Part 11)
The causes of deadlock and two things you can do about it. This video also covers how to write a method that can safely acquire any number of locks in any order without causing deadlock, using the tryLock() method of … Continue reading
Java Multithreading: Re-entrant Locks (Video Tutorial Part 10)
How to use the ReentrantLock class in Java as an alternative to synchronized code blocks. ReentrantLocks let you do all the stuff that you can do with synchronized, wait and notify, plus some more stuff besides that may come in … Continue reading
Java Swing: GridBagLayout (Video Tutorial Part 4)
Conquer your fears of this, the most fearsome of the layout managers in Java, but also the most flexible and the most useful. Many Java programmers pretty much just use this one layout manager for everything. I explain step by … Continue reading
Java Swing: Panels (Video Tutorial Part 3)
How to add forms to your Swing application using JPanel. In this tutorial I show you how to begin to organise your Swing app and divide it into separate areas; in the next tutorial we’ll get onto actually using GridBagLayout … Continue reading
Java Swing: Adding Components (Video Tutorial Part 2)
A tutorial on adding components to your Swing applicatio. This tutorial covers buttons, text areas and BorderLayout. I also show you some useful web pages, including the free WindowBuilderPro from Google and the Swing Visual Guide pages. In the next … Continue reading
Java for Complete Beginners (Video), Part 13: Classes and Objects
A basic tutorial on classes and objects in Java. What is a class? How do you create objects and classes and how do you use them? When the video is running, click the maximize button in the lower-right-hand corner to … Continue reading
Java Multithreading: Low-Level Producer-Consumer (Video Tutorial Part 9)
In this tutorial we’ll look at how to implement the producer-consumer pattern using “low level” techniques; namely, wait, notify and synchronized. This isn’t the best way to implement a producer-consumer pattern in Java (see tutorial 7 for the best way); … Continue reading
Java for Complete Beginners (Video), Part 12: Multi-dimensional Arrays
How to work with multi-dimensional arrays in Java and info on how multi-dimensional arrays actually work, plus some tips on how to remember which index is which. When the video is running, click the maximize button in the lower-right-hand corner … Continue reading
Java Multithreading: Wait and Notify (Video Tutorial Part 8)
A tutorial on wait and notify in Java; low-level multithreading methods of the Object class that allow you to have one or more threads sleeping, only to be woken up by other threads at the right moment. Extremely useful for … Continue reading
Java Multithreading: Producer-Consumer (Video Tutorial Part 7)
A tutorial on how to implement the producer-consumer pattern in Java using the ArrayBlockingQueue Java class. Producer-Consumer is the situation where one or more threads are producing data items and adding them to a shared data store of some kind … Continue reading
Java for Complete Beginners (Video), Part 11: Arrays of Strings
A tutorial on String arrays in Java, plus another way to iterate through an array, and more stuff on references vs. values. When the video is running, click the maximize button in the lower-right-hand corner to make it full screen. … Continue reading
Java Multithreading: Countdown Latches (Video Tutorial Part 6)
A video tutorial on using the excellent CountDownLatch Java class to synchronize your threads’ activities. After starting the video, click the maximise button to make it fullscreen so you can see the code! Code For This Tutorial import java.util.concurrent.CountDownLatch; import … Continue reading
Java for Complete Beginners (Video), Part 10: Arrays
How to use arrays of integers in Java; also some stuff on the important difference between values and references. When the video is running, click the maximize button in the lower-right-hand corner to make it full screen. Code for this … Continue reading
Charts in Java Swing With JFreeChart
Java Swing, the GUI toolkit for Java, has no built-in graphing and charting package. Several free packages are available, the best of which is widely considered to be JFreeChart. JFreeChart is open source and free even for commercial use. So … Continue reading
Java Multithreading: Thread Pools (Video Tutorial Part 5)
A tutorial on how to manage multiple threads in Java using thread pools. With thread pools you can assign a whole gaggle of threads to work through your queue of tasks. After starting the video, click the maximise button to … Continue reading
Java for Complete Beginners (Video), Part 9: Switch
How to use the switch statement in Java; a construct that many programmers neglect but that invariably appears early on in tests and courses! When the video is running, click the maximize button in the lower-right-hand corner to make it … Continue reading
Java Multithreading: Lock Objects (Video Tutorial Part 4)
This is the fourth part of our advanced Java multi-threading tutorial. In this tutorial I show you how you can use multiple locks to speed up complex multi-threaded code, sometimes dramatically. After starting the video, click the maximise button to … Continue reading
Java Swing: A Hello World GUI App (Video Tutorial Part 1)
Interested in GUI programming in Java? In this tutorial I show you how to build up a minimal “Hello World” user interface (Swing) app in Java. After starting the video, click the maximise button to make it fullscreen so you … Continue reading
Programmable Logic Controllers: Switching Coils With Java
Or, How To Connect To Real Physical Stuff Using Java First, a disclaimer. I know next to nothing about programming programmable logic controllers. I don’t even own one. However, a client of mine is interested in making stuff happen in … Continue reading
Java for Complete Beginners (Video), Part 8: Do … While
Do…while loops in Java, plus a look at variable scoping and multi-line comments. In this tutorial I tackle a task that’s often assigned to beginners on Java courses; looping until the user enters some particular input. When the video is … Continue reading
Java Multithreading: Synchronized (Video Tutorial Part 3)
This is the third part of our advanced Java multi-threading tutorial. In this tutorial we look at using the synchronized keyword to coordinate actions between threads and prevent them screwing up each other’s work. After starting the video, click the … Continue reading
Java for Complete Beginners (Video), Part 7: Getting User Input
How to get console user input in your Java programs using the JDK Scanner class. When the video is running, click the maximize button in the lower-right-hand corner to make it full screen. Code for this tutorial: import java.util.Scanner; public … Continue reading
Java Multithreading: Volatile – Basic Thread Communication (Video Tutorial Part 2)
The second part of the advanced Java multi-threading tutorial. In this tutorial we look at using the volatile keyword to communicate between threads using flags. We also look at why the potential uses of volatile are somewhat limited. After starting … Continue reading
Java Multithreading: Starting Threads (Video Tutorial Part 1)
Does multithreading seem like a black art to you? This is the first part of an advanced Java tutorial on multithreading that hopefully will help you out. In this tutorial we look at the two ways of starting a thread … Continue reading
Beginner’s Java: Test Your Knowledge of Classes and Objects
Started programming in Java a few weeks/months ago, but getting horribly confused about classes, objects, settter and getters and this? This page is for you. If you’re pushed for time you can treat this page as a test and just … Continue reading
Java for Complete Beginners (Video), Part 6: If
A tutorial on the if() statement, plus some stuff on using break to break out of loops. When the video is running, click the maximize button in the lower-right-hand corner to make it full screen. Code for this tutorial: public … Continue reading
Java for Complete Beginners (Video), Part 5: For Loops
In the fifth part of the Java tutorial for beginners video series using Eclipse, we look using ‘for’ loops and printf(). Code for this tutorial: public class Application { public static void main(String[] args) { for(int i=0; i < 5; … Continue reading
Are You a Java Expert? Test Your Knowledge With These Four Tricky Questions
Even though Java was designed to be an easy-to-use programming language, it still has many traps and surprises for the unwary. In this article I ask grill you on four slightly lesser-known aspects of Java that may trip you up … Continue reading
Java for Complete Beginners (Video), Part 4: While Loops
In the fourth part of the Java tutorial for beginners video series using Eclipse, we look using loops to make your code repeat statements multiple times. We also take a look at conditions. Code for this tutorial: public class Application … Continue reading