Categoria: Java

Hangout migrando do JSF para AngularJS

Fala galera,

sabemos que migrações de aplicações são bem complicadas de serem realizadas, principalmente quando é necessário mudar o paradigma de desenvolvimento. Pensando nisto, no último dia 20 de junho participei de um hangout, com o DFJUG, onde abordamos como migrar de uma aplicação desenvolvida em JSF para AngularJS.

Para quem não conhece, o Java Server Faces é uma especificação Java baseada em componentes para a construção de aplicações web. Portanto, realizar uma migração de um sistema desenvolvido nesta tecnologia para AngularJS não é nem um pouco trivial. Há uma mudança de paradigma muito grande que você pode ver no hangout abaixo. 😉

O conteúdo ta bacana, mas sou suspeito para falar. Confere aí… 😉

Só para lembrar, a ideia do hangout não é incentivar você a sair migrando as aplicações de JSF para AngularJS. Nossa intenção foi apenas mostrar como seria essa mudança e mostrar alternativas.  😉

E aí, gostou? Compartilhe com seus amigos…

Abraços

Docker Maven

Criando a imagem docker com o maven

No post anterior, Como rodar uma aplicação Java com o Docker, falei um pouco sobre o uso de containers para subir uma aplicação desenvolvida com o framework Spring Boot. Agora que sabemos como criar uma imagem por meio da linha de comando, veremos como fazer isso pelo processo de build do Maven. Para isso, vamos usar o plugin docker-maven-plugin desenvolvido pela galera do Spotify.

Alteração no pom

A única alteração no nosso sistema será no pom.xml:

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <imageName>mytask</imageName>
        <baseImage>frolvlad/alpine-oraclejdk8:slim</baseImage>
        <entryPoint>["sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /${project.build.finalName}.jar --spring.profiles.active=${spring.profile}"]
        </entryPoint>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
        <imageTags>
            <imageTag>${project.version}</imageTag>
            <imageTag>latest</imageTag>
        </imageTags>
    </configuration>
</plugin>

As configurações necessárias para o uso do plugin são:

  1. imageName – O nome da imagem após o build;
  2. baseImage – O nome da imagem base;
  3. entryPoint – Comando que será executado ao inicializar o container;
  4. resources – Usado para copiar artefatos para dentro do container;
  5. imageTags – As tags da imagem gerada.

Execução do build com o Maven

Com essa pequena modificação, estamos aptos a criar a imagem direto do build com o Maven. Vamos executar o seguinte comando:


$ mvn clean package docker:build --batch-mode release:update-versions

Com esse comando, estamos solicitando ao plugin a execução do processo de build da imagem com os parâmetros que definimos.

Adicionei ao comando o –batch-mode release:update-versions para que o Maven incremente a versão do pom sem interação com o usuário. Fiz isso para que você possa ver as imagens geradas com a mesma versão do pom (linha 18). Então, todas as vezes que o comando for executado, podemos verificar que uma nova imagem está sendo criada com a mesma versão do projeto.

Uma das facilidades que o plugin nos oferece é a abstração em relação aos comandos necessários para criar a imagem. Há muito mais informações do plugin no github do projeto, vale a pena dar uma espiada. O código fonte do exemplo está no meu github.

Agora que você tem mais uma opção para criar a imagem do Docker, seja por intermédio da linha de comando ou pelo Maven, qual você escolheria e por que?

Por hoje é só galera, abraços e até a próxima!

 

Java docker

Como rodar uma aplicação java com o docker

Fala galera, beleza?

Depois de um longo tempo  me dedicando a outros projetos, estou me reorganizando com o intuito de voltar a escrever para o blog.

Começarei contando uma historinha… Sabe aquela velha frase “Na minha máquina esta aplicação roda”? Pois é, quem nunca passou por isso? Cansei das vezes em que precisei analisar o porquê de um sistema não subir em outro ambiente e, no final, o problema era uma simples configuração.

No post de hoje, vamos aprender a rodar uma aplicação Java em um container Docker. Para isso, vou utilizar a app desenvolvida no post sobre Integração contínua com Travis e Heroku.

Se você ainda não sabe o que é o Docker, dá uma espiada no post O que é o docker?.

Docker

Se você realmente leu o post O que é o docker?, já entendeu que trata-se de uma tecnologia de código aberto, que permite manipular aplicações dentro de containers. Isso possibilita empacotar o nosso software dentro de uma unidade, contendo todo o necessário para a sua execução. Desse modo, conseguimos rodar esse container em qualquer lugar em que  o docker esteja instalado.

Portanto, chega de dar desculpas. Com o Docker, podemos implantar aplicações rapidamente, de modo confiável e estável, em qualquer ambiente.

Uma maravilha, não?

Leia Mais

Integração contínua com Travis e Heroku

Fala galera, beleza?

Você ainda roda, de forma manual, bons e velhos scripts para por sua aplicação em produção? É chato ter que alterar os arquivos de configuração toda vez que precisa modificar o ambiente? Que tal descomplicar e deixar tudo isso automatizado de verdade? Tá parecendo venda de produto pirata né? Hehehe… Mas é só um post sobre integração contínua!

Vamos falar um pouco sobre como fazer integração contínua por meio do Travis-CI e realizando o deploy no Heroku. Como exemplo, vamos utilizar um sisteminha de Tarefas feito com Spring Boot e a camada de visão com AngularJS. Em um futuro não muito distante, falarei um pouco sobre as maravilhas do Spring Boot, mas, hoje, vamos focar nessa danada de integração contínua.

 

Integração Contínua

O que é? O que come? Para que serve? Veja no novo post do Gabriel Feitosa =)

Muita gente ainda se pergunta no que a integração contínua pode auxiliar no processo de entrega, mesmo se ainda trabalhar com a velha forma cascata  (sim, infelizmente ainda hoje tem muita gente entregando software assim).

Geralmente, associamos a integração contínua somente as metodologias ágeis. Afinal, foi por causa da necessidade de disponibilizar os softwares de maneira rápida, contínua e com qualidade, que se tornou indispensável integrar o que é produzido ao que é entregue.

Uma pergunta para responder em nossas cabeças: quando fazemos um bom trabalho, gostamos de ter um feedback/elogio do nosso chefe, ou não? Pois é, o nosso software também é sentimental. A integração contínua é a maneira mais prática de dar um feedback instantâneo para nosso sistema e, sem ser egoístas, para nós mesmos.

Funciona assim, faço meu código, depois dou o commit no repositório, o processo de build é iniciado, os testes são executados e, se houver falhas, elas serão expostas. Simples, rápido e sem dor. Opa, vão ficar sabendo que comitei sem rodar os testes, isso não é legal!!! Mas é CLARO que é legal meu amigo, já imaginou se você envia esse seu código para homologação e na hora do usuário testar ele não funciona ou se vai direto para produção? Seria muito pior, não?

Para nosso exemplo, vamos usar um repositório no Github. O Travis-CI irá escutar este repositório e sempre que houver mudança executará o processo de build e fará o deploy no Heroku.

Leia Mais

AngularJS

AngularJS: Aplicação em tempo real – Refresh periódico

Fala galera, beleza?

Depois de um mês atípico (muito trabalho e organizando casamento) e um começo de mês com ombro deslocado, estou de volta para delírio de vocês heheheh (menos né?!).

Hoje vou falar sobre aplicações em tempo real utilizando o padrão ajax de atualização periódica (periodic refresh) e como o AngularJS pode nos ajudar a implementá-lo. Deixa eu te fazer uma pergunta, você gostaria de ficar apertando F5 para verificar se há uma nova notificação no Facebook? Ou se chegou aquele e-mail que você tanto esperava no Gmail? Eu acho que não, né?

A fim de tornar a experiência do usuário a mais agradável possível, muitas aplicações utilizam dados em tempo real (ou quase) e até criam uma certa dependência dessa tecnologia, pois sem ela jamais teriam se popularizado.
Leia Mais

%d blogueiros gostam disto: