Introdução ao Maven, aprenda como criar e gerenciar projetos Java \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 23 Horas 

 01 Min 

 12 Seg 

   Tempo restante da oferta: 23 01 12 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Introdução ao Maven, aprenda como criar e gerenciar projetos Java  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) [ Ferramentas ](https://www.treinaweb.com.br/blog/categoria/ferramentas) 

# Introdução ao Maven, aprenda como criar e gerenciar projetos Java

 Neste artigo veremos como instalar o Maven e como podemos utilizá-lo para nos auxiliar na criação e no gerenciamento de dependência de um projeto Java.

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/introducao-ao-maven-aprenda-como-criar-e-gerenciar-projetos-java.png)  

É um problema comum durante o desenvolvimento de projetos com a linguagem [Java](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-java/) termos que baixar arquivos `.jar` para serem incluídos dentro de nossos projetos e assim podermos utilizar alguma biblioteca que vai nos auxiliar ao longo do desenvolvimento do mesmo.

Porém esse tipo de comportamento é bastante problemático, pois é comum termos que atualizar as versões dessas bibliotecas em nossas aplicações e realizar essa atualização não é algo trivial, é necessário baixar a nova versão do `.jar` dessa biblioteca e então coloca-la no nosso projeto, isso se torna ainda mais problemático quando estamos desenvolvendo em equipe, pois todos os membros da equipe precisam saber quais `.jar` e em quais versões são necessários para que o projeto funcione corretamente na máquina de cada um dos desenvolvedores.

Entretanto, atualmente existem diversas ferramentas que nos auxiliam a gerenciar as bibliotecas e automatizar certas tarefas dentro de projetos do ecossistema Java, uma delas é o Maven que vamos explorar um pouco nesse artigo.

[  ![Desenvolvedor Java](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/java.svg)   Formação Desenvolvedor Java Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-java)

## O que é o Maven?

O Maven é uma ferramenta de código aberto mantida pela Apache. Trata-se de uma ferramenta de gestão de dependências e um task runner. Em outras palavras, o Maven automatiza os processos de obtenção de dependências e de compilação de projetos Java.

Quando criamos um projeto Maven, este projeto fica atrelado a um arquivo principal: o `pom.xml`. Neste arquivo POM (Project Object Model), nós descrevemos as dependências de nosso projeto e a maneira como este deve ser compilado. Com o Maven, é possível, por exemplo, automatizar a execução de testes unitários durante a fase de build, entre outras automatizações.

Com o Maven, não temos mais a necessidade de baixarmos as dependências de nosso projeto e as configurar dentro do Build Path/Classpath de nossas aplicações. Se nós precisamos do driver do MySQL, por exemplo, simplesmente registramos essa dependência no pom.xml. As ferramentas de automação do Maven irão detectar esta dependência, baixa-la e configura-la no Build Path/Classpath de nosso projeto.

## Instalação do Maven no Windows

Acesse [a página oficial do Maven](https://maven.apache.org/download.cgi) e faça o download dos arquivos binários.

![Página de download dos arquivos binários do Maven](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/pagina-download-maven.png)

Após realizar o download dos arquivos binários do Maven você deve descompactá-los em um local de sua preferência, importante frisar que o local onde você descompactar os arquivos será o local onde o Maven ficará instalado.

Eu irei descompactar o Maven em `C:\Program Files\Maven\apache-maven-3.6.3`

![Arquivos dos Maven descompactados](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/arquivos-maven-descompactados.png)

Agora vem a parte mais complicada do processo de instalação, é necessário colocar o local onde se encontra o script de execução do Maven nas variáveis de ambiente do seu sistema operacional.

Para fazer isso você pode pesquisar por “Editar as variáveis de ambiente do sistema” no menu iniciar e então irá aparecer a seguinte janela:

![Print da janela Propriedades do Sistema](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/print-propriedades-do-sistema.png)

Clique no botão “Variáveis de ambiente…” e uma janela semelhante à da imagem abaixo irá ser exibida:

![Print da janela Variáveis de Ambiente](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/print-janela-variaveis-de-ambiente.png)

Em seguida clique no botão “Novo..” localizado na parte mais inferior da janela, no campo “Nome da variável” coloque “M2\_HOME” e no campo “Valor da variável” coloque o caminho para a pasta de instalação do Maven e por fim clique em “OK”:

![Print da janela Nova Variável de Sistema](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/print-janela-nova-variavel-de-sistema.png)

Em seguida clique na variável “Path” localizada na lista de Varáveis do sistema e depois clique no botão “Editar…”, em seguida clique no botão “Novo” que está localizado na nova janela que abriu e adicione o caminho da pasta bin do Maven:

![Print da janela Editar Variável de Ambiente](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/print-janela-editar-variavel-de-ambiente.png)

Clique no botão “OK” para fechar a janela “Editar variável de ambiente” e depois clique no “OK” para fechar a janela “Variáveis de Ambiente” e por fim clique no “OK” para fechar a janela “Propriedades do Sistema”.

Para verificar se o Maven foi instalado com sucesso abra um terminal (PowerShell ou Prompt) e execute o comando abaixo:

```bash
mvn --version

```

Caso não ocorra nenhum erro após a execução do comando acima significa que o processo de instalação do Maven foi realizada com sucesso.

[  ![Windows - Fundamentos para desenvolvedores](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/windows-server.svg)   Curso Windows - Fundamentos para desenvolvedores Conhecer o curso ](https://www.treinaweb.com.br/curso/windows-fundamentos-para-desenvolvedores)

## Instalação do Maven no Linux e MacOS

Para realizar a instalação do Maven em sistemas Linux e no MacOS nós vamos utilizar uma ferramenta de gerenciamento de versões chamada `SDKMAN!`.

Primeiro precisamos instalar o `SDKMAN!`, para isso execute o comando abaixo:

```bash
curl -s "https://get.sdkman.io" | bash

```

Em seguida execute o comando a seguir:

```bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

```

Para confirmar que a instalação do `SDKMAN!` foi executada com sucesso execute seguinte comando:

```bash
sdk version

```

Caso não seja apresentado nenhum erro significa que a instalação do `SDKMAN!` foi um sucesso!

Por fim para realizar a instalação do Maven com o auxílio do `SDKMAN!` basta executar o seguinte comando:

```bash
sdk install maven 3.6.3

```

E é apenas isso, com o `SDKMAN!` podemos realizar a instalação de uma nova versão do Maven com apenas um comando. Para confirmar que a instalação do Maven realmente foi efetuada com sucesso basta executar o comando abaixo:

```bash
mvn --version

```

Caso não ocorra nenhum erro após a execução do comando acima significa que o processo de instalação do Maven foi realizada com sucesso.

[  ![Linux - Fundamentos para desenvolvedores](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/linux.svg)   Curso Linux - Fundamentos para desenvolvedores Conhecer o curso ](https://www.treinaweb.com.br/curso/linux-fundamentos-para-desenvolvedores)

[  ![macOS - Fundamentos para desenvolvedores](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/macos.svg)   Curso macOS - Fundamentos para desenvolvedores Conhecer o curso ](https://www.treinaweb.com.br/curso/macos-fundamentos-para-desenvolvedores)

## O que são os Maven Archetypes?

Podemos criar nossos projetos Java usando o Maven, esses projetos são criados a partir de templates base que são chamados de *archetypes* (arquétipos), isso torna o processo mais fácil, pois quando queremos criar um projeto Java EE, por exemplo, é necessário criar uma estrutura de pastas especifica e configurar arquivos XML para que só depois possamos começar a programar a nossa aplicação, com o Maven é possível automatizar essa etapa ao utilizar um arquétipo de um projeto Java EE.

## Criando nosso primeiro projeto com o Maven

Com o terminal aberto na pasta onde deseja criar o projeto vamos executar o comando `mvn archetype:generate`, após a execução desse comando será exibido no terminal a lista de arquétipos disponíveis para a criação do projeto, como vamos criar um projeto Java simples apenas para entender o funcionamento do Maven iremos utilizar o maven-archetype-quickstart, que cria um projeto básico.

Para isso você deve escolher o número correspondente ao arquétipo que deseja utilizar, no meu caso é o número 1733, lembrando que essa ordem pode mudar como tempo, mas não precisa se preocupar procurando qual o número correto, pois caso não coloque nenhuma opção de arquétipo o maven irá utilizar por padrão o maven-archetype-quickstart.

Em seguida é necessário escolher qual a versão do arquétipo, irei utilizar a versão mais recente, que é a versão 1.4, representada pela opção 8.

Após a escolha da versão o Maven irá perguntar quais os valores para a propriedades groupId, artifactId, version e package.

- **groupId**: O nome da organização ao qual pertence esse projeto, possui o mesmo padrão de nomenclatura de pacotes, irei colocar como `br.com.treinaweb`
- **artifcatId:** O nome do projeto, irei colocar `treinaweb-maven`
- **version:** A versão do nosso projeto, caso não seja colocado nenhum valor o Maven irá utilizar o valor padrão que é `1.0-SNAPSHOT`
- **package:** O nome do pacote principal do nosso projeto, é boa pratica colocar a junção do groupId com o artifactId, no meu caso ficará `br.com.treinaweb.treinawebmaven`, caso não seja passado nenhum valor, o Maven irá assumir o mesmo valor colocado no groupId

Após colocar todos os valores basta confirma-los com o “Y”.

[![](https://asciinema.org/a/387649.svg)](https://asciinema.org/a/387649)

## Estrutura de pastas do nosso projeto

Após a execução do comando para a criação do projeto foi criada uma pasta com o mesmo nome informado para o **artifactId** e dentro desta pasta foi criada uma estrutura de pastas para a organização do nosso projeto, dependendo de qual arquétipo você escolheu essa estrutura de pastas pode ser diferente.

```bash
treinaweb-maven
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── br
    │           └── com
    │               └── treinaweb
    │                   └── treinawebmaven
    │                       └── App.java
    └── test
        └── java
            └── br
                └── com
                    └── treinaweb
                        └── treinawebmaven
                            └── AppTest.java

```

Dentro da pasta do nosso projeto temos o arquivo `pom.xml` que contém as informações sobre o projeto e quais as suas dependências, também temos as pastas `src` que contém a pasta `main` que irá guardar o código fonte de nosso projeto e a pasta `test` que irá conter os códigos fontes para os testes automatizados. Dentro de cada uma destas pastas terá uma estrutura de pastas de acordo com o nome definido no **package**.

Além das pastas já criadas pelo Maven existe uma outra pasta que será criada sempre que executar o comando para que nosso projeto seja compilado, para demonstrar a criação dessa pasta execute o comando `mvn compile` dentro da pasta do projeto.

Após a execução do comando `mvn compile` uma nova pasta será criada, a pasta `target`, essa pasta irá conter os arquivos `.class` do nosso projeto.

```bash
treinaweb-maven
├── pom.xml
├── src
│   ├── main
│   │   └── java
│   │       └── br
│   │           └── com
│   │               └── treinaweb
│   │                   └── treinawebmaven
│   │                       └── App.java
│   └── test
│       └── java
│           └── br
│               └── com
│                   └── treinaweb
│                       └── treinawebmaven
│                           └── AppTest.java
└── target
    └── classes
        └── br
            └── com
                └── treinaweb
                    └── treinawebmaven
                        └── App.class

```

## Gerenciamento de dependências com Maven

Para gerenciar as dependências do nosso projeto utilizamos o arquivo `pom.xml` nele colocamos as informações das bibliotecas que o nosso projeto necessita para funcionar e o Maven se encarrega do download dessas bibliotecas e de adiciona-las no Build Path/Classpath.

O Maven irá buscar por essas dependências em locais chamados de repositórios, existem basicamente dois repositórios, o repositório local que está localizado na pasta `.m2/repository` e o repositório remoto que está localizado no [repositório público do Maven](http://repo.maven.apache.org/maven2/).

Ao adicionar uma nova dependência em nosso projeto, o Maven primeiro realiza a busca em nosso repositório local, caso não encontre irá buscar no repositório remoto e então fazer o download da biblioteca e disponibiliza-la no repositório local, dessa maneira caso você necessite utilizar a mesma biblioteca em outro projeto não será necessário realizar o download novamente.

## Entendendo o pom.xml

No momento nosso `pom.xml` está como descrito abaixo:

```xml

  4.0.0

  br.com.treinaweb
  treinaweb-maven
  1.0-SNAPSHOT

  treinaweb-maven

  http://www.example.com

    UTF-8
    1.7
    1.7

      junit
      junit
      4.11
      test

          maven-clean-plugin
          3.1.0

          maven-resources-plugin
          3.0.2

          maven-compiler-plugin
          3.8.0

          maven-surefire-plugin
          2.22.1

          maven-jar-plugin
          3.0.2

          maven-install-plugin
          2.5.2

          maven-deploy-plugin
          2.8.2

          maven-site-plugin
          3.7.1

          maven-project-info-reports-plugin
          3.0.0

```

Não se assuste com o tamanho do arquivo, ele pode parecer complexo à primeira vista, mas ao observar com mais calma verá que ele não é tão difícil de entender.

Podemos dividir o arquivo `pom.xml` em quatro partes, a primeira possui as coordenadas do projeto, ou seja, os dados que identificam o projeto, como groupid, artifactId e version.

```xml
br.com.treinaweb
treinaweb-maven
1.0-SNAPSHOT

```

A segunda parte são as propriedades do projeto, essa parte contém informações de encondig e também a versão do Java que estamos utilizando.

```xml

  UTF-8
  1.7
  1.7

```

A terceira parte é onde definimos as dependencias de nosso projeto.

```xml

    junit
    junit
    4.11
    test

```

No momento temos apenas uma dependência listada que é o Junit na versão 4.11 que o Maven utiliza por padrão para executar os testes automatizados.

E por último temos as informações de build que dizem como o projeto deve ser compilado pelo Maven, nessa parte também estão descritas quais plugins do Maven o nosso projeto necessita para ser compilado.

```xml

        maven-clean-plugin
        3.1.0

        maven-resources-plugin
        3.0.2

        maven-compiler-plugin
        3.8.0

        maven-surefire-plugin
        2.22.1

        maven-jar-plugin
        3.0.2

        maven-install-plugin
        2.5.2

        maven-deploy-plugin
        2.8.2

        maven-site-plugin
        3.7.1

        maven-project-info-reports-plugin
        3.0.0

```

## Executando nosso Hello World

Quando criamos um projeto com o Maven já é criado um arquivo chamado `App.java` dentro do nosso pacote principal, esse arquivo possui um simples Hello World e podemos executar esse código de diversas formas, uma delas é através do comando `mvn exec:java -Dexec.mainClass="br.com.treinaweb.treinawebmaven.App"`

Caso não queira ter que passar o parâmetro `-Dexec.mainClass` toda vez que quiser executar o seu projeto é necessário configurar o plugin de execução do Maven, essa configuração é feita no arquivo `pom.xml` , para isso vá na parte de plugins do arquivo `pom.xml` e adicione o código abaixo:

```xml

  org.codehaus.mojo
  exec-maven-plugin
  3.0.0

        java

    br.com.treinaweb.treinawebmaven.App

```

Com o código acima estamos adicionando uma configuração para o plugin de execução do Maven, nessa configuração estamos dizendo qual a classe principal do nosso projeto, assim para podermos executar nosso código não será mais necessário passar o parâmetro `-Dexec.mainClass` no comando `mvn exec:java`.

## Adicionando dependências em nosso projeto

Para adicionarmos uma nova dependência em nosso projeto basta que no arquivo `pom.xml`dentro da tag `dependencies` adicionemos uma nova tag `dependency` com as informações de groupId, artifactId e version da biblioteca que queremos adicionar como dependência.

Digamos que vamos desenvolver uma aplicação que realiza requisições HTTP para algum serviço na web, então precisamos de alguma forma realizar essas requisições através do nosso código Java, uma ótima forma de fazer isso é através da biblioteca [Apache HttpClient](https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient), então para adicionarmos essa biblioteca como dependência em nosso projeto temos que adicionar suas informações no nosso arquivo `pom.xml`

```xml

    junit
    junit
    4.11
    test

      org.apache.httpcomponents
      httpclient
      4.5.13

```

Com isso o Maven irá realizar o download da biblioteca Apache HttpClient e adiciona-la em nosso Build Path/Classpath e então já poderemos utiliza-la em nosso projeto sem mais nenhum trabalho adicional.

## Atualizando nosso projeto para usar o Apache HttpClient

Para proposito de exemplificação, vamos alterar o código do arquivo `App.java` para que ele utilize a biblioteca Apache HttpClint e realize uma requisição HTTP para a API [Viacep](https://viacep.com.br/) e então exiba no terminal os dados do CEP que for passado como parâmetro na execução do nosso projeto.

Altere o código do arquivo `App.java` para ficar de acordo com o exemplo abaixo:

```java
package br.com.treinaweb.treinawebmaven;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

public class App {
    public static void main( String[] args ) {
        String url = "https://viacep.com.br/ws/" + args[0] + "/json/";

        try {
            CloseableHttpClient client = HttpClientBuilder.create().build();
            CloseableHttpResponse response = client.execute(new HttpGet(url));
            String json = EntityUtils.toString(response.getEntity());

            System.out.println(json);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

```

Agora precisamos executar o projeto com o Maven para que possamos ver o código funcionando na prática, como precisamos passar um parâmetro na execução do código utilize o seguinte comando `mvn exec:java -Dexec.args="01311200"` , mas antes de executar nosso projeto é necessário realizar o processo de compilação com o comando `mvn compile`, dessa maneira estamos utilizando o Maven para executar o projeto e passando como parâmetro a String 01311200.

## Conclusão

Nesse artigo tivemos uma introdução a ferramenta Maven, vimos o que é, como realizar a sua instalação, como podemos utiliza-la para criar, compilar e executar os nossos projetos e também como é possível gerenciar as dependências de nossos projetos.

O Maven ainda possui outras funcionalidades como a de empacotar e gerar o build de nosso projeto e ele também pode ser estendido através de diversos plugins que adicionam novas funcionalidades.

Além disso o Maven pode ser integrado com diversas [IDE’s](https://www.treinaweb.com.br/blog/o-que-e-uma-ide-ambiente-de-desenvolvimento-integrado/) como o Intellij IDEA e Eclipse e também com [editores de código fonte](https://www.treinaweb.com.br/blog/principais-editores-de-codigo-para-desenvolvimento/) como o [VS Code](https://www.treinaweb.com.br/blog/instalacao-do-vs-code-no-windows-linux-e-macos/).

Se você quer conhecer mais sobre essa linguagem, não se esqueça de acessar nosso [Guia da linguagem Java](https://www.treinaweb.com.br/blog/guia-da-linguagem-java/ "Guia da linguagem Java"). Te esperamos lá :)

- [ #Java ](https://www.treinaweb.com.br/blog/tag/java)
- [ #Gerenciamento de Projetos ](https://www.treinaweb.com.br/blog/tag/gerenciamento-de-projetos)
- [ #Maven ](https://www.treinaweb.com.br/blog/tag/maven)
- [ #guia da linguagem java ](https://www.treinaweb.com.br/blog/tag/guia-da-linguagem-java)
- [ #gerenciamento de dependências ](https://www.treinaweb.com.br/blog/tag/gerenciamento-de-dependencias)

Autor

 ![Cleyson Lima](//secure.gravatar.com/avatar/db30efb102ffa5d5204cebe12060b111?d=mm)

## Cleyson Lima

 Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/cleyson-lima)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/03/GUIA-LINGUAGEM-JAVA-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Guia da linguagem Java ](https://www.treinaweb.com.br/blog/guia-da-linguagem-java) 

     Confira neste guia os principais tópicos para iniciar seus estudos na linguagem Java.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/projeto-lombok-acelerando-o-desenvolvimento-java-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Projeto Lombok - Acelerando o desenvolvimento Java ](https://www.treinaweb.com.br/blog/projeto-lombok-acelerando-o-desenvolvimento-java) 

     Veja como podemos utilizar o projeto Lombok para diminuir a quantidade de código boilerplate e acelerar o desenvolvimento de projetos Java.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/npm-voce-sabe-o-que-da-para-fazer-com-ele-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Introdução ao gerenciamento de projetos Node.js com npm ](https://www.treinaweb.com.br/blog/introducao-ao-gerenciamento-de-projetos-node-js-com-npm) 

     Neste artigo sobre Introdução ao gerenciamento de projetos Node.js vamos aprender os principais comandos utilizados no npm.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/12132017/introducao-swoole-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Introdução ao Swoole, framework PHP assíncrono baseado em corrotinas ](https://www.treinaweb.com.br/blog/introducao-ao-swoole-framework-php-assincrono-baseado-em-corrotinas) 

     Uma Introdução ao Swoole, framework PHP assíncrono baseado em corrotinas e comparação dele com o modelo tradicional que usa um servidor web (nginx, apache etc) com PHP-FPM.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/05/01125223/react-php-imagem-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     8 anos atrás

    ##  [ Introdução à programação assíncrona em PHP usando o ReactPHP ](https://www.treinaweb.com.br/blog/introducao-a-programacao-assincrona-em-php-usando-o-reactphp) 

     Uma introdução à programação assíncrona com PHP e uso básico dos componentes do ReactPHP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/11/07161636/introducao-a-aws-400x280.png)  [ Amazon ](https://www.treinaweb.com.br/blog/categoria/amazon) 

     8 anos atrás

    ##  [ Introdução à Amazon Web Services (AWS) ](https://www.treinaweb.com.br/blog/introducao-a-amazon-web-services-aws) 

     A Amazon Web Services (AWS) é uma das principais plataformas de computação em nuvem do mercado. Aprenda os principais conceitos e veja como criar sua conta de teste.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/07/introducao-aos-principios-solid-400x280.png)  [ SOLID ](https://www.treinaweb.com.br/blog/categoria/solid) 

     10 anos atrás

    ##  [ Introdução aos princípios SOLID ](https://www.treinaweb.com.br/blog/introducao-aos-principios-solid) 

     Neste primeiro artigo da série sobre SOLID, vamos entender o porquê de eles terem sido definidos, além das vantagens que podemos obter ao aplicá-los.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/algoritmos2-400x280.jpg)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     10 anos atrás

    ##  [ Introdução à análise de algoritmos ](https://www.treinaweb.com.br/blog/introducao-a-analise-de-algoritmos) 

     A Análise de Algoritmos (descrita e difundida por D.E. Knuth) tem como função determinar os recursos necessários para executar um dado algoritmo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/06/ASCII-UNICODE-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ Uma introdução a ASCII e Unicode ](https://www.treinaweb.com.br/blog/uma-introducao-a-ascii-e-unicode) 

     Veja um pouco mais sobre os sistemas de codificação de caracteres ASCII e Unicode.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/11140050/sockets-redes-tcp-udp-400x280.png)  [ Rede de computadores ](https://www.treinaweb.com.br/blog/categoria/rede-de-computadores) 

     8 anos atrás

    ##  [ Uma introdução a TCP, UDP e Sockets ](https://www.treinaweb.com.br/blog/uma-introducao-a-tcp-udp-e-sockets) 

     Uma introdução (base teórica) para TCP, UDP e Sockets, principalmente para desenvolvedores que desejam programar com Sockets.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/DOMAIN-DRIVEN-DESIGN-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     4 anos atrás

    ##  [ Uma breve introdução ao DDD ](https://www.treinaweb.com.br/blog/uma-breve-introducao-ao-ddd) 

     Confira neste artigo uma breve introdução ao DDD: o que é domínio, linguagem úbiqua e bounded contexts.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/GUIA-INTRODUÇÃO-PROGRAMAÇÃO-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Guia de introdução à programação ](https://www.treinaweb.com.br/blog/guia-de-introducao-a-programacao) 

     Entenda os conceitos fundamentais para iniciar seus estudos na área de desenvolvimento neste guia de introdução a programação.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **23h 01min 12s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
