A Maven project for learning Java during my free time. Most of the explanations are written directly in the code as Javadoc. I use tests to understand technical detail in different frameworks. You can run these tests using:
mvn clean install
This project is tested under Java 11 and Java 15.
Module | Description |
---|---|
Akka | Build highly concurrent, distributed, and resilient message-driven applications on the JVM https://akka.io |
AssertJ | AssertJ testing framework. |
Basic | Basic usage of Java core APIs. |
CLI | Apache Commons CLI. |
Date | Date manipulation using java.util.* and java.time.* . |
Elasticsearch | Elasticsearch: Open source, distributed, RESTful search engine |
Encoding | Encoding challenge in Java. |
gRPC | A high performance, open source universal RPC framework. https://www.grpc.io/ |
IO | Java File I/O. |
Immutables | Generate simple, safe and consistent value objects. https://immutables.github.io/ |
Jackson | Jackson, a high-performance JSON processor for Java. |
Java 8 | New functionality of Java 8, including filter, map, stream. |
Jetty | Jetty Server. |
JGit | Basic usages of JGit. |
JMH | Java Microbenchmark Harness (JMH). |
JSON | JSON conversion libraries in Java. |
JUnit 4 | JUnit 4 testing framework. |
JUnit 5 | JUnit 5 testing framework. |
Logback | Logback logging framework. |
Maven | Basic functionality of Maven. |
Mongo | The MongoDB database |
Mockito | Mockito, the most popular mocking framework for Java unit tests |
OCA | Oracle Certified Associate Java SE 8 |
OCP | Oracle Certified Professional Java SE 8 |
Reliability | Tips to make production more reliable. |
Rest | RESTful API using Jersey. |
Spring Boot | Spring boot. |
Spring Data MongoDB | Spring data integration for MongoDB. |
Typesafe Config | Typesafe Config, configuration library for JVM languages. |
XML | XML serialization, XPath, XSD. |
VAVR | Functional component library that provides persistent data types and functional control structures. |
Here are some blog posts that I wrote using the source code of this repository and related satellite repositories. Visit https://mincong.io to see the complete list.
- Why You Should Use Auto Value in Java?
- Introduction of Immutables
- Introduction to Google Error Prone
- Glob Expression Understanding
- Unzipping File in Java
- Fixng Comparator
- Understanding ISO-8859-1 / UTF-8
- Why Do We Need Completable Future?
- 3 Ways to Handle Exception In Completable Future
- How CompletableFuture is tested in OpenJDK?
- Using 100% CPU with ExecutorService.invokeAll()
Date manipulation using java.util.*
and java.time.*
.
- Using Java Time In Different Frameworks
- Controlling Time with Java Clock
- Convert Date to ISO 8601 String in Java
Mockito, the most popular mocking framework for Java unit tests. https://site.mockito.org
- Mockito: 3 Ways to Init Mock in JUnit 5
- Mockito: 3 Ways to Init Mock in JUnit 4
- Mockito: ArgumentCaptor
- Mockito: 4 Ways to Verify Interations
- Testing with GwtMockito
JUnit, the programmer-friendly testing framework for Java and the JVM:
- Use Auto Value and Jackson in REST API
- Jackson XML Mapper
- Vavr Jackson 1.0.0 Alpha 3 release notes
- Making Backward-Compatible Schema Changes in MongoDB
- Testing Elasticsearch With Docker And Java High Level REST Client
- Testing Elasticsearch with ESSingleNodeTestCase
- Elasticsearch: cat nodes API
- Elasticsearch: Scroll API in Java
- Indexing New Data in Elasticsearch
- Common Index Exceptions
- Wrap Elasticsearch Response Into CompletableFuture
- Discovery in Elasticsearch
- GC in Elasticsearch
- 18 Allocation Deciders in Elasticsearch
- Using Java Time in Different Frameworks
- DVF: Indexing New Documents
- DVF: Indexing Optimization
- DVF: Storage Optimization
- DVF: Snapshot And Restore
I use Google Java Code Style for this repo.