Java for Complete Beginners (Video), Part 44: Enum
This is a tutorial on basic and advanced usage of the “enum” keyword in Java. We’ll also take a look at how enum works behind the scenes, and what enum “constants” actually are, as well as how to transform between … Continue reading
Java for Complete Beginners (Video), Part 43: Inner (Nested) Classes
Java lets you declare classes almost anywhere, even inside other classes and methods. In this tutorial we’ll take a look at some of the possibilities and why you might want to make use of them. In particular, we’ll look at … Continue reading
Quantifiers – Greedy and Non-Greedy: Learn Perl By Doing It, Part 9
Quantifiers in regular expressions let you specify how many characters you want to match. You can use quantifiers to specify exact numbers of characters, but the most important distinction is between greed and non-greedy quantifiers. Learn Perl By Doing It … Continue reading
Groups in Regular Expressions: Learn Perl By Doing It, Part 8
Groups in regular expressions allow you to pick out particular parts of the data you’re matching that you can then refer to again later. For example, you can extract just a machine ID from a complex machine specification text, or … Continue reading
Wildcards in Regular Expressions: Learn Perl By Doing It, Part 7
You can use wildcards in your Perl regular expressions to match multiple characters. Wildcards enable you to match any character, or to match any of some subset of possible characters. In this tutorial we’ll look at the dot wildcard, which … Continue reading
Writing Files and Replacing Text: Learn Perl By Doing It, Part 6
How to write and create files in Perl, and how to do a find-and-replace using regular expressions. Once we know how to read files and how to write files, we can read in one file, replace or correct text in … Continue reading
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
Reading Files and Beginning Regular Expressions: Learn Perl By Doing It, Part 5
How to read files in Perl, and also the start of an introduction to regular expressions. Regular expressions can be used in pretty much every programming language these days, and stuff you learn about “regex” in Perl will also work, … Continue reading
Arrays and Checking if Files Exist: Learn Perl By Doing It, Part 4
A tutorial on using arrays in Perl and checking if files exist. Perl is totally excellent for doing stuff involving large numbers of files. Once you know Perl, you’ll never need to sit there renaming or moving large numbers of … Continue reading
Downloading Text and Images: Learn Perl By Doing It, Part 3
How to download text and images with just a few lines of Perl. Learn Perl By Doing It Get the complete course here Includes 11 completely free videos – no subscription necessary. use strict; use warnings; use LWP::Simple; sub main … 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
Introduction: Java Design Patterns and Architecture, Part 1
In this short introduction to the course, I’ll give you a little bit of an overview of what’s in the course and how we’ll be tackling the whole subject. Continue to Part 2: A Note on Methodologies: Java Design Patterns … 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
Hello World: Learn Perl By Doing It, Part 2
A tutorial on a basic “Hello World” program in Perl, including some highly useful stuff that should be part of every self-respecting Perl program. Learn Perl By Doing It Get the complete course here Includes 11 completely free videos – … Continue reading
Installation and Editors: Learn Perl By Doing It, Part 1
The first in a series of tutorial on learning Perl. The approach I take in this course is to try to show you Perl that you can actually use, concentrating as much as possible on analysing real Perl scripts rather … 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
Creating Product Boxes with Inkscape and Box Shot 3D
Box Shot 3D lets you create raytraced product boxes, DVD packs, mugs, leaflets and lots more. The idea is, you supply your own images, incorporating your own logos and text, then Box Shot 3D renders them into a realistic-looking image … 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 Advent Calendar (Looking for Authors)
This is a post just to implore you to check out the Java Advent Calendar (http://www.javaadvent.com/), which aims to publish a new fantastic Java article for each day of December 2012 (except, of course, science tells us that the world … 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
Make Money as a Affiliate of Cave of Programming
Cave of Programming is looking for affiliates to sell our courses; make up to $29 per sale just by adding links to your site or blog posts. My name’s John and I run caveofprogramming.com; I currently have two video courses … Continue reading
Servlets and JSPs: Part 2 – Setting Up Your System
Learn Java web programming In this tutorial series I’ll show you how to leverage the power of Java to create powerful, dynamic websites and deploy them on the Internet for free. In this second video we’ll look at how to … Continue reading
Complete Video Courses
Welcome to the Cave of Programming course list! You can find here details of a number of complete or complete-ish courses, taking you from a Java beginner all the way to a highly skilled expert. Warning: this page is seriously … 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
Servlets and JSPs: Part 1 – Introduction to Java Web Programming
Learn Java web programming In this tutorial series I’ll show you how to leverage the power of Java to create powerful, dynamic websites and deploy them on the Internet for free. In this first video we’ll talk about what you … 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 Swing GUI Programming: Premium Course
Announcing the Cave of Programming Premium Java Swing Programming tutorial! Subscribe to this course via this link and get a 10% discount.* The course is available here at udemy.com; and it covers almost everything you could want to know about … 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
What’s New in Programming? Scala, Lift and Clouds
Recently someone asked me if I’d thought of making tutorials about Scala. I’d never heard of it. So I looked it up and became intrigued. It turns out that Scala is a fairly new programming language that compiles to Java … 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
Creating Databases and Tables: MySQL for Beginners, Part 1
The first part of a tutorial series on the popular free MySQL database. In this video I show you how to create databases and add some data. Commands demonstrated in this video (these commands create a database called shop and … 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
Free Software: Translate Your Screen to Sound
Recently I’ve been experimenting with translating my computer screen into sound; the idea being that if you’re blind, you could use a piece of software to translate your computer screen, or even the output of a webcam, into sound. My … 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
Programming Flash Games for Free Part 1: Hello World
Want to program Flash games for free? You can, using the tools I’ll show you in this video tutorial. Learn how to write games and other graphically rich applications that run in a browser. This tutorial assumes that you already … 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