# Plug-in Architectures With Layrry and the Java Module System

DevFeed: [Plug-in Architectures With Layrry and the Java Module System](<https://devfeed.tech/articles/plug-in-architectures-with-layrry-and-the-java-module-system-18857.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/plugin-architectures-with-layrry-and-the-java-module-system/>)

Published: 2020-04-21T16:54:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [cli](<https://devfeed.tech/tags/cli.md>), [java](<https://devfeed.tech/tags/java.md>), [module](<https://devfeed.tech/tags/module.md>)

## AI overview

This tutorial explains how to build plug-in architectures on the JVM using Java module layers and Layrry. It uses a command-line Greeter application to show how separate plug-ins can be isolated while using different dependency versions.

## Source excerpt

Table of Contents An Example: The Greeter CLI App Application Plug-ins With Layrry Finding Plug-in Implementations With the Java Service Loader Seeing it in Action Making applications extensible with some form of plug-ins is a very common pattern in software design: based on well-defined APIs provided by the application core, plug-ins can customize an application's behavior and provide new functionality. Examples include desktop applications like IDEs or web browsers, build tools such as Apache Maven or Gradle, as well as server-side applications such as Apache Kafka Connect, a runtime for Kafka connectors plug-ins. In this post I'm going to explore how the Java Platform Module System's notion of module layers can be leveraged for implementing plug-in architectures on the JVM. We'll also discuss how Layrry, a launcher and runtime for layered Java applications, can help with this task.