> For the complete documentation index, see [llms.txt](https://alexander-rogalsky.gitbook.io/java-patterns/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alexander-rogalsky.gitbook.io/java-patterns/readme.md).

# Getting Started

![Java Design patterns](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/banner.png)

[![Nullable labs](https://img.shields.io/badge/made%20by-Nullables%20Labs-blue.svg?style=flat-square\&longCache=true\&logo=data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIwIDMwMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNOTguODI0IDE0OS40OThjMCAxMi41Ny0yLjM1NiAyNC41ODItNi42MzcgMzUuNjM3LTQ5LjEtMjQuODEtODIuNzc1LTc1LjY5Mi04Mi43NzUtMTM0LjQ2IDAtMTcuNzgyIDMuMDkxLTM0LjgzOCA4Ljc0OS01MC42NzVhMTQ5LjUzNSAxNDkuNTM1IDAgMCAxIDQxLjEyNCAxMS4wNDYgMTA3Ljg3NyAxMDcuODc3IDAgMCAwLTcuNTIgMzkuNjI4YzAgMzYuODQyIDE4LjQyMyA2OS4zNiA0Ni41NDQgODguOTAzLjMyNiAzLjI2NS41MTUgNi41Ny41MTUgOS45MjF6TTY3LjgyIDE1LjAxOGM0OS4xIDI0LjgxMSA4Mi43NjggNzUuNzExIDgyLjc2OCAxMzQuNDggMCA4My4xNjgtNjcuNDIgMTUwLjU4OC0xNTAuNTg4IDE1MC41ODh2LTQyLjM1M2M1OS43NzggMCAxMDguMjM1LTQ4LjQ1OSAxMDguMjM1LTEwOC4yMzUgMC0zNi44NS0xOC40My02OS4zOC00Ni41NjItODguOTI3YTk5Ljk0OSA5OS45NDkgMCAwIDEtLjQ5Ny05Ljg5NyA5OC41MTIgOTguNTEyIDAgMCAxIDYuNjQ0LTM1LjY1NnptMTU1LjI5MiAxODIuNzE4YzE3LjczNyAzNS41NTggNTQuNDUgNTkuOTk3IDk2Ljg4OCA1OS45OTd2NDIuMzUzYy02MS45NTUgMC0xMTUuMTYyLTM3LjQyLTEzOC4yOC05MC44ODZhMTU4LjgxMSAxNTguODExIDAgMCAwIDQxLjM5Mi0xMS40NjR6bS0xMC4yNi02My41ODlhOTguMjMyIDk4LjIzMiAwIDAgMS00My40MjggMTQuODg5QzE2OS42NTQgNzIuMjI0IDIyNy4zOSA4Ljk1IDMwMS44NDUuMDAzYzQuNzAxIDEzLjE1MiA3LjU5MyAyNy4xNiA4LjQ1IDQxLjcxNC01MC4xMzMgNC40Ni05MC40MzMgNDMuMDgtOTcuNDQzIDkyLjQzem01NC4yNzgtNjguMTA1YzEyLjc5NC04LjEyNyAyNy41NjctMTMuNDA3IDQzLjQ1Mi0xNC45MTEtLjI0NyA4Mi45NTctNjcuNTY3IDE1MC4xMzItMTUwLjU4MiAxNTAuMTMyLTIuODQ2IDAtNS42NzMtLjA4OC04LjQ4LS4yNDNhMTU5LjM3OCAxNTkuMzc4IDAgMCAwIDguMTk4LTQyLjExOGMuMDk0IDAgLjE4Ny4wMDguMjgyLjAwOCA1NC41NTcgMCA5OS42NjUtNDAuMzczIDEwNy4xMy05Mi44Njh6IiBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KPC9zdmc+) ](https://nullables.io/)[![Java patterns](https://img.shields.io/badge/project-JavaPatterns-blue.svg?style=flat-square) ](https://github.com/AlexRogalskiy/java-patterns/)[![Java patterns](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/awesome.svg) ](https://alexander-rogalsky.gitbook.io/java-patterns/)[![Java patterns](https://badges.frapsoft.com/os/v3/open-source.png)](https://github.com/AlexRogalskiy/java-patterns/)

[![GitHub version](https://badge.fury.io/gh/AlexRogalskiy%2Fjava-patterns.svg)](https://badge.fury.io/gh/AlexRogalskiy%2Fjava-patterns) ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/AlexRogalskiy/java-patterns) ![GitHub Release Date](https://img.shields.io/github/release-date/AlexRogalskiy/java-patterns) ![Lines of code](https://tokei.rs/b1/github/AlexRogalskiy/java-patterns?category=lines) ![GitHub closed issues](https://img.shields.io/github/issues-closed/AlexRogalskiy/java-patterns) ![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/AlexRogalskiy/java-patterns) ![GitHub repo size](https://img.shields.io/github/repo-size/AlexRogalskiy/java-patterns) ![GitHub last commit](https://img.shields.io/github/last-commit/AlexRogalskiy/java-patterns) ![GitHub](https://img.shields.io/github/license/AlexRogalskiy/java-patterns) ![GitHub language count](https://img.shields.io/github/languages/count/AlexRogalskiy/java-patterns) ![GitHub search hit counter](https://img.shields.io/github/search/AlexRogalskiy/java-patterns/goto) ![GitHub Repository branches](https://badgen.net/github/branches/AlexRogalskiy/java-patterns) ![GitHub Repository dependents](https://badgen.net/github/dependents-repo/AlexRogalskiy/java-patterns)

[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#github.com/AlexRogalskiy/java-patterns/) [![first-timers-only Friendly](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](http://www.firsttimersonly.com/) [![Open Source Helpers](https://www.codetriage.com/alexrogalskiy/java-patterns/badges/users.svg)](https://www.codetriage.com/alexrogalskiy/java-patterns) [![The Changelog](https://img.shields.io/badge/The%20Changelog-%23363-61c192.svg)](https://changelog.com/jsparty) [![Discuss](https://img.shields.io/badge/-Discuss-blue)](https://github.com/AlexRogalskiy/java-patterns/discussions) [![Sourcegraph](https://sourcegraph.com/github.com/AlexRogalskiy/java-patterns/-/badge.svg)](https://sourcegraph.com/github.com/AlexRogalskiy/java-patterns?badge) [![DOI](https://zenodo.org/badge/329967283.svg)](https://zenodo.org/badge/latestdoi/329967283) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fjava-patterns.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fjava-patterns?ref=badge_shield) [![Renovatebot](https://badgen.net/badge/renovate/enabled/green?cache=300)](https://renovatebot.com/) [![Dependabot](https://img.shields.io/badge/dependabot-enabled-1f8ceb.svg?style=flat-square)](https://dependabot.com/) [![NewReleases](https://newreleases.io/badge.svg)](https://newreleases.io/github/AlexRogalskiy/java-patterns) [![Hits-of-Code](https://hitsofcode.com/github/alexrogalskiy/java-patterns?branch=master)](https://hitsofcode.com/github/alexrogalskiy/java-patterns?branch=master/view?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/97bd71c53e8145a264ec/maintainability)](https://codeclimate.com/github/AlexRogalskiy/java-patterns/maintainability) [![ComVer](https://img.shields.io/badge/ComVer-compliant-brightgreen.svg)](https://github.com/AlexRogalskiy/java-patterns/tags) [![GitHub Super-Linter](https://github.com/alexrogalskiy/java-patterns/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter) [![Documentation Status](https://readthedocs.org/projects/java-patterns/badge/?version=latest)](https://java-patterns.readthedocs.io/en/latest/?badge=latest) [![NetflixOSS Lifecycle](https://img.shields.io/osslifecycle/AlexRogalskiy/java-patterns.svg)](/java-patterns/readme.md) [![CI](https://github.com/AlexRogalskiy/java-patterns/workflows/CI/badge.svg)](https://github.com/AlexRogalskiy/java-patterns/actions/workflows/build.yml) [![first-timers-only](https://img.shields.io/badge/first--timers--only-friendly-blue.svg?style=flat-square)](https://www.firsttimersonly.com/)

## 🎹 *Table of contents*

* [Java Design Patterns](#java-design-patterns)
  * [*Table of contents*](#-table-of-contents)
  * [*Summary*](#-summary)
  * [*Documentation*](#-documentation)
  * [*Kubernetes*](#-kubernetes)
  * [*Statistics*](#-statistics)
  * [*Versioning*](#-versioning)
  * [*Authors*](#-authors)
  * [*Contributing*](#-contributing)
  * [*Visitor stats*](#-visitor-stats)
  * [*Licensing*](#-licensing)
  * [*Development Support*](#-development-support)
  * [*Acknowledgement*](#-acknowledgement)
  * [*OpenGraph Card*](#-opengraph-card)
  * [*Feeds and Podcasts*](#-feeds-and-podcasts)
    * [*Reddit posts*](#reddit-posts)
    * [*InfoWorld posts*](#infoworld-posts)
    * [*Let's talk posts*](#lets-talk-posts)
    * [*Random thoughts posts*](#random-thoughts-posts)
    * [*Better code posts*](#better-code-posts)
    * [*Inside Java posts*](#inside-java-posts)
    * [*Java programmer posts*](#java-programmer-posts)
    * [*Dreamix posts*](#dreamix-posts)
    * [*Plumbr posts*](#plumbr-posts)
    * [*Thorben Janssen posts*](#thorben-janssen-posts)
    * [*Redhat posts*](#redhat-posts)
    * [*JavaCodeGeeks posts*](#javacodegeeks-posts)
    * [*DevCases posts*](#devcases-posts)

[*(back to top)*](#java-design-patterns)

## ☝ *Summary*

![Java](https://img.shields.io/badge/java-%23ED8B00.svg?logo=java\&logoColor=white) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://img.shields.io/badge/Project%20Status-Active-brightgreen) ](https://www.repostatus.org/#active)[![Project created status](https://badges.pufler.dev/created/AlexRogalskiy/java-patterns) ](https://badges.pufler.dev)[![Project updated status](https://badges.pufler.dev/updated/AlexRogalskiy/java-patterns)](https://badges.pufler.dev)

***Java Design Patterns*** is intended to provide various use case scenarios and architectural concepts on prototyping adaptive applications.

```
mkdocs.yml    # Configuration file.
docs/
    readme.md  # General information
    summary.md  # Table of contents
    units/
        design-patterns.md # Design patterns and architectural concepts
        scenarios.md # Scenarios in practice
        use-cases.md # Typical use cases
    user-guide/
        changelog.md # Changelog page
        code_of_conduct.md # Code of conduct page
        code_owners.md # Code owners page
        dependency.md # Dependency page
        description.md # Description page
        faq.md # FAQ page
        getting-started.md # Getting started page
        troubleshooting.md # Troubleshooting page
        upgrade.md # Upgrade page
    reporting/
        info.md # Informational page
        issue_template.md # Issue template page
        bug_report.md # Bug report template
        custom_report.md # Custom report template
        feature_request_template.md # Feature request template
        pull_request_template.md # Pull request template
    contributing/
        info.md # Contributing page
    links/
        info.md # Links page
```

[*(back to top)*](#java-design-patterns)

## 📝 *Documentation*

The Website documentation is provided by [gitbook](https://www.gitbook.com/) and can be discovered at url:

[***Java Patterns***](https://alexander-rogalsky.gitbook.io/java-patterns)

To enable documentation serving at ***localhost*** you can run the following script

```shell
./scripts/build-docs.sh
```

otherwise, the next steps should be considered:

1\) Install/upgrade ***pip*** command-line utility:

```shell
pip install --upgrade pip
```

or if you need to install ***pip*** for the first time:

```shell
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
python get-pip.py
```

2\) Install the ***mkdocs*** package using pip:

```shell
pip install mkdocs
```

or more conveniently for Windows subsystem:

```shell
python -m pip install mkdocs --quiet
python -m mkdocs
```

3\) Install the material theme for the website:

```shell
python -m pip install mkdocs-material --quiet
python -m pip install markdown-include --quiet
...
(see requirements.txt)
...
```

4\) Start the server at ***localhost*** by running the following command:

```shell
python -m mkdocs build --clean --config-file mkdocs.yml
python -m mkdocs serve --verbose --dirtyreload
```

5\) Deploy to GitHub pages:

```shell
python -m mkdocs --verbose gh-deploy --force --remote-branch gh-pages
```

5\) Open up [localhost](http://127.0.0.1:8000/) in browser to get the default documentation homepage.

[*(back to top)*](#java-design-patterns)

## 🧶 *Kubernetes*

Running k8s cluster with tilt command by acquiring k8s deployment configuration:

```shell
tilt up
```

Shutting down k8s cluster with provisioned resources removal:

```shell
tilt down --delete-namespaces
```

[*(back to top)*](#java-design-patterns)

## ⏰ *Statistics*

![Documentation PageSpeed result dashboard](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/reports/pagespeedresultmobile.svg)

[*(back to top)*](#java-design-patterns)

## 📝 *Versioning*

The project uses [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/AlexRogalskiy/java-patterns/tags).

[*(back to top)*](#java-design-patterns)

## 🌹 *Authors*

***Java Patterns*** is maintained by the following GitHub team-members:

* [![Author](https://img.shields.io/badge/author-AlexRogalskiy-FB8F0A)](https://github.com/AlexRogalskiy)

with community support please contact with us if you have some question or proposition.

[*(back to top)*](#java-design-patterns)

## 💕 *Contributing*

[![Contributors Display](https://badges.pufler.dev/contributors/AlexRogalskiy/java-patterns?size=50\&padding=5\&bots=true)](https://badges.pufler.dev)

Please read [CONTRIBUTING.md](https://github.com/AlexRogalskiy/java-patterns/blob/master/docs/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us ([emoji key](https://allcontributors.org/docs/en/emoji-key)).

More on information on project contributions can be found at [CHANGELOG.md](https://github.com/AlexRogalskiy/java-patterns/blob/master/docs/CHANGELOG.md).

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!

![GitHub contributors](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/contributors.png)

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) ![Github contributors](https://img.shields.io/github/all-contributors/AlexRogalskiy/java-patterns)

See also the list of [contributors](https://github.com/AlexRogalskiy/java-patterns/graphs/contributors) who participated in this project.

[![Edit with Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/AlexRogalskiy/java-patterns)

***Java Design Patterns*** has experimental support for *Gitpod*, a pre-configured development environment that runs in your browser. To use *Gitpod*, click the button below and sign in with GitHub. *Gitpod* also offers a browser add-on, though it is not required.

[![Open in CodeSandbox](https://img.shields.io/badge/Open%20in-CodeSandbox-blue?style=flat-square\&logo=codesandbox)](https://githubbox.com/AlexRogalskiy/java-patterns)

[*(back to top)*](#java-design-patterns)

## 🚨 *Visitor stats*

[![GitHub page hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FAlexRogalskiy%2Fjava-patterns\&count_bg=%2379C83D\&title_bg=%23555555\&icon=\&icon_color=%23E7E7E7\&title=hits\&edge_flat=true)](https://hits.seeyoufarm.com)

![GitHub stars](https://img.shields.io/github/stars/AlexRogalskiy/java-patterns?style=social) ![GitHub forks](https://img.shields.io/github/forks/AlexRogalskiy/java-patterns?style=social) ![GitHub watchers](https://img.shields.io/github/watchers/AlexRogalskiy/java-patterns?style=social)

[*(back to top)*](#java-design-patterns)

## ⚽ *Licensing*

***Java Patterns*** is distributed under LGPL version 3 or later, \[[License](https://github.com/AlexRogalskiy/java-patterns/blob/master/LICENSE.txt)]. LGPLv3 is additional permissions on top of GPLv3.

![image](https://user-images.githubusercontent.com/19885116/48661948-6cf97e80-ea7a-11e8-97e7-b45332a13e49.png)

[*(back to top)*](#java-design-patterns)

## 🌟 *Development Support*

Like ![Java Design patterns](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/icon.png) and ***Java Patterns*** ? Consider buying me a coffee :)

[![Become a Patron](https://img.shields.io/badge/Become_Patron-Support_me_on_Patreon-blue.svg?style=flat-square\&logo=patreon\&color=e64413)](https://www.patreon.com/alexrogalskiy) [![Buy Me A Coffee](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=buy%20me%20a%20coffee)](https://www.buymeacoffee.com/AlexRogalskiy) [![KoFi](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=ko-fi)](https://ko-fi.com/alexrogalskiy)

[*(back to top)*](#java-design-patterns)

## 👨‍👨‍👧‍👦 *Acknowledgement*

[![Stargazers repo roster for @AlexRogalskiy/java-patterns](https://reporoster.com/stars/AlexRogalskiy/java-patterns)](https://github.com/AlexRogalskiy/java-patterns/stargazers)

[![Stargazers over time](https://starchart.cc/AlexRogalskiy/java-patterns.svg)](https://starchart.cc/AlexRogalskiy/java-patterns)

[![Statistics report](https://cauldron.io/project/5121/stats.svg)](https://cauldron.io/project/5121)

[*(back to top)*](#java-design-patterns)

## 📎 *OpenGraph Card*

![OpenGraph card](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/opengraph-card.png)

[*(back to top)*](#java-design-patterns)

## 🔥 *Feeds and Podcasts*

### *Reddit posts*

* [Spring4Shell Details and Exploit code leaked](https://www.reddit.com/r/java/comments/tsdllr/spring4shell_details_and_exploit_code_leaked/)
* [Apple's Code-signing Quagmire](https://www.reddit.com/r/java/comments/tsd2cr/apples_codesigning_quagmire/)
* [Spring4Shell: 0-day RCE on Spring Core](https://www.reddit.com/r/java/comments/tscqlg/spring4shell_0day_rce_on_spring_core/)
* [Game Making Libraries + Engines in Java 2022](https://www.reddit.com/r/java/comments/tscojc/game_making_libraries_engines_in_java_2022/)
* [Where's Java Going In 2022?](https://www.reddit.com/r/java/comments/tsbleo/wheres_java_going_in_2022/)
* [Architecture design help](https://www.reddit.com/r/java/comments/tsb2tu/architecture_design_help/)
* [Maven is turning 20 today 🥳 To many more years of stable Java builds 🍻](https://www.reddit.com/r/java/comments/ts5urt/maven_is_turning_20_today_to_many_more_years_of/)
* [Memory leak due to improper exception handling](https://www.reddit.com/r/java/comments/ts4rfm/memory_leak_due_to_improper_exception_handling/)
* [Scaling Spring Batch processing with partitioning using Kafka](https://www.reddit.com/r/java/comments/ts190r/scaling_spring_batch_processing_with_partitioning/)
* [New in JDK 18: Reviewing Enhancements in the Latest JDK Release](https://www.reddit.com/r/java/comments/trufoj/new_in_jdk_18_reviewing_enhancements_in_the/)

[*(back to top)*](#java-design-patterns)

### *InfoWorld posts*

* [JDK 18: The new features in Java 18](https://www.infoworld.com/article/3630510/jdk-18-the-new-features-in-java-18.html#tk.rss_java)
* [JDK 19: Java 19 begins to take shape](https://www.infoworld.com/article/3653331/jdk-19-java-19-begins-to-take-shape.html#tk.rss_java)
* [Project Loom: Understand the new Java concurrency model](https://www.infoworld.com/article/3652596/project-loom-understand-the-new-java-concurrency-model.html#tk.rss_java)
* [Java 19 could be big](https://www.infoworld.com/article/3652336/java-19-could-be-big.html#tk.rss_java)
* [Java 8 still dominates, but Java 17 wave is coming – survey](https://www.infoworld.com/article/3652408/java-8-still-dominates-but-java-17-wave-is-coming-survey.html#tk.rss_java)
* [Rust programming for Java developers](https://www.infoworld.com/article/3651362/rust-programming-for-java-developers.html#tk.rss_java)
* [TypeScript usage growing by leaps and bounds — report](https://www.infoworld.com/article/3650513/typescript-usage-growing-by-leaps-and-bounds-report.html#tk.rss_java)
* [A brief intro to the Pants build system](https://www.infoworld.com/article/3650508/a-brief-intro-to-the-pants-build-system.html#tk.rss_java)
* [Java proposal would lower GC latency](https://www.infoworld.com/article/3649194/java-proposal-would-lower-gc-latency.html#tk.rss_java)
* [How to handle Java errors and cleanup without finalize](https://www.infoworld.com/article/3649089/how-to-handle-java-errors-and-cleanup-without-finalize.html#tk.rss_java)

[*(back to top)*](#java-design-patterns)

### *Let's talk posts*

* [Link Dump #29](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-29.html)
* [Link Dump #28](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-28.html)
* [Link Dump #27](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-27.html)
* [Link Dump #26](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-26.html)
* [Link Dump #25](http://letstalkaboutjava.blogspot.com/2022/02/link-dump-25.html)
* [Link Dump #24](http://letstalkaboutjava.blogspot.com/2022/02/link-dump-24.html)
* [Link Dump #23](http://letstalkaboutjava.blogspot.com/2022/02/link-dump-23.html)
* [Link Dump #22](http://letstalkaboutjava.blogspot.com/2022/01/link-dump-22.html)
* [Link Dump #21](http://letstalkaboutjava.blogspot.com/2022/01/link-dump-21.html)
* [Link Dump #20](http://letstalkaboutjava.blogspot.com/2022/01/link-dump-20.html)

[*(back to top)*](#java-design-patterns)

### *Random thoughts posts*

* [Join in SQL](http://randomthoughtsonjavaprogramming.blogspot.com/2022/03/join-in-sql.html)
* [For-loops and Streams](http://randomthoughtsonjavaprogramming.blogspot.com/2022/03/for-loops-and-streams.html)
* [Being Glue](http://randomthoughtsonjavaprogramming.blogspot.com/2022/02/being-glue.html)
* [Hibernate Proxies and the Visitor Pattern](http://randomthoughtsonjavaprogramming.blogspot.com/2022/02/hibernate-proxies-and-visitor-pattern.html)
* [RAID Mirrorring with ADM](http://randomthoughtsonjavaprogramming.blogspot.com/2022/01/raid-mirrorring-with-adm.html)
* [Are we really engineers?](http://randomthoughtsonjavaprogramming.blogspot.com/2022/01/are-we-really-engineers.html)
* [Standard RAID levels](http://randomthoughtsonjavaprogramming.blogspot.com/2021/12/standard-raid-levels.html)
* [Assing JsonIgnore on generated files in openapi](http://randomthoughtsonjavaprogramming.blogspot.com/2021/12/assing-jsonignore-on-generated-files-in.html)
* [RESTEASY004590: You must define a @Consumes type on your client method or interface, or supply a default](http://randomthoughtsonjavaprogramming.blogspot.com/2021/12/resteasy004590-you-must-define-consumes.html)
* [Replacing many if statements](http://randomthoughtsonjavaprogramming.blogspot.com/2021/11/replacing-many-if-statements.html)

[*(back to top)*](#java-design-patterns)

### *Better code posts*

* [How To Use CORS in NestJS Application](https://betterjavacode.com/programming/how-to-use-cors-in-nestjs-application)
* [Handling Large Datasets in Distributed Systems](https://betterjavacode.com/programming/handling-large-datasets-in-distributed-systems)
* [Example of Spring Cloud Function with AWS Lambda](https://betterjavacode.com/programming/example-spring-cloud-function-aws-lambda)
* [How to Use Pub/Sub with NodeJS](https://betterjavacode.com/programming/how-to-use-pub-sub-with-nodejs)
* [Logging in Spring Boot Microservices](https://betterjavacode.com/programming/logging-in-spring-boot-microservices)
* [Implementing Domain-Driven Design](https://betterjavacode.com/programming/implementing-domain-driven-design)
* [A Step By Step Guide to Kubernetes](https://betterjavacode.com/programming/learn-kubernetes-step-by-step)
* [Spring Cloud Tutorial for Beginners](https://betterjavacode.com/spring-boot/spring-cloud-tutorial-for-beginners)
* [Details of Liskov Substitution Principle Example](https://betterjavacode.com/programming/liskov-substitution-principle-example)
* [Building Microservices with Event-Driven Architecture](https://betterjavacode.com/programming/microservices-event-driven-architecture)

[*(back to top)*](#java-design-patterns)

### *Inside Java posts*

* [ZGC - The Future of Low-Latency Garbage Collection Is Here](https://inside.java/2022/03/30/odl-zgc/)
* [New in JDK 18: Reviewing Enhancements in the Latest JDK Release](https://inside.java/2022/03/29/new-in-jdk18/)
* [Moving Java Forward Keynote](https://inside.java/2022/03/28/odl-moving-java-forward/)
* [Java Is Fast! - Inside Java Newscast #22](https://inside.java/2022/03/24/insidejava-newscast-022/)
* [Programmer’s Guide to Snippets](https://inside.java/2022/03/23/snippets-programmer-guide/)
* [`jextract` Standalone Repository](https://inside.java/2022/03/23/jextract-standalone-repo/)
* [Episode 23 “Java 18 is Here!”](https://inside.java/2022/03/22/podcast-023/)
* [The Arrival of Java 18!](https://inside.java/2022/03/22/the-arrival-of-java18/)
* [JavaOne is back!](https://inside.java/2022/03/22/javaone-is-back/)
* [JDK 18 Security Enhancements](https://inside.java/2022/03/22/jdk-18-security-enhancements/)

[*(back to top)*](#java-design-patterns)

### *Java programmer posts*

* [6 Best Online Java Courses for Beginners in 2022](https://www.thejavaprogrammer.com/java-courses-for-beginners/)
* [Solve Error Java Access Denied FileNotFoundException](https://www.thejavaprogrammer.com/java-access-denied/)
* [Custom Iterator in Java with Example](https://www.thejavaprogrammer.com/custom-iterator-in-java/)
* [Rounding in Java – Math.Round, Math.Floor, Math.Ceil](https://www.thejavaprogrammer.com/rounding-in-java/)
* [Advantages of Hibernate Over JDBC?](https://www.thejavaprogrammer.com/advantages-of-hibernate-over-jdbc/)
* [Advantages of R Programming Language](https://www.thejavaprogrammer.com/advantages-of-r-programming-language/)
* [Method Overloading in Java With Example](https://www.thejavaprogrammer.com/method-overloading-in-java/)
* [10 Best Laptop for Java Programming in India 2022](https://www.thejavaprogrammer.com/laptop-for-java-programming/)
* [Types of Constants in Java](https://www.thejavaprogrammer.com/types-of-constants-in-java/)
* [Java Collection Hierarchy](https://www.thejavaprogrammer.com/java-collection-hierarchy/)

[*(back to top)*](#java-design-patterns)

### *Dreamix posts*

* [Learn from Java Champion Markus Eisele: Developer productivity with containers and the future of cloud-native](https://dreamix.eu/blog/java/learn-from-java-champion-markus-eisele-developer-productivity-with-containers-and-the-future-of-cloud-native)
* [Learn from Java Champion Johan Vos: JavaFx in the Age of Browsers](https://dreamix.eu/blog/java/learn-from-java-champion-johan-vos-javafx-in-the-age-of-browsers)
* [Five Reasons to Choose Java for your Next Software Project](https://dreamix.eu/blog/java/five-reasons-to-choose-java-for-your-next-software-project)
* [Learn from Java Champion Gunnar Morling: Performance unit testing with Java Flight Recorder (JFR) and JfrUnit](https://dreamix.eu/blog/java/learn-from-java-champion-gunnar-morling-performance-unit-testing-with-java-flight-recorder-jfr-and-jfrunit)
* [Unit Testing in Java – The Missing Bits (Part 2)](https://dreamix.eu/blog/java/unit-testing-in-java-the-missing-bits-part-2)
* [Unit Testing in Java – The Missing Bits (Part 1)](https://dreamix.eu/blog/java/unit-testing-in-java-the-missing-bits-part-1)
* [Sorting An Array In Java: Tips & Tricks](https://dreamix.eu/blog/java/sorting-an-array-in-java-tips-tricks)
* [Java vs JavaScript: How to Choose the Right Backend Technology?](https://dreamix.eu/blog/java/java-vs-javascript-how-to-choose-the-right-backend-technology)
* [Splitting String in Java – Examples and Tips](https://dreamix.eu/blog/java/splitting-string-in-java-examples-and-tips)
* [Learn from Java Champion Gerrit Grunwald: JavaFx – not dead yet](https://dreamix.eu/blog/java/learn-from-java-champion-gerrit-grunwald-javafx-not-dead-yet)

[*(back to top)*](#java-design-patterns)

### *Plumbr posts*

* [Plumbr has been acquired by Splunk](https://plumbr.io/blog/plumbr-blog/acquired-by-splunk)
* [Using Plumbr with OpenTelemetry NodeJS agent](https://plumbr.io/blog/plumbr-blog/using-plumbr-with-opentelemetry-nodejs-agent)
* [Extending Plumbr RUM with Web Vitals metrics](https://plumbr.io/blog/performance-blog/extending-plumbr-rum-with-web-vitals-metrics)
* [Send alerts from Plumbr to Microsoft Teams](https://plumbr.io/blog/product-updates/send-alerts-from-plumbr-to-microsoft-teams)
* [Universal agent expands bottleneck coverage with slow http requests](https://plumbr.io/blog/product-updates/universal-agent-bottleneck-slow-http-requests)
* [Achieve the three pillars of observability – link Plumbr distributed traces with logs](https://plumbr.io/blog/java/linking-plumbr-distributed-traces-with-logs)
* [Transaction snapshots become request processing](https://plumbr.io/blog/product-updates/transaction-snapshots-become-request-processing)
* [Plumbr now monitors Python applications and APIs](https://plumbr.io/blog/product-updates/plumbr-now-monitors-python-applications-and-apis)
* [Distributed tracing in practice](https://plumbr.io/blog/tracing/distributed-tracing-in-practice)
* [Plumbr now supports application versioning](https://plumbr.io/blog/product-updates/plumbr-now-supports-application-versioning)

[*(back to top)*](#java-design-patterns)

### *Thorben Janssen posts*

* [MutationQuery and SelectionQuery in Hibernate 6](https://thorben-janssen.com/mutationquery-and-selectionquery/)
* [Native Queries – How to call native SQL queries with JPA & Hibernate](https://thorben-janssen.com/jpa-native-queries/)
* [Hibernate 6 EmbeddableInstantiator – Instantiate embeddables your way](https://thorben-janssen.com/hibernate-embeddableinstantiator/)
* [Logging Guide for Hibernate 4, 5 & 6 – Use the right config for dev and prod](https://thorben-janssen.com/hibernate-logging-guide/)
* [Dynamic Inserts and Updates with Spring Data JPA](https://thorben-janssen.com/dynamic-inserts-and-updates-with-spring-data-jpa/)
* [FlushMode in JPA and Hibernate – What it is and how to change it](https://thorben-janssen.com/flushmode-in-jpa-and-hibernate/)
* [Hibernate Performance Tuning Tips – 2022 Edition](https://thorben-janssen.com/tips-to-boost-your-hibernate-performance/)
* [The Best Spring Data JPA Logging Configuration in Spring Boot](https://thorben-janssen.com/spring-data-jpa-logging/)
* [Naming Strategies in Hibernate 5](https://thorben-janssen.com/naming-strategies-in-hibernate-5/)
* [The Best Mapping for Shared Technical Attributes With Hibernate](https://thorben-janssen.com/mapping-shared-technical-attributes/)

[*(back to top)*](#java-design-patterns)

### *Redhat posts*

* [Using Kubernetes ConfigMaps to define your Quarkus application’s properties](https://developers.redhat.com/blog/2020/01/23/using-kubernetes-configmaps-to-define-your-quarkus-applications-properties/)
* [CodeReady Workspaces devfile, demystified](https://developers.redhat.com/blog/2019/12/09/codeready-workspaces-devfile-demystified/)
* [Decoupling microservices with Apache Camel and Debezium](https://developers.redhat.com/blog/2019/11/19/decoupling-microservices-with-apache-camel-and-debezium/)
* [How Quarkus brings imperative and reactive programming together](https://developers.redhat.com/blog/2019/11/18/how-quarkus-brings-imperative-and-reactive-programming-together/)
* [Open Liberty Java runtime now available to Red Hat Runtimes subscribers](https://developers.redhat.com/blog/2019/11/14/open-liberty-java-runtime-now-available-to-red-hat-runtimes-subscribers/)
* [New features in Red Hat CodeReady Studio 12.13.0.GA and JBoss Tools 4.13.0.Final for Eclipse 2019-09](https://developers.redhat.com/blog/2019/11/11/new-features-in-red-hat-codeready-studio-12-13-0-ga-and-jboss-tools-4-13-0-final-for-eclipse-2019-09/)
* [Quarkus: Modernize “helloworld” JBoss EAP quickstart, Part 1](https://developers.redhat.com/blog/2019/11/07/quarkus-modernize-helloworld-jboss-eap-quickstart-part-1/)
* [Managing JBoss EAP/Wildfly using Jcliff](https://developers.redhat.com/blog/2019/11/06/managing-jboss-eap-wildfly-using-jcliff/)
* [Bring joy to development with Quarkus, the cloud-native Java framework](https://developers.redhat.com/blog/2019/10/24/bring-joy-to-development-with-quarkus-the-cloud-native-java-framework/)
* [What’s new in Red Hat Dependency Analytics](https://developers.redhat.com/blog/2019/10/15/whats-new-in-red-hat-dependency-analytics/)

[*(back to top)*](#java-design-patterns)

### *JavaCodeGeeks posts*

* [Json Patch and Json Merge Patch in Java](https://www.javacodegeeks.com/2021/05/json-patch-and-json-merge-patch-in-java.html)
* [Making the Case for Digital Renovation](https://www.javacodegeeks.com/2021/05/making-the-case-for-digital-renovation.html)
* [Retention period and issue with Kafka data not getting deleted](https://www.javacodegeeks.com/2021/05/retention-period-and-issue-with-kafka-data-not-getting-deleted.html)
* [Kafka Record Patterns for Data Replication](https://www.javacodegeeks.com/2021/05/kafka-record-patterns-for-data-replication.html)
* [\[MEGA DEAL\] The 2021 Java Bootcamp Bundle(96% off)](https://www.javacodegeeks.com/2021/05/mega-deal-the-2021-java-bootcamp-bundle96-off.html)
* [Supporting bulk operations in REST APIs](https://www.javacodegeeks.com/2021/05/supporting-bulk-operations-in-rest-apis.html)
* [Handling Actions Class in Selenium and its usage](https://www.javacodegeeks.com/2021/05/handling-actions-class-in-selenium-and-its-usage.html)
* [Store health and safety – Example health and safety architecture](https://www.javacodegeeks.com/2021/05/store-health-and-safety-example-health-and-safety-architecture.html)
* [Developers Are Obsessed With Their Text Editors](https://www.javacodegeeks.com/2021/05/developers-are-obsessed-with-their-text-editors.html)
* [Understanding Istio Telemetry v2](https://www.javacodegeeks.com/2021/05/understanding-istio-telemetry-v2.html)

[*(back to top)*](#java-design-patterns)

### *DevCases posts*

* [Spring JavaMelody Tutorial](https://devcases.com/java/spring-javamelody-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-javamelody-tutorial)
* [Spring Boot JavaMelody Tutorial](https://devcases.com/java/spring-boot-javamelody-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-javamelody-tutorial)
* [How to find file in directory](https://devcases.com/java/how-to-find-file-in-directory/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-find-file-in-directory)
* [How to list all files in the directory](https://devcases.com/java/how-to-list-all-files-in-the-directory/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-list-all-files-in-the-directory)
* [How to convert Iterable to Collection](https://devcases.com/java/how-to-convert-iterable-to-collection/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-convert-iterable-to-collection)
* [Spring Boot CRUD Tutorial with embedded H2 and Freemarker](https://devcases.com/java/spring-boot-crud-tutorial-with-embedded-h2-and-freemarker/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-crud-tutorial-with-embedded-h2-and-freemarker)
* [Spring Boot CRUD Tutorial with embedded H2 and JSP](https://devcases.com/java/spring-boot-embedded-h2-jsp-crud-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-embedded-h2-jsp-crud-tutorial)
* [Spring Boot Hello World – Freemarker tutorial](https://devcases.com/java/spring-boot-hello-world-freemarker-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-hello-world-freemarker-tutorial)
* [Spring Boot Hello World – JSP tutorial](https://devcases.com/java/spring-boot-hello-world-jsp/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-hello-world-jsp)
* [How to debug maven tests](https://devcases.com/java/how-to-debug-maven-tests/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-debug-maven-tests)

[*(back to top)*](#java-design-patterns)

***

[![forthebadge](https://img.shields.io/badge/made%20with-%20markdown-C1282D.svg?logo=markdown\&style=for-the-badge)](https://www.markdownguide.org/) [![forthebadge](https://img.shields.io/badge/powered%20by-%20gitbook-7116FB.svg?logo=gitbook\&style=for-the-badge)](https://www.gitbook.com/) [![forthebadge](https://img.shields.io/badge/build%20with-%20%E2%9D%A4-B6FF9B.svg?logo=heart\&style=for-the-badge)](https://forthebadge.com/)
