Design patterns implemented in Java

Overview

Design patterns implemented in Java

Java CI License MIT Lines of Code Coverage Join the chat at https://gitter.im/iluwatar/java-design-patterns

All Contributors


Read in different language : CNCN, KRKR, FRFR, TRTR, ARAR


Introduction

Design patterns are the best formalized practices a programmer can use to solve common problems when designing an application or system.

Design patterns can speed up the development process by providing tested, proven development paradigms.

Reusing design patterns help prevent subtle issues that cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.

Getting started

This site showcases Java Design Patterns. The solutions have been developed by experienced programmers and architects from the open source community. The patterns can be browsed by their high level descriptions or by looking at their source code. The source code examples are well commented and can be thought as programming tutorials on how to implement a specific pattern. We use the most popular battle-proven open source Java technologies.

Before you dive into the material, you should be familiar with various Software Design Principles.

All designs should be as simple as possible. You should start with KISS, YAGNI, and Do The Simplest Thing That Could Possibly Work principles. Complexity and patterns should only be introduced when they are needed for practical extensibility.

Once you are familiar with these concepts you can start drilling down into the available design patterns by any of the following approaches

  • Search for a specific pattern by name. Can't find one? Please report a new pattern here.
  • Using tags such as Performance, Gang of Four or Data access.
  • Using pattern categories, Creational, Behavioral, and others.

Hopefully you find the object oriented solutions presented on this site useful in your architectures and have as much fun learning them as we had developing them.

How to contribute

If you are willing to contribute to the project you will find the relevant information in our developer wiki. We will help you and answer your questions in the Gitter chatroom.

License

This project is licensed under the terms of the MIT license.

Contributors


Ilkka Seppรคlรค

๐Ÿ“† ๐Ÿšง ๐Ÿ–‹

amit1307

๐Ÿ’ป

Narendra Pathai

๐Ÿ’ป ๐Ÿค” ๐Ÿ‘€

Jeroen Meulemeester

๐Ÿ’ป

Joseph McCarthy

๐Ÿ’ป

Thomas

๐Ÿ’ป

Anurag Agarwal

๐Ÿ’ป

Markus Moser

๐ŸŽจ ๐Ÿ’ป ๐Ÿค”

Sabiq Ihab

๐Ÿ’ป

Amit Dixit

๐Ÿ’ป

Piyush Kailash Chaudhari

๐Ÿ’ป

joshzambales

๐Ÿ’ป

Kamil Pietruszka

๐Ÿ’ป

Zafar Khaydarov

๐Ÿ’ป ๐Ÿ“–

Paul Campbell

๐Ÿ’ป

Argyro Sioziou

๐Ÿ’ป

TylerMcConville

๐Ÿ’ป

saksham93

๐Ÿ’ป

nikhilbarar

๐Ÿ’ป

Colin But

๐Ÿ’ป

Ruslan

๐Ÿ’ป

Juho Kang

๐Ÿ’ป

Dheeraj Mummareddy

๐Ÿ’ป

Bernardo Sulzbach

๐Ÿ’ป

Aleksandar Dudukovic

๐Ÿ’ป

Yusuf AytaลŸ

๐Ÿ’ป

Mihรกly Kuprivecz

๐Ÿ’ป

Stanislav Kapinus

๐Ÿ’ป

GVSharma

๐Ÿ’ป

Srฤ‘an Paunoviฤ‡

๐Ÿ’ป

Petros G. Sideris

๐Ÿ’ป

Pramod Gupta

๐Ÿ‘€

Amarnath Chandana

๐Ÿ’ป

Anurag870

๐Ÿ’ป ๐Ÿ“–

Wes Gilleland

๐Ÿ’ป

Harshraj Thakor

๐Ÿ’ป

Martin Vandenbussche

๐Ÿ’ป

Alexandru Somai

๐Ÿ’ป

Artur Mogozov

๐Ÿ’ป

anthony

๐Ÿ’ป

Christian Cygnus

๐Ÿ’ป

Dima Gubin

๐Ÿ’ป

Joshua Jimenez

๐Ÿ’ป

Kai Winter

๐Ÿ’ป

lbroman

๐Ÿ’ป

Przemek

๐Ÿ’ป

Prafful Agarwal

๐Ÿ–‹

Sanket Panhale

๐Ÿ–‹

staillebois

๐Ÿ’ป

Krisztiรกn Nagy

๐Ÿ’ป

Alexander Ivanov

๐Ÿ’ป

Yosfik Alqadri

๐Ÿ’ป

Agustรญ Becerra Milร 

๐Ÿ’ป

Juan Manuel Suรกrez

๐Ÿ’ป

Luigi Cortese

๐Ÿ’ป

Katarzyna Rzepecka

๐Ÿ’ป

adamski.pro

๐Ÿ’ป

Shengli Bai

๐Ÿ’ป

Boris

๐Ÿ’ป

Dmitry Avershin

๐Ÿ’ป

้ณ้˜ณ

๐Ÿ’ป

hoangnam2261

๐Ÿ’ป

Arpit Jain

๐Ÿ’ป

Jรณn Ingi Sveinbjรถrnsson

๐Ÿ’ป

Kirill Vlasov

๐Ÿ’ป

Mitchell Irvin

๐Ÿ’ป

Ranjeet

๐Ÿ’ป

PhoenixYip

๐Ÿ’ป

M Saif Asif

๐Ÿ’ป

kanwarpreet25

๐Ÿ’ป

Leon Mak

๐Ÿ’ป

Per Wramdemark

๐Ÿ’ป

Evan Sia Wai Suan

๐Ÿ’ป

AnaghaSasikumar

๐Ÿ’ป

Christoffer Hamberg

๐Ÿ’ป

Dominik Gruntz

๐Ÿ’ป

Hannes

๐Ÿ’ป

Leo Gutiรฉrrez Ramรญrez

๐Ÿ’ป

Zhang WH

๐Ÿ’ป

Christopher O'Connell

๐Ÿ’ป

George Mavroeidis

๐Ÿ’ป

Hemant Bothra

๐Ÿ’ป ๐ŸŽจ

Kevin Peters

๐Ÿ’ป

George Aristy

๐Ÿ’ป

Mahendran Mookkiah

๐Ÿ’ป

Azureyjt

๐Ÿ’ป

gans

๐Ÿ’ป

Matt

๐Ÿ–‹

Gopinath Langote

๐Ÿ’ป

Hoswey

๐Ÿ’ป

Amit Pandey

๐Ÿ’ป

gwildor28

๐Ÿ–‹

็”ฐๆตฉ

๐Ÿ–‹

Stamatis Pitsios

๐Ÿ’ป

qza

๐Ÿ’ป

Rodolfo Forte

๐Ÿ–‹

Ankur Kaushal

๐Ÿ’ป

Ovidijus Okinskas

๐Ÿ’ป

Robert Kasperczyk

๐Ÿ’ป

Tapio Rautonen

๐Ÿ’ป

Yuri Orlov

๐Ÿ’ป

Varun Upadhyay

๐Ÿ’ป

Aditya Pal

๐Ÿ’ป

grzesiekkedzior

๐Ÿ’ป ๐Ÿ‘€

Sivasubramani M

๐Ÿ’ป

Sami Airaksinen

๐Ÿ’ป

Janne Sinivirta

๐Ÿ’ป

Boris-Chengbiao Zhou

๐Ÿ–‹

Jacob Hein

๐Ÿ–‹

Richard Jones

๐Ÿ–‹

Rachel M. Carmena

๐Ÿ–‹

Zaerald Denze Lungos

๐Ÿ–‹

Lars Kappert

๐Ÿ–‹

Mike Liu

๐ŸŒ

Matt Dolan

๐Ÿ’ป ๐Ÿ‘€

Manan

๐Ÿ‘€

Nishant Arora

๐Ÿ’ป

Peeyush

๐Ÿ’ป

Rakesh

๐Ÿ’ป ๐Ÿ‘€

Wei Seng

๐Ÿ’ป

Ashish Trivedi

๐Ÿ’ป

ๆดชๆœˆ้˜ณ

๐Ÿ’ป

xdvrx1

๐Ÿ‘€ ๐Ÿค”

Subhrodip Mohanta

๐Ÿ’ป ๐Ÿ‘€

Bethan Palmer

๐Ÿ’ป

Toxic Dreamz

๐Ÿ’ป

Edy Cu Tjong

๐Ÿ“–

Michaล‚ Krzywaล„ski

๐Ÿ’ป

Stefan Birkner

๐Ÿ’ป

Fedor Skvorcov

๐Ÿ’ป

samilAyoub

๐Ÿ’ป

Vladislav Golubinov

๐Ÿ’ป

Swaraj

๐Ÿ’ป

Christoph Flick

๐Ÿ“–

Ascรชnio

๐Ÿ‘€

Domenico Sibilio

๐Ÿ“–

Akash Chandwani

๐Ÿ‘€

Pavlo Manannikov

๐Ÿ’ป

Eiman

๐Ÿ’ป

Rocky

๐Ÿ“–

Ibrahim ali abdelghany

๐Ÿ‘€

Girish Kulkarni

๐Ÿ“–

Omar Karazoun

๐Ÿ’ป

Jeff Evans

๐Ÿ’ป

Vivek Singh

๐Ÿ’ป

siavash

๐Ÿ’ป

ruchpeanuts

๐Ÿ“–

warp125

๐ŸŒ

KHADIR Tayeb

๐ŸŒ

ignite1771

๐Ÿ’ป

Halil Demir

๐ŸŒ

Rohit Singh

๐Ÿ’ป

byoungju94

๐Ÿ’ป

Moustafa Farhat

๐ŸŒ

Martel Richard

๐Ÿ’ป

va1m

๐Ÿ’ป
Issues
  • Recognize contributors

    Recognize contributors

    We should follow this nice specification to recognize our contributors https://github.com/kentcdodds/all-contributors

    status: under construction type: enhancement epic: web site resolution: fixed priority: normal 
    opened by iluwatar 176
  • The tool to make the class diagrams should be IDE independent

    The tool to make the class diagrams should be IDE independent

    Not everybody uses Eclipse, which is a requirement for the current tool ObjectAid UML Explorer.

    status: under construction type: enhancement resolution: won't fix 
    opened by iluwatar 36
  • Issue #381

    Issue #381

    Hi, I finalized issue #381 . I would appreciate it if somebody would review it. Thanks!

    status: under review resolution: won't fix 
    opened by jdoetricksy 32
  • Checkstyle reports warnings

    Checkstyle reports warnings

    In issue https://github.com/iluwatar/java-design-patterns/issues/1016 we switched using Checkstyle's builtin google_checks.xml. The new ruleset finds over 6k warnings. In this issue we try fix those gradually, one pattern at a time. If you want to help, please comment on the issue which patterns will you be working on. We will follow the progress using the following table.

    [x] abstract-document [x] abstract-factory [x] acyclic-visitor [x] adapter [x] aggregator-microservices [x] ambassador [x] api-gateway [x] async-method-invocation [x] balking [x] bridge [x] builder [x] business-delegate [x] bytecode [x] caching [x] callback [x] chain [x] circuit breaker [x] collection-pipeline [x] command [x] commander [x] composite [x] converter [x] cqrs [x] dao [x] data-bus [x] data-locality [x] data-mapper [x] data-transfer-object [x] decorator [x] delegation [x] dependency-injection [x] dirty-flag [x] double-checked-locking [x] double-dispatch [x] eip-aggregator [x] eip-message-channel [x] eip-publish-subscribe [x] eip-splitter [x] eip-wire-tap [x] event-aggregator [x] event-asynchronous [x] event-driven-architecture [x] event-queue [x] event-sourcing [x] execute-around [x] extension-objects [x] facade [x] factory-kit [x] factory-method [x] feature-toggle [x] fluentinterface [x] flux [x] flyweight [x] front-controller [x] guarded-suspension [x] half-sync-half-async [x] hexagonal [x] intercepting-filter [x] interpreter [x] iterator [x] layers [x] lazy-loading [x] leader-election [x] marker [x] master-worker-pattern [x] mediator [x] memento [x] model-view-controller [x] model-view-presenter [x] module [x] monad [x] monostate [x] multiton [x] mute-idiom [x] mutex [x] naked-objects [x] null-object [x] object-mother [x] object-pool [x] observer [x] page-object [x] partial-response [x] pipeline [x] poison-pill [x] priority-queue [x] private-class-data [x] producer-consumer [x] promise [x] property [x] prototype [x] proxy [x] queue-load-leveling [x] reactor [x] reader-writer-lock [x] repository [x] resource-acquisition-is-initialization [x] retry [x] semaphore [x] servant [x] serverless [x] service-layer [x] service-locator [x] singleton [x] spatial-partition [x] specification [x] state [x] step-builder [x] strategy [x] template-method [x] thread-pool [x] throttling [x] tls [x] tolerant-reader [x] trampoline [x] twin [x] typeobjectpattern [x] unit-of-work [x] value-object [x] visitor

    Links: https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml https://google.github.io/styleguide/javaguide.html

    info: help wanted status: under construction info: good first issue info: hacktoberfest type: refactoring resolution: fixed priority: low epic: code quality 
    opened by iluwatar 28
  • Accepting presentations for the design patterns

    Accepting presentations for the design patterns

    @iluwatar What do u think if we create presentations for these nice collections of design patterns. Either one for each for one for all. Something based on impress.js or similar would be great I think. Happy to contribute. Kiitos

    info: help wanted type: enhancement info: needs splitting resolution: won't fix 
    opened by zafarella 26
  • Java 11 support: Utilize new methods

    Java 11 support: Utilize new methods

    This task is part of the Java 11 transition plan https://github.com/iluwatar/java-design-patterns/wiki/16.-Java-11-Transition

    This is a refactoring ticket where we start to utilize new Java 11 functionality.

    1. Collecting to unmodifiable collections is possible using the new Collector for Streams operations to put the results into an immutable collection (see https://www.infoq.com/articles/upgrading-java-8-to-12/)

    2. Predicate::not provides an easy way to negate predicate lambdas or method references, again reducing the boilerplate in our code (see https://www.infoq.com/articles/upgrading-java-8-to-12/)

    3. New methods on Optional give even more options for coding in a functional style when using an Optional instead of having to use clumsy if statements (see https://winterbe.com/posts/2018/09/24/java-11-tutorial/)

    4. Streams have new methods ofNullable, dropWhile, takeWhile (see https://winterbe.com/posts/2018/09/24/java-11-tutorial/)

    5. String has new helper methods (see https://winterbe.com/posts/2018/09/24/java-11-tutorial/)

    6. InputStream finally gets a super useful method to transfer data to an OutputStream (see https://winterbe.com/posts/2018/09/24/java-11-tutorial/)

    7. Convenience Factory Methods for Collections make it significantly easier to create collections like lists, maps and sets (see https://winterbe.com/posts/2018/09/24/java-11-tutorial/)

    It's a huge task to do this for all the patterns at once so it is possible to create pull requests for individual patterns. This way we can complete the task gradually. The following checklist tracks which patterns have already been refactored.

    [x] abstract-document [x] abstract-factory [x] acyclic-visitor [x] adapter [x] aggregator-microservices [x] ambassador [x] api-gateway [x] async-method-invocation [x] balking [x] bridge [x] builder [x] business-delegate [x] bytecode [x] caching [x] callback [x] chain [x] circuit-breaker [x] collection-pipeline [x] command [x] commander [x] composite [x] converter [x] cqrs [x] dao [x] data-bus [x] data-locality [x] data-mapper [x] data-transfer-object [x] decorator [x] delegation [x] dependency-injection [x] dirty-flag [x] double-checked-locking [x] double-dispatch [x] eip-aggregator [x] eip-message-channel [x] eip-publish-subscribe [x] eip-splitter [x] eip-wire-tap [x] event-aggregator [x] event-asynchronous [x] event-driven-architecture [x] event-queue [x] event-sourcing [x] execute-around [x] extension-objects [x] facade [x] factory-kit [x] factory-method [x] faq.md [x] feature-toggle [x] fluentinterface [x] flux [x] flyweight [x] front-controller [x] guarded-suspension [x] half-sync-half-async [x] hexagonal [x] intercepting-filter [x] interpreter [x] iterator [x] layers [x] lazy-loading [x] leader-election [x] marker [x] master-worker-pattern [x] mediator [x] memento [x] model-view-controller [x] model-view-presenter [x] module [x] monad [x] monostate [x] multiton [x] mute-idiom [x] mutex [x] naked-objects [x] null-object [x] object-mother [x] object-pool [x] observer [x] page-object [x] partial-response [x] pipeline [x] poison-pill [x] priority-queue [x] private-class-data [x] producer-consumer [x] promise [x] property [x] prototype [x] proxy [x] queue-load-leveling [x] reactor [x] reader-writer-lock [x] repository [x] resource-acquisition-is-initialization [x] retry [x] semaphore [x] servant [x] serverless [x] service-layer [x] service-locator [x] singleton [x] spatial-partition [x] specification [x] state [x] step-builder [x] strategy [x] template-method [x] thread-pool [x] throttling [x] tls [x] tolerant-reader [x] trampoline [x] twin [x] typeobjectpattern [x] unit-of-work [x] value-object [x] visitor

    status: under construction type: enhancement info: good first issue info: hacktoberfest type: refactoring resolution: fixed 
    opened by iluwatar 25
  • Lock Pattern #71: Added mutex and semaphore modules to demonstrate locks

    Lock Pattern #71: Added mutex and semaphore modules to demonstrate locks

    Added two modules to demonstrate locks.

    Mutex demonstrates a simple mutual exclusion lock. This is a binary lock which only allows one thread at a time to access the resource. See: Locks on Wikipedia

    Semaphore demonstrates a semaphore for controlling access to a pool of resources. See Semaphores on Wikipedia

    The main class of both programs is App.java.

    I haven't created any documentation yet. Let me know if you want any changes or need some explanations of the code, etc.

    status: under review 
    opened by gwildor28 25
  • Java 11 support: Start using var

    Java 11 support: Start using var

    This task is part of the Java 11 transition plan https://github.com/iluwatar/java-design-patterns/wiki/16.-Java-11-Transition

    Start using local-variable type inference (var). It is a nice example of syntactic sugar that helps reduce boilerplate code (see https://www.infoq.com/articles/upgrading-java-8-to-12/ and https://winterbe.com/posts/2018/09/24/java-11-tutorial/)

    It's a huge task to do this for all the patterns at once so it is possible to create pull requests for individual patterns. This way we can complete the task gradually. The following checklist tracks which patterns have already been refactored.

    [x] abstract-document [x] abstract-factory [x] acyclic-visitor [x] adapter [x] aggregator-microservices [x] ambassador [x] api-gateway [x] async-method-invocation [x] balking [x] bridge [x] builder [x] business-delegate [x] bytecode [x] caching [x] callback [x] chain [x] circuit-breaker [x] collection-pipeline [x] command [x] commander [x] composite [x] converter [x] cqrs [x] dao [x] data-bus [x] data-locality [x] data-mapper [x] data-transfer-object [x] decorator [x] delegation [x] dependency-injection [x] dirty-flag [x] double-checked-locking [x] double-dispatch [x] eip-aggregator [x] eip-message-channel [x] eip-publish-subscribe [x] eip-splitter [x] eip-wire-tap [x] event-aggregator [x] event-asynchronous [x] event-driven-architecture [x] event-queue [x] event-sourcing [x] execute-around [x] extension-objects [x] facade [x] factory-kit [x] factory-method [x] feature-toggle [x] fluentinterface [x] flux [x] flyweight [x] front-controller [x] guarded-suspension [x] half-sync-half-async [x] hexagonal [x] intercepting-filter [x] interpreter [x] iterator [x] layers [x] lazy-loading [x] leader-election [x] marker [x] master-worker-pattern [x] mediator [x] memento [x] model-view-controller [x] model-view-presenter [x] module [x] monad [x] monostate [x] multiton [x] mute-idiom [x] mutex [x] naked-objects [x] null-object [x] object-mother [x] object-pool [x] observer [x] page-object [x] partial-response [x] pipeline [x] poison-pill [x] priority-queue [x] private-class-data [x] producer-consumer [x] promise [x] property [x] prototype [x] proxy [x] queue-load-leveling [x] reactor [x] reader-writer-lock [x] repository [x] resource-acquisition-is-initialization [x] retry [x] role-object [x] semaphore [x] servant [x] serverless [x] service-layer [x] service-locator [x] singleton [x] spatial-partition [x] specification [x] state [x] step-builder [x] strategy [x] template-method [x] thread-pool [x] throttling [x] tls [x] tolerant-reader [x] trampoline [x] twin [x] typeobjectpattern [x] unit-of-work [x] value-object [x] visitor

    status: under construction type: enhancement info: good first issue info: hacktoberfest resolution: fixed 
    opened by iluwatar 24
  • Hexagonal blog

    Hexagonal blog

    This is a pull request for a blog post about Hexagonal Architecture. The code samples have been embedded using gist-it. Looking forward to your comments.

    status: under review 
    opened by iluwatar 23
  • SonarQube reports code smells

    SonarQube reports code smells

    Java Design Patterns is analyzed with SonarQube.com static analysis. The analysis shows some blocker level code smells that should be fixed:

    https://sonarqube.com/component_issues/index?id=com.iluwatar%3Ajava-design-patterns#resolved=false|severities=BLOCKER|types=CODE_SMELL

    type: bug status: under construction info: good first issue info: hacktoberfest 
    opened by iluwatar 23
  • Fix broken links

    Fix broken links

    This fixes some broken links found in the project's markdown files.

    opened by iluwatar 0
  • Issue-1694: Improve caching pattern code quality

    Issue-1694: Improve caching pattern code quality

    Issue-1694 Improve caching pattern code quality

    Link to the issue: https://github.com/iluwatar/java-design-patterns/issues/1694

    Pull request description

    • changed the implementation of database
    • make logs more clear to understand what happens
    opened by VictorZZZZ 1
  • Evaluate Crowdin translation tool

    Evaluate Crowdin translation tool

    To better manage the different translations, we should evaluate the Crowdin tool. It's free for open-source projects fulfilling their criteria listed on the page https://crowdin.com/page/open-source-project-setup-request

    status: under construction epic: web site epic: architecture type: task priority: normal epic: documentation 
    opened by iluwatar 0
  • Update Lombok version (possible migration issue for JDK17)

    Update Lombok version (possible migration issue for JDK17)

    Lombok does not work in the current master branch when using JDK16.

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project abstract-factory: Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x4809c771) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x4809c771 -> [Help 1]

    To fix it i used:

    diff --git a/pom.xml b/pom.xml
    index 31cf03b4d..d7f05d796 100644
    --- a/pom.xml
    +++ b/pom.xml
    @@ -71,7 +71,7 @@
             <system-lambda.version>1.1.0</system-lambda.version>
             <urm.version>2.0.0</urm.version>
             <mockito-junit-jupiter.version>3.5.0</mockito-junit-jupiter.version>
    -        <lombok.version>1.18.14</lombok.version>
    +        <lombok.version>1.18.20</lombok.version>
             <byte-buddy.version>1.10.21</byte-buddy.version>
             <javassist.version>3.27.0-GA</javassist.version>
             <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
    
    info: help wanted epic: build issue epic: dependencies type: feature priority: normal 
    opened by beooo79 2
  • docs: Chinese translations updates (#1706)

    docs: Chinese translations updates (#1706)

    add Chinese translations updates (based issue #1706)

    status: under review 
    opened by tonels 4
  • #1667: Fixing the serverless tests to use Junit5 and execute

    #1667: Fixing the serverless tests to use Junit5 and execute

    This issue fixes #1667

    Here is what changed:

    • Added JUnit5 libraries for serverless
    • Removed the s3 SDK exclusions for serverless dependencies
    • Replaced the deprecated MockitoAnnotations.initMocks(this) with MockitoAnnotations.openMocks(this)
    status: under review 
    opened by tan31989 4
  • Simplify switch statement using Enums

    Simplify switch statement using Enums

    If we add more enums then we need to add more switch cases which is not a good coding convention. Instead using Enums abstract function feature to provide the definition

    Add a new abstract function in Enum to create a new Potion object rather than having several switch cases to create one.

    status: under review 
    opened by ravening 1
  • Grammatical fixes for Adapter

    Grammatical fixes for Adapter

    Fix some grammatical issues in the Adapter pattern.

    status: under review 
    opened by iluwatar 0
  • #67Added Binding Properties  Pattern

    #67Added Binding Properties Pattern

    opened by llyyaa 1
  • Add the Layer Supertype pattern

    Add the Layer Supertype pattern

    #1302 Implement the Layer Supertype pattern

    opened by waterman6 3
Detect uses of legacy Java APIs

Modernizer Maven Plugin Modernizer Maven Plugin detects uses of legacy APIs which modern Java versions supersede. These modern APIs are often more per

Andrew Gaul 284 Sep 10, 2021
ONLINE DYNAMIC UNIVERSITY VOTING SYSTEM

WEVOTE ONLINE DYNAMIC UNIVERSITY VOTING SYSTEM Online university voting system is developed as a web-based application using html for front-end design

null 3 May 7, 2021
Ultra-fast SQL-like queries on Java collections

CQEngine - Collection Query Engine CQEngine โ€“ Collection Query Engine โ€“ is a high-performance Java collection which can be searched with SQL-like quer

Niall Gallagher 1.4k Sep 13, 2021
Support alternative markup for Apache Maven POM files

Overview Polyglot for Maven is a set of extensions for Maven 3.3.1+ that allows the POM model to be written in dialects other than XML. Several of the

null 771 Sep 7, 2021
A lightweight, simple FTP server. Pure Java, no dependencies.

MinimalFTP A lightweight, simple FTP server. Pure Java, no libraries. Features Although it's named "minimal", it supports a bunch of features: 100% Ja

Guilherme Chaguri 105 Sep 1, 2021
A lightweight command processing pipeline โ โ‡ข โ โ‡ข โ for your Java awesome app.

PipelinR PipelinR is a lightweight command processing pipeline โ โ‡ข โ โ‡ข โ for your awesome Java app. PipelinR has been battle-proven on production, as

Eduards Sizovs 172 Sep 15, 2021
FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.

FizzBuzzEnterpriseEdition Enterprise software marks a special high-grade class of software that makes careful use of relevant software architecture de

null 15k Sep 4, 2021
Simple API, Complex Emails (JavaMail smtp wrapper)

Simple Java Mail Simple Java Mail is the simplest to use lightweight mailing library for Java, while being able to send complex emails including CLI s

Benny Bottema 893 Sep 16, 2021
JPassport works like Java Native Access (JNA) but uses the Foreign Linker API instead of JNI. Similar to JNA, you declare a Java interface that is bound to the external C library using method names.

JPassport works like Java Native Access (JNA) but uses the Foreign Linker API instead of JNI. Similar to JNA, you declare a Java interface t

null 12 Jun 18, 2021
Tools for working with generic types

TypeTools A simple, zero-dependency library for working with types. Supports Java 1.6+ and Android. Introduction One of the sore points with Java invo

Jonathan Halterman 530 Sep 10, 2021
icecream-java is a Java port of the icecream library for Python.

icecream-java is a Java port of the icecream library for Python.

Akshay Thakare 18 Aug 4, 2021
Repository to keep up with ViaVersion on MCP (Originally from https://github.com/LaVache-FR/ViaMCP)

ViaMCP-Reborn Repository to keep up with ViaVersion on MCP (Originally from https://github.com/LaVache-FR/ViaMCP) 1.7.x Protocols Yes, i know they are

null 26 Sep 8, 2021
A Java to iOS Objective-C translation tool and runtime.

J2ObjC: Java to Objective-C Translator and Runtime Project site: https://j2objc.org J2ObjC blog: https://j2objc.blogspot.com Questions and discussion:

Google 5.8k Sep 15, 2021
Make Slack and Facebook Bots in Java.

JBot Make bots in Java. JBot is a java framework (inspired by Howdyai's Botkit) to make Slack and Facebook bots in minutes. It provides all the boiler

Ram 1.2k Sep 13, 2021
Quiltflower is a fork of Fernflower adding additional features for use with the Quilt toolchain.

Quiltflower Quiltflower is a fork of Fernflower adding additional features for use with the Quilt toolchain. Changes include: Javadoc application Mult

null 40 Aug 25, 2021
An in-memory file system for Java 7+

Jimfs Jimfs is an in-memory file system for Java 7 and above, implementing the java.nio.file abstract file system APIs. Getting started The latest rel

Google 2k Sep 10, 2021
DtJava๏ผˆ้’‰้’‰ Java SDK๏ผ‰๏ผŒDingTalk๏ผˆ้’‰้’‰๏ผ‰็š„ๅŽ็ซฏๅผ€ๅ‘SDKใ€‚

DtJava ไป‹็ป DtJava(DingTalk Java SDK-้’‰้’‰SDK) ๅฐ่ฃ…ไบ†้’‰้’‰ๅ‡ญ่ฏใ€้€š่ฎฏๅฝ•็ฎก็†ใ€ๆถˆๆฏ้€š็Ÿฅ็ญ‰ๆœๅŠก็ซฏๆŽฅๅฃ๏ผŒ่ฎฉๅผ€ๅ‘่€…ๅฏไปฅไฝฟ็”จ็ฎ€ๅ•็š„้…็ฝฎ๏ผŒๆไพ›็ฎ€ๆด็š„ API ไปฅไพ›ๆ–นไพฟๅฟซ้€Ÿๅœฐ่ฐƒ็”จ้’‰้’‰ๆŽฅๅฃใ€‚ ๆณจๆ„๏ผš็›ฎๅ‰SDKไธป่ฆๆ˜ฏไปฅไผไธšๅ†…ๅปบๅบ”็”จไธบไธป๏ผŒISVๅบ”็”จๅŽ้ขไผš้™†็ปญๆ”ฏๆŒใ€‚

null 22 Sep 13, 2021
Flashcards app with Google Translate integration.

Flashcards application. Sample Spring + next.js + mongoDB Flashcard app, with Google Translator integration.

ลukasz 25 Mar 24, 2021
The easiest way to integrate Maven into your project!

Maven Wrapper Ongoing Migration to Apache Maven The project codebase has been accepted to be included in the upstream Apache Maven project itself. Cur

null 1.5k Sep 8, 2021