<?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>Java Fundamentals — Object-Oriented Programming</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Thu, 03 Sep 2026 13:41:27 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/java-fundamentals-object-oriented-programming-1n3f</link>
      <guid>https://dev.to/joaofelipefaria/java-fundamentals-object-oriented-programming-1n3f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Object-Oriented Programming (OOP)&lt;/strong&gt; is a programming paradigm based on the idea of representing a system as a collection of objects that have characteristics and behaviors. Although there were earlier experiments with objects, &lt;strong&gt;Simula&lt;/strong&gt;, created by Ole-Johan Dahl and Kristen Nygaard in the 1960s, is generally considered the first object-oriented programming language. The concepts that became the foundation of modern OOP were later popularized by languages such as Smalltalk and C++. The term and principles of object-oriented programming were also discussed in &lt;em&gt;Smalltalk-80: The Language and its Implementation&lt;/em&gt;, by Adele Goldberg and David Robson.&lt;/p&gt;

&lt;p&gt;Object orientation is interesting because it is, in many ways, a &lt;strong&gt;natural way for the human mind to think about the world&lt;/strong&gt;. When we analyze a situation, we naturally categorize things according to characteristics they have in common. We identify a group such as &lt;em&gt;Car&lt;/em&gt;, &lt;em&gt;Person&lt;/em&gt;, or &lt;em&gt;Account&lt;/em&gt; and define the characteristics that make something belong to that group. In programming, these categories become &lt;strong&gt;classes&lt;/strong&gt;, while the concrete things belonging to those classes become &lt;strong&gt;objects&lt;/strong&gt;. A &lt;code&gt;Car&lt;/code&gt; can therefore be a class, while João's red car can be an object of that class.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;class&lt;/strong&gt; is essentially a blueprint or definition that describes what its objects will have and what they will be able to do. The characteristics of an object are represented by &lt;strong&gt;properties&lt;/strong&gt;, also called attributes or fields, while its behaviors are represented by &lt;strong&gt;methods&lt;/strong&gt;. An &lt;strong&gt;object&lt;/strong&gt; is a concrete entity created from a class. The act of creating an object is called &lt;strong&gt;instantiation&lt;/strong&gt;, and the resulting object is an &lt;strong&gt;instance&lt;/strong&gt; of that class. In Java, for example, &lt;code&gt;Car myCar = new Car();&lt;/code&gt; creates an instance of the &lt;code&gt;Car&lt;/code&gt; class and assigns it to the &lt;code&gt;myCar&lt;/code&gt; reference.&lt;/p&gt;

&lt;p&gt;Java also provides mechanisms that make object-oriented design more powerful and flexible. &lt;strong&gt;Interfaces&lt;/strong&gt; define contracts that classes can implement, allowing different classes to provide different implementations of the same behavior. &lt;strong&gt;Constructors&lt;/strong&gt; are special methods used to initialize new objects. Java also supports &lt;strong&gt;static properties and methods&lt;/strong&gt;, which belong to the class itself rather than to a particular instance. This makes them useful when a value or behavior should be shared across all instances or accessed without creating an object.&lt;/p&gt;

&lt;p&gt;Another important Java concept is the &lt;strong&gt;initializer block&lt;/strong&gt;, sometimes called an execution block. These blocks allow initialization logic to be executed when an object is created, or, in the case of static initializer blocks, when the class is initialized. Although they are less frequently used than constructors and methods, understanding them is important when studying how Java initializes classes and objects. Together with constructors, fields, methods, interfaces, and static members, they form an important part of the language's object model.&lt;/p&gt;

&lt;p&gt;The fundamental concepts of OOP are not isolated features; they work together to model complex systems. A class defines the structure and behavior, an object represents a concrete instance of that definition, properties represent its state, and methods represent its behavior. Interfaces allow us to define contracts between components, while constructors control how objects are initialized. Static members, on the other hand, allow behavior or state to exist at the class level rather than at the individual object level.&lt;/p&gt;

&lt;p&gt;Understanding these fundamentals is essential before moving into more advanced Java concepts such as &lt;strong&gt;encapsulation, inheritance, polymorphism, abstraction, composition, and dependency injection&lt;/strong&gt;. Java is deeply rooted in object-oriented programming, and most of the language's design becomes much easier to understand once we stop thinking only in terms of instructions and start thinking in terms of &lt;strong&gt;objects, their responsibilities, their state, and their interactions&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>basic</category>
    </item>
    <item>
      <title>Java (une brève introduction historique)</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Tue, 01 Sep 2026 11:23:07 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/java-une-breve-introduction-historique-4mjb</link>
      <guid>https://dev.to/joaofelipefaria/java-une-breve-introduction-historique-4mjb</guid>
      <description>&lt;p&gt;Java est né au début des années 90, dans les bureaux de Sun Microsystems, principalement grâce au travail de James Gosling et de son équipe. L'idée initiale faisait partie du Green Project, qui cherchait à créer des logiciels pour une nouvelle génération de dispositifs électroniques. Le langage s'appelait à l'origine Oak. L'histoire raconte que le nom a dû être changé parce qu'une marque utilisait déjà ce nom. Certaines versions racontent également que Java aurait été inspiré par un café ou simplement par le café que buvaient les développeurs. ☕&lt;/p&gt;

&lt;p&gt;Dès le début, l'une des grandes idées de Java était d'être multiplateforme, résumée par la célèbre phrase « Write Once, Run Anywhere ». À l'époque, faire fonctionner un programme sur différents systèmes d'exploitation n'était pas aussi simple qu'aujourd'hui. L'idée géniale a été d'ajouter une couche entre l'application et le système d'exploitation : la JVM (Java Virtual Machine). Ainsi, le code Java n'a pas besoin d'être compilé directement pour Windows, Linux ou une autre plateforme spécifique.&lt;/p&gt;

&lt;p&gt;C'est ici qu'intervient le fameux bytecode. Lorsque nous écrivons un programme Java, le compilateur transforme le code source .java en bytecode, généralement stocké dans des fichiers .class. Ce bytecode n'est pas exactement du code natif du processeur. Il est exécuté par la JVM, qui connaît les particularités de la plateforme sur laquelle elle fonctionne. Au fil des années, la JVM est devenue extrêmement sophistiquée, notamment grâce à des techniques comme la compilation JIT (Just-In-Time), qui permet de transformer certaines parties du bytecode en code natif pendant l'exécution.&lt;/p&gt;

&lt;p&gt;Java a maintenant plus de 30 ans. Et il est assez intéressant de voir à quel point le langage a évolué pendant cette période. Generics, annotations, lambdas, Streams, modules, records, pattern matching, sealed classes et, plus récemment, les virtual threads, ne sont que quelques exemples de cette évolution. Quelqu'un qui a appris Java il y a 15 ou 20 ans découvrirait probablement un langage assez différent en regardant le Java moderne.&lt;/p&gt;

&lt;p&gt;C'est aussi pour cela que certains vieux stéréotypes sur Java ne sont plus vraiment d'actualité. « Java est lent », « Java est extrêmement verbeux », « Java demande trop de code »... Certaines de ces critiques étaient effectivement justifiées à certaines époques. 😅 Mais comparer Java moderne avec Java 5 ou Java 6 n'est pas vraiment juste. Le langage est devenu beaucoup plus expressif et a supprimé une grande partie du boilerplate au fil des années, tout en conservant le typage statique qui fait partie de ses caractéristiques fondamentales.&lt;/p&gt;

&lt;p&gt;Et il y a quelque chose d'assez intéressant : malgré toute cette évolution, beaucoup d'entreprises utilisent encore Java 8. Java 8 est sorti en 2014 et reste présent dans un très grand nombre de systèmes d'entreprise. Depuis, nous avons eu d'importantes versions LTS (versions avec support long), comme Java 11, Java 17, Java 21 et Java 25. Cette longévité montre également l'une des grandes forces de l'écosystème Java : la compatibilité. L'attention portée à la compatibilité avec les anciennes versions permet aux systèmes de continuer à évoluer sans devoir être entièrement réécrits à chaque nouvelle version.&lt;/p&gt;

&lt;p&gt;Au final, connaître un peu l'histoire de Java nous aide à comprendre où nous en sommes arrivés. La JVM, le bytecode, la portabilité et l'attention portée à la compatibilité ne sont pas apparus par hasard. Ils font partie d'une histoire de plus de trois décennies. Java a énormément évolué, mais il conserve encore certaines des idées fondamentales qui lui ont permis d'aller aussi loin. Et comprendre d'où nous venons aide beaucoup à comprendre le Java que nous utilisons aujourd'hui.&lt;/p&gt;

</description>
      <category>java</category>
      <category>history</category>
    </item>
    <item>
      <title>Java (a brief historical introduction)</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Tue, 01 Sep 2026 11:22:30 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/java-a-brief-historical-introduction-4f2d</link>
      <guid>https://dev.to/joaofelipefaria/java-a-brief-historical-introduction-4f2d</guid>
      <description>&lt;p&gt;Java was born in the early 1990s, inside the offices of Sun Microsystems, mainly through the work of James Gosling and his team. The original idea was part of the Green Project, which aimed to create software for a new generation of electronic devices. The language was originally called Oak. The story goes that the name had to be changed because there was already a brand using it. Some versions of the story also say that Java was inspired by a coffee shop, or simply by the coffee the developers were drinking. ☕&lt;/p&gt;

&lt;p&gt;From the very beginning, one of Java's main ideas was to be cross-platform, summarized by the famous phrase “Write Once, Run Anywhere”. At the time, making software run on different operating systems was not nearly as simple as it is today. The big idea was to introduce a layer between the application and the operating system: the JVM (Java Virtual Machine). This way, Java code doesn't need to be compiled directly for Windows, Linux, or another specific platform.&lt;/p&gt;

&lt;p&gt;This is where the famous bytecode comes in. When we write a Java program, the compiler transforms the .java source code into bytecode, usually stored in .class files. This bytecode isn't exactly native processor code. It is executed by the JVM, which understands the specific platform where it is running. Over the years, the JVM became extremely sophisticated, using techniques such as JIT (Just-In-Time) compilation to turn parts of the bytecode into native code during execution.&lt;/p&gt;

&lt;p&gt;Java is now more than 30 years old. And it's interesting to see how much the language has changed during that time. Generics, annotations, lambdas, Streams, modules, records, pattern matching, sealed classes and, more recently, virtual threads, are just a few examples of how the platform has evolved. Someone who learned Java 15 or 20 years ago would probably find a very different language when looking at modern Java.&lt;/p&gt;

&lt;p&gt;That's why some of the old stereotypes about Java don't make as much sense anymore. “Java is slow”, “Java is extremely verbose”, “Java requires too much code”... Some of these criticisms were certainly valid at different points in time. 😅 But comparing modern Java with Java 5 or Java 6 isn't exactly fair. The language has become much more expressive and has eliminated a lot of boilerplate over the years, while still keeping static typing as one of its fundamental characteristics.&lt;/p&gt;

&lt;p&gt;And there is something interesting: despite all this evolution, many companies still run Java 8. Java 8 was released in 2014 and is still present in a huge number of enterprise systems. Since then, we have had important LTS (Long-Term Support versions) releases such as Java 11, Java 17, Java 21 and Java 25. This longevity also shows one of the major strengths of the Java ecosystem: compatibility. The strong focus on backward compatibility allows systems to keep evolving without having to be rewritten from scratch with every new version.&lt;/p&gt;

&lt;p&gt;At the end of the day, learning a little about Java's history helps us understand how we got here. The JVM, bytecode, portability and the focus on compatibility didn't happen by accident. They are all part of a history that spans more than three decades. Java has changed a lot, but it still carries some of the fundamental ideas that helped it come this far. And understanding where we came from helps us understand the Java we use today.&lt;/p&gt;

</description>
      <category>java</category>
      <category>history</category>
    </item>
    <item>
      <title>Java (rápida introdução histórica)</title>
      <dc:creator>joaofelipefaria</dc:creator>
      <pubDate>Tue, 01 Sep 2026 11:21:47 +0000</pubDate>
      <link>https://dev.to/joaofelipefaria/java-rapida-introducao-historica-23el</link>
      <guid>https://dev.to/joaofelipefaria/java-rapida-introducao-historica-23el</guid>
      <description>&lt;p&gt;Java nasceu no início dos anos 90, dentro dos escritórios da Sun Microsystems, principalmente pelas mãos de James Gosling e seu time. A ideia inicial fazia parte do Green Project, que buscava criar software para uma nova geração de dispositivos eletrônicos. A linguagem originalmente se chamava Oak. A história conta que o nome precisou ser alterado porque já existia uma marca com esse nome. Algumas versões também dizem que a inspiração para Java veio de uma cafeteria ou simplesmente do café que os desenvolvedores consumiam. ☕&lt;/p&gt;

&lt;p&gt;Desde o começo, uma das grandes ideias do Java era ser multiplataforma, resumida na famosa frase “Write Once, Run Anywhere”. Na época, fazer um programa funcionar em diferentes sistemas operacionais não era tão simples quanto hoje. A grande sacada foi colocar uma camada entre a aplicação e o sistema operacional: a JVM (Java Virtual Machine). Assim, o código Java não precisa ser compilado diretamente para Windows, Linux ou outra plataforma específica.&lt;/p&gt;

&lt;p&gt;É aí que entra o famoso bytecode. Quando escrevemos um programa Java, o compilador transforma o código .java em bytecode, normalmente armazenado em arquivos .class. Esse bytecode não é exatamente código nativo do processador. Ele é executado pela JVM, que conhece as particularidades da plataforma onde está rodando. Com o tempo, a JVM ficou extremamente sofisticada, utilizando técnicas como JIT (Just-In-Time) compilation para transformar partes do bytecode em código nativo durante a execução.&lt;/p&gt;

&lt;p&gt;Java já tem mais de 30 anos de história. E é interessante perceber o quanto a linguagem mudou nesse período. Generics, annotations, lambdas, Streams, módulos, records, pattern matching, sealed classes e, mais recentemente, virtual threads, são apenas alguns exemplos da evolução da plataforma. Quem aprendeu Java há 15 ou 20 anos provavelmente vai encontrar uma linguagem bem diferente quando olhar para Java moderno.&lt;/p&gt;

&lt;p&gt;Por isso, alguns dos velhos estereótipos sobre Java já não fazem tanto sentido. “Java é lento”, “Java é extremamente verboso”, “Java exige código demais”... Algumas dessas críticas tinham bastante fundamento em determinadas épocas. 😅 Mas comparar Java moderno com Java 5 ou Java 6 não é exatamente justo. A linguagem ficou muito mais expressiva e eliminou bastante boilerplate ao longo dos anos, sem abandonar a tipagem estática que sempre foi uma de suas características.&lt;/p&gt;

&lt;p&gt;E tem uma coisa curiosa: apesar de toda essa evolução, muitas empresas ainda rodam Java 8. Java 8 foi lançado em 2014 e continua presente em uma quantidade enorme de sistemas corporativos. Depois dele, tivemos versões LTS (versões de suporte longo) importantes, como Java 11, Java 17, Java 21 e Java 25. Essa longevidade também mostra uma das grandes forças do ecossistema Java: compatibilidade. A preocupação em manter compatibilidade com versões anteriores permite que sistemas continuem evoluindo sem precisar ser reescritos a cada nova versão.&lt;/p&gt;

&lt;p&gt;No fim das contas, aprender um pouco da história do Java ajuda a entender onde chegamos. A JVM, o bytecode, a portabilidade e a preocupação com compatibilidade não surgiram por acaso. São decisões que fazem parte de uma história de mais de três décadas. Java mudou muito, mas continua carregando algumas das ideias fundamentais que fizeram a linguagem chegar tão longe. E entender de onde viemos ajuda bastante a entender o Java que usamos hoje.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>fullstack</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>
