Mostrando postagens com marcador JAVA. Mostrar todas as postagens
Mostrando postagens com marcador JAVA. Mostrar todas as postagens

segunda-feira, 12 de novembro de 2007

Granite DS + Adobe Flex Builder

eis a grande questão... comecei semana passada a estudar o uso do Granite DS que me possibilita o uso do protocolo AMF3 para comunicação entre Client & Server...

* a problemática: legal, peguei os exemplos do Granite DS, os .war neles contidos, coloquei no Tomcat e funcionou... dai me veio a questão... como faço para usar isso em um projeto usando o Flex Builder?

* o que usei? segue o que usei nesse meu teste:
- Java 1.5
- Eclipse 3.2 + WTP 2.0 + Adobe Flex Builder Plugin
- Tomcat 5.5.20
- OC4J 10.1.3.20 (servidor de app da Oracle usado como servidor de teste de deploy do projeto)
- graniteds-pojo-0.4.0 (como base para o projeto server side)

* criando projeto para o server side da aplicação
- criar um projeto no Eclipse Dynamic Web Project
- criei um diretório para o projeto com o nome GranitePojoFlex
- após criado o projeto no diretório de nome definido
- copiar os arquivos do graniteds-pojo-0.4.0 para o projeto
> web.xml, códigos, diretórios do WEB-INF
- criei um diretório no /WebContent para o projeto Client Side - Adobe Flex, com nome de flex
- defini nas propriedades do projeto, no item: Web Project Settings, o Context Root para: granitepojoflex

* criando o projeto client side
- criei o projeto no diretório flex citado anteriormente
- o mxml do graniteds-pojo-0.4.0, copiei o conteúdo desse para o arquivo main.xml
- copiei o arquivo /WEB-INF/flex/services-config.xml, para o raíz do projeto
- editei esse arquivo services-config.xml

de:

    <channels>
        <channel-definition id="my-graniteamf" class="mx.messaging.channels.AMFChannel">
            <endpoint
                uri="http://{server.name}:{server.port}/{context.root}/graniteamf/amf"
                class="flex.messaging.endpoints.AMFEndpoint"/>
        </channel-definition>
    </channels>


para:

    <channels>
        <channel-definition id="my-graniteamf" class="mx.messaging.channels.AMFChannel">
            <endpoint
                uri="http://{server.name}:{server.port}/granitepojoflex/graniteamf/amf"
                class="flex.messaging.endpoints.AMFEndpoint"/>
        </channel-definition>
    </channels>


- feito isso é hora de adicionar esse arquivo nos parametros de compilação do projeto, indo nas propriedades, em Flex Compiler, onde adicionei o seguinte: -services "services-config.xml", com isto ira dizer onde está nossos dados...
- ainda é necessário configurar um outro detalhe nas propriedades do projeto, no item Flex Build Path, o item: Output folder URL, para dizer onde executar a aplicação em Flex... e como nesse caso estamos utilizando o tomcat o valor para esse item será: http://localhost:8080/granitepojoflex/flex/bin, o como esse projeto do Flex está dentro do /WebConten/Flex do projeto Server Side, justifica o porque dessa URL

* hora de executar
- primeiro colocar o projeto server side para executar, como não tem nenhum JSP, não irá aparecer nada quando o servidor e a aplicação estiver rodando
- agora hora de executar o projeto Flex, só mandar executar nosso main.mxml...
- lembrando que foi configurado a URL, você irá observar que estará executando em um endereço URL no seu browser

e eis um projeto em Flex Builder + Granite

* fazendo um deploy em um servidor para testar
no caso usei o OC4J, mas antes...
- no projeto Server Side, clique com o botão direito e vá em exportar WAR...
- para facilitar exporte para o Desktop por exemplo
- no OC4J, na parte de administração eu selecionei esse .war gerado e realizei o deploy...
- após iniciado a aplicação eu usei a seguinte URL para acessar e testar: http://localhost:8888/granitepojoflex/flex/bin/main.html, a porta é 8888, pois essa é a padrão do OC4J

segue o projeto Zipado: [link]

Obs.: esse projeto usa a versão modificada do Granite DS, falado nesse [post]

terça-feira, 6 de novembro de 2007

Java : ordenando uma coleção|lista de objetos, costumizado

algo bem útil, que as vezes quebra um galho quando estamos trabalhando com coleções e listas... as vezes precisamos ordenar, mas como fazer para ordenar uma coleção de objetos complexos?

para isso segue o seguinte:

considerando que temos uma classe específica em nosso projeto, para o exemplo, vou me basear nessa abaixo:

public class MyObj {
  
  private int myValue;
  priate String desc;
  
  public MyObj() {}
  
  public void setMyValueint value ) { this.myValue = value; }
  public int getMyValue() { return this.myValue; }

  public void setDescString newDesc ) { this.desc = newDesc; }
  public String getDesc() { return this.desc; }
    
}


para esta classe, defini uma classe de comparação, especifica para esta classe:

import java.util.Comparator;

public class MyObjComparator implements Comparator {
    
    public int compare(Object o1, Object o2) {
        MyObj ob1 = (MyObj)o1;
        MyObj ob2 = (MyObj)o2;
        ifob1.getMyValue() == ob2.getMyValue() ) {
            return 0;    
        else ifob1.getMyValue() < ob2.getMyValue() ) {
            return -1;
        else ifob1.getMyValue() > ob2.getMyValue() ) {
            return 1;
        }
        return 0;
    }    
}


considerando que tenho uma coleção|lista de objetos da minha classe definida, anteriormente:

List myObjList...

para ordenar, utilize um código como esse, que irá utilizar a classe de comparação:

Collections.sortmyObjList, new MyObjComparator() );

com isso resolve o problema, relacionado a ordenar uma coleção|lista de objetos complexos (definidos no teu projeto)

quinta-feira, 25 de outubro de 2007

Usando o Adobe Flex para colaboração em tempo real com Derek DeMoro

realmente um assunto muito interessante e altamente aplicavel para aplicações que precisam de uma interação maior entre os seus usuários (em inglês)


Fonte : James Ward Blog

quarta-feira, 24 de outubro de 2007

JMonkey Engine 1.0


após um longo tempo e muito trabalho, o time de desenvolvimento liberou dia 22/10/2007 a versão 1.0, dessa engine para desenvolvimento de games em Java.

jMonkeyEngine | download | imagens | demos e testes

Fonte : Javalobby

segunda-feira, 22 de outubro de 2007

Struts 1 : resetando um DynaForm

sinceramente algo dramático em utilizar o Struts 1 e seus Forms, é quando utilizamos o DynaForm, por um lado muito legal até, mas na hora de resetar o form... é um baile...

bom segue uma dica para você resetar esse tipo de form no Struts 1, tente:

DynaValidatorForm dynaForm = (DynaValidatorForm) form;
dynaForm.getMap().clear();

pelo menos aqui, esse código me resolveu os problemas e resetou o formulário =D

fica a dica ;)

terça-feira, 16 de outubro de 2007

Java : Problema : Log4j + Tomcat

hoje de manha passei por um problema, usando o Tomcat, tinha uma aplicação que de jeito nenhum era realizado o deploy, então fui ler os logs do tomcat e eis que a descrição apresentada era de um problema relacionado a Cast de classes do org.apache.common.logging com a respectiva classe do log4j, então vou eu verificar, eis que no servidor tinha o jar do org.apache.common.logging e no /lib da minha aplicação estava o jar do log4j, a principio deveria funcionar...

como escrevi deveria, mas devido o fato do jar do common.logging estar no /common/lib do tomcat, a aplicação não era disponibilizada no servidor...

solução: retirar o jar do org.apache.common.logging do /common/lib do Tomcat, com isso resolver...

um conselho: tome cuidado com os jar's colocados no /common/lib do Tomcat, alguns podem gerar conflitos como este relatado..., por mais que pareça redundante é mais seguro que os jar's utilizados pela sua aplicação estejam alocados no /lib da sua aplicação em si

fica a dica

Tutorial : JDJ : Adobe Flex & Java

Uma aplicação completa com comunicação RPC entre Adoble Flex e Java

Aos interessados que estão trabalhando com Adobe Flex e Java, eis mais um meio/maneira de integrar o Java com o Adobe Flex, usando como base o JMS : [link]

outro tutorial muito interessante que tem por lá, de integração entre Adobe Flex e Java é o :

Aplicações de Internet Rica com Adobe Flex e Java : Flash + POJO = RIAs

detalhe legal quanto a este turorial, o fonte está disponível ao final : [link]

---

outras publicações sobre Flex podem ser encontradas nesse [link], o pessoal criou um FDJ - Flex Developer's Journal, um meio interessante para manter-se informado sobre Flex =]

Eclipse Rich Ajax Plataform (RAP)

está ae um projeto muito interessante em desenvolvimento no Eclipse, disponível e compatível para o Eclipse Europa (3.3.x), onde te possibilita gerar aplicações Ricas em AJAX a partir de um suporte prévio no Eclipse, desconfio que o pessoal da AlphaWorks IBM estejam usando ele para gerar a versão Online do Eclipse (embora tenha muito pouca informação a respeito, por enquanto), mas que essa plataforma para o RAP para o Eclipse apresenta um potencial interessante de uso, isso é verdade, mas por hora o jeito é acompanhar o projeto e ir vendo o que vai acontecer em seguida...

caso tenha interesse no projeto RAP, de uma olhada nesse [link], onde tem 2 screencast's do Eclipse RAP

Fonte : DZone

Tutorial : Simplifique suas configurações no Java

Existem muitas maneiras de configurar as aplicações Java, podemos utilizar aquivos properties, xml, base de dados, ou mesmo linhas de comando. Cada um desses oferecem suas próprias vantagens... mas normalmente temos para cada tipo de configuração um suporte totalmente distinto para acessar os dados, não seria legal uma API unificada para simplificar o uso desses? bom se você gostou da idéia, tem como fazer isso =]

conhece o : org.apache.commons.configuration? não? bom, essa API te possibilita isso ;)

no Java Boutique, disponibilizaram um tutorial (em inglês) de como utilizar essa API, recomendo a leitura : [link]

Fonte : DZone

quinta-feira, 11 de outubro de 2007

Rumor : Java Phone : Sun Microsystems e a Samsung podem estar desenvolvendo uma alternativa ao iPhone mais barata


Tem um boato na internet de que a Sun Microsystems e a Samsung se unirão para desenvolver um "Java Phone", um celular mais barato e com mais recursos que o iPhone da Apple. Por hora detalhes sobre o assunto são mínimos, mas segundo uma pessoa da Samsung, ambas as empresas estão negociando algo relacionado ao assunto, mas os detalhes dessa negociação não foram divulgadas ao público.

Boatos são boatos, mas se for verdade, como trata-se de Java as possibilidades de aplicativos serão muito maiores que as do iPhone, mas provavel que a interface acabe seguindo o genero usado no iPhone, que foi muito bem aceito no mercado... Agora eis a questão será que neste aparelho irão utilizar também o JavaFX? fica a questão em aberto...

Fonte : Gizmodo

quarta-feira, 10 de outubro de 2007

Java Game : Game Caper

jogo desenvolvido por um brasileiro, que também frequenta o forum do GUJ...


ps.: o código fonte do projeto também está disponível

- Projeto no SourceForge : [link]
- Post no forum do GUJ : [link]

Java Game : PulpCore : framework de animação 2D

PulpCore - para quem está interessado na área de desenvolvimento de games em java, vai a dica, este framework é bem interessante e serve como uma engine, para animações em 2D, vi um game desenvolvido com este framework, mais especificamente uma applet e pela qualidade e resultado final, não deixou em nada a desejar para um game desenvolvido em Flash, tempo de load, ao meu ver muito rápido.

veja também:
- Pulp Games
- Interactive Pulp
- PulpCore

Tutorial : desenvolvimento de jogos em java


finalmente depois de um bom tempo, encontrei novamente o link de um site que tem um tutorial bem interessante e útil para programação de jogos em Java, serve como um bom material de orientação inicial para desenvolver games em Java...

Site : [link] (em inglês, alemão ou russo)

---

vejam também :
- livro : Developing Games in Java
- coleção de links sobre o assunto : Game / Multimedia Programming
- GameDev.net : Java : [link]

terça-feira, 9 de outubro de 2007

Adobe Flex 2.0 , trabalhando em conjunto do Spring e Hibernate

aos interessados e vai a dica, hoje vi um link bem interessante de uma palestra de um funcionário da Adobe falando sobre o Adobe Flex e como utiliza-lo em conjunto do Spring e Hibernate

segue o [link] da palestra (em inglês, video + slides)
veja também o post do blog de Christophe Coenraets, falando sobre este assunto : [link]

Fonte : DZone

segunda-feira, 8 de outubro de 2007

Dica : tutorial : compreendendo o mapeamento inverso do Hiberante

um tutorial muito interessante disponível na internet, que tentar explicar o conceito do uso do mapemanto inverso no Hibernate : inverse="false" | inverse="true"

O atributo inverse define qual dos lados da associação terá a responsabilidade pela manutenção dos dados. O lado que tiver o valor : inverse="false" que é o valor padrão, tem esta responsabilidade (e irá criar a query SQL apropriada - inserção, atualização ou remoção ). As mudanças na associação feitas pelo lado que está com o atributo : inverse="true", não são persistidas no DB.

para maiores informações leia o tutorial : [link] (em inglês)

Fonte : DZone

sexta-feira, 5 de outubro de 2007

Adobe Flex enviando parametros para a aplicação web em Java

eis um grande problema quando estamos utilizando o Adobe Flex, como enviar de modo que funcione parametros para nossa aplicação java, segue uma dica de como fazer para enviar os parametro de forma que funcione para aplicações que utilizam o Struts 2 ou o Mentawai na aplicação que roda no servidor (pelo menos nos testes que eu fiz funcionou...)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  
  <mx:Script>
    <![CDATA[
      
      import mx.controls.Alert;
      import mx.rpc.events.ResultEvent;
      import mx.rpc.events.FaultEvent;
      import mx.utils.ObjectUtil;
      import mx.rpc.http.HTTPService;
      
       public function getLoginParameters():Object {
              return {
                "user.login": loginField.text, 
                "user.password" : passwordField.text 
              };
            }
      
      public function enviarDados()void {                          
        userRequest.sendthis.getLoginParameters() );          
      }
      
        public function onSuccess(event:ResultEvent):void {
    
        Alert.showXML(event.result) );
    
        //cria String baseado no resultado
        var rawData:String = String(event.result);
        
        Alert.showrawData );              
        }
    
        public function onError(event:FaultEvent):void {
            Alert.show(ObjectUtil.toString(event.fault));
        }      
            
    ]]>
  </mx:Script>
  
  <mx:HTTPService id="userRequest" 
     url="http://localhost:8080/mentawai_teste/FlexAction.loginXML.mtw" 
     result="onSuccess(event)"
    fault="onError(event)"
    resultFormat="e4x"
    method="POST"/>

   <mx:Panel width="300" height="154" layout="absolute" horizontalCenter="0" verticalCenter="11" title="Login">
      <mx:Form width="100%" height="100" x="0" y="0">
         <mx:FormItem label="Login">
            <mx:TextInput id="loginField"/>
         </mx:FormItem>
         <mx:FormItem label="Password">
            <mx:TextInput id="passwordField"/>
         </mx:FormItem>
      </mx:Form>
      <mx:Button y="84" label="OK" horizontalCenter="0" id="sendBtn" click="enviarDados()"/>
      <mx:Label x="10" y="96" text="{loginField.text}" enabled="false"/>
      <mx:Label x="174" y="96" text="?" enabled="false"/>
   </mx:Panel>
  
</mx:Application>

Observe: a function getLoginParameters():Object, aqui está a questão, o formato que finalmente funcionou para envio dos parametros de forma que chegassem corretamente no servidor, sem nenhum erro inesperado...

onde a comunicação com o servidor é efetuada através do componente : mx:HTTPService, sendo que neste caso utilizei retorno em XML como resultado da execução da action

---

quanto a aplicação em java eu tenho na minha classe action o respectivo atributo setado na classe:

private UserBean user;

onde a estrutura dessa classe é:
public class UserBean {

  private String login;
  private String password;
  
  public String getLogin() {
    return login;
  }
  public void setLogin(String login) {
    this.login = login;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  
}

bom fica ae a dica para conseguir enviar parametros do Flex para sua aplicação em java ;)

Java Game : jPCT engine 3D gratuita


continuando o movimento do mês dos games agora em Outubro, segue mais uma dica para poder utilizar para montar alguns games, ou mesmo aplicativos 3D em java...

O jPCT é uma solução poderosa para possibilitar ao mundo java trabalhar com uma mundo 3D. Esta engine é compatível com o Java 1.1 =]

Site: [projeto] [screenshots] [demos] [download]

quarta-feira, 3 de outubro de 2007

JavaFX : Java no lado do cliente para Desktop e Mobile

Assim que o JavaFX foi anunciado no JavaOne em Maio, ele foi ativamente focado para aprimorar a experiência do usuário java no lado do cliente. Joshua Marinacci, do time da Sun de desenvolvimento do kit de ferramente Swing, recentemente chamou a atenção para um conjunto de tecnologias que podem ser consideradas como parte do JavaFX, onde o JavaFX é diferente do Script JavaFX, ele enfatizou que as tecnologias sob o guarda-chuva do JavaFX: Script JavaFX, designer & ferramentas de desenvolvimento, JavaFX para dispositívos, o cliente JRE (incluindo: o kit de desenvolvimento, o novo instalador, o kernel java, inicializador rápido, recursos de midia).

Em uma entrevista com a InfoQ, Joshua Marinacci fala sobre esses tópicos.

Leia a entrevista : [link] (em inglês)

Fonte : DZone

JXNA: Framework para jogos Java, similar ao XNA em C#

O Ecosistame de jogos Java é impressionante e vasto. Nos temos bibliotecas para simplificar as operações em pequenos dispositivos, nesse caminho temos também códigos java que nos possibilita gerenciar clusters de servidores de jogos. Este nosso ecosistema é realmente diverso?

Observando este vasto ecosistema, nós encontramos bibliotecas para área gráfica, representação física e materiais, inteligência artificial, redes, som, entre outras; e muitos dos componentes que podem satisfazer teoricamente a qualquer necessidade de “infraestrutura” de qualquer jogo, carregadores, construtores GUI, editores de níveis, onde a maioria dessas bibliotecas são OpenSource.

Infelizmente, todos esses excelentes projetos possuem filosofias de desenvolvimento diferentes e não se misturam (integram) muito bem uma com a outra.

Codificando jogos em Java para desktop, muitas vezes sentimos uma dificuldade como se estivéssemos presos. Isto é claramente a necessidade de integração das soluções, o que podemos usar e reusar como uma fundação/base para nossos projetos.

A Sun entretanto, nunca decidiu em criar uma solução integrada que abordasse a este necessidade e olhando por uma ótica de como o java é/está forte nas empresas como IBM, BEA e outras. Nenhuma dessas se candidata a criar um framework para games.

Isto significa que a comunidade java está encarregada de criar um framework para esta tarefa (games) que possa competir frente ao XNA. É obvio que nos temos que fazer (a comunidade Java), porque pelo que vemos as empresas de grande porte não tem essa preocupação, então temos que criar nos mesmo um framework para games, para qualquer um que quiser o movimento de desenvolvimento de games em Java, nós não estamos tão longe de uma solução como o XNA, mas precisamos codificar.

Por que não podemos como comunidade Java (com interesse em games) criarmos juntos um framework como o XNA? Por que temos todas as peças do quebra-cabeça e não conseguimos montar a figura? Isto é algo que eu posso escolher, ou temos que esperar por alguém faça isso por nós.

Quando o XNA foi lançado, o Java ainda “sofria” de muitos dos aspectos que lhe proporcionaram a posição de não ser uma linguagem boa para o desenvolvimento de jogos. Entretanto com a evolução da JVM, provavelmente o mais divulgado fato pelo time de engenheiros Java da Sun, que atualmente o código Java executa tão rápido quando um código nativo e em alguns casos até mais rápido devido as otimizações feitas pela VM. Com o OpenJDK nos temos agora, uma possibilidade de aprimorar cada vez mais a runtime, ou até desenvolver runtimes especializadas para games.

Lembrando que o framework XNA utiliza um runtime especializado para games gaseado em CLR. Poderia a comunidade Java utilizar-se do OpenJDK para aproximar e tentar gerar também uma JRE especializada para jogos? Possibilidade de um game amigável ao GC e otimizações do Java bytecode?

ps.: é as esperanças agora, por esta perspectiva são depositadas no OpenJDK, para possibilitar o desenvolvimento de um runtime especializado para games em Java assim como existe a runtime especializado para games usado pelo XNA.

Fonte : Javalobby

aproveitando, veja este vídeo que foi apresentado no JavaOne 2007, do que foi feito em Java utilizando o Java Monkey Engine:

terça-feira, 2 de outubro de 2007

Java : Tutorial : Expressão regulares simples

Segundo o autor do tutorial, originalmente ele considera o conhecimento/uso de expressões regulares como uma habilidade a mais de um desenvolvedor. Algo que é legal de um desenvolvedor saber utilizar, porém não necessário/obrigatório. Nesse tutorial são apresentado algumas coisas básicas que podem ser feitas com RegEx do Java... muitas eu desconhecia, muito bom esse tutorial.

Leia o tutorial : [link] (em inglês)

Fonte : DZone