Treinamento Java Beans e CDI

Treinamento ministrado na Secretária da Fazenda do Estado do Ceará sobre Java Beans e CDI.

Espero que gostem do material. Não existe restrição quanto ao uso em outras palestras. Lembre-se apenas de comentar a fonte (https://yross.wordpress.com)

Até a próxima.

Palestra Angular.js e Node.js

Olá pessoal,

Hoje compartilho os slides que utilizei na palestra que ministrei na Faculdade Católica Rainha do Sertão.

A palestra foi introdutória sobre o framework Javascript Angular.js.

O fontes do projeto estão no Github:

https://github.com/ythalorossy/js_angular_do_zero

Espero que gostem do material. Não existe restrição quanto ao uso em outras palestras. Lembre-se apenas de comentar a fonte (https://yross.wordpress.com)

Até a próxima.

AngularJS – HTML mais dinâmico

O desenvolvimento de aplicações web durante muito tempo foi estático“. As possibilidades disponíveis para expôr documentos eram estáticas, as imagens, que logo se tornaram o grande diferencial, eram estáticas. O HTML foi um dos grandes percussores da internet, foi um dos primeiros dialeto que de forma estática expôs documentos, informações e imagens ao mundo através da rede.

O HTML, por sua vez,  não foi desenvolvido para dar dinamicidade, foi desenvolvido para suprir a necessidade de expôr informações através da internet, semelhantes ao que temos em livros, onde o leitor não pode alterar a posição dos parágrafos enquanto ler, apenas pode, ou deve, lê-los.

HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.

O Javascript é utilizado para suprir essa necessidade, essa carência de dinamicidade. Desde o seu lançamento em 1995 foram desenvolvidas soluções, ou frameworks, para permitir via scripts a interação do usuário com o HTML, o controle de características dos navegadores, a comunicação assíncrona com servidores remotos e a alteração de informações mostradas na tela. A maioria desses frameworks possibilitavam a interação com as informações, com os dados apresentados, abstraindo alterações de estilo através do CSS, encapsulando funcionalidade com javascript e apenas alterando a  estrutura do documento.

Other frameworks deal with HTML’s shortcomings by either abstracting away HTML, CSS, and/or JavaScript or by providing an imperative way for manipulating the DOM. Neither of these address the root problem that HTML was not designed for dynamic views.

Continuar lendo

Nova categoria no blog – Web Apps

A categoria Web Apps foi adicionada visando o constante crescimento no desenvolvimento de aplicações com modelo que rodam diretamente no lado cliente, ou em browsers/navegadores, ou em simuladores web.

Com o passar do tempo o desenvolvimento de aplicações desenvolvidas principalmente em HTML(5), javascript (e seus frameworks) e CSS(3) passaram a chamar a atenção das empresas de desenvolvimento de sistemas e aplicações, tomando o lugar das que rodavam de “forma estática“, como nos desktop que precisavam de instaladores e compiladores para rodar.

Novas tendências indicam que em um futuro próximo o desenvolvimento de aplicações será totalmente em HTML5 e javascript, dominando o mercado desde desktops, passando por laptops e terminado em dispositivos móveis, tais como: tablets e smarthphones. O conceito de Cloud Phone Plataform está ai para mostrar que as grandes empresas estão investindo forte neste cenário.

Desta forma, exemplificarei o desenvolvimento destas aplicações utilizando o que mais atual estive próximo de minhas mãos, ou teclas.

Vamos… ver até onde vamos.

Transações em JEE

Há algum tempo atrás escrevi um post  falando sobre a utilização da anotação @TransactionAttribute, mas não detalhei suficientemente através de exemplos a utilização de transações dentro do contexto JEE. Pensando nisso, resolvi ampliar o post, criando outro, explanando e exemplificando.

1. Conceitos de transação

In a Java EE application, a transaction is a series of actions that must all complete successfully, or else all the changes in each action are backed out. Transactions end in either a commit or a rollback.

Uma transação é composta por uma serie de ações subsequentes que serão executadas uma após a outra até que todas estejam concluídas. O resultado do processamento deve ser interpretado de duas forma:

  1. Processo efetuado com sucesso. Isso acontecerá quando todas as ações ocorreram perfeitamente.
  2. Desfazer todo o processo. Este resultado acontecerá quando uma ou todas as ações evolvidas no processo represente uma instabilidade nos dados, ou no estado dos dados.

Um exemplo comumente utilizado para expressar uma transações é o carrinho de compras. O usuário seleciona vários itens e adiciona ao carrinho, no final, antes de encerrar, ou efetuar a compra, é necessário validar o cadastro, endereço, escolher a forma de pagamento, aguardar liberação do pagamento, encerramento da compra e, caso pagamento esteja correto, efetuar o pedido.

Avaliando o exemplo é possível observar a criações de uma transação (processo de validação, pagamento e despacho dos itens). Está transação terá duas saídas validas:

  1. Sucesso: Validação e pagamento corretos, gerá o fechamento da compra e despacho dos itens para o usuário.
  2. Erro: Por conter erros na validação dos dados ou na forma de pagamento. Neste ponto o sistema não encerrará a compra e o usuário não receberá os itens.

Continuar lendo

Concorrência em JEE Schedule

Imagem

Mais um compartilhamento de experiência positiva, desta vez usando os temporizadores automáticos do EJB Container. Seguindo a especificação JEE 6 percebemos a introdução do “Automatic Timers” que disponibiliza duas novas anotações para utilização.

Automatic timers are created by the EJB container when an enterprise bean that contains methods annotated with the @Schedule or @Schedules annotations is deployed. The Java EE 7 Tutorial – Release 7 for Java EE Platform. 28.4.3 Automatic Timers

As anotações @Schedule e @Schedules permitem ao desenvolvedor delimitar um método para executar automaticamente após a implantação da aplicação no servidor. @Schedule recebe um grupo de elementos que juntos formam uma expressão e informam o momento exato em que o temporizador deve executar o método.

Timers can be set according to a calendar-based schedule, expressed using a syntax similar to the UNIX cron utility. Both programmatic and automatic timers can use calendar-based timer expressions. Table 28–1shows the calendar-based timer attributes. The Java EE  7 Tutorial – Release 7 for Java EE Platform. 28.4.1 Creating Calendar-Based Timer Expressions

Continuar lendo

Arquivo de Propriedades em JEE com CDI

Olá amigos, estou de volta, afinal o blog sempre é atualizado quando passo por uma necessidade. Hoje precisei utilizar um arquivo de propriedades, mas não queria usar da forma comum, então, resolvi utilizar CDI.

Demonstrarei de forma simples como efetuar o carregamento e injeção do aquivo de propriedade utilizando o CDI (Java EE 6 Specification,  EE5). Assumirei que é de conhecimento do leitor quais as configurações necessárias para utilizar as caracteristicas do CDI – Context Injection Dependence, tal como, a criação do aquivo beans.xml (Java EE 6 Specification,  EE20)) no PATH da aplicação.

Continuar lendo