<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jörg Loos</title>
    <description>The latest articles on DEV Community by Jörg Loos (@jrg_loos_ae4027718d64899).</description>
    <link>https://dev.to/jrg_loos_ae4027718d64899</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3846800%2Fafa7af73-94d2-467a-8bd8-5235c8e31e61.jpeg</url>
      <title>DEV Community: Jörg Loos</title>
      <link>https://dev.to/jrg_loos_ae4027718d64899</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jrg_loos_ae4027718d64899"/>
    <language>en</language>
    <item>
      <title>"From AI euphoria to productive system – in 6 panels." 🧠⚡</title>
      <dc:creator>Jörg Loos</dc:creator>
      <pubDate>Sat, 23 May 2026 06:26:02 +0000</pubDate>
      <link>https://dev.to/jrg_loos_ae4027718d64899/from-ai-euphoria-to-productive-system-in-6-panels-47ka</link>
      <guid>https://dev.to/jrg_loos_ae4027718d64899/from-ai-euphoria-to-productive-system-in-6-panels-47ka</guid>
      <description>&lt;p&gt;Panel 1: "AI does everything!" – heard that one before?&lt;br&gt;
Panel 2: (missing here) – the prototype crashes.&lt;br&gt;
Panel 3: "I know someone." – yes, that's me.&lt;br&gt;
Panel 4: Auth, tests, deployment – that's the real work.&lt;br&gt;
Panel 5: "Fixed price? In 6 weeks?" – yes, that's how I work.&lt;br&gt;
Panel 6: A system that actually runs – with real users, real data, real stability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljff02t2xloa8yxf6m4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljff02t2xloa8yxf6m4p.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI prototypes are easy. Productive systems are art.&lt;/p&gt;

&lt;p&gt;Want to turn your prototype into a productive system? I can help. Fixed price. 4-6 weeks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jloos.dev" rel="noopener noreferrer"&gt;https://jloos.dev&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #ChatGPT #Prototype #Production #Fullstack #JLSoftware
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Modernizing a Legacy Java 8 Application Instead of Rewriting Everything</title>
      <dc:creator>Jörg Loos</dc:creator>
      <pubDate>Tue, 12 May 2026 15:33:43 +0000</pubDate>
      <link>https://dev.to/jrg_loos_ae4027718d64899/modernizing-a-legacy-java-8-application-instead-of-rewriting-everything-4b3h</link>
      <guid>https://dev.to/jrg_loos_ae4027718d64899/modernizing-a-legacy-java-8-application-instead-of-rewriting-everything-4b3h</guid>
      <description>&lt;p&gt;Many companies still run critical systems on Java 8 in 2026.&lt;/p&gt;

&lt;p&gt;Not because they “love old technology” — but because these systems still handle real business processes every day:&lt;br&gt;
internal tools&lt;br&gt;
ERP integrations&lt;br&gt;
warehouse systems&lt;br&gt;
finance workflows&lt;br&gt;
customer portals&lt;br&gt;
The problem is usually not that the software is old.&lt;br&gt;
The problem is that over the years the codebase became harder to maintain, deploy and extend.&lt;br&gt;
Recently I started building a public showcase project focused on legacy modernization strategies instead of full rewrites.&lt;br&gt;
Typical Legacy Problems&lt;br&gt;
The original structure intentionally simulates issues often found in older enterprise applications:&lt;br&gt;
tightly coupled services&lt;br&gt;
large controller classes&lt;br&gt;
business logic mixed everywhere&lt;br&gt;
duplicated code&lt;br&gt;
outdated dependencies&lt;br&gt;
manual deployments&lt;br&gt;
missing API structure&lt;br&gt;
weak separation of concerns&lt;br&gt;
Example:&lt;br&gt;
Java&lt;br&gt;
public class CustomerController {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void updateCustomer(Customer customer) {

    Database db = new Database();

    db.connect();

    if(customer != null) {
        db.update(customer);
        Logger.log("Updated");
    }

    db.close();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
This kind of code works.&lt;br&gt;
But scaling and maintaining it becomes painful over time.&lt;br&gt;
Modernization Goals&lt;br&gt;
Instead of rewriting everything from scratch, I focused on incremental improvements:&lt;br&gt;
Improvements&lt;br&gt;
cleaner package structure&lt;br&gt;
service layer separation&lt;br&gt;
dependency injection&lt;br&gt;
REST API organization&lt;br&gt;
Docker support&lt;br&gt;
environment configuration&lt;br&gt;
CI/CD preparation&lt;br&gt;
better maintainability&lt;br&gt;
improved readability&lt;br&gt;
modular architecture approach&lt;br&gt;
Example Refactoring&lt;br&gt;
Before:&lt;br&gt;
Java&lt;br&gt;
public class OrderService {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void save(Order order) {
    Connection connection = DriverManager.getConnection(...);

    // logic
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
After:&lt;br&gt;
Java&lt;br&gt;
@Service&lt;br&gt;
@RequiredArgsConstructor&lt;br&gt;
public class OrderService {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private final OrderRepository orderRepository;

public Order save(Order order) {
    return orderRepository.save(order);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
The goal is not “perfect architecture”.&lt;br&gt;
The goal is reducing technical debt step by step without breaking existing systems.&lt;br&gt;
Why Legacy Modernization Matters&lt;br&gt;
A lot of businesses cannot simply stop operations for a full rewrite.&lt;br&gt;
Incremental modernization is often more realistic:&lt;br&gt;
lower risk&lt;br&gt;
lower costs&lt;br&gt;
easier migration&lt;br&gt;
continuous operation&lt;br&gt;
better maintainability&lt;br&gt;
Especially in Java environments, many systems are still running on older stacks while businesses continue growing around them.&lt;br&gt;
Current Stack&lt;br&gt;
Backend:&lt;br&gt;
Java 8&lt;br&gt;
Spring Boot&lt;br&gt;
REST APIs&lt;br&gt;
Frontend:&lt;br&gt;
React + TypeScript&lt;br&gt;
Infrastructure:&lt;br&gt;
Docker&lt;br&gt;
Linux&lt;br&gt;
GitLab&lt;br&gt;
Nginx&lt;br&gt;
Final Thoughts&lt;br&gt;
Legacy systems are not “dead systems”.&lt;br&gt;
Most companies rely on them every single day.&lt;br&gt;
Modernizing existing software often creates more value than endlessly rebuilding everything from scratch.&lt;br&gt;
I’ll continue sharing architecture improvements, refactoring examples and modernization approaches as the project evolves.&lt;br&gt;
Portfolio: &lt;a href="//www.jloos.dev"&gt;jloos.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>softwaredevelopment</category>
      <category>springboot</category>
    </item>
  </channel>
</rss>
