Banco de Grafos Neo4j

O modelo relacional de banco de dados é provavelmente o mais utilizado pelas aplicações para a grande maioria das soluções de software, mas como vimos no post sobre Nosql existem outras alternativas para os problemas em que o relacional não atende bem. Uma dessas alternativas é o banco de grafos que foca nos relacionamentos dos registros, ajudando a obter informações complexas muito rapidamente. Nesse artigo será mostrada uma introdução sobre banco de grafos e...

Ler mais

O Padrão Builder

Gosto muito de padrões que além de melhorar a manutenção do sistema, aumentam a legibilidade do código. Um desses padrões é o Builder, que mostra uma forma elegante de tratar classes com grande número de propriedades se tornando complexos para serem construídos.

“Antes de construir um muro pergunto sempre quem estou murando e quem estou deixando de fora.”

Robert Frost

Builder

A definição do padrão Builder segundo o GOF é...

Ler mais

Revisando Padrões com Java 8: O Padrão Null Object

Existem padrões além dos famosos já mostrados pelo GOF (Gang of Four) e um desses é o padrão Null Object. Esse padrão é um bom exemplo de utilização de orientação a objetos e deve ser parte do “canivete suíço” de todo desenvolvedor que utiliza linguagens que podem ter referência nula.

“O maior erro que você pode cometer, é o de ficar o tempo todo com medo de cometer algum.”

Elbert Hubbard

Ler mais

O que devo saber sobre NoSQL?

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 utilizar datawarehouses para geração de relatórios, views materializadas etc. Além disso novas necessidades surgiram como escalabilidade, baixo tempo de leitura e...

Ler mais

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

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)...

Ler mais

Linguagens da JVM: Kotlin

Atualmente a plataforma Java possui diversas linguagens de programação suportadas pela Java Virtual Machine (JVM). As linguagens criadas podem ser interpretadas pela JVM através de compiladores que geram bytecodes (linguagem intermediária que a máquina virtual entende) ou criando uma engine utilizando a Java Scripting API (definida pela JSR 223).

Apesar de particularmente gostar muito da linguagem Java, acredito ser importante um desenvolvedor conhecer diversas linguagens de programação para que tenha mais opções para...

Ler mais

Revisando Padrões com Java 8: O Padrão Strategy

Esse post será o início de uma série o qual vou tentar explicar os padrões de projeto utilizando as novidades do Java 8, se visitou esse assunto espero que já conheça os conceitos de orientação a objetos, a linguagem java e Padrões de Projeto.

“O conceito de estratégia, em grego strateegia, em latim strategi, em francês stratégie…”

Capitão Nascimento (Filme Tropa de Elite).

Strategy

É um padrão comportamental utilizado quando...

Ler mais

Revisitando o Dukescript

A algum tempo fiz um post sobre o Dukescript e agora vou colocar as minhas impressões sobre essa pequena experiência com a tecnologia.

Pontos positivos

  • binários multi-plataforma sem complicações - o build abstrai toda a complexidade na geração do binário;
  • separação MVC bem clara - a view, o model e o controller são muito bem separados na arquitetura do Dukescript;
  • utilização de HTML5 e CSS - a parte visual da aplicação...
Ler mais

[OCEJWCD 6] - Criando um Servlet Simples

No último post fiquei devendo uma explicação de como criar um Servlet, é bem simples basta só seguir alguns passos:

  1. criar e compilar o servlet no ambiente de desenvolvimento;
  2. copiar o arquivo compilado para o ambiente de implantação;
  3. criar o web.xml (deployement descriptor) nos dois ambientes;
  4. reiniciar o tomcat e testar o servlet.

Como o objetivo é entender o funcionamento, irei fazer os exemplos apenas com um editor de texto e a...

Ler mais

[OCEJWCD 6] - A Estrutura de Arquivos e Diretórios das Aplicações Web

Antes de ver a estrutura de arquivos e diretórios, irei explicar um pouco sobre o padrão MVC dentro do contexto da certificação, para ajudar a entender alguns pontos mais adiante. O padrão MVC significa Model-View-Controller (Modelo-Apresentação-Controlador), onde o Model é o arquivo java (onde está a lógica de negócio), a View são as páginas JSP e HTML (disponibilizadas para o usuário) e o Controller é o Servlet que atua como um intermediário entre os dois...

Ler mais

Navegando na Web com o Go/Golang

Após muito tempo trago mais um post sobre Go, confesso que a demora foi devido a o meu interesse atual pelo Dukescript, que me fez deixar de lado um pouco os estudos do Go. Mas decidi retomar aos poucos os estudos da linguagem revendo meu pequeno projeto de manipulação da API web do Steam.

HTTP em Go/Golang

Para usar a api do Steam precisei manipular chamadas HTTP e logo descobri que pode...

Ler mais

DukeScript - HTML5 e Java juntos

O fundador do projeto Netbeans e arquiteto de software Jaroslav Tulach junto com Anton Epple consultor e instrutor Java, ganharam o Duke’s Choice Award de 2014 ao apresentarem o Dukescript, uma tecnologia que tenta trazer o Java mais próximo da visão inicial de seu criador de levá-lo a todos os dispositivos escrevendo apenas um código (Write Once, Run Everywhere). Para isso utiliza o HTML5/Javascript como mecanismo de rendering e o Java no lado cliente (sem...

Ler mais

[OCEJWCD 6] - Ciclo de Vida do Servlet

O ciclo de vida do servlet passa através dos seguintes estágios:

  • carregamento da classe servlet;
  • instanciação da classe servlet;
  • inicialização;
  • serviço;
  • destruição.

Lembrando que um servlet não tem um método main() e é controlado pelo container. Segue uma figura representativa do ciclo:

Ciclo de Vida do Servlet
Ciclo de Vida do Servlet

##Interação cliente-servidor

...
Ler mais

Aprendendo GO/GOLANG

Quando ouvi falar da linguagem Go em 2009 achei muito interssante, a sintaxe proposta para a utilização de concorrência através de goroutines, de duck typing e garbage colector, mas na época eu não fiquei interessado o suficiente para querer aprender a linguagem.

Alguns anos se passaram desde então e eu senti a necessidade de aprender uma nova linguagem (principalmente após ler o livro O Progamador Apaixonado) e decidi pelo Go por ser bem diferente de...

Ler mais

[OCEJWCD 6] - Respondendo o cliente

Antes de escrever sobre a comunicação com o cliente HTTP, vou colocar aqui alguns benefícios da tecnologia Servlet do Java:

  • Os servlets são independentes de plataforma, pois são integrados na tecnologia java;
  • são mais leves que os processos CGI (Common Gateway Inteface), já que cada requisição não gera um novo processo no servidor;
  • oferecem segurança, escalabilidade e robustez;
  • são integrados com toda a API J2EE tirando proveito de todos os serviços disponíveis como JNDI,...
Ler mais

[OCEJWCD 6] - Resumo da Arquitetura Web e o Protocolo HTTP

A arquitetura web é baseada no modelo cliente-servidor onde o cliente faz uma requisição (request) para obter uma resposta (response). Para esse processo é necessário que os dois lados da comunicação possuam uma forma padrão de comunicação, um protocolo, para se entenderem no ambiente heterogêneo que é a Internet.

O protocolo para a navegação de páginas é o Hypertext Transfer Protocol o famoso HTTP, que define um formato para as requests e responses, composto de...

Ler mais

[OCEJWCD 6] - Iniciando Estudos

Após procrastinar por muito tempo os estudos para a certificação (e deixar meu blog abandonado), devido ao trabalho e “desculpinhas” que sempre encontro para justificar a preguiça, decidi retomar os estudos e ao mesmo tempo movimentar meu blog.

Aqui irei descrever os passos que estarei fazendo, abordando os assuntos a medida que eu for estudando e quem quiser pode contribuir com comentários e críticas construtivas (por favor!).

Para o estudo vou utilizar o livro OCEJWCD...

Ler mais

Utilizando Tomcat 6 nas nuvens com o OpenShift

Recentemente tive a vontade de colocar meu currículo on-line disponível em meu domínio principal (www.ivanqueiroz.com) e para isso tive a idéia de utilizar a plataforma Openshift da Red Hat. Para quem não conhece trata-se de uma plataforma como serviço (PaaS) de computação em nuvem, que possui suporte a várias plataformas (Java, Node.js, PHP, Python, Perl e Ruby) fornecendo a infra-estrutura para o desenvolvimento, teste, construção e execução de aplicativos. A solução possui planos gratuitos (a...

Ler mais