Need help with java-katas?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

254 Stars 50 Forks MIT License 95 Commits 4 Opened issues


One repo to rule them all. All Java Katas in one repo. #AllTestsGreenWithJDK16 #BuildsCleanWithJava15

Services available


Need anything else?

Contributors list

# 256,687
66 commits
# 22,535
7 commits
# 506,557
5 commits
# 550,431
3 commits
# 463,704
1 commit

= java-katas

image::[link=""] image:[link="LICENSE"] image:[link=""]

image:JavaKatas.png[Java Katas]

One repo to rule them all. Java code katas - using JUnit5

The java-katas is a code repository for learning various Java features.

== What is a kata (a code kata) ?

From http://wikipedia: Kata originally were teaching and training methods by which successful combat techniques were preserved and passed on. Practicing kata allowed a company of persons to engage in a struggle, using a systematic approaches, rather by practicing in a repetitive manner the learner develops the ability to execute those techniques and movements in a natural, reflex-like manner. Systematic practice does not mean permanently rigid. The goal is to internalize the movements and techniques of a kata; so they can be executed and adapted under different circumstances, without thought or hesitation. A novice’s actions will look uneven and difficult, while a master’s appear simple and smooth.

=== What is a code kata?

From Code Kata is an attempt to bring the element of practice to software development. A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many ways. Some are open-ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer.

Code katas were first introduced by Dave Thomas and are a great tool to practice programming something new.

== So, what is in this repo?

This Git repo is a collection of several code katas about features, utilities and APIs in Java language.

The general structure of each project is a maven quickstart project with a pom.xml, a src directory that contains at least two directories. Code Katas are available under the src/test/java while solutions are under src/solutions/java under each module. The code katas typically contain failing tests with TODO markers that need to be fixed in order to fix the test,

Remember, the src/solutions may not be the perfect way to solve the kata, maybe a solution you come up with is better. Feel free to submit a pull request if you think you have a better solution than the one you find.

=== Current katas

:: Understand Java Reflection and
, then, learn the alternates for those in Method Handles API and VarHandles API in more recent version of Java.

:: Learn the Java Time API (introduced in Java 8), that replaces the java.util.Date and java.util.Calendar with a more humane and extensible API.

:: Learn the Java Optional API, as a replacement for null-checks and unexpected
s that crop up causing developer unhappiness and/or application instability issues.

:: Learn Java Lambdas, a feature that allows for closure-like syntax, and the ability to replace anonymous classes with functional blocks.

:: Learn Java CompletableFuture API, an API that allows for synchronous as well as asynchronous tasks with pipelines and task chaining/combinations with many ways to handle exceptions, with and without recovery paths.

More katas will be added, feel free to contribute if you have ideas.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.