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

    epic: web site priority: normal resolution: fixed status: under construction type: enhancement 
    opened by iluwatar 174
  • 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.

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

    Issue #381

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

    resolution: won't fix status: under review 
    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

    epic: code quality info: good first issue info: hacktoberfest info: help wanted priority: low resolution: fixed status: under construction type: refactoring 
    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 info: needs splitting resolution: won't fix type: enhancement 
    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

    info: good first issue info: hacktoberfest resolution: fixed status: under construction type: enhancement type: refactoring 
    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

    info: good first issue info: hacktoberfest resolution: fixed status: under construction type: enhancement 
    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

    info: good first issue info: hacktoberfest status: under construction type: bug 
    opened by iluwatar 23
  • Translate some of the README docs into Chinese

    Translate some of the README docs into Chinese

    Pull request title

    • Translate some of the README files into Chinese

    Pull request description Includes readme docs for the following design patterns:

    • circuit-breaker
    • collection-pipeline
    • composite-entity
    • data-bus
    • data-mapper
    • double-checked-locking
    opened by Al-assad 1
  • #1319 add table module pattern

    #1319 add table module pattern

    • Resolves issue #1319
    • In Table Module a single class encapsulates all the domain logic for all records stored in a table or view.
    • Reimplement the Table Module pattern instead of refactoring the code from Transaction Script pattern to Table Module pattern.
    opened by tao-sun2 1
  • Updated the docker image

    Updated the docker image

    Resolves #1736

    opened by sapsinh 0
  • Update next-generation circleci convenience images

    Update next-generation circleci convenience images

    The next-generation convenience images in this section were built from the ground up with CI, efficiency, and determinism in mind. Here are some of the highlights:

    Faster spin-up time - In Docker terminology, these next-gen images will generally have fewer and smaller layers. Using these new images will lead to faster image downloads when a build starts, and a higher likelihood that the image is already cached on the host.

    Improved reliability and stability - The current images are rebuilt practically every day with potential changes from upstream that we can’t always test fast enough. This leads to frequent breaking changes, which is not the best environment for stable, deterministic builds. Next-gen images will only be rebuilt for security and critical bugs, leading to more stable and deterministic images.

    https://circleci.com/docs/2.0/circleci-images/#next-generation-convenience-images https://hub.docker.com/u/cimg https://github.com/CircleCI-Public/cimg-overview https://hub.docker.com/r/cimg/openjdk https://discuss.circleci.com/tag/convenience-images

    epic: build issue priority: normal status: under construction type: enhancement 
    opened by ohbus 3
  • #444 add gatekeeper pattern

    #444 add gatekeeper pattern

    #444 Gatekeeper pattern

    • Implement gatekeeper: Simulate user requests to the server, and add a gatekeeper role between the client and the server to validate these requests

    Pull request description

    • test and six class
    status: under review 
    opened by Anditty 2
  • foreign-key-mapping and identity-field

    foreign-key-mapping and identity-field

    Foreign Key Mapping pattern #1296

    Foreign-Key-Mapping

    • Maps an association between objects to a foreign key reference between tables.

    • Each object contains the database key from the appropriate database table. If two objects are linked together with an association, this association can be replaced by a foreign key in the database.

    Pull request description

    • tests and three class

    For detailed contributing instructions see https://github.com/iluwatar/java-design-patterns/wiki/01.-How-to-contribute

    opened by lanxiang1234 1
  • Add Presentation-Abstraction-Control (issue #304)

    Add Presentation-Abstraction-Control (issue #304)

    Add Presentation-Abstraction-Control (issue #304)

    • Presentation–abstraction–control is a software architectural pattern. It is an interaction-oriented software architecture, and is somewhat similar to MVC in that it separates an interactive system into three types of components responsible for specific aspects of the application's functionality. The abstraction component retrieves and processes the data, the presentation component formats the visual and audio presentation of data, and the control component handles things such as the flow of control and communication between the other two components.
    • issue #304

    Pull request description

    • Add Presentation-Abstraction-Control (issue #304)
    status: under review 
    opened by MightyCorn1105939355 2
  • add table data gateway (issue #1318)

    add table data gateway (issue #1318)

    add table data gateway pattern (issue #1318)

    • Table Data Gateway is a design pattern in which an object acts as a gateway to a database table.[1] The idea is to separate the responsibility of fetching items from a database from the actual usages of those objects. Users of the gateway are then insulated from changes to the way objects are stored in the database.
    • issue #1318

    Pull request description

    • add table data gateway pattern
    status: under review 
    opened by guapi777 2
  • #1262 add Service to Worker pattern

    #1262 add Service to Worker pattern

    • Resolves issue #1262
    • The idea of the pattern is for clients to use a controller to centralized control the dispatcher to handle requests and prepare a dynamic presentation. It can decouple navigation from the front controller by controlling the execution flow and access flow of business data.
    opened by zWeBrain 1
  • #88 add facet pattern

    #88 add facet pattern

    • Resolve issue #88
    • facet pattern to realize security, in order to ensure some privilege only can be granted to some certain users.
    status: under review 
    opened by wangihzyue 1
Modern Java - A Guide to Java 8

Modern Java - A Guide to Java 8 This article was originally posted on my blog. You should also read my Java 11 Tutorial (including new language and AP

Benjamin Winterberg 14.5k Mar 13, 2021
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 233 Mar 8, 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.3k Mar 12, 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 748 Mar 10, 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 95 Mar 10, 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 132 Mar 13, 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 14.2k Mar 13, 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 819 Mar 12, 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 501 Mar 11, 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 11 Apr 2, 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 Mar 13, 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.1k Mar 11, 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 19 Apr 20, 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 Mar 12, 2021