TComboBox vs SelectOneMenu

25/05/2014 at 10:24

Importante

O mais importante de saber é que o objeto que será exibido no SelectOneMenu deve obrigatoriamente implementar a função hash e a função equals, e também que o método getAsString do converter retorna a chave primária do objeto, não a descrição que será exibida em tela.

O download do código fonte dos projetos em Delphi XE2 e em Java EE 7 está no fim do artigo.

Delphi

Para a comparação observe o código Delphi abaixo.

Trata-se de um TComboBox preenchido conforme abaixo.

A tela Delphi é como a imagem.

fDelphi

Java com JSF e Primefaces 4

Em Java, além do tópico “importante” no começo deste artigo, temos que implementar a tela, o ManagedBean e o Converter abaixo.

index-xhtml

ManagedBean

Converter

Download do código fonte Delphi e Java

Hello World (JSF+Primefaces+EJB+JBoss)

14/08/2013 at 23:26

Embora existam inúmeros tutoriais de hello world de java na web com Eclipse, Netbeans, IntelliJ IDEA, etc, mais um amigo me perguntou sobre como iniciar mesmo tendo lido outros tutoriais, e olha que este sujeito não é ruim de pesquisa não hein. O que acontece é que cada pessoa tem lacunas em diferentes pontos num assunto e são necessários várias visões para que elas sejam preenchidas, minha abordagem pode ser a visão que faltava para essa pessoa.

Bem, não vejo mal algum em criar minha abordagem do software mais produzido no mundo o Hello World! Afinal de contas pode ser esta sequência de passos que resolva os seus problemas, se não for, serão as deste amigo, e eu ficarei feliz em poder ajudar.

A IDE que adotei foi o Eclipse, por mais que o Netbeans esteja na “crista da onda”.

O Eclipse parece um daqueles sujeitos truculentos da festa que é mau encarado, mas depois de algumas cervejas e honestidade ele abre um sorrisão e num passa de um coração mole que você pode contar pro que der e vier.

A primeira coisa que você precisa saber dele é que ele precisa de uma JVM para rodar, então baixe o Java se você já não tiver (pouco provável), ele também é modular e é possível montar a IDE com os pacotes estritamente necessários às suas necessidades e habilidades. Com isso o recomendado é baixar o Eclipse Standard e depois a partir do menu Help, opção Eclipse Marketplace baixar e instalar os pacotes necessários. A plataforma que o projeto Eclipse oferece é fantástica e existem outras IDEs baseadas no projeto Eclipse, tais como o gratuito Modelio para modelagem UML, BPMN, etc. além disso a partir da versão Juno é possível customizá-lo visualmente com CSS, então fica pra outro post demonstrar como deixá-lo todo preto mas de forma elegante.

A segunda coisa que você precisa saber é que existem diferentes versões evolutivas dele, as três últimas são Indigo, Juno e Kepler. Qual você deve usar? Sugiro que comece pela mais nova, Kepler, e vá descendo se houverem erros, instabilidades ou incompatibilidade, por exemplo, se você precisar do SDK da Amazon ou Android eles especificam qual versão do Eclipse é suportada as vezes a Kepler ainda não seja.

Existem compilações prontas para tipos específicos de desenvolvimento. Para desenvolvimento web você deve procurar pelo download que possua os termos Java EE  e/ou WTP – Web Tools Platform e/ou Web Applications, e/ou JSF em eclipse.org/downloads.

As distribuições do Eclipse são feitas no formato zip, tem programador que abomina, eu aprecio, pois concede total controle sobre a instalação, principalmente por ter backup fácil e é excelente para trabalhar em equipe, já que depois da configuração inicial necessária ao projeto os outros membros apenas copiam, facilitando inclusive em casos de formatação ou novo equipamento.

Depois dos tropeços que levei, recomendo criar a estrutura de pastas conforme a imagem abaixo. Para entrar no Eclipse utilize o arquivo eclipse.exe e crie um atalho no seu local preferido.

Java-Folder

O Próximo download deve ser da JDK, infelizmente não é possível deixar um link fixo aqui mas vou fazer o possível para indicar como chegar no download correto. Ao acessar a página inicial da Oracle entre no menu Downloads, selecione a opção Java for Developers, você estará então dentro de Java SE downloads, procure por Java Platform (JDK) 7u25 por exemplo, aceite o acordo da licença e clique no link conforme sua plataforma, jdk-7u25-windows-x64.exe por exemplo. Ao instalar a JDK recomendo alterar a pasta conforme a imagem abaixo.

JDK

O terceiro download é do JBoss Application Server 7, mas é mais fácil realizar a partir do Eclipse.

Ao abrir o Eclipse será solicitado a localização do Workbench, mantenha o padrão por enquanto, depois pesquise sobre workbench dentro do site eclipse.org uma hora qualquer, lá você encontrará detalhes.

A tela Welcome é apresentada, explore-a, será produtivo, mas agora clique no batão Workbech.

Workbench

As divisões apresentadas (Project Explorer, Outline, Markers, etc) fazem parte das Perspectivas, a atual deve ser Java EE.

Perspective

O JBoss roda em cima da JDK, ele não consegue funcionar apenas com a JRE comum disponível em qualquer computador. Portanto acesse o menu Window, opção Preferences, item Java, subitem Installed JREs. clique em Search, aponte a pasta c:\Java, aguarde o scanner e marque a JDK como padrão.

Installed JRE

Para instalar o JBoss AS7 acesse o menu Window, opção Preferences, item Server subitem Runtime Environments, clique em Add, clique no link Download additional server adapters, aguarde e quando for possível selecione JBossAS Tools, clique em Next, aceite o contrato e clique em Finish, após o aviso de possível reinício da IDE observe no canto inferior direito que o download foi iniciado em segundo plano, você pode fechar a tela de preferências por enquanto. Alguns segundos depois ele emitirá um alerta sobre o conteúdo do download, ignore isso, mais alguns segundos e ele solicitará ser reiniciado, aceite.

Ao retornar ao Eclipse a barra de botões ficou abarrotada de ícones, se quiser corrigir isso acesse o menu Window opção Customize Perspectives e desmarque a opção JBoss Tools WTP Server Actions. Agora temos que voltar em Runtime Environments, clicar em Add novamente e escolher JBoss 7.1 Runtime dentro da pasta JBoss Community, clique em Next, clique no link Download and install runtime, selecione JBoss AS 7.1.1 (Brontes), clique em Next, aceite o contrato, sugiro configurar a próxima tela conforme imagem abaixo.

Download JBoss AS

Após o download configure a tela conforme a imagem abaixo e tenha especial atenção ao campo JRE, não deixe de selecionar a JDK.

Runtime Environment

Há dois tipos de projeto web java, o mais simples é o Dynamic Web Project, o outro é Enterprise Application Project. Vou utilizar este último, que é recomendado para aplicações corporativas.

Para isso acesse o menu File, submenu New, opção Other. Na caixa de diálogo apresentada selecione a pasta Java EE, dentro dela selecione Enterprise Application Project e clique em Next, configure conforme imagem abaixo e clique em Next.

NewProject

A próxima tela é a de configuração dos projetos que compõem o Hello World. Clique em New Module e desmarque a primeira (Application Client Module) e a última opção (Connector Module). Clique em Finish nas duas telas. O Project Explorer deve ser igual a imagem abaixo.

HelloWorldProjectExplorer

Clique com o botão direito sobre o projeto HelloWorldEJB, selecione a opção New, submenu Session Bean (EJB 3.x), configure conforme a imagem abaixo.

EJB

Clique em Next e preencha o campo Mapped name com helloWorldBean, atenção ao case-sensitive. Recentemente o Java aceita EJB sem interface, mas não vejo motivo algum para ignorar o Design Pattern mais importante de todos, o Strategy (sempre programe para uma interface, mesmo que ela seja uma super-classe).

A classe gerada deve se parecer com o código abaixo, observe que removi os comentários e o construtor desnecessários para a demonstração.

 

A Interface @Local deve se parecer com o código abaixo.

Vamos criar a classe managedbean que é quem controla a interação do usuário, é essa classe que fica entre o xhtml e o EJB. Para isso clique com o botão direito do mouse sobre o projeto HelloWorldWeb, selecione New, opção Class. Configure conforme a imagem abaixo.

ManagedBean

A classe gerada já começa com um aviso da IDE ao grifar de amarelo seu nome, pare o mouse sobre ela e selecione “Add generated serial version ID” na caixa de opções que surgirá. Em seguida escreva o código abaixo.

Clique com o botão direito do mouse em qualquer lugar do editor, selecione “Source”, “Generate Getters and Setters”, selecione apenas o checkbox de greeting e clique em ok.

Clique com o botão direito do mouse sobre o projeto web, selecione “Build Path”, “Configure Build Path”, selecione a aba “Projects”, clique em “Add”, selecione o projeto EJB e clique em ok.

Escreva as anotações @ManagedBean, @ViewScoped e @EJB. A classe deve ficar conforme o código abaixo. Para resolver as dependências tecle a combinação ctrl+shift+o, se for necessário.

Agora vamos instalar o complemento JBoss Tools. Para isso acesse o menu Help, opção Eclipse Marketplace, no campo Find digite JBoss e tecle enter, clique no botão Install do item JBoss Tools (Kepler), confirme a tela seguinte e a seguinte para iniciar o download, após alguns minutos ele emitirá um alerta sobre o conteúdo do download, clique em ok, em seguida ele solicitará o reinício da IDE. A partir de agora seu Eclipse apresentará a página JBoss Central.

De volta ao projeto clique com o botão direito do mouse sobre o projeto HelloWorldWeb, selecione New e selecione XHTML Page. Preencha o campo File name com index.xhtml, clique em Next, selecione Use XHTML Template, selecione Blank JSF Page e clique em Finish.

Se sua plataforma for x64 o editor com preview do JBoss Tools não funcionará, mas não estamos interessados nisso, contorne este inconveniente temporário acessando a aba Source na parte inferior do editor. A propósito, recomendo clicar com o botão direito do mouse sobre o index.xhtml, selecionar Open With, opção HTML Editor, ele faz tudo que o editor do JBoss faz mas é bem mais leve. Mesmo que o editor visual funcionasse em x64 eu não usaria, pois não acredito em WYSIWYG para HTML, prefiro manter o código totalmente controlado.

Para termos apoio da IDE ao JSF no nosso software precisamos clicar com o botão direito do mouse sobre o projeto web, selecionar o menu “properties”, selecionar “Project Facets” e marcar a opção “Java Server Faces”. O painel inferior de configuração será exibido com o texto “Further configuration available”, clique nele. A configuração a seguir é uma questão de gosto. Prefiro remover /faces/* e acrescentar *.xhtml. O campo “JSF Implementation Library” fica configurado como “Library Provided by Target Runtime”, pois estamos utilizando JBoss e ele já possui as bibliotecas necessárias ao JSF.

JSFCapabilities

Escreva o código abaixo dentro da tag body, que será exibido na página principal.

Acredito que se estudarmos tudo o que é necessário sobre a linha acima, perderemos o foco deste tutorial. Então fica pra próxima.

Para utilizar o Primefaces é preciso baixar a biblioteca no site www.primefaces.org, clique no botão Download, role a página até a sessão Community Downloads e clique no link primefaces-3.4.2.jar, a versão 3.5 já está disponível, mas eu não recomendo ainda. Salve numa pasta confiável do seu computador, eu costumo salvar em C:\Java\download-lib\primefaces.

Além de ser biblioteca ajax o Primefaces também é biblioteca de temas, para escolher uma de sua preferência acesse o site http://www.primefaces.org/showcase-labs/ui/home.jsf, no canto superior direito haverá uma caixa de seleção escrito “aristo”, este é o tema padrão, selecione um de sua preferência e baixe-o no link http://repository.primefaces.org/org/primefaces/themes/, esse local será apresentado em estrutura de diretórios, para baixar o tema bootstrap, por exemplo, acesse a pasta de mesmo nome, em seguida entre na pasta da última versão, e por fim baixe o primeiro arquivo, nesse caso bootstrap-1.0.10.jar. Salve-o na mesma pasta anterior.

Dentro do Eclipse acesse o menu window, opção preferences, digite user lib, haverão dois, selecione o que pertence a Java, clique em new e nomeie por exemplo de Primefaces 3.4.2, clique em ok, e em seguida em Add External JARs, indique os dois pacotes baixados e clique em ok.

Clique com o botão direito do mouse sobre o projeto web, selecione Build Path, Configure Build Path, aba Libraries, Add Library, User Library, Next, marque Primefaces 3.4.2, clique em Finish. Sem fechar a tela de propriedades do projeto procure na lateral esquerda por Deployment Assembly, clique em Add, selecione Java Build Path Entries, next, selecione Primefaces 3.4.2, finish e ok. Configurar o Build Path serve para a IDE reconhecer, em tempo de projeto, as classes que você menciona dos pacotes externos a sua aplicação, já o Deployment Assembly serve para a IDE saber quais bibliotecas você deseja empacotar quando for gerar o deployment para o servidor.

Abra o arquivo web.xml da pasta WebContent/WEB-INF e acrescente as tags abaixo.

Abra o arquivo index.xhtml e acrescente o namespace do primefaces e coloque o greeting dentro do painel como no código abaixo.

Por fim clique com o botão direito do mouse sobre o projeto EAR, selecione “Run As”, “Run on Server”, selecione o JBoss e clique em “Finish”.

Conclusão: da trabalho pra caramba, mas vale a pena, quem chegou até o fim desse tutorial não precisa que eu o convença sobre os benefícios.

Obrigado e até a próxima.