<?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: joaofelipefaria</title>
    <description>The latest articles on DEV Community by joaofelipefaria (@joaofelipefaria).</description>
    <link>https://dev.to/joaofelipefaria</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F558522%2Fffbc36b8-d085-49e6-ae7c-a86695ca06aa.jpeg</url>
      <title>DEV Community: joaofelipefaria</title>
      <link>https://dev.to/joaofelipefaria</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joaofelipefaria"/>
    <language>en</language>
    <item>
      <title>[FR] Design patterns : d'où viennent-ils ?</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:06:29 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/fr-design-patterns-dou-viennent-ils--pec</link>
      <guid>https://dev.to/joaofelipefaria/fr-design-patterns-dou-viennent-ils--pec</guid>
      <description>&lt;h2&gt;
  
  
  Une discussion sur les patrons de conception
&lt;/h2&gt;

&lt;p&gt;L'un des sujets qui suscitent le plus de curiosité (et de confusion) chez les personnes qui entrent dans le monde du développement, ce sont les &lt;strong&gt;design patterns&lt;/strong&gt;. Dans cette petite discussion, je vais essayer de clarifier quelques points sur les patrons de conception.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qu'est-ce qu'un design pattern ?
&lt;/h2&gt;

&lt;p&gt;Les design patterns sont des solutions techniques utilisées pour résoudre des problèmes récurrents du développement logiciel. Parmi les plus connus et les plus cités dans les conversations sur le logiciel, on trouve : &lt;strong&gt;Factory&lt;/strong&gt;, &lt;strong&gt;DAO&lt;/strong&gt;, &lt;strong&gt;DTO&lt;/strong&gt;, &lt;strong&gt;Message Outbox&lt;/strong&gt; et &lt;strong&gt;Pub/Sub&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Là où commence la confusion
&lt;/h2&gt;

&lt;p&gt;C'est ici que la confusion commence. Beaucoup de jeunes développeurs, ne connaissant pas l'origine de ces patterns, ne réalisent pas qu'ils viennent de mondes totalement différents. Avant de nous mettre à les définir, comprenons donc les principaux groupes et d'où ils sont issus.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les patterns GoF : la programmation orientée objet
&lt;/h2&gt;

&lt;p&gt;Les &lt;strong&gt;patterns GoF&lt;/strong&gt; sont des patrons pour la programmation orientée objet. Le nom vient du « Gang of Four » (Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides), auteurs du livre &lt;em&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/em&gt;, publié en 1994. Parmi les principaux : &lt;strong&gt;Singleton&lt;/strong&gt;, &lt;strong&gt;Factory Method&lt;/strong&gt; et &lt;strong&gt;Observer&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les JEE BluePrint Patterns : les applications web
&lt;/h2&gt;

&lt;p&gt;Les &lt;strong&gt;JEE BluePrint Patterns&lt;/strong&gt; sont des patrons pour le développement d'applications web d'entreprise. Ils sont nés dans l'écosystème Java EE (anciennement J2EE), à partir du programme Java BluePrints de Sun Microsystems, et ont été catalogués dans le livre &lt;em&gt;Core J2EE Patterns&lt;/em&gt;, paru en 2001. Parmi les principaux : &lt;strong&gt;DAO&lt;/strong&gt;, &lt;strong&gt;DTO&lt;/strong&gt; et &lt;strong&gt;Front Controller&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les patterns de messagerie : l'intégration entre systèmes
&lt;/h2&gt;

&lt;p&gt;Les &lt;strong&gt;patterns de messagerie&lt;/strong&gt; traitent de la communication asynchrone et de l'intégration entre systèmes au moyen de messages. Leur référence principale est le livre &lt;em&gt;Enterprise Integration Patterns&lt;/em&gt;, de Gregor Hohpe et Bobby Woolf, publié en 2003, et le sujet a pris encore plus d'ampleur avec l'arrivée des microservices. Parmi les principaux : &lt;strong&gt;Publish/Subscribe&lt;/strong&gt;, &lt;strong&gt;Dead Letter Channel&lt;/strong&gt; et &lt;strong&gt;Transactional Outbox&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Et il en existe d'autres
&lt;/h2&gt;

&lt;p&gt;Il existe d'autres familles, comme les patterns d'UI/UX, qui portent sur la façon de concevoir les interfaces et les interactions. Deux exemples : le &lt;strong&gt;Breadcrumb&lt;/strong&gt; (fil d'Ariane) et l'&lt;strong&gt;Infinite Scroll&lt;/strong&gt;. Il existe aussi des patterns pour l'IA, des patterns d'architecture, parmi bien d'autres.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prochaines étapes
&lt;/h2&gt;

&lt;p&gt;Dans les prochains articles, nous approfondirons ces familles de patterns, une par une. Nous définirons les patterns, comprendrons le problème qu'ils résolvent et verrons comment les implémenter dans vos projets.&lt;/p&gt;

</description>
      <category>designpatterns</category>
      <category>beginners</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>[EN] Design patterns: where do they come from?</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:05:50 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/en-design-patterns-where-do-they-come-from-1dpn</link>
      <guid>https://dev.to/joaofelipefaria/en-design-patterns-where-do-they-come-from-1dpn</guid>
      <description>&lt;h2&gt;
  
  
  A chat about design patterns
&lt;/h2&gt;

&lt;p&gt;One of the topics I see sparking the most curiosity (and confusion) among people entering the world of software development is &lt;strong&gt;design patterns&lt;/strong&gt;. In this short chat, I'll try to clear up a few things about them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are design patterns?
&lt;/h2&gt;

&lt;p&gt;Design patterns are technical solutions used to solve recurring problems in software development. Some of the best known and most frequently mentioned in conversations about software are: &lt;strong&gt;Factory&lt;/strong&gt;, &lt;strong&gt;DAO&lt;/strong&gt;, &lt;strong&gt;DTO&lt;/strong&gt;, &lt;strong&gt;Message Outbox&lt;/strong&gt; and &lt;strong&gt;Pub/Sub&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the confusion starts
&lt;/h2&gt;

&lt;p&gt;And this is where the confusion begins. Many younger developers, not knowing where these patterns come from, don't realize they originate from completely different worlds. So before we start defining patterns, let's understand the main groups and where they came from.&lt;/p&gt;

&lt;h2&gt;
  
  
  GoF Patterns: object-oriented programming
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GoF Patterns&lt;/strong&gt; are patterns for object-oriented programming. The name comes from the "Gang of Four" (Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides), the authors of the book &lt;em&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/em&gt;, published in 1994. Among the main ones are &lt;strong&gt;Singleton&lt;/strong&gt;, &lt;strong&gt;Factory Method&lt;/strong&gt; and &lt;strong&gt;Observer&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  JEE BluePrint Patterns: web applications
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JEE BluePrint Patterns&lt;/strong&gt; are patterns for developing enterprise web applications. They came out of the Java EE (formerly J2EE) ecosystem, from Sun Microsystems' Java BluePrints program, and were cataloged in the 2001 book &lt;em&gt;Core J2EE Patterns&lt;/em&gt;. Among the main ones are &lt;strong&gt;DAO&lt;/strong&gt;, &lt;strong&gt;DTO&lt;/strong&gt; and &lt;strong&gt;Front Controller&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Messaging patterns: integrating systems
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Messaging patterns&lt;/strong&gt; deal with asynchronous communication and integration between systems through messages. Their main reference is the book &lt;em&gt;Enterprise Integration Patterns&lt;/em&gt; by Gregor Hohpe and Bobby Woolf, published in 2003, and the topic gained even more traction with the rise of microservices. Among the main ones are &lt;strong&gt;Publish/Subscribe&lt;/strong&gt;, &lt;strong&gt;Dead Letter Channel&lt;/strong&gt; and &lt;strong&gt;Transactional Outbox&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  And there are others
&lt;/h2&gt;

&lt;p&gt;There are other families, such as UI/UX patterns, which deal with how we design interfaces and interactions. Two examples are the &lt;strong&gt;Breadcrumb&lt;/strong&gt; and &lt;strong&gt;Infinite Scroll&lt;/strong&gt;. There are also patterns for AI, architecture patterns, and many others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;In the next articles, we'll dive deeper into these pattern families, one by one. We'll define the patterns, understand the problem each one solves, and see how to implement them in your projects.&lt;/p&gt;

</description>
      <category>designpatterns</category>
      <category>beginners</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>[PT] Design patterns: de onde eles vêm?</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:03:42 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/pt-design-patterns-de-onde-eles-vem-1l25</link>
      <guid>https://dev.to/joaofelipefaria/pt-design-patterns-de-onde-eles-vem-1l25</guid>
      <description>&lt;h2&gt;
  
  
  Um bate-papo sobre padrões de projeto
&lt;/h2&gt;

&lt;p&gt;Um dos assuntos que mais vejo despertar a curiosidade (e a confusão) de quem está entrando no mundo do desenvolvimento são os &lt;strong&gt;design patterns&lt;/strong&gt;. Neste pequeno bate-papo, vou tentar esclarecer algumas coisas sobre os padrões de projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que são design patterns?
&lt;/h2&gt;

&lt;p&gt;Design patterns são soluções de tecnologia usadas para resolver problemas recorrentes do desenvolvimento de software. Alguns dos mais conhecidos e mencionados em conversas sobre software são: &lt;strong&gt;Factory&lt;/strong&gt;, &lt;strong&gt;DAO&lt;/strong&gt;, &lt;strong&gt;DTO&lt;/strong&gt;, &lt;strong&gt;Message Outbox&lt;/strong&gt; e &lt;strong&gt;Pub/Sub&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Onde começa a confusão
&lt;/h2&gt;

&lt;p&gt;E aqui começa a confusão. Muitos programadores mais jovens, por não conhecerem a origem desses patterns, não percebem que eles vêm de mundos totalmente diferentes. Por isso, antes de sairmos definindo patterns, vamos entender os principais grupos e de onde eles surgiram.&lt;/p&gt;

&lt;h2&gt;
  
  
  GoF Patterns: orientação a objetos
&lt;/h2&gt;

&lt;p&gt;Os &lt;strong&gt;GoF Patterns&lt;/strong&gt; são padrões para a programação orientada a objetos. O nome vem da "Gang of Four" (Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides), autores do livro &lt;em&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/em&gt;, publicado em 1994. Entre os principais estão &lt;strong&gt;Singleton&lt;/strong&gt;, &lt;strong&gt;Factory Method&lt;/strong&gt; e &lt;strong&gt;Observer&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  JEE BluePrint Patterns: aplicações web
&lt;/h2&gt;

&lt;p&gt;Os &lt;strong&gt;JEE BluePrint Patterns&lt;/strong&gt; são padrões para o desenvolvimento de aplicações web corporativas. Surgiram no ecossistema Java EE (antigo J2EE), a partir do programa Java BluePrints da Sun Microsystems, e foram catalogados no livro &lt;em&gt;Core J2EE Patterns&lt;/em&gt;, de 2001. Entre os principais estão &lt;strong&gt;DAO&lt;/strong&gt;, &lt;strong&gt;DTO&lt;/strong&gt; e &lt;strong&gt;Front Controller&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patterns de mensageria: integração entre sistemas
&lt;/h2&gt;

&lt;p&gt;Os &lt;strong&gt;patterns de mensageria&lt;/strong&gt; tratam da comunicação assíncrona e da integração entre sistemas por meio de mensagens. Sua principal referência é o livro &lt;em&gt;Enterprise Integration Patterns&lt;/em&gt;, de Gregor Hohpe e Bobby Woolf, publicado em 2003, e o tema ganhou ainda mais força com a chegada dos microsserviços. Entre os principais estão &lt;strong&gt;Publish/Subscribe&lt;/strong&gt;, &lt;strong&gt;Dead Letter Channel&lt;/strong&gt; e &lt;strong&gt;Transactional Outbox&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  E ainda existem outros
&lt;/h2&gt;

&lt;p&gt;Há outras famílias, como os patterns de UI/UX, que tratam de como projetamos interfaces e interações. Dois exemplos são o &lt;strong&gt;Breadcrumb&lt;/strong&gt; e o &lt;strong&gt;Infinite Scroll&lt;/strong&gt;. Existem ainda patterns para IA, patterns de arquitetura, dentre diversos outros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Próximos passos
&lt;/h2&gt;

&lt;p&gt;Nos próximos artigos, vamos nos aprofundar nessas famílias de patterns, uma a uma. Vamos definir os patterns, entender o problema que eles resolvem e ver como implementá-los em seus projetos.&lt;/p&gt;

</description>
      <category>designpatterns</category>
      <category>programming</category>
      <category>beginners</category>
      <category>architecture</category>
    </item>
    <item>
      <title>[FR] Java en pratique : classes, objets et packages</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:02:11 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/fr-java-en-pratique-classes-objets-et-packages-5bkk</link>
      <guid>https://dev.to/joaofelipefaria/fr-java-en-pratique-classes-objets-et-packages-5bkk</guid>
      <description>&lt;h2&gt;
  
  
  Java est orienté objet
&lt;/h2&gt;

&lt;p&gt;Java est un langage orienté objet. Concrètement, cela signifie que l'on construit un programme Java en écrivant des &lt;strong&gt;classes&lt;/strong&gt; et en manipulant des &lt;strong&gt;objets&lt;/strong&gt;. La classe est le moule ; l'objet est l'instance créée à partir de ce moule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attributs et méthodes
&lt;/h2&gt;

&lt;p&gt;À l'intérieur d'une classe, les &lt;strong&gt;méthodes&lt;/strong&gt; représentent le comportement d'un objet et les &lt;strong&gt;attributs&lt;/strong&gt; représentent son état. Pour rendre cela concret, modélisons une voiture, qui a une marque et une année de fabrication :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.exemple.modele&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Voiture&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;marque&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;annee&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Le package
&lt;/h2&gt;

&lt;p&gt;La première déclaration d'un fichier de classe est le &lt;code&gt;package&lt;/code&gt;. Il indique dans quel package se trouve la classe et répond à trois objectifs :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;éviter les collisions de noms (deux classes portant le même nom peuvent coexister dans des packages différents) ;&lt;/li&gt;
&lt;li&gt;regrouper les classes par responsabilité ;&lt;/li&gt;
&lt;li&gt;permettre à d'autres classes de les importer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Créer et utiliser un objet
&lt;/h2&gt;

&lt;p&gt;Dans cet exemple, en plus de &lt;code&gt;Voiture&lt;/code&gt;, nous allons créer une seconde classe nommée &lt;code&gt;Application&lt;/code&gt;. Elle importe &lt;code&gt;Voiture&lt;/code&gt; et, dans la méthode &lt;code&gt;main&lt;/code&gt;, crée une voiture, renseigne la marque ("fiat uno") et l'année (2002), puis affiche ces valeurs :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.exemple&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.exemple.modele.Voiture&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Voiture&lt;/span&gt; &lt;span class="n"&gt;voiture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Voiture&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;voiture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;marque&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"fiat uno"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;voiture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;annee&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2002&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Marque : "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;voiture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;marque&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Année : "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;voiture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;annee&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En exécutant &lt;code&gt;Application&lt;/code&gt;, la console affiche la marque et l'année de la voiture créée. Remarquez que &lt;code&gt;Application&lt;/code&gt; se trouve dans un package différent de celui de &lt;code&gt;Voiture&lt;/code&gt; ; elle a donc besoin de l'&lt;code&gt;import&lt;/code&gt; pour la voir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que nous avons appris
&lt;/h2&gt;

&lt;p&gt;Avec ce petit exemple, nous avons déjà vu quelques comportements de base du langage : la déclaration de package, la définition d'une classe avec ses attributs, l'importation de classes et l'instanciation d'un objet avec &lt;code&gt;new&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  À propos des types
&lt;/h3&gt;

&lt;p&gt;En utilisant les mots-clés &lt;code&gt;String&lt;/code&gt; et &lt;code&gt;int&lt;/code&gt;, nous définissons le type de chaque attribut : un texte pour la marque et un nombre entier pour l'année. Java est un langage à typage statique, et cela s'applique aux attributs, aux variables et aux paramètres.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prochaines étapes
&lt;/h2&gt;

&lt;p&gt;Dans les prochains articles, nous approfondirons le typage en Java et explorerons les syntaxes possibles de la méthode &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>oop</category>
    </item>
    <item>
      <title>[EN] Java in practice: classes, objects and packages</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:01:31 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/en-java-in-practice-classes-objects-and-packages-8hb</link>
      <guid>https://dev.to/joaofelipefaria/en-java-in-practice-classes-objects-and-packages-8hb</guid>
      <description>&lt;h2&gt;
  
  
  Java is object-oriented
&lt;/h2&gt;

&lt;p&gt;Java is an object-oriented language. In practice, this means we build a Java program by writing &lt;strong&gt;classes&lt;/strong&gt; and manipulating &lt;strong&gt;objects&lt;/strong&gt;. The class is the blueprint; the object is the instance created from it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attributes and methods
&lt;/h2&gt;

&lt;p&gt;Inside a class, &lt;strong&gt;methods&lt;/strong&gt; represent an object's behavior and &lt;strong&gt;attributes&lt;/strong&gt; represent its state. To make this concrete, let's model a car, which has a brand and a year of manufacture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.example.model&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;brand&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The package
&lt;/h2&gt;

&lt;p&gt;The first statement in a class file is the &lt;code&gt;package&lt;/code&gt; declaration. It tells which package the class belongs to and serves three purposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;avoiding naming collisions (two classes with the same name can coexist in different packages);&lt;/li&gt;
&lt;li&gt;grouping classes by responsibility;&lt;/li&gt;
&lt;li&gt;allowing other classes to import them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Creating and using an object
&lt;/h2&gt;

&lt;p&gt;In this example, besides &lt;code&gt;Car&lt;/code&gt;, we'll create a second class called &lt;code&gt;Application&lt;/code&gt;. It imports &lt;code&gt;Car&lt;/code&gt; and, in the &lt;code&gt;main&lt;/code&gt; method, creates a car, sets the brand ("fiat uno") and the year (2002), and finally prints both values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.example&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.example.model.Car&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;brand&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"fiat uno"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2002&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Brand: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;brand&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Year: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;year&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you run &lt;code&gt;Application&lt;/code&gt;, the console prints the brand and year of the car we created. Note that &lt;code&gt;Application&lt;/code&gt; lives in a different package from &lt;code&gt;Car&lt;/code&gt;, so it needs the &lt;code&gt;import&lt;/code&gt; statement to see it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we learned
&lt;/h2&gt;

&lt;p&gt;With this small example we've already seen some basic language behaviors: the package declaration, defining a class with its attributes, importing classes, and instantiating an object with &lt;code&gt;new&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  About types
&lt;/h3&gt;

&lt;p&gt;By using the keywords &lt;code&gt;String&lt;/code&gt; and &lt;code&gt;int&lt;/code&gt;, we define the type of each attribute: text for the brand and a whole number for the year. Java is a statically typed language, and this applies to attributes, variables and parameters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;In the next articles, we'll dive deeper into typing in Java and explore the possible syntaxes for the &lt;code&gt;main&lt;/code&gt; method.&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>programming</category>
      <category>oop</category>
    </item>
    <item>
      <title>[PT] Java na prática: classes, objetos e pacotes</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Mon, 28 Sep 2026 12:00:08 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/java-na-pratica-classes-objetos-e-pacotes-4hmn</link>
      <guid>https://dev.to/joaofelipefaria/java-na-pratica-classes-objetos-e-pacotes-4hmn</guid>
      <description>&lt;h2&gt;
  
  
  Java é orientado a objetos
&lt;/h2&gt;

&lt;p&gt;Java é uma linguagem orientada a objetos. Na prática, isso significa que construímos um programa Java codificando &lt;strong&gt;classes&lt;/strong&gt; e manipulando &lt;strong&gt;objetos&lt;/strong&gt;. A classe é o molde; o objeto é a instância criada a partir dele.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atributos e métodos
&lt;/h2&gt;

&lt;p&gt;Dentro de uma classe, os &lt;strong&gt;métodos&lt;/strong&gt; representam o comportamento de um objeto, e os &lt;strong&gt;atributos&lt;/strong&gt; representam o seu estado. Para deixar isso concreto, vamos modelar um carro, que tem uma marca e um ano de fabricação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.exemplo.modelo&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Carro&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;ano&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O pacote (package)
&lt;/h2&gt;

&lt;p&gt;A primeira declaração de um arquivo de classe é o &lt;code&gt;package&lt;/code&gt;. Ele informa em qual pacote a classe está e serve a três propósitos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evitar colisões de nomes (duas classes com o mesmo nome podem coexistir em pacotes diferentes);&lt;/li&gt;
&lt;li&gt;agrupar classes por responsabilidade;&lt;/li&gt;
&lt;li&gt;permitir que outras classes as importem.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Criando e usando um objeto
&lt;/h2&gt;

&lt;p&gt;Neste exemplo, além de &lt;code&gt;Carro&lt;/code&gt;, vamos criar uma segunda classe chamada &lt;code&gt;Application&lt;/code&gt;. Ela importa &lt;code&gt;Carro&lt;/code&gt; e, no método &lt;code&gt;main&lt;/code&gt;, cria um carro, informa a marca ("fiat uno") e o ano (2002) e, por fim, imprime esses valores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;com.exemplo&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.exemplo.modelo.Carro&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Carro&lt;/span&gt; &lt;span class="n"&gt;carro&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Carro&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;carro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;marca&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"fiat uno"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;carro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ano&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2002&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Marca: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;carro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;marca&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Ano: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;carro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ano&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ao executar &lt;code&gt;Application&lt;/code&gt;, o console exibe a marca e o ano do carro criado. Repare que &lt;code&gt;Application&lt;/code&gt; está em um pacote diferente de &lt;code&gt;Carro&lt;/code&gt;, e por isso precisa do &lt;code&gt;import&lt;/code&gt; para enxergá-la.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que aprendemos
&lt;/h2&gt;

&lt;p&gt;Com esse pequeno exemplo, já vimos comportamentos básicos da linguagem: a declaração de pacote, a definição de uma classe com seus atributos, a importação de classes e a instanciação de um objeto com &lt;code&gt;new&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sobre os tipos
&lt;/h3&gt;

&lt;p&gt;Ao usar as palavras-chave &lt;code&gt;String&lt;/code&gt; e &lt;code&gt;int&lt;/code&gt;, estamos definindo o tipo de cada atributo: um texto para a marca e um número inteiro para o ano. Java é uma linguagem de tipagem estática, e isso vale para atributos, variáveis e parâmetros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Próximos passos
&lt;/h2&gt;

&lt;p&gt;Nos próximos artigos, vamos aprofundar a tipagem dentro do Java e explorar as sintaxes possíveis para o método &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>programming</category>
      <category>oop</category>
    </item>
    <item>
      <title>[FR] Java et les fondamentaux de la programmation orientée objet</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Tue, 15 Sep 2026 09:31:42 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/fr-java-et-les-fondamentaux-de-la-programmation-orientee-objet-13m6</link>
      <guid>https://dev.to/joaofelipefaria/fr-java-et-les-fondamentaux-de-la-programmation-orientee-objet-13m6</guid>
      <description>&lt;p&gt;La programmation orientée objet (POO) est l'un des principaux paradigmes de programmation utilisés avec Java. Plus qu'un simple concept de programmation, elle représente une manière très naturelle pour le cerveau humain d'interagir avec son environnement. Lorsque nous entrons dans une pièce, par exemple, nous identifions naturellement les choses qui présentent des caractéristiques similaires et nous les regroupons mentalement : nous reconnaissons des chaises, des tables, des personnes, des portes, etc. Intuitivement, nous sommes en train de classer les éléments en catégories (classes) et d'identifier leurs occurrences concrètes (objets). La POO utilise précisément cette manière de penser pour représenter le monde réel dans un système informatique, en considérant que les objets possèdent un état et un comportement.&lt;/p&gt;

&lt;p&gt;L'histoire de la POO a commencé avant Java lui-même, avec des langages comme Simula et Smalltalk, qui ont contribué à établir plusieurs concepts fondamentaux de ce paradigme. Plus tard, des langages comme C++ et Java ont contribué à populariser la programmation orientée objet dans le développement logiciel.&lt;/p&gt;

&lt;p&gt;En Java, une classe fonctionne comme un modèle permettant de créer des objets. Elle définit des attributs, qui représentent l'état de l'objet, et des méthodes, qui représentent son comportement. À partir d'une classe Car, par exemple, nous pouvons créer plusieurs voitures différentes, chacune possédant son propre état.&lt;/p&gt;

&lt;p&gt;La création d'un objet se fait généralement avec l'opérateur new, comme dans Car myCar = new Car();. À ce moment-là, nous créons une instance concrète de la classe. Les constructeurs permettent d'initialiser ces objets. Ils portent le même nom que la classe et n'ont pas de type de retour.&lt;/p&gt;

&lt;p&gt;Un autre concept important est celui des interfaces, qui fonctionnent comme des contrats de comportement. Une interface peut définir des opérations qu'une classe doit implémenter, permettant ainsi à différents types d'objets de respecter le même contrat. Java possède également des membres static, qui appartiennent à la classe elle-même et non à une instance particulière.&lt;/p&gt;

&lt;p&gt;Java propose également les blocs d'initialisation, qui permettent d'exécuter du code lors de l'initialisation d'un objet ou du chargement d'une classe. Même s'ils sont moins utilisés dans le développement quotidien, ils font partie des mécanismes d'initialisation disponibles en Java.&lt;/p&gt;

&lt;p&gt;Ces concepts constituent la base nécessaire pour comprendre les principes plus avancés de la POO : encapsulation, héritage, polymorphisme, abstraction et composition. Ils permettent de construire des systèmes mieux organisés, réutilisables et plus faciles à maintenir — et c'est précisément sur ces concepts que nous pouvons poursuivre l'étude de la POO en Java.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>[EN] Java and the Fundamentals of Object-Oriented Programming</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Tue, 15 Sep 2026 09:31:18 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/en-java-and-the-fundamentals-of-object-oriented-programming-35nc</link>
      <guid>https://dev.to/joaofelipefaria/en-java-and-the-fundamentals-of-object-oriented-programming-35nc</guid>
      <description>&lt;p&gt;Object-Oriented Programming (OOP) is one of the main programming paradigms used in Java. More than just a programming concept, it represents a very natural way for the human brain to interact with the environment. When we enter a room, for example, we naturally identify things with similar characteristics and group them mentally: we recognize chairs, tables, people, doors, and so on. Intuitively, we are classifying elements into categories (classes) and identifying their concrete occurrences (objects). OOP uses exactly this way of thinking to represent the real world inside a software system, considering that objects have state and behavior.&lt;/p&gt;

&lt;p&gt;The history of OOP began before Java itself, with languages such as Simula and Smalltalk, which helped establish many of the fundamental concepts of the paradigm. Later, languages such as C++ and Java helped popularize object-oriented programming in software development.&lt;/p&gt;

&lt;p&gt;In Java, a class works as a blueprint for creating objects. It defines attributes, which represent the object's state, and methods, which represent its behavior. From a Car class, for example, we can create several different cars, each with its own state.&lt;/p&gt;

&lt;p&gt;An object is normally created using the new operator, as in Car myCar = new Car();. At this point, we are creating a concrete instance of the class. Constructors are used to initialize these objects and have the same name as the class, with no return type.&lt;/p&gt;

&lt;p&gt;Another important concept is the interface, which works as a behavioral contract. An interface can define operations that a class must implement, allowing different types of objects to follow the same contract. Java also provides static members, which belong to the class itself rather than to a specific instance.&lt;/p&gt;

&lt;p&gt;Java also has initializer blocks, which allow code to be executed during object initialization or when a class is loaded. Although they are less commonly used in everyday development, they are part of Java's available initialization mechanisms.&lt;/p&gt;

&lt;p&gt;These concepts form the foundation for understanding the more advanced principles of OOP: encapsulation, inheritance, polymorphism, abstraction, and composition. Together, they allow us to build systems that are more organized, reusable, and easier to maintain — and these are precisely the concepts we should explore next when studying OOP in Java.&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>basic</category>
      <category>programming</category>
    </item>
    <item>
      <title>[PT] Java e os fundamentos da Programação Orientada a Objetos</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Tue, 15 Sep 2026 09:30:35 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/pt-java-e-os-fundamentos-da-programacao-orientada-a-objetos-353l</link>
      <guid>https://dev.to/joaofelipefaria/pt-java-e-os-fundamentos-da-programacao-orientada-a-objetos-353l</guid>
      <description>&lt;p&gt;A Programação Orientada a Objetos (POO) é um dos principais paradigmas utilizados no desenvolvimento com Java. Mais do que um conceito de programação, ela representa uma forma bastante natural de o cérebro humano interagir com o ambiente. Quando entramos em uma sala, por exemplo, naturalmente identificamos coisas com características semelhantes e as agrupamos mentalmente: reconhecemos cadeiras, mesas, pessoas, portas etc. Intuitivamente, estamos &lt;strong&gt;classificando elementos em categorias (classes)&lt;/strong&gt; e identificando suas &lt;strong&gt;ocorrências concretas (objetos)&lt;/strong&gt;. A POO utiliza justamente essa maneira de pensar para representar o mundo dentro de um sistema, considerando que os objetos possuem &lt;strong&gt;estado e comportamento&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A história da POO começou antes do próprio Java, passando por linguagens como &lt;strong&gt;Simula e Smalltalk&lt;/strong&gt;, que ajudaram a estabelecer conceitos fundamentais desse paradigma. Posteriormente, linguagens como &lt;strong&gt;C++ e Java&lt;/strong&gt; popularizaram a orientação a objetos no desenvolvimento de software.&lt;/p&gt;

&lt;p&gt;Em Java, uma &lt;strong&gt;classe&lt;/strong&gt; funciona como um &lt;strong&gt;modelo para criar objetos&lt;/strong&gt;. Ela define seus atributos, que representam o estado, e seus métodos, que representam os comportamentos. A partir de uma classe Car, por exemplo, podemos criar vários carros diferentes, cada um com seu próprio estado.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;criação&lt;/strong&gt; de um objeto é feita normalmente através do operador &lt;strong&gt;new&lt;/strong&gt;, como em &lt;code&gt;Car myCar = new Car();&lt;/code&gt;. Nesse momento, estamos criando uma &lt;strong&gt;instância concreta da classe&lt;/strong&gt;. Os construtores são utilizados para inicializar esses objetos e possuem o mesmo nome da classe, não tendo tipo de retorno.&lt;/p&gt;

&lt;p&gt;Outro conceito importante são as &lt;strong&gt;interfaces&lt;/strong&gt;, que funcionam como &lt;strong&gt;contratos de comportamento&lt;/strong&gt;. Uma interface pode definir operações que uma classe deve implementar, permitindo que diferentes tipos de objetos sigam o mesmo contrato. Além disso, Java possui membros &lt;code&gt;static&lt;/code&gt;, que pertencem à própria classe e não a uma instância específica.&lt;/p&gt;

&lt;p&gt;Também existem os &lt;strong&gt;initializer blocks&lt;/strong&gt;, que permitem executar código durante a inicialização de objetos ou durante o carregamento da classe. Embora sejam recursos menos utilizados no dia a dia, fazem parte dos mecanismos de inicialização disponíveis em Java.&lt;/p&gt;

&lt;p&gt;Esses conceitos formam a base para compreender os pilares mais avançados da POO: &lt;strong&gt;encapsulamento, herança, polimorfismo, abstração e composição&lt;/strong&gt;. A partir deles, conseguimos construir sistemas mais organizados, reutilizáveis e fáceis de manter — e é justamente sobre esses conceitos que o estudo de POO em Java deve avançar.&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>basic</category>
      <category>programming</category>
    </item>
    <item>
      <title>[FR] MapData App (un terrain de jeu full-stack)</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Sat, 29 Mar 2025 17:42:34 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/fr-mapdata-app-un-terrain-de-jeu-full-stack-5a7j</link>
      <guid>https://dev.to/joaofelipefaria/fr-mapdata-app-un-terrain-de-jeu-full-stack-5a7j</guid>
      <description>&lt;h1&gt;
  
  
  Bienvenue dans le Projet MapData : Votre Terrain de Jeu Full-Stack !
&lt;/h1&gt;

&lt;p&gt;Salut, développeur ! Prêt à plonger dans un projet qui n'est pas seulement une expérience d'apprentissage, mais aussi un environnement pratique pour le développement full-stack avec &lt;strong&gt;Java&lt;/strong&gt; et &lt;strong&gt;Angular&lt;/strong&gt; ? Laissez-moi vous présenter le &lt;strong&gt;Projet MapData&lt;/strong&gt;, un système modulaire parfait pour gérer les données cartographiques et les métadonnées, tout en vous offrant la flexibilité d'explorer plusieurs frameworks et outils.&lt;/p&gt;




&lt;h2&gt;
  
  
  Qu'est-ce que le Projet MapData ?
&lt;/h2&gt;

&lt;p&gt;Le &lt;strong&gt;Projet MapData&lt;/strong&gt; est avant tout un &lt;strong&gt;environnement de travail de base pour les développeurs full-stack&lt;/strong&gt;. Il repose sur une &lt;strong&gt;architecture de microservices&lt;/strong&gt; avec une API backend, une application frontend &lt;strong&gt;Single Page Application (SPA)&lt;/strong&gt; et des utilitaires pour gérer la base de données et l'environnement. Que vous soyez un développeur expérimenté ou débutant, ce projet est une excellente opportunité pour explorer les technologies modernes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voici ce qui est inclus :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-api&lt;/strong&gt; : Une API RESTful pour gérer les données cartographiques et les métadonnées.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-app&lt;/strong&gt; : Une application frontend élégante basée sur Angular pour l'interaction utilisateur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-db&lt;/strong&gt; : Gère la création et la maintenance du schéma de la base de données.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-web&lt;/strong&gt; : Une version frontend légère utilisant HTML, CSS et JavaScript pur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-automations-python&lt;/strong&gt; : Scripts Python pour automatiser et gérer l'environnement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et le meilleur ? Vous pouvez &lt;strong&gt;changer les frameworks&lt;/strong&gt; ! Vous voulez essayer &lt;strong&gt;Quarkus&lt;/strong&gt; au lieu de &lt;strong&gt;Spring Boot&lt;/strong&gt; ? &lt;strong&gt;React&lt;/strong&gt; au lieu de &lt;strong&gt;Angular&lt;/strong&gt; ? Allez-y ! Le projet est conçu pour être flexible.&lt;/p&gt;




&lt;h2&gt;
  
  
  La Technologie Derrière la Magie
&lt;/h2&gt;

&lt;p&gt;Voici un aperçu rapide :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Java&lt;/strong&gt; : Le backend est construit avec Java, le langage incontournable pour les applications d'entreprise. Fiable, évolutif et parfaitement intégré avec des frameworks comme &lt;strong&gt;Spring Boot&lt;/strong&gt; ou &lt;strong&gt;Quarkus&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Angular&lt;/strong&gt; : Le frontend SPA est construit avec Angular, un framework puissant pour créer des applications web dynamiques et réactives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; : Tout fonctionne dans des conteneurs, ce qui simplifie le déploiement et la gestion de l'environnement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; : Les scripts d'automatisation sont écrits en Python, une langue polyvalente idéale pour les tâches d'automatisation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript Pur&lt;/strong&gt; : Pour ceux qui aiment la simplicité, le composant &lt;strong&gt;mapdata-web&lt;/strong&gt; est une version frontend pure en HTML/JS.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Comment Créer l'API et l'Application
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Création de l'API
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Clonez le dépôt :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/joaofelipefaria/mapdata.git
   &lt;span class="nb"&gt;cd &lt;/span&gt;mapdata/mapdata-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Construisez le projet :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   mvn clean &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Lancez l'API :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   java &lt;span class="nt"&gt;-jar&lt;/span&gt; target/mapdata-api-0.0.1-SNAPSHOT.jar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Création de l'Application
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Accédez au répertoire de l'application :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;mapdata/mapdata-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Installez les dépendances :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Lancez l'application en mode développement :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   ng serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Accédez à l'application à l'adresse &lt;code&gt;http://localhost:4200&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Et la Base de Données et le Web ?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-db&lt;/strong&gt; : Ce composant gère le schéma de la base de données. Configurez simplement le fichier &lt;code&gt;pom.xml&lt;/code&gt; et exécutez :
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   mvn clean &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cela créera toutes les tables et séquences nécessaires.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-web&lt;/strong&gt; : Vous voulez un frontend simple ? C'est celui qu'il vous faut. Ouvrez simplement le fichier &lt;code&gt;index.html&lt;/code&gt; dans votre navigateur, et c'est parti.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Automatisation : Votre Nouveau Meilleur Ami
&lt;/h2&gt;

&lt;p&gt;Gérer les environnements peut être compliqué, mais pas avec &lt;strong&gt;mapdata-automations-python&lt;/strong&gt;. Ces scripts Python vous permettent de démarrer, arrêter et gérer les services Docker facilement. Par exemple :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Démarrez l'environnement :
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   python run_env.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Arrêtez tout :
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   python shutdown_env.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;C'est aussi simple que ça. Plus besoin de commandes Docker manuelles !&lt;/p&gt;




&lt;h2&gt;
  
  
  Prêt à Vous Lancer ?
&lt;/h2&gt;

&lt;p&gt;Le &lt;strong&gt;Projet MapData&lt;/strong&gt; est bien plus qu'un simple projet : c'est un terrain de jeu pour les développeurs full-stack. Que vous construisiez quelque chose de nouveau ou que vous exploriez simplement, c'est l'environnement parfait pour affiner vos compétences. Alors, qu'attendez-vous ? Clonez le dépôt et commencez à coder !&lt;/p&gt;




&lt;h2&gt;
  
  
  GITHUB
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/joaofelipefaria/mapdata" rel="noopener noreferrer"&gt;https://github.com/joaofelipefaria/mapdata&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>angular</category>
      <category>fullstack</category>
    </item>
    <item>
      <title>MapData App (a full-stack playground)</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Sat, 29 Mar 2025 17:36:38 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/mapdata-app-a-full-stack-playground-4kjk</link>
      <guid>https://dev.to/joaofelipefaria/mapdata-app-a-full-stack-playground-4kjk</guid>
      <description>&lt;h1&gt;
  
  
  Welcome to the MapData Project: Your Full-Stack Playground!
&lt;/h1&gt;

&lt;p&gt;Hey there, developer! Are you ready to dive into a project that’s not just a learning experience but also a practical environment for full-stack &lt;strong&gt;Java&lt;/strong&gt; and &lt;strong&gt;Angular&lt;/strong&gt; development? Let me introduce you to the &lt;strong&gt;MapData Project&lt;/strong&gt;, a modular system that’s perfect for managing map data and metadata while giving you the flexibility to explore multiple frameworks and tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s the MapData Project?
&lt;/h2&gt;

&lt;p&gt;At its core, the &lt;strong&gt;MapData Project&lt;/strong&gt; is a &lt;strong&gt;basic work environment for full-stack developers&lt;/strong&gt;. It’s built around a &lt;strong&gt;microservices architecture&lt;/strong&gt; with a backend API, a frontend &lt;strong&gt;Single Page Application (SPA)&lt;/strong&gt;, and utilities to manage the database and environment. Whether you’re a seasoned developer or just starting out, this project is a great way to get your hands dirty with modern tech.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here’s what’s included:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-api&lt;/strong&gt;: A RESTful API built to handle map data and metadata. It’s your backend powerhouse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-app&lt;/strong&gt;: A sleek Angular-based frontend for user interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-db&lt;/strong&gt;: Handles database schema creation and maintenance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-web&lt;/strong&gt;: A lightweight frontend using pure HTML, CSS, and Vanilla JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-automations-python&lt;/strong&gt;: Python scripts to automate and manage the environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oh, and did I mention? You can &lt;strong&gt;swap out frameworks&lt;/strong&gt;! Want to try &lt;strong&gt;Quarkus&lt;/strong&gt; instead of &lt;strong&gt;Spring Boot&lt;/strong&gt;? &lt;strong&gt;React&lt;/strong&gt; instead of &lt;strong&gt;Angular&lt;/strong&gt;? Go for it! The project is designed to be flexible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Behind the Magic
&lt;/h2&gt;

&lt;p&gt;Let’s break it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Java&lt;/strong&gt;: The backend is built with Java, the go-to language for enterprise applications. It’s reliable, scalable, and integrates seamlessly with frameworks like &lt;strong&gt;Spring Boot&lt;/strong&gt; or &lt;strong&gt;Quarkus&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Angular&lt;/strong&gt;: The frontend SPA is built with Angular, a powerful framework for creating dynamic, responsive web applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt;: Everything runs in containers, making deployment and environment management a breeze.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt;: The automation scripts are written in Python, a versatile language that’s perfect for scripting and task automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JavaScript&lt;/strong&gt;: For those who love simplicity, the &lt;strong&gt;mapdata-web&lt;/strong&gt; component is a pure HTML/JS version of the frontend.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How to Create the API and App
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating the API
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/joaofelipefaria/mapdata.git
   &lt;span class="nb"&gt;cd &lt;/span&gt;mapdata/mapdata-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Build the project:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   mvn clean &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run the API:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   java &lt;span class="nt"&gt;-jar&lt;/span&gt; target/mapdata-api-0.0.1-SNAPSHOT.jar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating the App
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to the app directory:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;mapdata/mapdata-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install dependencies:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run the app in development mode:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   ng serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Access the app at &lt;code&gt;http://localhost:4200&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What About the Database and Web?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-db&lt;/strong&gt;: This component manages the database schema. Just configure the &lt;code&gt;pom.xml&lt;/code&gt; file and run:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   mvn clean &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’ll create all the necessary tables and sequences for you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mapdata-web&lt;/strong&gt;: Want a simple frontend? This is your go-to. Just open the &lt;code&gt;index.html&lt;/code&gt; file in your browser, and you’re good to go.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Automations: Your New Best Friend
&lt;/h2&gt;

&lt;p&gt;Managing environments can be a pain, but not with &lt;strong&gt;mapdata-automations-python&lt;/strong&gt;. These Python scripts let you start, stop, and manage Docker services with ease. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start the environment:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   python run_env.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Shut everything down:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   python shutdown_env.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s that simple. No more manual Docker commands!&lt;/p&gt;




&lt;h2&gt;
  
  
  Multiple Framework Choices
&lt;/h2&gt;

&lt;p&gt;One of the coolest things about the &lt;strong&gt;MapData Project&lt;/strong&gt; is its &lt;strong&gt;flexibility&lt;/strong&gt;. Want to try a different backend framework like &lt;strong&gt;Quarkus&lt;/strong&gt;? Or maybe a frontend in &lt;strong&gt;React&lt;/strong&gt; or &lt;strong&gt;Flutter&lt;/strong&gt;? The project is modular, so you can experiment with different tech stacks without breaking a sweat.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ready to Dive In?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;MapData Project&lt;/strong&gt; is more than just a project—it’s a playground for full-stack developers. Whether you’re building something new or just exploring, this is the perfect environment to sharpen your skills. So, what are you waiting for? Clone the repo and start coding!&lt;/p&gt;




&lt;h2&gt;
  
  
  GITHUB
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/joaofelipefaria/mapdata" rel="noopener noreferrer"&gt;https://github.com/joaofelipefaria/mapdata&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>angular</category>
      <category>fullstack</category>
    </item>
  </channel>
</rss>
