Archive for the 'java' Category

I18N com JSTL

Bom, se você, assim como eu, está dando manutenção em alguns sistemas legados da sua empresa que infelizmente não utilizam frameworks que já oferecem suporte à internacionalização, chegou a hora de parar de ficar olhando de cara feia para as mensagens escritas diretamente nos JSPs e colocar I18N utilizando JSTL!! :D

Ainda estou pesquisando a fim de descobrir se a forma que irei apresentar é a ideal e a de melhor desempenho, mas.. é aquela velha história: funcionar, funciona! :)

Passo 1: Crie um arquivo de propriedades

Crie um arquivo de extensão properties (ou mais de um, dependendo de quantas línguas você irá internacionalizar seu projeto) e coloque ali o conjunto de chaves necessárias para a I18N. Um arquivo de propriedades é composto por chaves e valores separador por igual (”=”).

Um exemplo de conteúdo deste tipo de arquivo seria:

# ---------------------------------
# Propriedades do SISTEMA X
# ---------------------------------

# --~--~---------~--~
# ARQUIVO: login.jsp
# --~--~---------~--~
login.label.login=Login:
login.label.senha=Senha:
login.botao.cadastro=Cadastro de Usuário
login.botao.login=Login

# --~--~---------~--~
# ARQUIVO: relatorios.jsp
# --~--~---------~--~
relatorios.title=Relatórios

Passo 2: Crie uma classe Java para pegar o valor das propriedades

Um exemplo de implementação:

import java.util.MissingResourceException;
import java.util.ResourceBundle;

/**
 * MyProperties class.
 * 
 * This class was created in order to get strings of the properties file.  
 * 
 * @author thania
 */
public class MyProperties {

    /**
     * A ResourceBundle instance to refer the MyProperties file.
     */ 
    private static ResourceBundle resourceBundle = ResourceBundle.
        getBundle("pacote.MyProperties");

    /**
     * Gets the string of the ResourceBundle instance.
     * 
     * @param key The key for searching the string.
     * @return The value that was searched in the properties file.
     * 
     */ 
    public static String getString(String key) 
    {           
        String value = null;
        try  
        {  
            value = resourceBundle.getString(key); 
        } 
        catch(MissingResourceException e) 
        {  
            e.printStackTrace();
            System.err.println(new StringBuilder("ERROR: Properties :: getString -> ").
                append(key).append("\n").append(e));  
        }
        if (value == null) 
        {
            System.err.println(new StringBuilder("ERROR: Properties :: getString -> ").
                append(key));  
        }
        return value;
    }
}

Passo 3: Configure o web.xml

É preciso informar no web.xml qual será o arquivo que contém as mensagens do seu sistema. Para isto, basta adicionar a seguinte configuração no arquivo:

<context-param>
    <description>Arquivo de propriedades do Sistema X</description>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>pacote.MyProperties</param-value>
</context-param>

Passo 4: Use I18N no seu JSP!

Para utilizar as mensagens nas suas páginas JSP, importe a taglib fmt do JSTL:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 

Setar a classe que cria uma instância de ResourceBundle para buscar a valor no arquivo de propriedades:

<fmt:setBundle var="messages" basename="pacote.MyProperties"/>    

E, finalmente, use no texto do formulário:

<fmt:message key="login.label.senha" bundle="${messages}"/>

Isso retornará: “Senha:”

Enjoy! ;)

ps.: Se alguém tiver uma maneira melhor de fazer isso, por favor, mande-me um comentário. Nesse caso, não vale usar framework. Estou com um sistema legado aqui sem direito a refactoring e replanejamento da arquitetura, por enquanto. :~(

Minhas considerações sobre o Mês de Java Floripa

Ontem de manhã fui no evento “Mês de Java Floripa”, organizado pela galera do GUJavaSC.

A primeira palestra, “Java na Ponta dos Dedos: A revolução Invisível”, foi ministrada por Roger Brinkley. Quando vi a programação do evento e li o nome da palestra, não tinha uma idéia exata sobre o que seria, pois o nome não era muito sugestivo, mas resolvi arriscar. Fiquei um pouco surpresa na hora, pois tinha a impressão de que era um outro rapaz que apresentaria. Mas, tudo bem, no final das contas demos muita sorte pois o Roger é um cara muito experiente na área de mobile e embedded, e ainda por cima trabalha na Sun! :D

Bom, a palestra do Roger foi ótima. Na minha opinião, o inglês dele não estava difícil de entender. Ele apresentou diversos dispositivos mobile e embedded e deu algumas demostrações ao vivo. Em uma das demostrações, eu acabei participando, pois pelo visto, ninguém além de mim no auditório sabia tocar piano. Quando eu levantei a mão, dizendo que sabia, ele logo pediu pra ir lá na frente. “Arght, por que eu fui levantar a mão?!” - pensei. Bom, basicamente ele tinha uma caneta “mágica” que me possibilitava tocar piano com ela. Foi preciso seguir algumas instruções ditas em inglês pela caneta (sim! a caneta tinha instruções gravadas em voz!) a fim de desenhar o piano em um papel e pronto, ela ficava disponível para tocar. Como só as notas da oitava principal estavam desenhadas, toquei um trecho da nona sinfonia de Bethoven. Eu só não sei se o público entendeu que era isso que estava acontecendo (que fiz um desenho de um piano e que, de alguma maneira, a caneta emitia um tom quando se tocava em algum dos retângulos em vertical. Estes retângulos representavam as notas do piano e foi através deles que eu consegui tocar a música :)… Acabei ganhando uma meia com o desenho do Duke pela participação, mas como era uma meia masculina e de tamanho 42 (detalhe: meu pé é 35), doei ela para o Caio.

A segunda palestra, e última da manhã, foi ministrada pelo pessoal do Floggy, um framework para persitência de dados no JavaME. Achei bem interessante, apesar de atualmente eu não trabalhar com JavaME. Nem fiquei com sono nem nada… Eles souberam explicar direitinho como usar o framework, apresentando exemplos práticos.

No final da manhã, houveram sorteios de brindes. Ganhei uma bolinha laranja da Sun que eles estavam atirando na platéia (realmente atirando! hehehe..) e uma camiseta de Java, por eu ser uma das únicas mulheres ali no evento. Infelizmente, a tarde não pude ir assistir as outras palestras, pois tinha aula de inglês. Eu realmente queria ter assistido a palestra sobre Glassfish v3 (afinal eu trabalho com o Glassfish v2), uma pena eu não poder ter ido. Quem tiver ido, por favor, mande-me um comentário me dando uma idéia geral. Espero que os slides fiquem disponíveis.

De qualquer forma, Bruno Ghisi e demais organizadores, parabéns pelo evento!! :)

Mini-curso de EJB em Florianópolis

Com o apoio da GUJava (Grupo de Usuários Java), a empresa catarinense V.Office oferece no próximo dia 23 de julho mini-curso “Introdução Enterprise JavaBeans (EJB) 3.0″. Entre os temas abordados estão: Session Bean, Message Driven Bean, Java Persistence API, gerenciamento de Segurança to web, entre outros. O palestrante Rodrigo Cândido da Silva tem mais de oito anos de experiência na área de TI, trabalha para grandes empresas nas áreas de consultoria. Desenvolvimento, treinamento e design de arquiteturas de softwares. Especialista no estudo, ensino e na utilização da Plataforma Java, onde possui as seguintes certificações: SCJA, SCJP, SCWCD, SCBCD e SCEA.

SERVIÇO:

Data: 23 de julho de 2008 (quarta-feira)

Horários:
- Credenciamento às 18h30
- Mini-curso: 19h às 21h

Local: Auditório da ACATE - Rua Lauro Linhares, 589 - (Ático). Trindade. Florianópolis

Inscrições: marli@voffice.com.br ou 48 3025 - 8575

Os participantes devem levar 2 kg de alimento não perecível para doação à entidade carente.

###############

Tenho um amigo que conhece o palestrante e, ao que parece, o cara é bom. Conheço muito pouco de EJB 3.0. A versão que já utilizei para implementação foi uma versão 2.x. Na época, era super pesado e bem complicado. Funcionou, mas foi um trauma… :(

Eu vou! Só falta comprar os quilos de alimento. ;)

Fonte: VOffice

Apache Wicket

Oi!! :)

Saiu na revista Java Magazine desde mês uma edição sobre o Apache Wicket, um framework baseado em componentes para o desenvolvimento de aplicações web em Java. wicketSinceramente, não me lembro de ter ouvido falar dele. No artigo da revista, mencionam que o Wicket já é comparável com JSF e Tapestry. Além disso, segundo ao Wiki, ele se tornou um projeto de “nível alto” da Apache em junho de 2007. HmmMmM.. Será que já não é uma boa hora de dar uma olhada nesse cara? ;)

Bom, fiquei curiosa. No site oficial do projeto, tem um exemplo de “Hello World” utilizando o framework. Parece bacana. Vou tentar dar uma testada em casa e descobrir se pessoas que já o utilizam em projetos, recomendam. Se for um EJB 2.x da vida não dá pra investir… :(

O Wicket já está na versão 1.4 e o artigo da revista Java Magazine falou muito bem dele. Acredita-se estar bem estável.

Aguardem posts a respeito!

:)

Sun Microsystems participa do FISL 9.0

A Sun Microsystems confirma participação na nona edição do Fórum Internacional Software Livre (fisl), de 17 a 19 de abril, em Porto Alegre. A empresa reunirá alguns de seus principais especialistas para discutir temas como OpenSolaris, NetBeans, MySQL, Glassfish, OpenSPARC, PostgreSQL e Open JDK. A corporação também apoiará o OpenSolaris Day e o Javali International Meeting, eventos que acontecerão no dia 16 de abril e que tem como objetivo discutir as principais tendências.

Além do estande (nº25), que apresentará algumas das principais soluções relacionadas a software livre, a Sun Microsystems também realizará diversas palestras no Fisl. Destaque para a apresentação conduzida pelo chefe de Código Aberto da companhia, Simon Phipps, no dia 18, às 13h. O executivo discutirá como as empresas nacionais podem tirar proveito do software livre para maximizar seus negócios no país e internacionalmente.

Já no dia 19, às 12h, os participantes poderão acompanhar a palestra do gerente de Marketing para Java Standard Edition (JSE), Rich Sand, que falará sobre os próximos passos do Open JDK e o que os novos grupos têm feito.

“Sem dúvida, o fisl e outras iniciativas da Sun Microsystems são oportunidades para reforçar nosso relacionamento com a comunidade, que cada vez mais é reconhecida mundialmente. Além disso, os participantes terão a oportunidade de conhecer tudo o que a companhia oferece atualmente em termos de software livre”, detalha Bruno Souza, gerente Mundial para Comunidade NetBeans.

Fonte: http://fisl.softwarelivre.org/9.0/www/node/400

Próxima Página »