Category Archives: Uncategorized

Vídeo novo no canal: gerenciando seu ambiente Java com SDKMan

Estou gravando uma série de vídeos apresentando ferramentas que não são tão conhecidas por desenvolvedores. Primeiro foi o AWK, agora é a vez do SDKMan.

Já escrevi sobre ele aqui no blog, porém achei que seria interessante mostrar seu funcionamento na prática também. Espero que gostem e que ele torne seu dia a dia mais fácil!

Segue o link: https://youtu.be/YYc_gMijhQA

Aprendendo AngularJS – minhas leituras

Chegou aquele momento em que não dava mais pra fugir dele: finalmente me vi forçado a aprender AngularJS. Neste post vou listar o que usei para meus estudos e também as minhas primeiras impressões sobre o assunto. Levem em consideração que estou apenas começando!

O AngularJS: primeiras impressões

Apesar de já estar na versão 1.5, meus estudos estão focados na versão 1.4.2, dado que estou lidando com um projeto legado. Pouco a pouco vou me atualizar com as novas versões, já sabendo que a 2.0 é, pelo que pude ver, radicalmente diferente.

Mecanismo de templates

Como mecanismo de templates, achei fantástico (o mínimo que eu esperava). De imediato o vejo como uma excelente ferramenta para se escrever relatórios quando os dados são obtidos via REST no formato JSON. Alguns experimentos que fiz durante os estudos iniciais foram muito promissores.

Interações de usuário

Como framework usado para se escrever as interações do usuário, também achei bastante interessante. Me lembrou bastante o modelo de desenvolvimento que temos ao desenvolver aplicações desktop.

Escrever aplicações cuja interface no formato tabela usando o binding de duas vias do AngularJS se mostrou uma tarefa trivial com o AngularJS. E escrever filtros com ele (em tabelas) também é ridiculamente simples (quase aposenta o Datatables).

Roteamento

Ainda não me desceu bem o modelo de roteamento apresentado pelo AngularJS, mas creio que seja por enquanto apenas o resultado do meu contato inicial com o framework. Ainda tenho minha cabeça presa ao modelo de desenvolvimento AJAX tradicional (com muito jQuery), o que tem me dificultado um pouco a compreensão.

Saudades do jQuery

Adoro jQuery, o que me atrapalha um pouco no aprendizado do AngularJS. Em diversos momentos me via pensando em como faria a mesma coisa com minha biblioteca favorita. No entanto, conforme o tempo vai passando, este “vício” vai se reduzindo.

Confesso que me deu um certo alívio ver que o modo como fazemos requisições Ajax com AngularJS é muito parecido com o que conhecia no jQuery. :)

O que li

Angular Basics – http://www.angularjsbook.com/

Escrito por Chris Smith, é um pequeno livro online interativo no qual você pode experimentar o código fonte de uma forma muito interessante. Sem sombra de dúvidas foi o melhor material que encontrei sobre o assunto.

A linguagem adotada é muito simples e muito direta ao ponto. O autor se preocupa bastante em tratar apenas do que é essencial para que você possa começar a dar os primeiros passos, o que é excelente, pois alguns materiais que encontrei achei muito complicados para quem está iniciando.

Ao ler este livro, tinha ao lado um editor de textos e um navegador que usava para fazer alguns experimentos baseados no texto. Me ajudou bastante. Importante lembrar que o livro cobre a versão 1.4.2 do Angular, e não a 1.5.5 ou 2.

Algo bacana neste texto são as referências feitas pelo autor. Dá para o leitor que não tem muita vivência com JavaScript se aprofundar em diversos temas sobre a linguagem.

Resumindo: leitura fantástica!

Tutorial oficial do AngularJS – https://docs.angularjs.org/tutorial

Não gostei quando li na época em que o AngularJS foi lançado e continuei não gostando hoje.

Meu principal problema com este texto é que ele afoga quem está chegando em informações e terminologias que deviam ser apresentadas de uma forma mais suave.

Além disto, o código fonte já vêm pronto de cara em um repositório Git. Confesso que prefiro quando o próprio leitor vai gerando este código, tal como fiz lendo o “Angular Basics”.

Desconfio que este meu atraso no AngularJS se deve à antipatia que sempre senti por este tutorial (não vou negar).

Guia do desenvolvedor – https://docs.angularjs.org/guide

Se você quer conhecer a fundo o conceitual por trás do AngularJS, este é o texto. Não é algo que deve ser lido sequencialmente, mas sim como leitura complementar.

É muito bem escrito, e tem o nível de profundidade que se espera ao buscarmos uma melhor compreensão a respeito dos conceitos envolvidos na construção do framework e, ainda mais importante, das motivações que justificam o AngularJS ter a forma que possuí.

Não creio que seja um bom ponto de partida para se aprender o framework, mas como leitura complementar, foi fundamental para mim.

Curso gratuito da CodeSchool – http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro

Feliz demais pro meu gosto: me deu vergonha alheia e acabei pulando.

Ferramenta legal: AngularJS Batarang

Trata-se de uma extensão do Chrome que nos permite depurar código escrito em AngularJS. Você a instala e, na sequência, será criada uma nova aba nas ferramentas de desenvolvimento.

Por lá você poderá ver o escopo do seu módulo, informações sobre desempenho, interceptadores e tudo mais. É muito bacana para se ter uma visão melhor sobre o que estamos escrevendo com o AngularJS.

Concluindo

Apesar de atrasado, o processo de aprendizado do AngularJS tem sido uma experiência muito enriquecedora para mim. Confesso que não tanto pelo Angular, mas sim pelas referências que vou pegando no caminho que, acidentalmente, tem aumentado muito meu conhecimento sobre JavaScript.

Estou apenas começando no framework, apanhado bastante em alguns pontos, mas, no geral, gostado do que tenho visto. Aproveitando, você tem alguma boa indicação de leitura para me passar? Toda dica é bem vinda!

Semana cheia: novo treinamento de Grails e a inauguração dos Guias da itexto :)

As últimas semanas foram de intenso trabalho na itexto para que pudéssemos fazer dois lançamentos bastante empolgantes. Neste post conto o que estamos aprontando.

Segunda edição do treinamento Falando de Grails

formacao_itexto

Em agosto tivemos  o lançamento da Formação itexto, que é aonde ministramos esporadicamente nossos treinamentos voltados para desenvolvedores independentes. O treinamento na época foi o Falando de Grails.

Foi uma experiência muito bacana: um treinamento on line ao vivo que contou com pessoas de todas as regiões do país. Foram cinco aulas que foram desde o Groovy até o Grails mais avançado. Além destas cinco aulas, também incluímos duas sessões de consultoria online nas quais os alunos puderam trazer os problemas que enfrentam em seu dia a dia.

(na realidade a experiência foi tão bacana que houve uma terceira aula de consultoria após o treinamento)

Com base no feedback dos alunos melhoramos o Falando de Grails. Agora ele possuí mais duas aulas, o que nos permite um aprofundamento muito maior no Grails, mais especificamente no GORM e na parte de controle e visualização. Além disto também melhoramos bastante o conteúdo que disponibilizamos na área do aluno da itexto, assim como os exercícios também.

As aulas vão começar no dia 3 de novembro e as vagas são limitadas. Mais detalhes no site da Formação itexto – http://formacao.itexto.com.br

Guias da itexto

Esta semana também começamos a publicar nossos “guias”, que são mini ebooks gratuitos nos quais tratamos das mais variadas tecnologias e que costumamos usar como material de apoio em alguns de nossos treinamentos e consultorias.

A primeira publicação é nosso guia para iniciantes em Git. Nas próximas semanas deverá sair o segundo, que é uma atualização do nosso antigo Guia de Spring aqui do blog, agora falando sobre o Spring 4 e alguns outros tópicos.

Estes guias são e sempre serão trabalhos incompletos, pois os atualizamos frequentemente conforme nossos clientes e alunos enfrentam dúvidas relacionadas a estas tecnologias.

Ah: você pode baixar os guias em http://www.itexto.com.br/guias

/dev/All – agregador de blogs de desenvolvedores (e também um podcast)!

Hoje estou lançando um projeto no qual venho trabalhando já faz algum tempo. Se chama /dev/All, está em um estágio “pré-beta” mas acredito que já esteja 50% usável. Bom, ele supre dois objetivos meus:

Agregador de blogs voltados a desenvolvimento de software

Sempre senti muita falta de um agregador de blogs voltados para a minha área em português. Já vi algumas iniciativas mas todas não satisfaziam algumas necessidades básicas minhas:

  • Serem fáceis de se usar em trânsito (especialmente no ônibus)
  • Permitirem que os autores cadastrem facilmente seus blogs
  • Terem como foco exclusivamente TI e desenvolvimento de software
  • Que ofereça ferramentas para que os autores acompanhem a popularidade de seus posts e também lhes ajude a divulgar seu trabalho.

O funcionamento do /dev/All é bastante simples. Se você tiver um blog, basta se cadastrar neste link fornecendo o seu endereço. Se você não tiver um blog, bem: basta acessar a página principal para ver os últimos links que nosso crawler encontrou.

Ainda estamos trabalhando na parte envolvendo as ferramentas, mas com certeza deve sair algo nesta semana ou na próxima.

O sonho do podcast próprio!

Este é um projeto de anos: inicialmente se chamaria “/dev/Kico Podcast”, mas dado que as pessoas ligam muito este blog a Groovy e Grails, e eu lido com um range muito maior de tecnologias, primeiro pensei em uma generalização do site. Por que não “/dev/Tudo”? Por que me lembra “X-Tudo”. Então acabei chegando em “/dev/All” que soa bem melhor.

Neste podcast pretendo falar sobre alguns dos links mais interessantes que aparecerem no nosso feed e principalmente sobre as tecnologias que não aparecem nas convenções. Já estou montando nossa primeira ementa inclusive. Espero que gostem.

E o endereço do site?

http://www.devall.com.br

Quer nos ajudar?

Como disse no início deste post, ainda estamos em um estado bastante embrionário, sendo assim bugs surgirão. Caso apareçam, basta entrar em contato comigo por e-mail: kico@itexto.com.br

Ainda mais importante: se você tem um blog, por favor, se cadastre! Vai ser muito legal ver seus posts na nossa página inicial! Basta preencher este formulário!

Todo feedback é super bem vindo!

 

Ah, e o link né? http://www.devall.com.br

Integrando Groovy e Java

Groovy não deve ser visto como uma linguagem alternativa ao Java, mas sim complementar (e vice-versa). Mesmo em meus projetos Grails costumo ter partes escritas em Java (ou Clojure) por uma razão simples: é bom ter as ferramentas certas para cada tipo de problema, e se eu posso ter mais de uma e as domino, a pergunta que fica é: por que não?

Então neste post vou mostrar algumas maneiras que você pode integrar suas bases de código Groovy e Java para assim obter o melhor dos dois mundos. É importante ressaltar que aqui só vão ser expostas algumas das estratégias que costumo usar.

Java chamando Groovy

java_chama_groovy

Groovy como linguagem embarcada

Possivelmente esta é a estratégia mais comum: você já possuí um sistema escrito em Java e quer oferecer pontos de extensão para o usuário final sob a forma de scripts (que podem estar armazenados em um sistema de arquivos, banco de dados, nuvem ou qualquer outro local mágico de sua preferência). Assim seu trabalho como arquiteto/desenvolvedor diminui: você apenas fornece a estrutura básica sob a forma de um framework e os pontos de customização passam a ser feitos pelo próprio usuário final.

O fundamental

Como fazer? Já gravei agluns vídeos sobre isto pra você. O fundamental você pode ver abaixo:

Melhorando o desempenho

Mas esta é apenas a primeira parte do seu trabalho e o resultado vai ser um sistema razoavelmente lento. Como melhorar isto? Ensino no vídeo a seguir:

Sobre o vídeo acima, uma nota: hoje já tenho algumas técnicas que podem aumentar ainda mais a performance de scripts Groovy: em breve gravo um novo vídeo expondo como fazer isto (mas o acima resolve a maior parte dos seus problemas, se não todos).

Garantindo a segurança

Ter uma linguagem embarcada em seu sistema Java é muito bom, mas há um problema: segurança. Como evitar que código mal intencionado entre na sua vida? Imagine que seu usuário final escreva um script Groovy como o abaixo:


System.exit(1)

Ensino como resolver este problema em outro vídeo.

Usando bibliotecas escritas em Groovy já compiladas

Você quer adicionar ao seu projeto Java uma biblioteca ou framework escrito em Groovy. É bastante simples: basta que você adicione esta biblioteca e suas dependências ao classpath do seu projeto e os distribua junto com sua aplicação quando esta for compilada.

Uma nota importante deve ser feita: para evitar chateação, sempre inclua neste caso a biblioteca groovy-all. Esta vêm na distribuição oficial do Groovy e você pode referenciá-la em seu projeto Maven como no exemplo abaixo (basta mudar o número da versão para o que seja compatível com o seu projeto):

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.0-beta-3</version>
</dependency>

Esta dependência é importante pois já carrega o Groovy completo (o nome já entrega) e também as classes do GDK (Groovy Development Kit). Evite incluir apenas groovy-lang.

Código Groovy gera bytecode Java normal. Sendo assim, basta que suas classes Java usem as classes Groovy como se fossem… classes Java simples.

Usando código fonte Groovy usando Maven

maven-logo

Seu projeto está sendo escrito em Java e Groovy. Como você organiza seu projeto? Minha experiência principal é com Apache Maven, sendo assim aqui vou expor um exemplo bem rápido de como usar o plugin GMavenPlus.

Este plugin é uma reescrita do antigo GMaven com uma série de novos recursos. O uso é bastante simples: você só precisa incluir as pastas src/groovy e test/groovy para seu código Groovy, que vai ser compilado junto com o código Java.

Como usar o plugin? O caminho mais rápido e direto é você copiar os exemplos presentes neste link. Use o exemplo “joint compilation” que mostra como colocar em um mesmo projeto Maven Java e Groovy lado a lado.

E como seu código Java vai referenciar o Groovy? Exatamente como se fosse código Java convencional. :)

Groovy chamando Java

groovy_chama_java

Executando código Java compilado

Um dos principais pontos de venda do Groovy é justamente o fato de apresentar uma sintaxe próxima à do Java e também executar código Java de forma nativa. Lembre-se sempre desta regra:

Código Groovy vira bytecode Java padrão

Groovy pode executar qualquer código Java sem a necessidade de alteração. Basta que todas as dependências necessárias estejam no classpath do seu projeto. E como executá-lo? Exatamente como se fosse código Groovy. E sabe o que é bacana? Quando código Groovy executa código Java, Java vira Groovy!

Código Java que é essencialmente estático passa a ser dinâmico: você pode alterar os métodos presentes em código Java já compilado, por exemplo, exatamente como se fosse Groovy. Em 2009 escrevi alguma coisa a respeito, que você pode ler neste link.

Como Grails usa código Java?

Anos atrás escrevi um post sobre isto. Para ler, clique neste link.

Executando código fonte Java

Basta usar o GMavenPlus, exatamente como mostrei neste mesmo post. :)

Concluindo

Neste post expus algumas soluções de integração Groovy e Java. Há outras soluções (Gradle, por exemplo), mas como não tenho tanta experiências com estas, preferi não falar a respeito (no futuro aprendendo melhor provavelmente surgirá um post aqui).

Muitas dúvidas que vejo no Grails Brasil são do tipo: “como uso [sua biblioteca favorita Java] com Groovy/Grails”? Resposta simples: exatamente (ou quase em raríssimos casos) como faria se fosse em um projeto Java convencional!

Outro ponto importante: muitas pessoas me procuram dizendo que vão trocar Java por Groovy ou vice-versa: bobagem. Como disse no início deste post, o ganho na plataforma Java está no uso em conjunto de diversas linguagens. O uso exclusivo (só Java ou só Groovy) é tolo: pra que transformar o mundo em um prego?