The labs on this site need JavaScript to run. The same content is written out below.
Fundamentals
Before looking at how a concept behaves in detail, these labs show what the concept looks like in code and what happens without it.
Java
- Variables and types — What is a variable, and what does a type decide?
- Methods — What is a method, and how is declaring it different from calling it?
- Classes and objects — How is a class different from an object?
- References — What does it mean to store an object in a variable?
- null — What is null, and why does NullPointerException happen?
- Constructors — What is a constructor, and when does it run?
- static — What is static, and what changes when you add it?
- Inheritance — What does a class inherit through extends?
- Interfaces — What does an interface look like in code, and what does it decide?
- Exceptions — What is an exception, and what does try-catch do?
- Generics — What does the <String> in List<String> do?
- List and Map — What do List and Map hold, and how do you get things out?
- Lambdas — What is a lambda a shorter way to write?
- Streams — What is a stream, and how is it different from a for loop?
- Annotations — What is an annotation, and what happens when you add one?
- Threads — What is a thread, and what does start() do?
- Locks (synchronized) — What is a lock, and what happens without one?
- Thread pools — What is a thread pool, and how is it different from creating a thread every time?
- Compilation and the JVM — How does Java code run?
- File I/O — What do you exchange when you write to and read from a file?
- Libraries and dependencies — What is a library, and what happens when it is missing?
Spring
- Beans — What is a bean, and how does it differ from an object you just created?
- Dependency injection — What does dependency injection do for you?
- AOP and proxies — What is a proxy, and how does Spring step in before and after my method?
- Servlets — Which class is called a servlet?
- Controllers — Which class is called a controller?
- Configuration files — What is a configuration file, and how is it different from writing values in the code?
- JDBC — How does Java code send SQL to the database?
- @Transactional — What does @Transactional group together?
- Spring Boot — What does Spring Boot do for you?
- Test code — What is test code, and who decides whether a test passes or fails?
JPA
- Entities — What is an entity, and how does it differ from an ordinary class?
- Persistence context — What is a persistence context, and what does it do for you?
- Repositories — What is a repository, and who creates the implementation?
- Associations — What is an association, and what does @ManyToOne do for you?
- Lazy fetching — When is an associated object read from the database?
- JPQL — What is JPQL, and how is it different from SQL?
Database
- Tables, rows, and columns — What does a table look like, and what are rows and columns?
- Primary keys — What is a primary key, and what changes without one?
- Foreign keys — What is a foreign key, and what changes without one?
- WHERE — What does WHERE decide, and what happens without it?
- Joins — What does a join attach, and what does ON decide?
- GROUP BY and aggregation — What does GROUP BY group, and what do COUNT and SUM count?
- Indexes — What is an index, and what changes when there is none?
- Transactions — What does a transaction group together, and what do COMMIT and ROLLBACK do?
- Row locks — What happens when two transactions try to change the same row?
- Storage and durability — Does committed data stay after the server is turned off?
Networking
- IP addresses and ports — What do an IP address and a port each point to?
- TCP connections — What does it mean to open a connection, and what happens if you send without one?
- URLs — What parts is a URL made of?
- DNS — What does DNS turn a name into?
- HTTP requests — What does an HTTP request look like as text?
- HTTP methods — How is GET different from POST?
- HTTP responses — What does an HTTP response look like as text?
- Cookies — What is a cookie, and who stores it and who sends it?
- JSON — What does JSON look like, and what mistakes make it unreadable?
- HTTPS — How is HTTPS different from HTTP?
- Proxy servers — What is a proxy server, and what changes when it sits in between?
Security
- Authentication and authorization — How are authentication and authorization different?
- Sessions — What is a session, and where is the logged-in state remembered?
- Tokens — What is a token, and what does the server look at to trust it?
- Hashing — What is a hash, and why do we store passwords as hashes?
- Encryption — What is encryption, and what happens without the key?
- Origins — What is an origin, and why does the browser tell different origins apart?
- Input and injection — What happens when text typed by a user is read as code?
Architecture and operations
- Processes — What is a process, and what is separate when you run a program twice?
- Calling another server — How is a server calling another server different from calling a method?
- Load balancers — If you run several servers, which server does a request go to?
- Caches — What is a cache, and what do you gain and lose by using one?
- Message queues — What is a message queue, and how is it different from calling a server directly?
- Deployment — When does a running server change after you edit the code?
- Git commits and branches — What is a commit, and what does a branch point to?