segunda-feira, 6 de fevereiro de 2017

Tagged under:

JVM Links (#04)


Opa! Estão abertas as inscrições para o NoSQL-BA a maior conferência de banco de dados não relacionais do nosso estado, você vai ficar de fora dessa? Vamos contar com a presença de palestrantes de empresas como Amazon, Microsoft e Oracle, acesse o site do evento para maiores informações.
Esse post foi feito pelo João Reis para o Blog do VivaReal e é simplesmente sensacional. Vivemos em um mundo repleto de informações, expectativas e possibilidades. Embora muitas vezes sobrecarregados, nos sentimos motivados a começar algo novo todos os dias sem necessariamente finalizar o que ontem estava em nossas mãos. Você Consegue me dizer quantas vezes no ano passado você finalizou uma atividade antes de começar um novo? Quantas coisas você foi tocando em paralelo com aquela sensação de trabalhar, trabalhar e não ver resultado?
Indicado por: Mateus Malaquias
A JSR-371 é uma especificação nova do mundo Java que vai trazer mudanças interessantes para o desenvolvimento de aplicações MVC o Daniel Dias fez um exelente post explicando a diferença básica entre Action-Based e Component-Based além de criar uma aplicação passo a passo.
Indicado por: Mateus Malaquias
O modelo relacional é o tipo mais utilizado pela maioria dos bancos de dados mais populares do mercado, mas ao passar dos anos o volume de dados foi crescendo e a forma de se extrair informações foram se tornando cada vez mais custosas nesse modelo, o que levou a criação de novas técnicas como por exemplo utilizar datawarehouses para geração de relatórios, views materializadas etc. Além disso novas necessidades surgiram como escalabilidade, baixo tempo de leitura e resposta e flexibilidade de modelagem, esse novo ambiente fez com que algumas pessoas questionassem a forma de armazenamento de dados e desse pensamento surgiu o NoSQL (not only SQL).
Mas o que é o NoSQL? É melhor que o modelo relacional? Nesse post irei explicar o que acho importante saber sobre a tecnologia.
Indicado por: Ivan Queiroz
Nesse HANGOUT Achilles Froes bate um papo com Vagner Oliveria, administrador do TI na Bahia e Co-Leader do SQL Server BA, sobre a importância das comunidades no seu crescimento profissional.
Indicado por: Mateus Malaquias
Elder Moraes recentemente fez um post no blog do Sou Java informando que esses últimos dias foram movimentados dentro do JCP, abrindo excelentes oportunidades para a iniciativa Adopt a JSR.
Três JSR’s muito importantes entraram em “Public Review”. Quem sabe esse não é o momento que você estava esperando para se envolver com o futuro do Java?
Indicado por: Mateus Malaquias

domingo, 5 de fevereiro de 2017

Tagged under: , , , , , ,

Vamos falar um pouco mais de Nosql

Texto originalmente publicado no blog de Antonio Lazaro e replicado no JavaBahia.

Para quem ainda não sabe nós (Comunidades Java Bahia + Python Bahia + Universidade Católica do Salvador - UCSAL) estamos organizando uma conferência sobre Nosql que acontecerá entre 30/03 e 01/04. Virão nomes de peso sobre o assunto e contamos com apoio de grandes empresas, como Amazon e Microsoft, além claro, da UCSAL.

As incrições para o evento foram abertas oficialmente na última sexta-feira e podem ser feitas nesse link.

Mais informações do evento podem ser obtidas no site oficial.

Para ajudar a trazer mais informações sobre o tema, estamos divulgando informações sobre NoSQL. O nosso amigo Ivan Queiroz iniciou o movimento de posts para trazer conhecimento sobre o assunto e também para ajudar na divulgação do evento e eu decidi dar continuidade. Se ainda não leu o post de Ivan, recomendo que leia, pois ele apresenta conceitos iniciais e fala da classificação desses bancos.

Introdução

Os bancos de dados não relacionais, ou também conhecidos como NoSQL (not only SQL) surgem com objetivo de trazer novas opções de armazenamento de dados diferentes dos nossos modelos relacionais que são baseados em schemas. Sabemos que em computação não existe bala de prata, então não vamos dizer que é a melhor solução para tudo e que deve ser usada sempre, mas deve ser uma opção que deve ser considerada antes de dar uma solução em um projeto. Estamos apresentando um conceito que é conhecido como persistência poliglota.

Definindo tipos

Os bancos NoSQL estão classificados em 4 grande tipos. São eles:

  • Chave-valor - Os registros são armazenados como uma coleção de elementos indexados que são recuperados por uma chave. Funciona muito bem para informações no formato de listas;
  • Colunar(column family) - Registro são armazenados em uma tabela, mas cada registro pode possuir várias colunas;
  • Documento - Cada registro é um documento que pode ou não fazer parte de uma coleção;
  • Grafo - Os registros são nós em um grafo interligados por arestas que representam o tipo de relacionamento entre eles;
  • Multimodelo - Suporta mais de um paradigma.

Quando usar?

Fica ai uma questão, em qual contexto é sugerido o uso de cada tipo de banco desse? Vou trazer alguns cenários com exemplos para ajudar nesse entendimento (lembrando que não pretendo definir, apenas apresentar alguns cenários)

Chave-valor:

  • Exemplos de contexto onde pode ser usado:
    • Armazenar dados de sessão, preferência e perfil de usuário
    • Dados do carrinho de compras
    • Não é recomendado o uso quando a data de persistência é algo importante
    • Usualmente utilizado como mecanismo de cache
  • Exemplos de empresas que usam:
    • Twitter
    • Github
    • Stackoverflow
  • Exemplos de bancos desse tipo:

Colunar (column family):

  • Exemplos de contexto onde pode ser usado:
    • Tratamento de largo volume de dados (a partir de Terabytes) com demanda de alta performance em leitura e escrita e alta disponibilidade
    • Aplicações distribuídas entre diversos datacenters
    • Aplicações que podem tolerar uma curta inconsistência entre os dados da replica
    • Aplicações com campos dinâmicos
  • Exemplos de empresas que usam:
    • IBM
    • Apple
    • Netflix
  • Exemplos de bancos desse tipo:

Documento:

  • Exemplos de contexto onde pode ser usado: (fonte):
    • Os dados não se encaixam no modelo relacional
    • Quando seus dados são na verdade objetos
    • Quando sua aplicação valida a consistência dos dados, não o banco
    • Quando o projeto da aplicação é orientado ao domínio
    • Quando seu projeto precisa se adaptar a mudanças
    • Quando a escalabilidade é importante
    • Quando você não precisa de transações e ACID (atomicity, consistency, isolation, and durability)
  • Exemplos de empresas que usam:
    • Cisco
    • Google
    • Ebay
  • Exemplos de bancos desse tipo:

Grafo:

  • Exemplos de contexto onde pode ser usado:
    • Toda vez que for necessário persistir um grafo. Um grafo é um elemento composto de um nó e uma relação.
    • Cada nó representa uma entidade e uma relação, é uma ligação entre essas entidades.
    • Exemplo mais comum: rede social.
    • Dados espaciais, sistemas de recomendação também usam esse tipo de banco de dados.
  • Exemplos de empresas que usam:
    • Nasa
    • Walmart
    • Linkedin
  • Exemplos de bancos desse tipo:

Multimodelo

  • Exemplos de empresas que usam:
    • Fox Sports
    • Dell
    • Ericsson
  • Exemplos de bancos desse tipo:

Fontes:
- Post introdutório no blog de Ivan Queiroz
- Livro da Casa do Código - NoSQL Como armazenar os dados de uma aplicação moderna
- http://tech.leroymerlin.com.br/devemos-usar-nosql-e-mongodb
- Nosql Database (reune todos bancos Nosql disponíveis)
- http://www.slideshare.net/steppat/nosql-por-que-e-quando-usar
- http://christiano.me/persistencia-poliglota-e-nosql-palestra-fisl/
- https://neo4j.com/why-graph-databases/
- https://www.thoughtworks.com/insights/blog/nosql-databases-overview
- http://www.3pillarglobal.com/insights/exploring-the-different-types-of-nosql-databases

sexta-feira, 3 de fevereiro de 2017

Tagged under: , , ,

Abertas as inscrições para NoSQLBa 2017 (Conferência sobre Nosql)

Estão abertas as inscrições para o NoSQL BA. Conferência sobre a tecnologia NoSQL que acontecerá em Salvador nos dias 30/03 (quinta-feira), 31/03 (sexta-feira) e 01/04 (sábado), entre 09:30 e 17:00, no campus de Pituaçu da Universidade Católica do Salvador (UCSAL). Teremos no evento presença de nomes de referência do mercado nacional no assunto e alguns cases bem interessante. Também temos apoio de empresas gigantes (Microsoft, Amazon,Oracle).

Sobre Nosql:
Os banco de Dados NOSQL (not only SQL) foram criados, principalmente, para resolver problemas com aplicações web que precisam operar com gigantescas cargas de dados além de poder escalar com grande facilidade. Esses tipos de banco de dados vem sendo usados com muita frequência em redes sociais como Twitter, Facebook, além de persistência em aplicações nas nuvens. Outro ponto importante a citar é a crescente adoção destas novas tecnologias, inclusive em mercados mais conservadores, tais como instituições financeiras e agências governamentais, seus motivos são diversos normalmente para solucionar problemas com flexibilidade, escalabilidade, latência e performance. Para demonstrar, compartilhar essas tecnologias foi criado o evento NOSQL-BA.

O que teremos no evento
  • Palestra: Palestra normal do evento
  • Debate (Fishbownl): O Fishbowl é um formato de discussão em grupo que promove o diálogo e a troca de experiência entre os participantes da sessão e permite que todos tenham as mesmas chances de opinar e expressar seus pontos de vista.
  • Workshop: Um mini-curso (4 horas).
As inscrições devem ser feitas nesse link.
Programação completa do evento (grade sujeita a alteração)
Palestrantes do evento. (grade sujeita a alteração)
Mais informações sobre evento no site.

Mais informações sobre o assunto, recomendo que vejam esse link introdutório feito por nosso amigo Ivan Queiroz.

Estamos informando o evento com mais de um mês de antecedência, então pessoal, negociem com seus líderes/chefes/gerentes. Caso seus superiores informem que não usam a ferramenta, recomendo que apresentem o link introdutório do Ivan Queiroz.e o site do evento, pois essa tecnologia não é do futuro. Ela é presente, e as principais soluções do mercado estão usando (Facebook, Twitter, Buscapé, Globo.com) e possuem cases com essa tecnologia. Não é a bala de prata, mas é uma ferramenta para o desenvolvedor ter conhecimento e saber quando utilizar.

Abraço e vejo vocês lá no evento! Qualquer dúvida, entre em contato com a equipe do Java Bahia ou comente nesse post que responderemos brevemente.

sexta-feira, 27 de janeiro de 2017

Tagged under: , , ,

Revisando Padrões com Java 8: O Padrão Template Method

Post original em: http://blog.ivanqueiroz.com/2017/01/revisando-padroes-java-8-template-method.html

No último post da série sobre padrões foi explicado o padrão Strategy, uso, vantagens e desvantagens e uma ótica de utilização com o Java 8. Continuando a série falarei do padrão Template Method seguindo a mesma linha e com exemplos. Será que conseguimos utilizá-lo com as features do Java 8? Vamos ver.
"Estamos presos ao modelo, somos parte dele."
-- V de Vingança

Template Method

Esse padrão define um modelo (template) de algoritmo, com pontos de extensão para serem utilizados por subclasses que irão adicionar comportamentos sem alterar a estrutura do algoritmo.


Aplicabilidade

Podemos utilizar quando:
  • queremos escrever as partes invariáveis de um algoritmo somente uma vez e deixar a implementação das partes variáveis para as suas subclasses;
  • existe comportamento em comum entre as subclasses, então movemos (uma refatoração) esse comportamento para uma classe comum, evitando duplicação de código;
  • queremos controlar a extensão das subclasses. Define-se um método template e a partir dele chamar várias hook operations (um método padrão geralmente vazio) que podem ter os comportamentos definidos pelas subclasses.

Implementação

Criei a classe Lutador que é a classe cliente que utiliza o algoritmo implementado pelo template:
public class Lutador {

    private MetodoLuta metodo;

    public Lutador() {
    }

    public void mudarMetodo(MetodoLuta metodo) {
        this.metodo = metodo;
    }

    public void finalizar() {
        metodo.finalizar();
    }
}

O método finalizar() chama o algoritmo de uma instância da subclasse de MetodoLuta que é o template de como o algoritmo será executado:

public abstract class MetodoLuta {

    private static final Logger LOGGER = LoggerFactory.getLogger(MetodoLuta.class);

    public MetodoLuta() {
    }

    protected abstract String desafiarOponente();

    protected abstract void socarOponente(String oponente);

    protected abstract void chutarOponente(String oponente);

    protected abstract void atirarMagiaOponente(String oponente);

    public final void finalizar() {

        String oponente = desafiarOponente();
        LOGGER.info("Lutador desafiado: {}.", oponente);
        socarOponente(oponente);
        chutarOponente(oponente);
        atirarMagiaOponente(oponente);

    }

}

Criei as subclasses MetodoForcaBruta e MetodoAgil que implementam os métodos abstratos.

Antes do Java 8

Para utilizar o padrão é só criar uma instância da classe cliente, configurar o template e chamar o método executor do algoritmo:
Lutador lutador = new Lutador();

lutador.mudarMetodo(new MetodoForcaBruta());
lutador.finalizar();

lutador.mudarMetodo(new MetodoAgil());
lutador.finalizar();
A saída da execução evidencia a mudança do algoritmo:
com.ivanqueiroz.templatemethod.MetodoLuta - Lutador desafiado Lutador de Karatê Milenar.
com.ivanqueiroz.templatemethod.MetodoForcaBruta - Soco forte no Lutador de Karatê Milenar pelo alto.
com.ivanqueiroz.templatemethod.MetodoForcaBruta - Chute forte giratório no ar em direção ao Lutador de Karatê Milenar
com.ivanqueiroz.templatemethod.MetodoForcaBruta - Hadounken de fogo no Lutador de Karatê Milenar
com.ivanqueiroz.templatemethod.MetodoLuta - Lutador desafiado Lutador de Sumô.
com.ivanqueiroz.templatemethod.MetodoForcaBruta - Soco rápido na linha de cintura do Lutador de Sumô
com.ivanqueiroz.templatemethod.MetodoForcaBruta - Chute médio com duas pernas na linha dos pés do Lutador de Sumô
com.ivanqueiroz.templatemethod.MetodoForcaBruta - Chute do pássaro giratório no Lutador de Sumô

Após o Java 8

Para utilização do Java 8 deixarei de utilizar classes abstratas e irei utilizar interfaces com uma das novidades do Java 8 o controverso Default Method.

Default Method

Essa novidade do Java 8 gerou alguns questionamentos de design da linguagem por permitir herança múltipla caso existam interfaces com default methods com a mesma assinatura. Mas particularmente acho que trouxe muito mais benefícios do que malefícios, pois essa decisão permitiu a alteração da API sem quebrar códigos antigos.
Bom, voltando ao que interessa, criei a interface MetodoLutaIf (que será o template) baseada na classe abstrata MetodoLuta, somente transformando o método finalizar() no default method:

public interface MetodoLutaIf {

    static final Logger LOGGER = LoggerFactory.getLogger(MetodoLutaIf.class);

    public String desafiarOponente();

    public void socarOponente(String oponente);

    public void chutarOponente(String oponente);

    public void atirarMagiaOponente(String oponente);

    public default void finalizar(){

        String oponente = desafiarOponente();
        LOGGER.info("Lutador desafiado: {}.", oponente);
        socarOponente(oponente);
        chutarOponente(oponente);
        atirarMagiaOponente(oponente);

    }
}

Após criar as implementações MetodoAgilImpl e MetodoForcaBrutaImpl o código executor ficará da seguinte maneira:
LutadorAtual lutadorJava8 = new LutadorAtual();

lutadorJava8.mudarMetodo(new MetodoAgilImpl());
lutadorJava8.finalizar();

lutadorJava8.mudarMetodo(new MetodoForcaBrutaImpl());
lutadorJava8.finalizar();
Analisando o código, não houve grande ganho do uso de Default Method (do ponto de vista na sintaxe), já que a interface possui mais de um método a ser implementado não podemos utilizar lambdas para passar novas implementações. Veremos então como seria, criei a interface MetodoXiterIf e a classe LutadorPreguicoso que utiliza o template:

public interface MetodoXiterIf {

    static final Logger LOGGER = LoggerFactory.getLogger(MetodoXiterIf.class);

    public String desafiarOponente();

    public default void soltarMagiaEmCima() {
        LOGGER.info("Hadouken na cara de {}", desafiarOponente());
    }

    public default void soltarMagiaEmbaixo() {
        LOGGER.info("Hadouken nas pernas de {}", desafiarOponente());
    }

    public default void soltarMagiaNoAr() {
        LOGGER.info("Hadouken na cabeça de {}", desafiarOponente());
    }

    public default void finalizar() {
        LOGGER.info("Lutador desafiado: {}.", desafiarOponente());
        soltarMagiaEmCima();
        soltarMagiaEmbaixo();
        soltarMagiaNoAr();
    }
}

Agora fica possível utilizar a sintaxe lambda na execução do código:

LutadorPreguicoso lutadorXiter = new LutadorPreguicoso();

lutadorXiter.mudarMetodo(()->"Lutador de sumô");
lutadorXiter.finalizar();

lutadorXiter.mudarMetodo(()->"Lutador de Karatê Milenar");
lutadorXiter.finalizar();

E ter o resultado esperado:

MetodoXiterIf - Lutador desafiado: Lutador de sumô.
MetodoXiterIf - Hadouken na cara de Lutador de sumô
MetodoXiterIf - Hadouken nas pernas de Lutador de sumô
MetodoXiterIf - Hadouken na cabeça de Lutador de sumô
MetodoXiterIf - Lutador desafiado: Lutador de Karatê Milenar.
MetodoXiterIf - Hadouken na cara de Lutador de Karatê Milenar
MetodoXiterIf - Hadouken nas pernas de Lutador de Karatê Milenar
MetodoXiterIf - Hadouken na cabeça de Lutador de Karatê Milenar

Vantagens e desvantagens

As vantagens principais para mim do Template Method são:
  • o reaproveitamento de código comum;
  • controlar a sequência da execução das subclasses ou implementações;
  • ter pontos que chamam código ainda não implementado (hook);
  • com o Java 8, podemos utilizar mais de um template, reutilizando mais código.
E as desvantagens:
  • no caso da implementação com as classes (pré Java 8) devemos tomar cuidado com os modificadores de métodos para garantir o contrato da superclasse com os clientes;
  • por outro lado na implementação com interfaces (pós Java 8) os métodos não podem ser finais, o que não garante o comportamento do algoritmo;
  • com o uso de Default Methods deve-se ter cuidado com a herança múltipla;
  • após instanciar um algoritmo, não será possível alterar o passo da execução;

Finalizando

Apesar de parecer não haver muito ganho em utilizar a abordagem com o Java 8, é preciso estar atento a esses ganhos no contexto de sua aplicação, é como um jogo de estratégia onde o que vale é saber equilibrar as perdas e ganhos. Pode-se discutir que não seja adequado utilizar interface para a construção do Template Method, já que não é intenção do padrão deixar que as subclasses (ou implementações) consigam alterar o contrato de execução, mas se dentro do contexto da minha aplicação os benefícios de utilizar lambdas ou múltiplas interfaces superarem os problemas (ou eles sejam mitigados) por quê não usar?
Nesse post tive a intenção de justamente mostrar que os padrões não são soluções perfeitas, são boas soluções que devemos utilizar com cuidado, sempre observando as consequências.
Um forte abraço e até a próxima.

Código no Github

https://github.com/ivanqueiroz/padroes-projeto-java

Créditos

segunda-feira, 23 de janeiro de 2017

Tagged under:

JVM Links (#03)




Queria começar o JVM Links de hoje falando sobre a abertura das chamadas de trabalho para o NoSQL-BA, esse que vai ser o maior evento de NoSQL no nosso estado, já temos algumas comunidades apoiando o evento e aguardamos o envio da sua talk.

1. E o futuro do Java! – Hipsters #27

=> O Michael 'Mister M' Nascimento bateu um papo muito legal com a galera da Caelum/Alura
a respeito do futuro do Java. Se você curte Podcast esse episodio é um prato cheio para entender como as coisas acontecem por trás da cortina do Java.

2. Mesmo Que Você Seja Um Programador No Cargo, Seja Desenvolvedor Na Atitude...

=> Nem só de assuntos técnicos vive uma comunidade. O Antonio Lazaro (Popete)
fez um texto muito excelente no blog da comunidade sobre uma conversa que a gente em off falando um pouco
sobre perfil profissional, leitura 100% recomendada.

3. Revisando Padrões com Java 8: O Padrão Template Method

=> Lembra do Ivan Queiroz? Ele continua sua saga revisão padrões de projetos e abordando conceitos do Java 8. Não precisa ser um Expert para ler os textos do Ivan, a linguagem utilizada é bem simples recomendo leitura para aprender duas coisas ao mesmo tempo.

4. Comunidade, por onde começar?

=> Hoje estamos com um JVM Links com bastante coisa voltada para comunidade. O Ramon Mota
fez um excelente post falando a respeito da sua experiência de como foi começar a participar de uma comunidade, como a comunidade tem feito ele melhorar cada vez mais e de bônus tem bastante dica de como começar.

5. Combinando AngularJS com Java EE: aplicações clientes com a robustez do Java

=> E a gente continua olhando para aplicações RESTFULL, dessa vez a palestra fica por conta do Rodrigo Candido que é Especialista em Java e líder do Grupo de Usuários Java de SC. Nessa palestra O rodrigo busca mostrar como o  AngularJS tem atraído muita atenção dos desenvolvedores, e a maioria das aplicações utilizando esse framework precisam comunicar por meio de APIs web. Esta palestra abordará como construir uma aplicação em AngularJS utilizando tecnologias backend Java EE. Ao final você entenderá os benefícios do uso destas tecnologias, bem como padrões e boas práticas aplicadas nesse modelo de desenvolvimento.
Tagged under:

Mesmo que você seja um programador no cargo, seja desenvolvedor na atitude...

Recentemente, em um bate-papo com @Mateus Malaquias e @Ivan Queiroz estávamos conversando sobre perfis profissionais diversos que encontramos ao longo de nossa jornada, tanto nas empresas que trabalhamos, como nos encontros dos JUGs e outros eventos que participamos.

Uma dica que sempre passamos, principalmente nas universidades/faculdades para os futuros profissionais da área de desenvolvimento é sobre o perfil profissional esperado não apenas pelo mercado de trabalho, mas também pela comunidade. Como se destacar? Quais caraterísticas? Nisso, conversamos sobre escrever sobre um assunto que é um pouco polêmico, mas não irei entrar muito no escopo do tema. Os programadores devem ser simplesmente programadores ou devem fazer algo mais?

Não irei falar se fábrica de software é algo bom ou ruim. Principalmente nas fábricas existe um cargo chamado PROGRAMADOR. Em teoria, o programador é aquele profissional que lê uma especificação (normalmente definida por uma analista) e executa em linguagem de programação o que está especificado. O programador por ter "menos experiência" é um executor. Em alguns lugares, existem ferramentas cases que fazem parte do trabalho desse tipo profissional na construção de CRUD, Em outros não, mas o programador, ele apenas lê e executa. Pelo menos, isso é definido em teoria.

Um dos grandes problemas dos projetos de software tem a ver com comunicação. O desejo do cliente x expectativa x necessidade gera um problema clássico, cuja figura abaixo sintetiza de maneira perfeita o que estou tentando falar.


(Fonte: não consegui achar a fonte do autor dessa figura mas achei ela nesse link)

Então, qual seria o perfil que todos profissionais de TI deveriam ter. TI é uma ciência de natureza incerta e cuja solução envolve criatividade, conhecimento técnico, visão de negócio, dentre outras coisas. Na palestra que fiz sobre carreira nos Tour do Java Bahia ano passado, a mensagem para os estudantes é que se tornassem profissionais diferenciados (link para os slides da palestra). Um elemento básico que falamos, além de conhecimento e curiosidade, é que a pessoa, entenda o problema que ela precisa resolver. E participe do processo de decisão. Para isso, coragem é uma característica importante. Não ter medo de se expor, pois caso a sua solução não seja boa, você vai ouvir o feedback porque e vai aprender, caso seja boa, você vai evitar que o cliente final do software que você está construindo tenha menos problemas com a entrega, o que é super positivo.

Por isso, aconselhamos que as pessoas que trabalham com TI, sejam menos executoras e mais abrangentes. Mesmo que no seu crachá não esteja escrito analista, se exercite fazendo esse papel e veja se o que está especificado, está condizente com o cliente esperar receber. Para saber o que o cliente espera receber, é necessário entender o propósito do projeto.

Independente do que estiver escrito no seu crachá, dentro de seu conhecimento, seja sempre desenvolvedor e não apenas um programador que executa o que está escrito. Isso vai gerar crescimento profissional para você e com o tempo gerará ganhos para a empresa que você trabalha ou para o cliente que você atende. Nem sempre o cliente sabe o que ele quer, mas nós como analistas precisamos direcionar os mesmos para o melhor resultado possível.



segunda-feira, 16 de janeiro de 2017

Tagged under:

JVM Links (#02)




1. Linguagens da JVM: Kotlin

=> O Ivan Queiroz lançou mais um post no seu blog dessa vez mostrando um pouquinho da Linguagem Kotlin que foi desenvolvida pela galera da JetBrains e tem ganhando bastante espaço no mundo mobile para o desenvolvimento de aplicações Android. Se você acha que JVM é somente Java vale apena ler esse post e acompanhar as novidades que vem por aí!

link: http://blog.ivanqueiroz.com/2017/01/linguagens-jvm-kotlin.html

2. VAMOS FALAR DE PADRÕES NOSQL [Q&A]

=> Post do Otávio Santana explicando o valor da especificação JNOSQL, se você curti bancos de dados NoSQL ou ta curioso sobre eles vale apena ler. [E tá valendo apena também enviar seu trabalho para o NoSQL-BA](http://javabahia.blogspot.com.br/2017/01/abertas-as-chamadas-de-trabalho-para-o.html) que está vai acontecer em Março aqui em Salvador. O Evento conta com a participação da propria especificação JNOSQL e de algumas comunidades do estado como: JavaBahia, PythonBA e GDGSSA.

link: https://otaviojava.wordpress.com/2017/01/12/jnosql_q__a/

3. Spring Security, Spring JPA e o JAVAEE

=> Semana passada um amigo me perguntou se eu já tinha utilizado o Spring Secuirty em projetos JavaEE, falei que sim e ele me perguntou como se fazia essa junção (quem trabalha com JavaEE está mais acostumado a utilizar a espeficicação JAAS em projetos). Aconte que o Alberto Souza já fez um texto muito bom explicando esse processo, recomendo leitura.

link: https://domineospring.wordpress.com/2015/07/27/spring-security-spring-jpa-e-o-javaee/

4. Java 8 Streams API: Manipulando coleções de forma eficiente

=> Ainda está passando por dificuldades para entender a API Streams do Java 8? Então tire um tempinho para da uma lida nesse texto do Carlos Alberto.

link: http://www.devmedia.com.br/java-8-streams-api-manipulando-colecoes-de-forma-eficiente/37630

5. Autenticação REST OAuth2 em Java com Apache Oltu

=> João Paulo Sossoloti fez um post muito interessante no blog da Caelum falando sobre autenticação REST OAuth2, aplicações REST estão em alta hoje em dia, entender como funciona OAuth2 é muito importante para a segurança de suas aplicações. Se você está estudando REST ou planeja aprender REST ler esse texto é uma boa porta de entrada.

link: http://blog.caelum.com.br/autenticacao-rest-oauth2-em-java-com-apache-oltu

BÔNUS. Vindo morar e estudar na Irlanda

=> Nesse texto Willian Justen nós conta como é morar fora do Brasil e como isso pode te ajudar a estudar, o legal desse texto é que você pode ver como o inglês influencia o dia a dia de um desenvolvedor.

link: https://willianjusten.com.br/vindo-morar-e-estudar-na-irlanda/