<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DesignPatterns on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/tags/designpatterns/</link><description>Recent content in DesignPatterns on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 23 Jul 2026 07:00:03 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/tags/designpatterns/index.xml" rel="self" type="application/rss+xml"/><item><title>Are Classic Design Patterns Still Valid With Modern Java?</title><link>https://javapro-en.svenruppert.com/are-classic-design-patterns-still-valid-with-modern-java/</link><pubDate>Thu, 23 Jul 2026 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/are-classic-design-patterns-still-valid-with-modern-java/</guid><description>&lt;p&gt;The classic GoF design patterns helped developers build maintainable object-oriented software for a long time. In the past years the languages, like Java, have changed a lot; they evolved! What was a design pattern back then became a language feature today. This article analyses which patterns are still needed and which became obsolete.&lt;/p&gt;
&lt;h2 id="once-upon-a-time"&gt;Once upon a time…&lt;/h2&gt;
&lt;h3 id="object-oriented-programming"&gt;Object-Oriented Programming&lt;/h3&gt;
&lt;p&gt;Object-oriented programming emerged with the invention of Simula 67. Ole-Johan Dahl and Kristen Nygaard invented Simula 67 while working at the Norwegian Computing Center in Oslo to run simulations. A few years later Alan Kay et al. invented Smalltalk as a purely object-oriented programming language. In the 80s, C++ brought the breakthrough in the mainstream for object-oriented programming. The first large-scale object-oriented systems were developed. In the 90s, object-oriented programming was the dominating programming paradigm.&lt;/p&gt;</description></item><item><title>Open-Core with Core Java and Vaadin — Part 2</title><link>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-2/</link><pubDate>Sat, 23 May 2026 11:33:42 +0000</pubDate><guid>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-2/</guid><description>&lt;p&gt;&lt;em&gt;Editions, runtime, and quality assurance.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;All source code presented here is published on GitHub and available at &lt;strong&gt;&lt;a href="https://3g3.eu/naityh"&gt;https://3g3.eu/naityh&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="recap-of-part-one"&gt;Recap of part one&lt;/h2&gt;
&lt;p&gt;The first part of this article developed the abstract mechanics of the open-core application. From two independent Maven projects with strictly asymmetric dependency direction, a deliberately slim extension API with the contribution types &lt;code&gt;RouteContribution&lt;/code&gt;, &lt;code&gt;MenuContribution&lt;/code&gt;, &lt;code&gt;NavbarContribution&lt;/code&gt;, and &lt;code&gt;CounterEventListener&lt;/code&gt;, a &lt;code&gt;FeatureRegistry&lt;/code&gt; that discovers its contributions via the Java standard library&amp;rsquo;s &lt;code&gt;ServiceLoader&lt;/code&gt;, and a Vaadin integration consisting of &lt;code&gt;MainLayout&lt;/code&gt; and &lt;code&gt;OpenCoreRouteInitializer&lt;/code&gt;, an apparatus is now in place that can accept arbitrary contributions in ordered form, without the core needing to know their identity.&lt;/p&gt;</description></item><item><title>Open-Core with Core Java and Vaadin — Part 1</title><link>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-1/</link><pubDate>Fri, 22 May 2026 11:33:04 +0000</pubDate><guid>https://javapro-en.svenruppert.com/open-core-with-core-java-and-vaadin-part-1/</guid><description>&lt;p&gt;&lt;em&gt;Architecture, extension API, and Vaadin integration.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-introduction-and-motivation"&gt;1. Introduction and motivation&lt;/h2&gt;
&lt;p&gt;The open-core model is often reduced in discussion to questions of licensing or commercial positioning. An open-source variant of a piece of software is complemented by a commercially distributed variant that brings additional features. Anyone who actually wants to implement such a separation in an existing codebase quickly discovers that the real difficulty lies neither in the licence text nor in the choice of repository, but in the code&amp;rsquo;s architecture.&lt;/p&gt;</description></item></channel></rss>