feat: microkernel architecture pattern (#1086) by KishalayP · Pull Request #3610 · iluwatar/java-design-patterns · GitHub
Skip to content

feat: microkernel architecture pattern (#1086) - #3610

Open
KishalayP wants to merge 13 commits into
iluwatar:masterfrom
KishalayP:feature/#1086-microkernel-architecture-pattern
Open

KishalayP wants to merge 13 commits into
iluwatar:masterfrom
KishalayP:feature/#1086-microkernel-architecture-pattern

Conversation

@KishalayP

Copy link
Copy Markdown
Contributor

#1086: Implementation of the Microkernel Architecture Pattern as described in the issue

What does this PR do?

This PR introduces a complete, interactive implementation of the Microkernel Architecture Pattern (also known as the Plug-in architecture) to the repository. It uses a text editor simulation to demonstrate how to effectively separate a minimal core system from optional, specialized processing features.

This implementation demonstrates:

  • Core System & IPC: A centralized MicroKernel that controls the state (a document buffer) and an IpcRouter that dispatches messages between the core and isolated plugins.
  • Dynamic Plugin Management: A PluginCatalog (acting as a factory/store) and a PluginRegistry to handle the installation, tracking, and uninstallation of active plugins at runtime.
  • Distinct Plugin Lifecycles: Abstract base classes demonstrating two types of plugins:
    • Lifecycle-driven plugins that execute automatically upon installation (e.g., NeonThemePlugin).
    • Event-driven (On-demand) plugins that wait for explicit IPC messages to execute (e.g., UppercasePlugin, RemoveSpacesPlugin).
  • Clear Separation: An interactive CommandLineInterface (CLI) that is entirely decoupled from the core logic, allowing users to dynamically install/uninstall plugins and transform text and see the pattern working.
  • The PR also includes comprehensive Unit Tests for all components, a complete README.md, and PlantUML diagrams illustrating the structural architecture and message-routing process flow.

@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 Pull request needs attention.

Review Summary

Commits Considered (12)
  • ddba2f6: Adding Details for microkernel-architecture
  • 6b1a0d8: Adding Plugin
  • 6d7d86a: Reformatted as per style guide
  • 29f5c0d: Reformatted as per style guide
  • 24387f9: Adding Unit Tests
  • b1dea43: Adding CLI and main app
  • a9b0455: Adding Plugins
  • 812b14f: Adding Core Plugin Functions
  • d03adea: Adding Core Functions
  • a16a161: Merge branch 'iluwatar:master' into #1086-microkernel-architecture-pattern
  • 29d82bb: Merge branch 'iluwatar:master' into master
  • e48fdf3: #1086: Init commit adding module
Files Processed (28)
  • microkernel-architecture/README.md (1 hunk)
  • microkernel-architecture/etc/microkernel-architecture.png (0 hunks)
  • microkernel-architecture/etc/microkernel-architecture.puml (1 hunk)
  • microkernel-architecture/etc/microkernel-flow.png (0 hunks)
  • microkernel-architecture/etc/microkernel-flow.puml (1 hunk)
  • microkernel-architecture/pom.xml (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/App.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/cli/CommandLineInterface.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/core/AbstractLifecyclePlugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/core/AbstractOnDemandPlugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/core/MicroKernel.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/core/Plugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/ipc/IpcRouter.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/ipc/Message.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/JavaLanguagePlugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/NeonThemePlugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/PluginCatalog.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/RemoveSpacesPlugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/UppercasePlugin.java (1 hunk)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/registry/PluginRegistry.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/AppTest.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/cli/CommandLineInterfaceTest.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/core/MicroKernelTest.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/ipc/IpcRouterTest.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/plugins/PluginCatalogTest.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/plugins/PluginImplementationsTest.java (1 hunk)
  • microkernel-architecture/src/test/java/com/iluwatar/microkernel/registry/PluginRegistryTest.java (1 hunk)
  • pom.xml (1 hunk)
Actionable Comments (3)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/ipc/IpcRouter.java [51-80]

    best_practice: "Logger naming consistency"

  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/JavaLanguagePlugin.java [49-54]

    best_practice: "Consistency: logger naming for JavaLanguagePlugin"

  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/UppercasePlugin.java [46-52]

    best_practice: "Consistency: logger naming for UppercasePlugin"

Skipped Comments (3)
  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/core/MicroKernel.java [0-0]

    best_practice: "Logging consistency across core module"

  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/core/AbstractLifecyclePlugin.java [0-0]

    best_practice: "Lifecycle hooks idempotency"

  • microkernel-architecture/src/main/java/com/iluwatar/microkernel/plugins/RemoveSpacesPlugin.java [32-36]

    best_practice: "Logger usage consistency in RemoveSpacesPlugin"

@KishalayP
KishalayP marked this pull request as ready for review September 27, 2026 19:39
@codecov

codecov Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.58848% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 84.31%. Comparing base (4cabb20) to head (46ce10a).

Files with missing lines Patch % Lines
...ava/com/iluwatar/microkernel/core/MicroKernel.java 96.96% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3610      +/-   ##
============================================
+ Coverage     84.06%   84.31%   +0.24%     
- Complexity     4353     4449      +96     
============================================
  Files          1133     1146      +13     
  Lines         15400    15643     +243     
  Branches        739      759      +20     
============================================
+ Hits          12946    13189     +243     
+ Misses         2158     2156       -2     
- Partials        296      298       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@KishalayP KishalayP changed the title Feature/#1086 microkernel architecture pattern feat: #1086 microkernel architecture pattern Sep 28, 2026
@KishalayP KishalayP changed the title feat: #1086 microkernel architecture pattern feat: microkernel architecture pattern (#1086) Sep 28, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM!

Review Summary

Commits Considered (1)
Files Processed (0)
Actionable Comments (0)
Skipped Comments (0)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant