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.*andjava.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.