Cadastre-se Revistas DevMedia Cursos
  Live chat by Netwatts

Space de EDUARDO OLIVEIRA SPÍNOLA
Busca Autor


Últimas 20 atualizações de EDUARDO OLIVEIRA SPÍNOLA

Artigo - Desenvolvendo Web Services utilizando JAX-WS

Desenvolvendo Web Services utilizando JAX-WS

Java API para Serviços Web XML (JAX-WS) 2.0, JSR 224, é uma parte importante da plataforma Java EE 5. Uma continuação liberada de Java API para XML-based RPC 1.1 (JAX-RPC), JAX-WS simplifica a tarefa de desenvolver serviços web utilizando tecnologia Java. Encaminha alguns dos resultados em JAX-RCP 1.1 providenciando suporte para protocolos múltiplos assim como SOAP 1.1, SOAP 1.2, XML e suprindo uma facilidade de manutenção para protocolos adicionais junto com HTTP. JAX-WS utiliza JAXB 2.0 para ligação de dados e suportes habituais para controlar serviços gerados em interfaces endpoint. Com seu apoio para anotações, JAX-WS simplifica o desenvolvimento de serviços web e diminui o tamanho do tempo de execução dos arquivos Jar.

Um exemplo acompanha este artigo. Este exemplo demonstra um serviço web simples que é acessado utilizando JAX-WS 2.0 através de uma aplicação Java externa. O exemplo é baseado em um recurso aberto de implementação do Java EE 5 SDK chamado GlassFish. O pacote do exemplo inclui o código fonte para o exemplo, scripts de configuração e um arquivo de configuração ant.

Comecemos por fazer algumas instalações iniciais. Se você ainda não fez, baixe o GlassFish da página de Downloads GlassFish. (Este artigo foi testada com o Build 29 do GlassFish.) Depois prepare as seguintes variáveis de ambiente:

·         GLASSFISH_HOME. Deve indicar onde você instalou o GlassFish (por exemplo C:\Sun\AppServer)

·         ANT_HOME. Isto indicara onde foi instalado o ant. Ant está incluído no pacote do GlassFish que você baixou. (No Windows, está no subdiretório lib\ant.) Você também pode baixar o Ant da página do Projeto Apache Ant. O exemplo requer do Apache Ant 1.6.5.

·         JAVA_HOME. Isto indicará a localização do JDK 5.0 no seu sistema.

Adicione também a localização do Ant na sua variável do ambiente PATH.

Em seguida baixe o pacote do exemplo e extraia o conteúdo dele. O diretório principal para está dica é jaxws-techtip.

Configurando o Web Service
Com as configurações iniciais feitas, podemos começar a configurar o serviço web. Neste exemplo, o web service é desenvolvido a partir de uma classe  Java. Para configurar o web service:

·         Escreva uma classe de implementação endpoint.

·         Compile a classe de implementação endpoint.

·         Opcionalmente gere artefatos portáteis necessários para execução do web service.

·         Empacote o web service num arquivo WAR e intale-o.

Escreva uma classe de implementação endpoint.

Se você navegar através da estrutura do diretório \techtip, você encontrará um diretório endpoint. Neste diretório, você achara uma classe chamada Calculator. A classe é uma implementação endpoint de um serviço simples que adiciona dois inteiros:

package endpoint;
   
   import javax.jws.WebService;
   import javax.jws.WebMethod;
   
   @WebService(
       name="Calculator",
       serviceName="CalculatorService",
       targetNamespace="http://techtip.com/jaxws/sample"
   )
   public class Calculator {
           public Calculator() {}
           
           @WebMethod(operationName="add", action="urn:Add")
           public int add(int i, int j) {
                   int k = i +j ;
                   System.out.println(i + "+" + j +" = " + k);
                   
                   return k;
           }
   }

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
21/07/2010 4:45:00 PM





Artigo - Desmistificando o AJAX – Parte VI

Desmistificando o AJAX – Parte VI

Raphael Paiva

raphael@sena.com.br

 

Conclusão

No nosso caso, demonstramos um exemplo bem simples, porém capaz de apresentar a ‘ponta do iceberg‘ do desenvolvimento Web com AJAX.

 

A popularização do AJAX ajudou e muito no nascimento de novos termos, como a Web 2.0 [ra funcionalidade p[ontes estç(http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html), uma quase renascença da Internet, desta vez, liderada pelo Google; e foi justamente o Google onde tivemos a primeira aplicação com alta popularidade que utilizou o AJAX, o GMail.

 

O mais interessante é que AJAX não é novo! Já era utilizado por inúmeros desenvolvedores mundo afora, porém, com a criação do acrônimo para referenciá-lo a Javascript, XML e chamadas assíncronas, popularizou-se em poucas semanas; o artigo que “batizou” a “velha” tecnologia não muito difundida foi escrito por Jesse James Garret no site da Adaptive Path (http://www.adaptivepath.com/publications/essays/archives/000385.php), onde me serviu de primeira base de estudos (e onde “colei” as duas figuras sobre o modelo assíncrono e a arquitetura do AJAX).

 

Após a leitura do artigo, me interessei e fui atrás de novas fontes, principalmente com exemplos, e onde eu fiz meu primeiro test-drive foi no catálogo de BluePrints do Java.net (https://bpcatalog.dev.java.net/nonav/ajax/). A partir daí, e até hoje, estou pesquisando mais sobre o assunto aos poucos. A maior e melhor fonte que posso indicar é a wikipedia (http://en.wikipedia.org/wiki/AJAX) com inúmeros artigos, frameworks, exemplos, scripts e histórico sobre o tema.

 

Pessoalmente ainda não utilizo nenhum framework que implemente AJAX, pois normalmente estes são voltados para a camada visual da aplicação, e ainda não tive oportunidade (ou necessidade) de utilizar algo semelhante, porém, acho que um dia eu chegue a utilizar algum; caso se interesse por algum framework, listei alguns que li no início do capítulo 6, vale a pena escolher algum para estudar e usar. Pretendo que meu próximo artigo/tutorial sobre AJAX seja um comparativo entre estes frameworks ou algo semelhante a isto (qualquer idéia, pode entrar em contato comigo J).

 

Durante o tutorial não cheguei a comentar em detalhes os métodos do objeto XMLHttpRequest para que ficasse algo mais direto à prática, já que falei razoavelmente sobre a teoria por detrás; assim, no apêndice a seguir, organizei os principais métodos e suas funções.

 

Apêndice

 

CRIANDO UM OBJETO

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 8:37:00 PM





Artigo - Desmistificando o AJAX – Parte V

Desmistificando o AJAX – Parte V

Raphael Paiva

raphael@sena.com.br

 

Mãos na massa

 

ServletAjax que receberá as requisições das páginas e retornará um XML como resposta

1.import javax.servlet.*;

2.import javax.servlet.http.*;

3.public class ServletAjax extends HttpServlet {

4. protected void service(HttpServletRequest request, HttpServletResponse response)

5.                                                                         throws ServletException, IOException {

6.          String uf = request.getParameter("uf");

7.          String retorno = "<?xml version='1.0' ?><root>";

8.          if(uf.equalsIgnoreCase("CE")){

9.                retorno +=  "<estado>"+

10.                                      "<cidade nome='Caucaia'>"+

11.                                  "<javaneses>15</javaneses>"+

12.                               "</cidade>"+

13.                               "<cidade nome='Fortaleza>"+

14.                                  "<javaneses>400</javaneses>"+

15.                               "</cidade>"+

16.                               "<cidade nome='Sobral'>"+

17.                                  "<javaneses>1</javaneses>"+

18.                               "</cidade>"+

19.                            "</estado>";                                     

20.         }else if(uf.equalsIgnoreCase("PB")){

21.               retorno +=  "<estado>"+

22.                                "<cidade nome='João Pessoa'>"+

23.                             "<javaneses>200</javaneses>"+

24.                           "</cidade>"+

25.                            "</estado>";                                      

26.         }else if(uf.equalsIgnoreCase("PE")){

27.               retorno +=  "<estado>"+

28.                          "<cidade nome='Recife'>"+

29.                              "<javaneses>550</javaneses>"+

30.                          "</cidade>"+

31.                                 "<cidade nome='Olinda'>"+                              32.                                        "<javaneses>30</javaneses>"+

33.                           "</cidade>"+

34.                            "</estado>";

35.         }

36.         retorno += "</root>";

37.         response.setContentType("text/xml;charset=UTF-8");

38.         response.setHeader("Cache-Control", "no-cache");

39.         response.getWriter().write(retorno);

40.   }

41.}

 

O código do SerletAjax acima espera receber como parâmetro (como visto na linha 6) a UF desejada pelo usuário, através dela faz-se uma pequena lógica para retornar o XML resultante.

 

Perceba que a linha 37 é MUITO importante, sem ela, frases com caracteres com acento, por exemplo, não seriam reconhecidas; no nosso caso, João Pessoa iria para o browser como Jo?o Pessoa.

 

Logo abaixo, veremos como ficará a tela do nosso jsp:

 

desmajaxrpfig03.jpg

 

E adiante, o fonte completo da jsp. Note que o javascript, a chamada ao AJAX e o HTML estão na mesma página apenas para fins didáticos:

 

JSP da página de escolha de cidades

1.<html>

2.<head>

3.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

4.<script type="text/JavaScript">

5.var req;

6.var isIE;

7.function initRequest(url) {

8.    if (window.XMLHttpRequest) {

9.        req = new XMLHttpRequest();

10.    } else if (window.ActiveXObject) {

11.        isIE = true;

12.        req = new ActiveXObject("Microsoft.XMLHTTP");

13.    }

14.}

15.function atualizaCidades(uf){

16.   if(uf != ''){

17.      var url = "ajax?uf="+escape(uf);

18.       initRequest(url);

19.       req.onreadystatechange = processRequest;

20.       req.open("GET", url, true);

21.         req.send(null);

22.   }else{

...

Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 8:35:00 PM





Artigo - Desmistificando o AJAX – Parte IV

Desmistificando o AJAX – Parte IV

Raphael Paiva

raphael@sena.com.br

 

Utilizando no dia-a-dia: Um exemplo real

No exemplo anterior, tínhamos a tarefa apenas de enviar um dado ao servidor e retorná-lo ao cliente e conseguimos executá-la com sucesso, ela já serve para algumas implementações simples de pedido de retorno de um dado simples para o usuário, porém, AJAX pode fazer bem mais! Não retornando apenas um dado, mas uma lista destes, podendo inclusive trabalhar com folhas-de-estilo(CSS)  para melhor visualização do usuário.

 

existem uma série de frameworks que trabalham com AJAX, e estes podem ser incorporados a qualquer aplicação web, com a utilização de qualquer framework MVC, ou seja.. não ache que você está preso ao framework ou ao AJAX, você pode adicioná-lo e retirá-lo de onde quiser e quando quiser.

 

Alguns exemplos de framework AJAX do mercado:

 

Framework e APIs de AJAX mais utilizadas na atualidade:

·         DWR - http://getahead.ltd.uk/dwr/

·         AjaxAnywhere - http://ajaxanywhere.sourceforge.net/

·         SaJax - http://www.modernmethod.com/sajax/

·         Rico - http://openrico.org/rico/home.page

·         BackBase - http://www.backbase.com

·         AjaxTags - http://ajaxtags.sourceforge.net/

 

Todos estes frameworks acima são bastante utilizados no mercado mundial, têm grande suporte e uma série de funcionalidades visuais, como drag´n drop de componentes, preenchimento de grids em tempo real, sugestão de escrita(como no google suggest), etc.

 

O exemplo que iremos dar neste tutorial não utilizará de nenhum desses frameworks, iremos implementar o AJAX de forma pura, dessa vez retornando do servidor um XML com todos os valores (ao invés de apenas um texto, como no exemplo anterior) e iremos preencher um uma lista de valores.

 

Requisitos do exemplo

O que iremos implementar para este exemplo é preenchimento de um combobox com uma pequena lista de cidades de acordo com o estado selecionado em outra combo, e após a seleção da cidade, nos será mostrado a quantidade de fãs do Java.

 

Abaixo, a lista de cidades de acordo com o estado:

 

 

Cidade

Nº de Javaneses

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 8:32:00 PM





Artigo - Desmistificando o AJAX – Parte III

Desmistificando o AJAX – Parte III

Raphael Paiva

raphael@sena.com.br

 

Primeiros passos: Explicando um exemplo simples

Como dito no início, o AJAX na verdade se resume a um único objeto javascript chamado XMLHttpRequest, que possibilita chamadas ao servidor sem a necessidade de refresh.

 

Temos duas implementações deste objeto, uma seguida pelo Internet Explorer e outra seguida pelo Mozilla (a maioria dos outros browsers do mercado seguem a implementação do Mozilla) e podemos instanciar da seguinte forma:

 

Criando um objeto XMLHttpRequest

1. function chamaAjax(){

2.     var req;

3.     var isIE;

4.     if (window.XMLHttpRequest) {

5.            req = new XMLHttpRequest();

6.     }else if (window.ActiveXObject) {

7.            isIE = true;

8.            req = new ActiveXObject("Microsoft.XMLHTTP");

9.     }

 

Com o código acima, teremos nossa variável ‘req’ instanciada com um objeto XMLHttpRequest para qualquer browser.

 

OBS: em algumas versões antigas do IE, deve ser instanciado o objeto “Msxml2.XMLHTTP” ao invés de “Microsoft.XMLHTTP”. Um exemplo de código mais detalhado para todos os casos será demonstrado no decorrer do tutorial.

 

Utilizando o XMLHttpRequest para transportar dados para o servidor

10.     var url = "ajax?nome=raphael&tecnologia=java;   

12.     req.onreadystatechange = processRequest;

13.     req.open("GET", url, true);

14.     req.send(null);

15. }

 

O código acima faz a tarefa de passar ao servidor, através do método http GET, os parâmetros para processamento. Após a linha 14 ser executada, a requisição é transmitida.

 

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 8:30:00 PM





Artigo - Desmistificando o AJAX – Parte II

Desmistificando o AJAX – Parte II

Raphael Paiva

raphael@sena.com.br

 

A arquitetura do AJAX

AJAX(Asynchronous Javascript And XML) modifica um pouco a arquitetura das aplicações atuais.

 

Enquanto as aplicações clássicas tinham seqüência de troca de informações totalmente síncrona, AJAX, por default tem uma seqüência assíncrona, porém esta pode ser configurada para ser síncrona como será explicado depois.

 

desmajaxrpfig01.jpg

Figura 1. Comparativo entre a arquitetura clássica e a AJAX

 

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 8:28:00 PM





Artigo - Desmistificando o AJAX – Parte I

Desmistificando o AJAX – Parte I

Raphael Paiva

raphael@sena.com.br

 

O que é AJAX

Antes de explicar o que é AJAX, deve-se explicar o que ele não é; AJAX não é um framework, uma API nem uma tecnologia em si, é uma funcionalidade implementada por um conjunto de objetos de JavaScript, sendo o mais importante chamado XMLHttpRequest.

 

Este objeto, que trata uma requisição ou resposta de servidor com um documento XML DOM, contém uma série de métodos que possibilita que o browser possa realizar requisições e receber respostas do servidor sem que este tenha que atualizar(refresh) a tela.

 

A finalidade do AJAX        

O principal problema resolvido com AJAX é a substituição da conhecida tela escondida ou “hidden frame”, que era implementado como única solução para a realização de uma requisição sem refresh da página principal.

 

Com hidden frame tínhamos vários problemas:

 

Problemas com Hidden Frame:

·         Páginas com vários quadros

·         Quando ocorriam erros na página escondida, estes não eram rastreados com facilidade.

·         Dificuldade de manutenção.

·         O desenvolvedor, ao ver uma já implementada, tinha bastante receio em adicionar ou modificar alguma funcionalidade dela, pois poderiam ocorrer erros em outros locais.

· ...

Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 8:26:00 PM





Artigo - Desenvolvendo sistemas em PalmOS utilizando POO

1

Desenvolvendo sistemas em PalmOS utilizando POO

 

Moacir Alves Pereira
Consultor de Sistemas de Mobilidade da RUNNING

 

Sabemos o quanto é trabalhoso desenvolver sistemas para tecnologia PalmOS, utilizando C++. Quem já não ficou horas e horas tratando de eventos do pequeno conjunto de objetos que compõem uma tela de cadastro e toda gama de API do PalmOS? Foi pensando nisso que esse artigo foi desenvolvido. Nele estarei abordando os primeiros passos para construção de uma simples tela de cadastro utilizando a ferramenta IDE CodeWarrior 9.0 e  tecnologia POO, com o objetivo de gerar uma maior afinidade com as ferramentas em questão. Na próxima edição tratarei de assuntos um pouco mais complexos como a implementação de bancos de dados nessa plataforma de desenvolvimento. Por enquanto vamos nos prender ao básico dessa aplicação, levando em consideração os seguintes tópicos explicativos na seqüência:

·         Iniciando a construção do projeto

·         Desenhando a tela de cadastro

·         Implementando as funcionalidades do cadastro

 

Iniciando a construção do projeto

Vamos iniciar a construção do projeto utilizando o assistente “Object Library for Palm OS Application Wizard”, como ilustrado na figura 1, informando o nome do nosso projeto e, em seguida, clicando no botão OK.

 

mapdspupfig01.jpg

Figura 1

 

Feito isso, o assistente informa o nome do aplicativo que está sendo criado (figura 2). Aceitamos a sugestão e clicamos em “Avançar” nas demais telas até finalizar. Em seguida clique em “Concluir” para que o assistente crie a base da aplicação.

 

mapdspupfig02.jpg

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/06/2008 3:08:00 PM





Artigo - JRuby – Java, Ruby, Eclipse e RDT – Parte V

JRuby – Java, Ruby, Eclipse e RDT – Parte V

 

Instalação e configuração de um ambiente e os primeiros passos para desenvolvimento com JRuby

 

Marcelo Henrique da Silva e Marcos Alberto Lopes da Silva

 

Executando scripts em um arquivo Ruby dentro do código Java através da JSR 2.2.3

Utilizaremos o código da Listagem 5: Chamando arquivos de script Ruby no código Java: TesteRuby2.java, para mostrar como chamar um arquivo Ruby.

 

import javax.script.*;

import java.io.*;

 

public class TesteRuby2 {

 

public void testeScriptArquivo()

{

ScriptEngineManager engineMgr = new ScriptEngineManager();

ScriptEngine engine = engineMgr.getEngineByName("jruby");

InputStream is =

this.getClass().getResourceAsStream("/ruby_arquivo.rb");

try {

Reader reader = new InputStreamReader(is);

engine.eval(reader);

} catch (ScriptException ex) {

ex.printStackTrace();

}

}

public static void main(String args[])

{

TesteRuby2 tr2 = new TesteRuby2();

tr2.testeScriptArquivo();

}

}

Listagem 5. Chamando arquivos de script Ruby no código Java: TesteRuby2.java

 

As linhas InputStream is = this.getClass().getResourceAsStream("/ruby_arquivo.rb") e Reader reader = new InputStreamReader(is) criam um Reader do arquivo de script a ser executado. Este objeto Reader é passado como parâmetro para o método eval da classe ScriptEngine. O procedimento é semelhante ao da Listagem 4: Utilizando scripts Ruby em códigos Java através da JSR 2.2.3, a única diferença é que neste caso o parâmetro passado no método eval não é uma string contendo o script a ser executado, mas sim um arquivo (objeto Reader) a ser lido e executado. Não entrarei em detalhes aqui, mas há várias possibilidades ao utilizar arquivos desta forma. Por exemplo, podemos chamar funções definidas nos arquivos de scripts.

 

Utilizando scripts Ruby em código Java através do Bean Scripting Framework (BSF)

A segunda forma de chamar scripts Ruby dentro de código Java é at

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 2:57:00 PM





Artigo - JRuby – Java, Ruby, Eclipse e RDT – Parte IV

JRuby – Java, Ruby, Eclipse e RDT – Parte IV

 

Instalação e configuração de um ambiente e os primeiros passos para desenvolvimento com JRuby

 

Marcelo Henrique da Silva e Marcos Alberto Lopes da Silva

 

Utilizando classes Java em scripts Ruby

Agora que temos tudo instalado e funcionando vamos explorar um pouco das possibilidades do JRuby. Como mencionado anteriormente, um dos pontos interessantes do JRuby é a possibilidade de utilizar classes Java dentro de scripts Ruby. Nosso primeiro exemplo ilustra esta possibilidade. Para que seja possível a chamada de classes Java a partir do JRuby há duas alternativas descritas a seguir:

 

1 - Configurar o caminho das classes no Classpath ou

2 - Colocar o jar das classes a serem utilizadas na pasta lib dentro do diretório de instalação do JRuby. No nosso exemplo a pasta seria c:\jruby\lib.

 

Utilizaremos a primeira opção para seguir nosso exemplo. No projeto Rails criado anteriormente crie uma nova pasta com nome “java” (conforme ilustrado Erro! Fonte de referência não encontrada.), onde serão salvos nossos pacotes e classes Java.

 

mhsjrubyfig06.jpg

Figura 6. Utilizando classes java

 

Coloque este diretório no Classpath do sistema utilizando o mesmo procedimento para configuração de variáveis citado na instalação do ambiente. Em variáveis de ambiente localize e edite a variável Classpath adicionando o caminho da pasta, que depende do workspace do eclipse que está sendo utilizado no projeto. Por exemplo, em minha máquina configurei o workspace na pasta c:\workspaces\jruby. Então o valor a ser adicionado no classpath seria c:\workspaces\jruby\teste\java. É necessário reinicializar o Eclipse após a configuração do classpath. Para maior facilidade utilizarei um pacote que eu já havia criado anteriormente e que será apenas copiado para a pasta java do projeto. Você pode criar um projeto Java para criar o pacote e a classe Pessoa e depois colar o pacote no projeto do Rails. A estrutura do pacote é mhs.unitri.javapos e possui somente a classe Pessoa conforme descrita na Listagem 2: Classe Java Pessoa: mhs.unitri.javapos.Pessoa.java.

 

package mhs.unitri.javapos;

 

public class Pessoa {

private String nome;

public Pessoa(String nome) { this.nome = nome; }

public Pessoa() { this(“”); }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

}

Listagem 2. Classe Java Pessoa: mhs.unitri.javapos.Pessoa.java

 

Com a classe criada e compilada crie o arquivo Ruby de nome teste_java.rb como descrito na Listagem 3: Chamando Java no JRuby: teste_java.rb

 

require 'java' # instrução para utilizarmos classes java

include_class 'mhs.unitri.javapos.Pessoa' # qual classe queremos utilizar

 

pessoa = Pessoa.new("Fulano de Tal") # instancia um objeto ruby a partir da classe java

puts pessoa.getNome(); # imprime o nome da pessoa

Listagem

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 2:55:00 PM





Artigo - JRuby – Java, Ruby, Eclipse e RDT – Parte III

JRuby – Java, Ruby, Eclipse e RDT – Parte III

 

Instalação e configuração de um ambiente e os primeiros passos para desenvolvimento com JRuby

 

Marcelo Henrique da Silva e Marcos Alberto Lopes da Silva

 

Instalando o plugin RDT (Ruby Development Tools) do Eclipse

Baixe e instale a última versão do eclipse no site http://www.eclipse.org/downloads/. Com o Eclipse instalado vamos agora instalar o plugin RDT. Abra o Eclipse e acesse o menu Help|Software Updates>Find and Install. Selecione a opção “Search for new features to install” e clique em “Next”. Clique em “New Remote Site” e preencha os campos “Name” e “URL” com Ruby Development Tools e http://updatesite.rubypeople.org/release respectivamente. Clique em “Finish” e depois basta ir seguindo as telas para concluir a instalação.

 

Configurando o plugin RDT no Eclipse

Após instalar o plugin RDT é preciso configurá-lo. Acesse o menu Window|Preferences. Localize a opção Ruby>Installed Interpreters e clique em “add”. Na tela que surgir (Add RubyVM) preencha os campos “Name” e “RubyVM home directory” com JRuby e c:\jruby\bin respectivamente. Conforme ilustrado na Figura 4: Configurando o JRuby no Eclipse. Clique em “OK” para salvar as alterações nas telas. Com isso temos o RDT configurado no eclipse. Mas para utilizar os recursos do Rails ainda temos que fazer algumas configurações, pois o RDT ainda não suporta estes recursos.

 

mhsjrubyfig04.jpg

Figura 4. Configurando o JRuby no Eclipse

 

Configurando os scripts do Rails para utilização no Eclipse

Estas configurações estão ligadas ao workspace atual. Se o workspace for alterado será necessário configurar tudo novamente. Para utilizar os scripts do Rails vamos configurar algumas ferramentas externas. No total criaremos 5 configurações:

1 – Gerar Estrutura: Para gerar toda a estrutura do projeto.

2 – Gerar Modelo: Para criar um Modelo.

3 – Gerar Controlador: Para criar um Controlador.

4 – Gerar Scaffold: Para criar automaticamente as funcionalidades de cadastro, remoção, alteração e listagem de itens do banco de dados.

5 – Iniciar WEBrick: Para iniciar o servidor WEBrick

 

Para acesso às configurações, no Eclipse clique em Run|External Tools>External Tools. Na tela que surgir (Create, manage and run configurations) clique em “program”. Para adicionar uma configuração clique no botão “new”.

 

Para criar a configuração 1 siga os passos:

1 – Preencha o campo “Name” com “Gerar Estrutura”.

2 - Na aba “Main” preencha os campos:

2.1 – Location com c:\jruby\bin\jruby.bat

2.2 - Working directory com: ${project_loc}

2.3 - Arguments com: ../${project_name}

3 – Na aba “Refresh” marque a opção “Refresh resources upon completion”.

4 – Na aba Common, localize a área “

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 2:50:00 PM





Artigo - JRuby – Java, Ruby, Eclipse e RDT – Parte II

JRuby – Java, Ruby, Eclipse e RDT – Parte II

 

Instalação e configuração de um ambiente e os primeiros passos para desenvolvimento com JRuby

 

Marcelo Henrique da Silva e Marcos Alberto Lopes da Silva

 

Testando a instalação

Para verificar se as configurações estão corretas, no prompt de comando é só executar os seguintes comandos:

·         Para testar a configuração do Java: javac –version

·         Para testar a configuração do JRuby: jruby –v

 

Cada comando deve exibir informações sobre a versão instalada do Java e do JRuby respectivamente. Caso isto não aconteça, revise os procedimentos de instalação e configuração descritos anteriormente. Lembrando que se você já estava com o prompt aberto antes de configurar as variáveis de ambiente é necessário fechá-lo e abri-lo novamente.

 

Vamos demonstrar o funcionamento do JRuby criando um script Ruby bem simples que demonstra uma de suas principais características: tudo em Ruby é um objeto. O script (teste_instalacao.rb) possui apenas duas linhas, como pode ser visto abaixo:

 

variavel_inteira = 10

puts variavel_inteira.methods

 

A primeira linha apenas atribui o valor inteiro “10 na variável “variavel_inteira”. A segunda linha utiliza o método puts para imprimir o resultado da chamada ao método “methods” do objeto inteiro referenciado pela variável “variavel_inteira”. Neste exemplo o método “methods” retorna todos os métodos da classe int. Pode parecer estranho quando comparado a outras linguagens, em que int é um tipo primitivo, mas em Ruby tudo é objeto.

 

Para executar o script, na pasta onde ele foi salvo, basta executar o comando jruby teste_instalacao.rb. A Figura 1: Tudo em Ruby é objeto, mostra o exemplo de execução pelo JRuby do script teste_instacao.rb (considerando que este tenha sido salvo na pasta c:\teste_jruby). A mesma figura mostra uma parte do resultado gerado pelo script, ou seja, alguns dos métodos da classe int tais como id2name, abs, etc.

 

mhsjrubyfig01.jpg

Figura 1. Tudo em Ruby é objeto

 

Instalando o JRuby on Rails

A instalação do JRuby on Rails é semelhante à instalação do Rails para Ruby. Utilizaremos o RubyGem para realizar esta tarefa. RubyGem é uma ferramenta que já vem junto com o pacote do Ruby/JRuby para instalação e atualização de bibliotecas. É algo semelhante ao apt-get do Kurumin. O comando utiliza a conexão de internet para buscar e instalar os componentes. Para instalar o Rails, basta executar o comando a seguir:

 

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 2:48:00 PM





Artigo - JRuby – Java, Ruby, Eclipse e RDT – Parte I

JRuby – Java, Ruby, Eclipse e RDT – Parte I

 

Instalação e configuração de um ambiente e os primeiros passos para desenvolvimento com JRuby

 

Marcelo Henrique da Silva e Marcos Alberto Lopes da Silva

 

Seria impossível falar de JRuby sem antes falar de Ruby. Para quem nunca ouviu falar, Ruby é uma linguagem de script 100% orientada a objetos criada por Yukihiro Matsumoto baseada em Perl, Smalltalk, Eiffel, Ada e Lisp. Desde o lançamento de sua versão para o público em 1995 seu uso e popularidade vêm aumentando devido a sua simplicidade, elegância e praticidade tudo isso resultando em produtividade.

 

Diferentemente de outras linguagens, Ruby foi projetada com foco nas necessidades de pessoas e não de máquinas. Com isso é possível que o programador tenha produtividade e diversão (isso mesmo, diversão!) seguindo o princípio da menor surpresa (principle of least surprise - POLS). Segundo tal princípio, é comum que mesmo programadores experientes fiquem surpresos com o comportamento dos programas que eles escrevem enquanto isso não deveria acontecer. Por exemplo, quem já programou em C e já se viu controlando ponteiros alguma vez, sabe do que se trata. O programa aparentemente está certo, mas não se encontra o erro. Outro exemplo é quando um código é escrito hoje e daqui a 3 meses é necessária alguma manutenção que se torna difícil devido à sua complexidade e dos detalhes de implementação. Ruby segue a filosofia POLS para que o programador consiga fazer facilmente o que tem em mente sem ter que fazer malabarismos.

 

Hoje em dia, por melhor que a linguagem seja é necessária a utilização de ferramentas para simplificar as tarefas rotineiras de desenvolvimento. Pensando nisso, em julho de 2004 foi lançado o Rails, mais conhecido como Ruby on Rails (RoR). Este é um framework para desenvolvimento de aplicações web que tem como princípios o reuso de código e convenções ao invés de configurações. O Rails também tem sua versão de implementação em Java, o JRuby on Rails.

 

Finalmente, agora podemos falar sobre o JRuby, que nada mais é do que a implementação totalmente em Java da linguagem Ruby para rodar na JVM. Ele foi desenvolvido para permitir que scripts em Ruby possam ser codificados em qualquer aplicação Java. O interessante é que qualquer classe Java também pode ser utilizada através do JRuby. Essa integração permite a utilização do que há de melhor nestes dois ambientes.

 

Mas nem tudo é perfeito. Na atual versão do JRuby, é nítida a diferença de tempo entre um script ruby executado diretamente em um ambiente Ruby do que o mesmo script executado no ambiente JRuby. No JRuby leva-se mais tempo para rodar o script. No decorrer deste artigo é possível notar que alguns comando levam um certo tempo para terminar. Mas a previsão da equipe que desenvolve o JRuby é que em breve os scripts serão executados mais rapidamente do que no próprio ambiente Ruby.

 

Pré-requisitos

Para utilizar o JRuby é necessário ter instalado o JDK 1.4 ou superior. No entanto, alguns exemplos de utilização do JRuby disponíveis na internet só rodam com o JDK 6. Ou seja, para garantir que não haja problemas com relação a versões de JDK é melhor ter instalado o JDK 6 para utilizar o JRuby.

 

Instalação e configuração do ambiente

Vamos instalar e configurar o ambiente para desenvolvimento JRuby<

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 2:45:00 PM





Artigo - jBPM - Sincronização entre Processos e Aplicativos – Parte IV

jBPM - Sincronização entre Processos e Aplicativos – Parte IV

 

Crie e modifique aplicações a partir dos diagramas de processos de negócios da empresa utilizando um framework Java

 

Cristiano Terra Palazzo

 

Estudo de caso

Neste nosso estudo de caso, foi elaborada uma aplicação na qual um usuário preenche uma requisição de produto, informando o que deseja e para quando.

 

No segundo passo do processo, outro usuário poderá solicitar mais informações da solicitação (caso não tenha tido clareza no pedido) e desta forma o primeiro usuário precisará completar o pedido. Depois de compreendido o pedido, o próximo passo será a aceitação ou recusa do pedido. Para a primeira opção será informada a data da entrega e para a segunda opção será informado o motivo da recusa.

 

Diagrama de fluxo de processo

 

cpjbpmcmfig12.jpg

Figura 12. Diagrama do Estudo de Caso

 

Implementação

Apresentarei como serão preenchidas as configurações de dois objetos, o objeto Pedidos (um estado de início) e o objeto Conferência (uma tarefa).

 

Pedidos:

Acesse a aba Outline. Clique com o botão direito sobre o icone do Pedidos e escolha a opção Add Task. Agora acesses as propriedades da tarefa que foi criada.

 

Na tela “Properties for task” que surge, no item General informe o nome da tarefa (Preencher Requerimento). No item Assignment escolha uma Swimlane selecione a swimlane que foi criada para o projeto. Veja no XML listado abaixo a Etapa 1.

 

No item Controller deverão ser criados os campos que serão preenchidos pelo usuário nesta tarefa. No nosso exemplo criaremos os campos Descrição e Data para Entrega (ambos do tipo read e write, sendo a Descrição também do tipo required). Finalize clicando no botão OK.

 

Agora configuraremos o nó Conferência. Na aba Outline localize o objeto, clique novamente com o botão direito sobre ele e escolha a opção Add Task. Acesse a propriedade desta tarefa e preencha o General com o nome da tarefa (Vefiricar Pedido), o Assignment com a mesma Swimlane do Pedidos e no Controller crie os mesmos campos (Descrição e Data para Entrega) do objeto Pedidos, porém marque apenas as opções read e write. Os campos dever ser escritos com os mesmos nomes. Isto fará com que o que for preenchido na tarefa anterior seja exibido nesta, e não poderá ser alterado. Veja no XML listado abaixo a Etapa 2.

 

Como as transições já estão desenhadas, não é necessário fazer nenhuma configuração adicional.

 

Na Figura 13 podemos ver como a tarefa de início (Pedidos) será exibida. Como a tarefa segue para apenas outra, o botão para conclusão é o “Save and Close Task”.

 

cpjbpmcmfig13.jpg

Figura 13. Tarefa de início (Pedidos)

 

E abaixo (Figura 14) temos a imagem da tarefa Conferência. Como o usuário terá a opção de pedir mais informações sobre o pedido, ou encaminhá-lo para aprovação, nesta tarefa tem dois botões: “Solicitar Complemento” ou “Solicitar Aprovação”.

 

cpjbpmcmfig14.jpg

Figura 14. Tarefa Conferência

 

Segue abaixo o código XML gerado pelo framework, a partir do diagrama desenhado acima. O xml é bidirecionalmente sincronizado com o diagrama (ao fazer alteração em um deles instantaneamente a mudança é refletida no outro).

 

Listagem 1. XML da definição de processos

<?xml version="1.0" encoding="UTF-8"?>

<process-definition

xmlns="urn:jbpm.org:jpdl-3.1" name="Requisicoes">

<swimlane name="Inicio">

<assignment expression=""></assignment>

</swimlane>

<start-state name="Pedidos">

<task name="Preencher requerimento" swimlane="Inicio">

<controller>

<variable name="Descrição" access="read,write,required"></variable>

<variable name="Data para entrega"></variable>

</controller>

</task>

<transition name="Conferir" to="Conferência">

</transition>

</start-state>

<task-node name="Conferência">

<task name="Verificar Pedido" swimlane="Inicio">

<controller>

<variable name="Descrição" access="read"></variable>

<variable name="Data para entrega" access="read"></variable>

</controller>

</task>

<transition name="Solicitar Aprovação" to=

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 10:55:00 AM





Artigo - jBPM - Sincronização entre Processos e Aplicativos – Parte III

jBPM - Sincronização entre Processos e Aplicativos – Parte III

 

Crie e modifique aplicações a partir dos diagramas de processos de negócios da empresa utilizando um framework Java

 

Cristiano Terra Palazzo

 

jBPM

 

O que é?

O jBPM é um framework da JBoss que permite a criação de soluções empresariais baseados em processos de negócio usando notações gráficas e programação orientada a grafos. É uma engine de Workflow e BPM.

 

As empresas podem criar e automatizar os processos de negócios que coordena entre pessoas, aplicações e serviços. O jBPM reduz o tempo de desenvolvimento para automatizar e integrar os processos de negócio.

 

Permite representar os diagramas de um BPM e relacioná-los com um sistema automatizado com os referidos processos, fazendo com que o sistema reflita completamente o fluxo que foi desenhado no diagrama, possibilitando que o aplicativo seja alterado a partir de mudanças no próprio diagrama.

 

Download e instalação

O download do framework pode ser realizado no site labs.jboss.com/jbossjbpm/downloads. Para a realização dos testes deste arquivo foi utilizada a jBoss JBPM jPDL Suite (jbpm-starters-kit-3.1.3) que contém a jBoss JBPM jPDL juntamente com o framework gráfico para desenho dos processos.

 

A instalação é simples, bastando descompactar o arquivo em algum local do disco rígido do computador. Porém, não pode esquecer-se de configurar a variável do sistema JBPM_HOME.

 

Principais artefatos iniciais

Os objetos e artefatos do jBPM não

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 10:53:00 AM





Artigo - jBPM - Sincronização entre Processos e Aplicativos – Parte II

jBPM - Sincronização entre Processos e Aplicativos – Parte II

 

Crie e modifique aplicações a partir dos diagramas de processos de negócios da empresa utilizando um framework Java

 

Cristiano Terra Palazzo

 

Adotando BPM

As organizações começam frequentemente um projeto ou programa de BPM com o objetivo de otimizar uma área que foi identificada como uma área para a melhoria. A prática atual é começar mapeando um processo de negócio (ou modelagem do processo de negócio) usando uma técnica/notação tal como BPMN.

 

BPMN

A BPMN (Business Process Modeling Notation) é uma notação gráfica padronizada para desenhar processos de negócios em um workflow. Foi desenvolvida pelo BPMI (Business Process Management Initiative) e agora está sendo mantido pelo Object Management Group (OMG) desde que as duas organizações se uniram em 2005.

 

A modelagem na BPMN é feita por diagramas simples com um pequeno conjunto de elementos gráficos. Torna simples para os usuários de negócios e para os desenvolvedores entenderem o fluxo e o processo. As quatro categorias de elementos básicos são:

 

Objetos de fluxo:

·         Evento (Event): é representado com um círculo e é algo que acontece. Pode ser inicial (Start), intermediário (Intermediate) ou final (End). O elemento é uma trigger ou um resultado.

 

cpjbpmcmfig01.jpg

Figura 1. Eventos

 

·         Atividade (Activitie): é representada por um retângulo com bordas arredondadas e nos mostra o tipo de trabalho que deve ser feito. Pode ser uma tarefa ou um sub-processo. Um sub-processo também tem um sinal de adição (+) na última linha do retângulo.

 

cpjbpmcmfig02.jpg

Figura 2. Atividades

 

·         Passage

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 10:50:00 AM





Artigo - jBPM - Sincronização entre Processos e Aplicativos – Parte I

jBPM - Sincronização entre Processos e Aplicativos – Parte I

 

Crie e modifique aplicações a partir dos diagramas de processos de negócios da empresa utilizando um framework Java

 

Cristiano Terra Palazzo


Business Process Management

O Business Process Management, ou simplesmente BPM, é uma área do conhecimento que une a gestão de negócios com tecnologia da informação. Pode ser livremente traduzido como Gerenciamento de Processos do Negócio.

 

O BPM foi criado com o objetivo de melhorar os processos de negócio das organizações utilizando métodos, técnicas e ferramentas que permitam modelar, publicar, controlar e analisar os processos operacionais onde há o envolvimento de seres humanos, de sistemas automatizados, documentos e outras fontes de informação.

 

Atividades do BPM

As atividades que constituem o BPM podem ser divididas em três grupos: modelagem, execução e monitoramento.

 

a) Modelagem

O processo de modelagem é o levantamento e análise dos processos existentes bem como a simulação de novos processos que possam vir a existir.

 

Os softwares utilizados para esta tarefa incluem editores gráficos que documentam os processos, repositórios que armazenam os modelos de processos e ferramentas para simulação de processos de negócios para executar um processo por um grande número de vezes para poder mensurar parâmetros de desempenho como tempo médio e custo.

 

Uma boa modelagem reduz o número de problemas durante o ciclo de vida de u

"> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 10:45:00 AM





Artigo - NetBeans 6.0 – Swing Application Framework – Parte II

NetBeans 6.0 – Swing Application Framework – Parte II

 

Crie aplicações desktop Java em poucos minutos usando o novo Swing Aplication Framework com o Netbeans 6.0

 

Antonio Peixoto da Cunha Junior e Marcos Alberto Lopes da Silva

 

Por trás dos bastidores

O Netbeans 6.0 utiliza JPA (Java Persistence API) que é a especificação padrão para o gerenciamento de persistência e mapeamento objeto relacional, que vem para e simplificar o desenvolvimento de aplicações que utilizam persistência de dados. Um dos principais conceitos relacionados à API JPA é o de entidade. É bom lembrar que, uma entidade corresponde a um objeto que pode ser gravado na base de dados a partir de um mecanismo de persistência. O Netbeans 6.0 gera um arquivo “Persistence.xml”, responsável por fazer a conexão com o banco, criando  assim uma camada de abstração entre o JDBC e o código. O uso dessa solução é bastante recomendada devido a sua estabilidade, boa documentação e facilidade de uso.  

 

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

  <persistence-unit name="samplePU" transaction-type="RESOURCE_LOCAL">

    <provider>oracle.toplink.essentials.PersistenceProvider</provider>

    <class>ppessoa.Pessoa</class>

    <properties>

      <property name="toplink.jdbc.url" value="jdbc:derby://localhost:1527/sample"/>

      <property name="toplink.jdbc.user" value="app"/>

      <property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>

      <property name="toplink.jdbc.password" value="app"/>

    </properties>

  </persistence-unit>

</persistence>

Listagem 2. Arquivo XML gerado no Netbeans 6.0

 

Nesta aplicação o framework gera uma classe persistente  “Pessoa.java”. Tal persistência permite que um objeto continue a existir mesmo após a destruição do processo que o criou. Na verdade, o que continua a existir é seu estado, já que pode ser armazenado em disco. Além disso, são geradas várias Queries de consultas.

 

@Entity

@Table(name = "PESSOA")

@NamedQueries( {@NamedQuery(name = "Pessoa.findByCodigo", query = "SELECT p FROM Pessoa p WHERE p.codigo = :codigo"),

@NamedQuery(name = "Pessoa.findByNome", query = "SELECT p FROM Pessoa p WHERE p.nome = :nome"),

@NamedQuery(name = "Pessoa.findByDataNascimento", query = "SELECT p FROM Pessoa p WHERE p.dataNascimento = :dataNascimento"),

@NamedQuery(name = "Pessoa.findBySexo", query = "SELECT p FROM Pessoa p WHERE p.sexo = :sexo")})

public class Pessoa implements Serializable {

    @Transient

    <"> ...

Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 12:13:00 AM





Artigo - NetBeans 6.0 – Swing Application Framework – Parte I

NetBeans 6.0 – Swing  Application Framework – Parte I

 

Crie aplicações desktop Java em poucos minutos usando o novo Swing Aplication Framework com o Netbeans 6.0

 

Antonio Peixoto da Cunha Junior e Marcos Alberto Lopes da Silva

 

Tradicionalmente um dos maiores entraves para se desenvolver aplicações JAVA com vínculo a banco de dados é sem dúvida o tempo gasto. Para se criar formulários e fazer conexões com bancos é necessário criar códigos e alterá-los sempre que precisar alterar alguma tabela no banco. Todo este processo pode gerar insatisfação quanto ao uso da ferramenta propriamente dita, bem como este tempo gasto poderia estar sendo utilizado para outros fins. Além disso, é necessário que o desenvolvedor esteja familiarizado com a utilização de plugins.

 

Em face destes “obstáculos” é que se propõe a utilização de uma ferramenta que facilite a vida do desenvolvedor proporcionando maior rapidez e conforto quanto ao desenvolvimento de aplicações desktop Java. O novo SWING APLICATION FRAMEWORK com o NETBEANS 6.0 surge como alternativa para evitar esta perda de tempo.

 

Configurando o ambiente

O NetBeans é uma IDE, ou seja, é um ambiente integrado de desenvolvimento que possibilita ao programador criar programas utilizando recursos gráficos.

 

Para utilizar o Netbeans é necessário já ter instalado o Java JDK na máquina, preferencialmente uma versão igual ou superior a J2SDK 5.0.

 

Para instalar o JDK basta acessar o seguinte endereço: http://java.sun.com/, escolher a versão desejada e fazer o download.

 

O Netbeans 6.0 pode ser baixado do endereço: www.netbeans.org, onde pode-se optar por três versões: Basic, Standard e Full. Para a confecção deste artigo está sendo usada a versão Standard, visto que esta já vem com um Banco (Derby) integrado. Porém a ferramenta suporta qualquer banco, bastando ao programador fornecer o driver do banco com o qual se deseja trabalhar.

 

O Swing Aplication Framework vem como uma ferramenta integrada ao NetBeans 6.0, e é especificado pela JSR 296 (Java Specification Request), prevista para ser integrada a próxima versão do Java (Java 7 Dolphin).

 

Criando uma aplicação Java com acesso a Banco de Dados

Ao iniciar o Netbeans 6.0 o primeiro passo é escolher o banco com o qual se deseja trabalhar. A ferramenta já vem com um banco integrado (Der"> ...

Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/04/2008 12:11:00 AM





Artigo - Android, a nova plataforma móvel – Parte V

Android, a nova plataforma móvel – Parte V

 

Google lança a plataforma que pretende acabar com a segmentação no mundo móvel

 

Neto Marin (netomarin@gmail.com) Formado em Análise de Sistemas na PUC-Campinas, trabalha com Java desde 2002 (programador certificado desde 2006) e com Java ME desde 2005, se especializou no desenvolvimento de aplicações móveis. Responsável pela pesquisa e criação de produtos na área de mobilidade. Mantém blog na Mobile and Embedded Community e foi palestrante sobre Java ME no JustJava 2007.

 

Editando o código

O próprio plugin criou automaticamente a classe HelloAndroid no pacote que foi indicado. É preciso então alterar o código para que seja exibida uma mensagem na tela do “dispositivo”. A listagem 1 mostra como o código dessa classe deve ficar:

 

1 public class HelloAndroid extends Activity {

2 /** Called when the activity is first created. */

3   @Override

4   public void onCreate(Bundle icicle) {

5     super.onCreate(icicle);

6     TextView tv = new TextView(this);

7     tv.setText("Hello Android @ JavaMagazine!");

8     setContentView(tv);

9   }

10} ...

Exibição do post interrompida. Para ler conteúdo completo, clique aqui
31/03/2008 9:40:00 PM





 


Eduardo Oliveira Spínola (eduspinola@gmail.com - http://eduspinola.googlepages.com/home) é Bacharel em Ciência da Computação pela Universidade Salvador - UNIFACS, em 2005. Atualmente fazendo o Mestrado em Engenharia de Software pela Universidade Salvador - Unifacs. Tendo como experiência: desenvolvimento de sistemas web na plataforma Java EE, e desenvolvimento de sistemas na plataforma Java SE.
Arquivo de atualizações
 2010
 2008
 2007
 2006
 2005

Estatísticas do Autor:
Número de posts: 337
Total de visualizações: 1818699
Características dos posts deste autor:
Conteúdo:
Didática:
Utilidade:
218 59
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
2010 - Todos os Direitos Reservados a DevMedia Group