New

A quick, chronological list of every single published video

  Multi-Release JAR Files

The multi-release JAR feature allows you to create alternate versions of classes that are only used when running the library on a specific Java version. If you are a library maintainer you are going to love this, so check out. Find out in this episode what that really means.

> > Watch Now
Java 9JShellJava 9 Interpreter
Published: 19.10.2017
Difficulty: BEGINNERS
Runtime: 00:04:21

  JShell - Java 9 interpreter

Finally Java includes a command line tool, that lets you test statements and epxressions, without much effort. In this episode you will learn everything you need to get started with JShell, as well as do a few more advanced examples, compared to your usual hello world.

> > Watch Now
Java 9JShellJava 9 Interpreter
Published: 17.10.2017
Difficulty: BEGINNERS
Runtime: 00:06:12

  Process API Changes

The Java Process API (like starting myCoolProgramme.exe or myCoolProgramme.sh on a machine) has seen some nice improvements in Java 9. Find out what they are and how they help you in your day-to-day work.

> > Watch Now
Java 9Process API
Published: 13.10.2017
Difficulty: BEGINNERS
Runtime: 00:04:12

  The new HTTP Client

You could do HTTP calls with plain Java before version 9, but it was always a major pain. Hence the need for libraries such as Apache HTTPClient or OkHTTP. In Java 9 there is a new HTTP Client, with a much better API, which also speaks HTTP/2 and WebSockt. In this episode we will do some basic GET and POST Calls and generally look at what the new HTTP client can do.

> > Watch Now
Java 9JEP 110HTTP/2 Client (Incubator)
Published: 11.10.2017
Difficulty: BEGINNERS
Runtime: 00:06:10

  Small language changes & New APIs

In this episode we will quickly cover what changed in the Java 9 programming language: improved try-with-resources, improved streams, diamond operator extensions, private interface methods, new Set/List/Collection helpers as well as changes to the beloved Optionals.

> > Watch Now
try-with-resourcesDiamond Operator ExtensionsJava 9Java 9 Collections
Published: 09.10.2017
Difficulty: BEGINNERS
Runtime: 00:08:44

  Putting it all together

At the very beginning of this series, we created a Javascript frontend. Now we created all the backend methods for our frontend. And now it's time to wire these two together, and feel the joy when everythings working in our browser! Or as agilists would say, it's demo time!

> > Watch Now
REST frontendREST backendWiring frontend and backend
Published: 03.10.2017
Difficulty: BEGINNERS
Runtime: 00:05:37

  The 5th breakthrough: Customer Detail View

Last but not least we want to see all the details of a specific customer, a customer detail call. It is quite similar to the GET call we implemented a couple of episodes before, but with a @PathVariable annotation sprinkled on top.

> > Watch Now
RESTHTTP GETCRM Detail Call
Published: 12.09.2017
Difficulty: BEGINNERS
Runtime: 00:03:39

  Creating the HTML/Javascript for our CRM Frontend

Our CRM is going to be a nice, little webpage. You will be able to list, search, edit etc. customers. For that we will use a little bit of HTML, with a little bit of Bootstrap (CSS) and JQuery (JS) sprinkled on top. Watch this episode to step into the shoes of a frontend developer, who is going to consume the REST services we are going to build later on.

> > Watch Now
JavascriptFrontendHTMLCSSJQuery
Published: 11.09.2017
Difficulty: BEGINNERS
Runtime: 00:05:29

  The 4th breakthrough: Deleting a customer

What would be nicer than deleting these pesky customers, that we don't want anymore, from our database? That's where the delete REST calls come in. An along the way we are going to learn how to create an HTTP method, that returns no response body, but only a HTTP status code.

> > Watch Now
RESTHTTP DELETEHTTP PUT
Published: 07.09.2017
Difficulty: BEGINNERS
Runtime: 00:04:50

  The third breakthrough: Updating a customer

After being able to create and get customers, we now want to be able to update them. We are going to delve into creating a PUT REST controller method in this episode, including working with exceptions that later on turn into nice HTTP status codes, like 404, or something else.

> > Watch Now
RESTHTTP DELETEHTTP PUT
Published: 06.09.2017
Difficulty: BEGINNERS
Runtime: 00:08:40

  The second breakthrough: Creating a new customer

Simply finding all customers doesn't make much sense, if we don't have the ability to create new customers. We will implement and automatically test that functionality in this episode. After this episode you will be able to go to the CRM webpage, and add new customers to the system.

> > Watch Now
RESTHTTP Post
Published: 27.08.2017
Difficulty: BEGINNERS
Runtime: 00:06:18

  The first breakthrough: Finding all customers

When you are building a REST services it helps to achieve a breakthrough pretty quickly. That's what we will do in this episode. We will create the REST controllers to select all customers from our system, and even better, we will also properly test our REST controller. After this episode, you will be able to fire up the project, go to the CRM website, and retrieve a list of customers. All, automatically tested!

> > Watch Now
RESTHTTP GET
Published: 22.08.2017
Difficulty: BEGINNERS
Runtime: 00:08:07

  A quick primer. REST, best practices

We don't have to reinvent the wheel when it comes to designing and implementing a REST service. In this episode we will have a thorough look at how we should design our REST service, i.e. what urls should look like, what HTTP methods to use, versioning etc. etc. Don't miss this "strategic" episode, as it is quite essential for all other next episodes.

> > Watch Now
REST API DesignREST Services
Published: 21.08.2017
Difficulty: BEGINNERS
Runtime: 00:02:38

  Creating the domain classes: Customer

We are going to build a CRM system, so our domain is going to revolve around Customers. In this episode we will quickly create the domain class, that our entire projects depends upon.

> > Watch Now
Domain DrivenJava
Published: 18.08.2017
Difficulty: BEGINNERS
Runtime: 00:02:46

  Creating and preparing our Spring REST services project with Maven

We start at the very beginning, by creating an empty project skeleton with Maven. I chose Maven over Gradle in this series, to also showcase the Maven wrapper, which is very similar to the Gradle wrapper. In any case, this episode will get you up and running for every REST project you might want to start.

> > Watch Now
MavenProject Setup
Published: 17.08.2017
Difficulty: BEGINNERS
Runtime: 00:02:51

  What changes when we use Spring and @Transactional?

What does Spring's @Transactional have to do with the LazyInitializationException? How can you prevent the LazyInitializationException with Spring? What's the difference to using plain Hibernate? Find out in this episode.

> > Watch Now
LazyInitializationExceptionSpring Transaction Management@Transactional
Published: 30.07.2017
Difficulty: BEGINNERS
Runtime: 00:05:07

  The most common reason for a LazyInitializationException (and 3 solutions!)

In this episode you will learn how to manually trigger a LazyInitializationException, by trying to access Hibernate objects AFTER you closed the database connection. Then afterwards, we are going to look at three solutions to fix the exception, each with its own advantages and disadvantages.

> > Watch Now
LazyInitializationExceptionHibernate HQL QueriesHQL Join FetchFetchType EAGERHibernate.initialize
Published: 27.07.2017
Difficulty: BEGINNERS
Runtime: 00:08:05

  The basics: What does Hibernate really load from the database? (Or: Meet Proxies).

A bit of much needed background info on Hibernate proxies and collections. You will learn what Hibernate really loads from the database, when we execute a SQL search for all the episodes of a series.

> > Watch Now
HibernateLazy LoadingLazyInitializationExceptionProxies
Published: 25.07.2017
Difficulty: BEGINNERS
Runtime: 00:05:23

  Installing Clink - Putting cmd.exe on roids

On Windows, cmd.exe is your command prompt. But it is also a bit limited, compared to most (L)unix shells. There is a tiny little tool called Clink, which enhances your cmd.exe with a lot of great features. In this episode you will learn how you install Clink and what it can do for you.

> > Watch Now
Clinkcmd.exeWindows ShellBash
Published: 18.07.2017
Difficulty: BEGINNERS
Runtime: 00:02:38

  Forwarding our data to the Accounting Department Web Service

We read-in and validated the xml data in the last episodes, now we have to do a small REST request and send the data to the Accounting Department. You will learn how to quickly set-up and test a simple POST rest-call in this episode and how to handle not only successfull responses, but also errors.

> > Watch Now
Java RESTRest ClientRest Error Handling
Published: 17.07.2017
Difficulty: BEGINNERS
Runtime: 00:06:24

  Effectively saving all process data to the database, with JDBC

Remember, we also want all the data that we processed in our database. In this episode we will use JDBC with a file-based H2 database and save as much as we can to the database, for later querying and displaying in, say, an admin web application. Simple, but very effective.

> > Watch Now
JDBCJava CRUDH2 Database
Published: 15.07.2017
Difficulty: BEGINNERS
Runtime: 00:08:05

  Writing the .xml validation part

It's time for validating the xml data, which we read in in the last episode. Validating means a quick schema validation, as well as some other basic validations. You will work with the Java XML apis in this episode and learn how to quickly handle any XML you might encounter in the future in your own work.

> > Watch Now
Java XMLSchema ValidationXSDJava File API
Published: 14.07.2017
Difficulty: BEGINNERS
Runtime: 00:08:39

  Reading in our .xml files

Now that we have hooked up our virtual filesystem, we can jump right into reading in our credit card data xml files. In this episode you will learn how to write the 'read' functionality for our system, with the new Java Paths API, including tests.

> > Watch Now
java.nioJava File ApiDirectoryStreamGlob
Published: 06.07.2017
Difficulty: BEGINNERS
Runtime: 00:05:59

  Makeing life easy with a virtual file system, called JimFS

Our project is about reading in files and processing them. When we write tests, we could of course simply write and read the files from our local harddrive, but that can get messy. Instead, I'll show you how to work with a fantastic little virtual file system, called JimFS, in this episode. You also learn about its advantages and disadvantages compared to your usual filesystems.

> > Watch Now
JimFSJava FilesystemsJava File APIjava.nio
Published: 05.07.2017
Difficulty: BEGINNERS
Runtime: 00:03:53

  Creating the domain classes: Series + Collection<Episodes>

Hibernate and the database tables are all set-up, now it's time to create the Java mappings for our series and episodes tables. You will learn about basic Hibernate mappings, as well as simple @OneToMany relationships.

> > Watch Now
@Entity@Table@OneToMany@ManyToOneBasic Hibernate Mappings
Published: 02.07.2017
Difficulty: BEGINNERS
Runtime: 00:05:35

  Setting up Hibernate

Now we have to connect our local H2 database with Hibernate and that's what we will do in this episode. You will learn how to setup and correctly configure Hibernate's SessionFactory from scratch in this episode.

> > Watch Now
HibernateSession Factoryhibernate.cfg.xml
Published: 29.06.2017
Difficulty: BEGINNERS
Runtime: 00:03:41

  Creating the needed database tables for our LazyInitializationException project

We are going to keep things simple: Imagine you are building a website for screencasts, just like the marcobehler.com website. So you are going to have episodes and series, and we are going to create database tables for both of these, in this episode.

> > Watch Now
Database TablesH2Create SQL
Published: 07.06.2017
Difficulty: BEGINNERS
Runtime: 00:05:40

  Creating and preparing our LazyInitializationException project with Gradle

Let's create a small project, to demonstrate how exactly the LazyInitializationException works. In this episode you will setup a plain vanilla gradle project, with Hibernate and H2 embedded database dependencies.

> > Watch Now
HibernateGradleProject Setup
Published: 06.06.2017
Difficulty: BEGINNERS
Runtime: 00:02:49

  Creating a mock Accounting Department Web Service

In the requirements episode I talked about having an existing third-party auditing service that we need to forward our data to. In this episode I'll show you a handy little trick on how to implement a mock for such a service, or any web service, in just a few lines.

> > Watch Now
Mock Web ServiceJetty
Published: 24.05.2017
Difficulty: BEGINNERS
Runtime: 00:04:10

  Creating the Project With Gradle and Adding all Dependencies

We know what we want to build, now we have just do it. This episode covers the complete project setup with Gradle, creating a project and adding all needed dependencies so that we can start to do some real programming.

> > Watch Now
GradleProject Setup
Published: 23.05.2017
Difficulty: BEGINNERS
Runtime: 00:02:31

  What we want to build : Our shiny Fintech-Startup Customer Requirements

Imagine we are working for a PayPal-like financial startup. So there are customers, bank accounts, credit cards etc. And in this episode you will learn what exactly we want to build, to start our Microservice journey. Strongly recommended for all other episodes of this series.

> > Watch Now
Project RequirementsFintechMicroservices
Published: 22.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:46

  Installing Gradle - On Windows

A popular build system in the Java world is called Gradle. Learn how to install and configure it in less than 5 minutes.

> > Watch Now
GradleGetting StartedInstalling GradleJavaWindows
Published: 17.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:09

  Installing Maven - On Windows

A popular build system in the Java world is called Maven. Learn how to install and configure it in less than 5 minutes.

> > Watch Now
MavenGetting StartedInstalling MavenJavaWindows
Published: 16.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:20

  Installing Mercurial - On Windows

A bit less popular than Git, Mercurial is still a great version control system that a lot of companies and projects use. In this episode you'll learn how to install it on windows and configure it with sane defaults for a Java developer.

> > Watch Now
MercurialMercurial for Java Developers
Published: 15.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:21

  Installing Git - On Windows

A lot of open companies and open source projects are using Git as a version control system. In this episode you'll learn how to install it on windows and configure it with sane defaults for a Java developer.

> > Watch Now
GitGit for Java Developers
Published: 12.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:46

  Installing the JDK - on Ubuntu Linux

If you want to get started with developing in Java, there is only one thing you need. The Java Development Kit, also called JDK. But there's multiple different ones out there, like the Oracle JDK or OpenJDK and even multiple versions! . Find out which one to download and install in this episode - for a Ubuntu Linux workstation.

> > Watch Now
JavaJDKOracle JDKOpenJDKUbuntuLinux
Published: 11.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:36

  Installing the JDK - on Windows

If you want to get started with developing in Java, there is only one thing you need. The Java Development Kit, also called JDK. But there's multiple different ones out there, like the Oracle JDK or OpenJDK and even multiple versions! Find out which one to download and install in this episode - for a Windows workstation.

> > Watch Now
JavaJDKOracle JDKOpenJDKWindows
Published: 10.05.2017
Difficulty: BEGINNERS
Runtime: 00:03:36

  Receiving Dates with HTTP GET or POST

What if you want to send a date as a string or int (think: yyyy-MM-dd or 1493277486) to a rest server and on the server want a nicely converted date object instead? You'll learn to do exactly that in this episode, including a nice little Spring Boot feature regarding dates.

> > Watch Now
SpringSpring Boot@RestControllerjava.util.Date@DateTimeFormat
Published: 08.05.2017
Difficulty: BEGINNERS
Runtime: 00:05:06

  How to delete records (users) - With plain Hibernate

Last but not least, we want to be able to delete records, or in our case users, from the database again. In this screencast you will learn how to delete one or many records from a database table with Hibernate.

> > Watch Now
SQL DeleteHibernateHQL
Published: 03.05.2017
Difficulty: BEGINNERS
Runtime: 00:02:36

  What's the difference between the java.persistence and the org.hibernate annotations?

Sometimes beginners get confused when they are about to import annotations like the @Table or @Entity annotation and then there are multiple options to choose from. I'll show you _which_ annotations you should use _when_ in this screencast.

> > Watch Now
JPAHibernatePersistence Annotations
Published: 27.04.2017
Difficulty: BEGINNERS
Runtime: 00:03:32

  Meet the EntityManager (or a quick JPA upgrade for our user management)

In case you did not know, there's something out there called JPA, the Java Persistence API. Hibernate speaks JPA and in this screencast you will find out how to use Hibernate with JPA and why you should or should not do it.

> > Watch Now
JPAHibernateEntityManagerEntityManagerFactory
Published: 25.04.2017
Difficulty: BEGINNERS
Runtime: 00:07:06

  How to easily change Spring Boot's embedded HTTP server port

If you are running Spring Boot in embedded mode, there's three ways how to change the servers.port, away from 8080. In this screencast you'll learn all three of them.

> > Watch Now
Spring BootEmbeddedJettyTomcatWeb Server
Published: 16.04.2017
Difficulty: BEGINNERS
Runtime: 00:03:04

  Use Spring Boot With Existing Glassfish Or Tomcat

What if you want to use your existing Glassfish or Tomcat server with Spring Boot? In this episode you will learn how to do traditional .war deployments with Spring Boot.

> > Watch Now
Spring BootGlassfishTomcatWar
Published: 15.04.2017
Difficulty: BEGINNERS
Runtime: 00:06:21

  Which web server/servlet container should you chose (and how?) for greenfield Spring Boot projects?

By default you do not have to install a web server to run Spring Boot applications. That's because Spring Boot comes with a choice of _embedded_ web servers. And in this episode, you will learn which one to chose for your greenfield project and how.

> > Watch Now
Spring BootJettyTomcatWeb Server
Published: 11.04.2017
Difficulty: BEGINNERS
Runtime: 00:04:19

  How to select and update records (users) - With plain Hibernate

A user management app would not make much sense if we only could save users to the database, like we did in the previos screencast. This time we want to select and update our saved users as well! Additionally we are going to learn more about the fancy features of a Hibernate Session.

> > Watch Now
SQL SelectSQL UpdateHibernateHQL
Published: 06.04.2017
Difficulty: BEGINNERS
Runtime: 00:07:11

  How to save records (users) to the database - With plain Hibernate

Imagine you want to build a simple usermanagement, i.e. register or save users to a database. A user has an id, an email and a password, real simple. And in this screencast we will learn how to do just that: Save a user to the database with Hibernate.

> > Watch Now
Hibernate ConfigurationHibernate.cfg.xmlHibernateSQLInsert IntoHQL
Published: 05.04.2017
Difficulty: BEGINNERS
Runtime: 00:07:07

  Getting a head start with an embedded database

Sure, you could install MySQL or Postgres on your local developer machine. But I am going to show you a better and faster way: Using the fantastic H2 database available at http://www.h2database.com

> > Watch Now
H2DatabaseJDBC
Published: 24.02.2017
Difficulty: BEGINNERS
Runtime: 00:04:19

  Opening up connections to the database (or meet the SessionFactory)

In the previous screencast you learned how to open up connections to our H2 Database with plain JDBC. Now you are going to learn about doing the same thing with Hibernate. Your first, vanilla Hibernate connection to the database. Yay!

> > Watch Now
H2DatabaseHibernate
Published: 24.02.2017
Difficulty: BEGINNERS
Runtime: 00:04:51

  Enable SQL Logging - With Plain Hibernate

Enabling SQL Logging with plain Hibernate features. (no log4j, logback or something similar)

> > Watch Now
H2DatabaseHibernateSQL Logging
Published: 24.02.2017
Difficulty: BEGINNERS
Runtime: 00:03:21

  The simplest and fastest Hibernate 5.x project setup (also, which Hibernate Version to choose?)

Getting started with a greenfield Hibernate project might look like a pain, but it doesn't have to be. Learn how you get up and running with plain Hibernate 5.x in no time.

> > Watch Now
Published: 10.02.2017
Difficulty: BEGINNERS
Runtime: 00:03:21

  Being picky with our /rest/{paths}/ - (or: all things you must know about @PathVariables)

What is a @PathVariable and what are its dirty little secrets (hint: regex)? Find out here!

> > Watch Now
Spring Boot@RestController@PathVariableRegex
Published: 09.02.2017
Difficulty: BEGINNERS
Runtime: 00:05:26

  Receiving simple values (or: strings, ints, dates etc) with HTTP GET

How can you receive simple values like Strings or Numbers or Dates with your Rest Server via HTTP GET? Find out here!

> > Watch Now
Spring Boot@RequestParamHTTP GET
Published: 12.01.2017
Difficulty: BEGINNERS
Runtime: 00:05:59

  Receiving simple values (or: strings, ints, dates etc) with HTTP POST

How can you receive simple values like Strings or Numbers or Dates with your Rest Server via HTTP POST? Find out here!

> > Watch Now
Spring Boot@RestController@RequestParamHTTP POST
Published: 12.01.2017
Difficulty: BEGINNERS
Runtime: 00:04:54

  Receiving complex JSON and XML

How can you receive simple json or xml or complex forms with your Rest Server? Find out here!

> > Watch Now
Spring Boot@RestController@RequestBodyJSONXML
Published: 12.01.2017
Difficulty: BEGINNERS
Runtime: 00:05:26

  The Perfect Project Setup with Maven

Are you wondering what the simplest, fastest and best method is to get started with a Spring Boot project based on Maven? Just watch this video.

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:02:39

  The Perfect Project Setup with Gradle

Are you wondering what the simplest, fastest and best method is to get started with a Spring Boot project based on Gradle? Just watch this video.

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:03:13

  Hello World - Accepting GET Requests

Want to get a quick start with Spring Boot and get a fully working GET Rest Controller working in a couple of minutes? . Then this video is for you.

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:03:57

  Hello World - Returning JSON

Sending and receiving plain text is boring. Let's send some JSON instead!

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:03:38

  Hello World - Accepting POST Requests

"GET"ting boring? Try "POSTING" and receiving some JSON, instead.

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:04:03

  Deploying Spring Boot Applications with Maven

Deploying Java application has never been easier. Find out what Spring boot has to offer.

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:02:32

  Deploying Spring Boot Applications with Gradle

Deploying Java application has never been easier. Find out what Spring boot has to offer

> > Watch Now
Published: 28.12.2016
Difficulty: BEGINNERS
Runtime: 00:02:42