Olá Pessoal;
Hoje, escrevo este post para falar de uma tecnologia um tanto quanto polêmica ainda, porém que vem tendo crescimento na sua utilização em aplicativos WEB, principalmente com alta escabilidade, estou falando de NoSQL Databases.
NoSQL é uma alternativa aos bancos RDBMS para tentar resolver problemas de escabilidade (para RDBMS pode ser caro ou bastante complexo) e desempenho entre outras caracteristicas. A idéia principal é armazenar dados de uma forma denormalizada, utilizando um padrão chamado key-value, ou seja um valor está sempre associado a uma chave.
Um outro conceito é que cada linha armazenada pode possuir seu próprio esquema, isso facilita a replicação dos dados em vários outros servidores NoSQL.
Empresas como: Facebook, Google, Twitter, Digg, Yahoo utilizam em suas aplicações e são entusiastas de soluções NoSQL.
Eu quero falar especificamente sobre um banco de dados NoSQL que vem crescendo bastante, é o Apache Cassandra que foi desenvolvido primeiramente pelo Facebook que depois entregou o código fonte para a Apache dar continuidade. Escrito em Java e bastante leve, ganhou bastante espaço porque uniu a arquitetura de um banco da Amazon, chamado de Dynamo com o modelo de dados baseado no BigTable do Google e o resultado final ficou bem interessante.
A Estrutura de dados do Apache Cassandra trabalha da seguinte forma:
Olá Pessoal;
Enquanto aguardamos anciosamente a espera da versão final do Java 7 (que está prevista para este ano de 2011), e virá com algumas novidades na linguagem.
Mas queria falar sobre as funcionalidades que virão para incrementar o desenvolvimento desktop em Java. Por isso vamos dar uma olhada em algumas das novidades do Swing que estarão presentes na nova versão do Java.
Olá Pessoal;
Nest post, estou aqui para dizer que nem tudo é maravilha ao se utilizar o GWT. Como o GWT compila o código Java, gerando código Javascript otimizado para cada browser, pode ser que algum módulo tenha um tempo de compilação nada performático.
Trabalho em uma aplicação que tem em torno de 300 módulos GWT e alguns demoram quase 10 minutos para serem compilados (Por erros de design patterns) , imagina se quanto tempo demora a compilação do projeto.
Por isso, disponibilizo para vocês esse link em que o autor se preocupa em demonstrar a importância e dicas para melhorar o tempo de compilação do seu módulo.
link: http://supplychaintechnology.wordpress.com/2010/06/04/gwt_compile_times/
Uma outra dica (que eu acho muito importante) é diminuir os "permutations", ou seja quando o GWT compila um módulo ele compila para cada browser e cada locale, por exemplo, se o seu módulo for compilado para 5 browsers e 10 locales diferentes, irá gerar 50 "permutations" e consequentemente uma demora a mais na compilação.
A dica é definir os browsers que realmente serão utilizados pela aplicação (se for uma aplicação disponivel para web esqueça) e definir o locales de sua aplicação (se sua aplicação é mult-linguagem).
As dicas para diminuir os permutations: http://bazoud.free.fr/post/2008/07/31/Can-I-speed-up-the-GWT-compiler/
Fica a Dica
Abraços
Pessoal;
Dando continuidade ao artigo sobre introdução ao GWT, e conforme prometido, vou demonstrar como criar um aplicativo GWT usando o Netbeans (No proximo post vou mostrar como criar no Eclipse xD).
Para habilitar o suporte do GWT no netbeans, será necessário a instalação do plugin GWT4NB, que você pode fazer o download a partir do site do projeto: https://gwt4nb.dev.java.net/, a partir dai é só instalar o plugin que irá aparecer a opção de utilizar o Google Web Toolkit nos projetos web.
Com o plugin instalado, vamos começar a desenvolver o nosso primeiro aplicativo GWT, o primeiro passo é criar um novo projeto WEB, como mostra na imagem:
Olá Pessoal;
Essa é uma dica que recebi de um amigo meu do trabalho, o Josivan (cara faz mestrado na UTFPR e também faz a revisão de vários livros técnicos) e achei interessante disponibilizar para todos que acessam o blog.
Já deparei algumas vezes com códigos para remover elementos nulo em uma lista por exemplo que fica mais ou menos assim:
Porém isso pode ser realizado com uma forma que economiza linhas de código além de manter um código mais limpo, e cumprindo o objetivo de remover os elementos nulos da coleção em apenas uma linha, o código fica assim:
É algo simples e bem cotidiano para um desenvolvedor Java.
Você tem alguma forma mais pratica? envie nos comentários!
Abraços e Até a proxíma!
Pessoal, como tenho bastante interesse em falar sobre o GWT e suas vantagens no Blog, vou começar com esse post falando um pouco sobre o que é o GWT e um pouco do que ele pode fazer, assim mais para frente nós podemos ir avançado sobre o assunto falando sobre componentes e criando GUI avançadas de forma bem pratica. Espero que gostem!
O que é GWT
O Google Web Toolkit é um framework para o desenvolvimento de interfaces ricas com Java. É algo drasticamente diferente desenvolver aplicados web, bem diferente de como usamos com JSP/JSF/Struts... Etc. Pois a idéia principal do GWT é escrever o código de nossas interfaces WEB em código Java, esse código será compilado para um código Javascript já otimizado pelo compilador e funcional para os navegadores utilizados no mercado (IE, Firefox, Safari, Opera ...etc) .
Isso facilita e agiliza bastante o desenvolvimento de aplicativos WEB, pois não precisamos ficar escrevendo Javascript que tenha suporte em todos os navegadores e podemos usufruir de todas as funcionalidades presentes no Javascript e da reutilização de componentes de uma forma bem pratica, podemos utilizar também ferramentas de testes para verificar se uma interface está cumprindo o que prometeu.
Possui também um mecanismo de comunicação com o código cliente e servidor assíncrono, chamado de RPC (Remote Procedure Call) que pode trabalhar com vários protocolos como JSON ou XML é bem parecido com um código RMI de forma bem mais simples, que na pratica a pagina web gerada se comunica com o servidor utilizando o AJAX de forma transparente.
Você conferir a própria pagina do GWT, que está em Português e pode ajudar bastante: http://code.google.com/intl/pt-BR/webtoolkit/overview.html.
Casos de aplicativos que usam o GWT
Você pode ver alguns exemplos de aplicativos que foram feitos em GWT nesse link http://gwtgallery.appspot.com/
Alguns pontos positivos
Pessoal;
Olá, continuando com a sequência "O que o Java 6 trouxe de novo" irei falar um pouquinho de uma importante nova funcionalidade adicionada na nova versão do Java, O SystemTray.
O SystemTray é para deixar os programas em um icone que fica na bandeja do sistema operacional (aquela do lado do relógio), o Java na versão 6 trouxe isso nativo na JDK, nas versões anteriores isso era feito utilizando a biblioteca JDIC.
E para ilustar vou dar um exemplo de como criar uma aplicação na bandeja, como várias pessoas me pediram isso, está ai, é bem simples:
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
/**
*
* @author Emmanuel Silva
*/
public class TestTray {
/** Creates a new instance of SisTray */
public TestTray() {
createSystemTray();
}
public static void main(String[] args) {
new TestTray();
}
private void createSystemTray() {
//criando a classe que gerencia a bandeja
SystemTray tray = SystemTray.getSystemTray();
if(!tray.isSupported()) {
System.err.println("Não é possível rodar a aplicação");
System.exit(0);
}
//icone que será exibido na bandeja
Image icon = Toolkit.getDefaultToolkit().createImage( getClass().getResource("informacao.gif").getPath());
PopupMenu menu = new PopupMenu();
//item para sair
MenuItem itemSair = new MenuItem("Sair");
itemSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(itemSair);
//item para uma opção qualquer
MenuItem itemOption = new MenuItem("Opção");
itemOption.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "E ai gostou?");
}
});
menu.add(itemOption);
TrayIcon trayIcon = new TrayIcon(icon, "Tooltip", menu);
try {
//adiciona na bandeja do sistema
tray.add(trayIcon);
//exibindo um "tooltip" para o tray
trayIcon.displayMessage("SystemTray Demo", "Você gostou do SystemTray nativo do java?", TrayIcon.MessageType.INFO);
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
O resultado dessa classe é:
Ao clicar com o botão direito em cima do icone:
Bom, espero que gostem;
Até a proxíma!
Irei em alguns artigos mostrar o que o Java na versão 6 trouxe de novo para os desenvolvedores java, hoje queria começar com a classe Desktop, essa classe era pertencente a biblioteca chamada JDIC, que realmente era uma biblioteca muito boa e acabou sendo incorporada dentro do JDK.
Features que essa biblioteca trouxe para o Java 6, com um exemplo de como utiliza-la:
java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
if(!desktop.isDesktopSupported()) {
System.err.println("Desktop não é suportado.");
System.exit(0);
}
Pessoal;
A versão 6 do Netbeans está começando a mostrar as caras do eles tinham imaginado para essa nova versão da IDE.
Eles adicionaram muitas novidades, o suporte a desenvolvimento de telas swing com o matisse está muito bom, o Editor foi totalmente reformulando, está muito mais agil trabalhar com ele, mas a novidade que eu gostaria de destacar é:
Javascript Editor
Muito bom, pois sentia falta de uma boa IDE para desenvolver javascript, questões como exibir erros, refactoring, code completion, o Netbeans 6 tras tudo isso ai:
Olá, hoje vou falar um pouquinho das Annotations, que está disponibilizado desde a versão 5.0 do Java.
Annotation são meta-informações que guardam informações de dados dentro do proprio código-fonte, isso é muito util em frameworks por exemplo, porque não precisamos ter mais bilhões de arquivos xml guardando configurações e isso pode estar dentro do código, ficando mais facil e rapido de configurar o framework.
Bom para ilustrar melhor as annotations e o seu uso resolvi fazer um exemplo de validação de java beans utilizando elas.
Para começar, o código da Annotation:
Esse site tem uma lista de exemplos de códigos em Java, é bem interessante pois você pode buscar por pacotes, e tem exemplos de "quase tudo" que a gente precisa, salvou a minha vida algumas vezes.
Link
Descobri um framework chamado JMaki para trabalhar com componentes JSF como:
Achei esse artigo que ensina como fazer componentes que tenham um efeito drag and drop na web, muito interessante, vale a pena conferir isso, nesse novo mundo da "web 2.0" não podemos ficar para traz.
Link com artigo.
Para quem precisa debugar javascript e não aguenta mais ficar dando "alert" para saber o valor das suas variaveis, pois é criaram uma extensão ao firefox que acreditem se quiser debuga javascript entre outras coisas, poderia dizer que é um canivete suiço. Para baixar é só seguir o link: https://addons.mozilla.org/firefox/1843/
Realizando o desejo de muitas pessoas estou criando o meu blog, vou tentar compartilhar o meu aprendizado com a plataforma Java, usabilidade, web-semântica e também um pouquinho de javascript (que todos odeiam mais eu gosto muito), espero que gostem.