Últimas notícias do evento

MundoJava 33 nas Bancas

Postado em Atualizado em

img1

http//:www.mundojava.com.br

“Justificados, pois, mediante a fé, temos paz com Deus..” Romanos 5:1

Nova Certificação Sun NetBeans IDE

Postado em Atualizado em

java05Começamos o ano com a liberação da mais nova certificação Sun Certified Specialist for NetBeans IDE (CX-310-045) endereçado para programadores especialistas em desenvolvimento Java para Desktop e Web usando o NetBeans IDE. A prova cobre habilidades como: criação, configuração, codificação, teste, debug e profile de projeto complexos. Veja os detalhes na página oficial.

“O temor do Senhor ensina a sabedoria, e a humildade antecede a honra.” Provérbios 15:33

Filosofia de Aplicações Concorrentes

Postado em Atualizado em

Ao longo das experiências que venho tendo com as consultorias, treinamentos, equipes de desenvolvimento, certificações etc..percebo que no geral, a galera apresenta uma grande dificuldade relacionado com o tratamento de questões relacionadas a Thread. Após algumas conversas e entrevistas, diagnostiquei que o fato acontece não por causa da complexidade da API ou dificuldades de sintaxe, mas por falta de uma efetivo entendimento da FILOSOFIA sobre a questão. Eu peguei uma série de casos aonde o pessoal (no geral) não conseguia dominar ou entender sintaxe/API justamente pela fato de não ter uma clara instrução do propósito e fundamento da mesma. Com isso, resolvi criar este post com o intuito de cobrir esse buraco e tentar esclarecer o assunto:

O objetivo de toda equipe de desenvolvimento é produzir programas que executem uma série de tarefas logicamente organizadas. Na maioria dos casos é isso mesmo, simples assim….um sistema programado para executar uma monte de tarefas seqüências e cronologicamente estipulada. Por uma outra perspectiva, o sistema somente executara “uma tarefa por vez”. A questão surge quando é identificado que em algumas partes de alguns programas, existem certos processos que não necessitam ser executados seqüencialmente, ou seja, não faz sentido para aquele escopo em especial que uma tarefa espere uma outra ser terminada para que a mesma possa ser executada. Podemos pegar o exemplo clássico de  um editor de texto – não faz sentido que o usuário deva esperar o arquivo de 100 páginas ser impresso para depois salva-lo. Na verdade, o programa deveria permitir que o usuário pudesse fazer estas duas tarefas ao mesmo tempo. Com isso vemos que podemos ter 2 tipos de aplicação:

  • Monothread – que executa tarefas seqüencias.
  • Multithread – que executa tarefas paralelas, ao mesmo tempo e concorrentemente.

É por isso que dizemos a tecnologia java é multithread….isso quer dizer que com ela podemos criar programas que executem inúmeras tarefas concorrentemente. O autor do programa java esta livre para criar e delimitar quantos processos seqüencias e concorrentes poderão acontecer dentro do sistema. Esta mágica acontece simplesmente com a utilização da interface Runnable e a classe Thread. Que legal, que lindo..maravilhoso ? Não..nada de lindo e maravilhoso !! A possibilidade de fazer aplicações multithread resulta em uma situação aonde muitos problemas podem surgir. Vejamos os comuns:

Acesso Concorrente
Se vc para e pensar que um programa pode executar inúmeras tarefas ao mesmo tempo, chegara a conclusão que poderá acontecer situações aonde dois ou mais processos poderão manipular os mesmos recursos causando o problema chamado de acesso concorrente. Eu sempre costumo dizer a POO nada mais é que o reflexo das coisas que acontece no mundo real e isso não é diferente para a questão do acesso concorrente. Imagine a situação aonde um pai tente gerenciar que os seus dois filhos brinquem com seu brinquedos. Do ponto de vista funcional a coisa é simples, ou o pai bloqueia uma criança enquanto a outra brinca com o brinquedo ou ele compra um brinquedo para cada criança, fazendo com que elas possam brincar ao mesmo tempo.
Por causa desta situação é que encontramos o controle de bloqueio e o modificador chamado synchronized na tecnologia java. Com ele, o desenvolvedor tem a capacidade de bloquear um objeto, impedindo que o mesmo seje usando por um outro(s) processo(s) que porventura tente acessa-lo. Veja o oposto é verdadeiro,… a ausência do operador faz que com o objeto possar ser utilizado concorrentemente, ficando então a cargo do desenvolvedor identificar os casos e decidir oque fazer. Um caso clássico exemplo apresentando pela maioria dos livros seria duas pessoas tentando sacar dinheiro de uma mesma conta bancária. Caso os objetos responsáveis pelas operações não seje corretamente bloqueado, poderá finalizar em estado inconsistente.

Gerenciamento de Threads
Estamos nesta conversa toda justamente pelo fato de algumas processos não precisarem ser executados seqüencialmente, concluindo que a programação multithread foi concebida para deixar os sistemas mais rápidos e interativos. A coordenação das threads acontece em um terceiro cenário aonde um sistema multithread apresenta casos em que determinados processos concorrentes precisam ser controlados minuciosamente, apresentando uma certa interdependência entre eles. Imagine uma situação onde cinco crianças querendo comprar sorvete, possuindo apenas um atendente para todas elas. Vamos usar este simples exemplo e levantar algumas variações das situações:

  1. A criança que for selecionada pelo atendente, terá que bloqueá-lo fazendo com que ele não atenda uma outra criança em paralelo. A solução para esta exemplo de controle de acesso já foi mencionado anteriormente utilizando o operador synchronized.
  2. Se caso uma criança selecionada para ser atendida ainda estiver em dúvida qual sabor da casquinha escolher, o oposto terá que acontecer, ou seja, o sorveteiro terá que ser liberado para que possar escolher uma outra criança para atender, enquanto aquela que teve a oportunidade fica um tempo de espera indeterminado até que tenha uma nova oportunidade.
  3. Se caso uma criança selecionada para ser atendida falar assim “Eu quero o mesmo sabor que  meu irmãozinho mais velho”. Este é o caso onde o sorveteiro terá que ser liberado para que possar escolher uma outra criança e somente voltar nesta depois do seu irmão for atendido.
  4. Se caso uma criança selecionada para ser atendida falar assim “Eu gostaria de passar a minha vez para minha irmãzinha mais nova que esta morrendo de vontade de tomar sorvete”. Este é o caso conde o sorveteiro terá que ser liberado e forçado a atender uma determinada criança em específico.

Se no mundo real acontece assim, em java não sera diferente ! Uma equipe de desenvolvimento pode de deparar com um escopo de projeto multithread que contenha algum(s) caso(s) de gerenciamento de thread e a tecnologia contém todos os artifícios necessários para que o desenvolvedores possam implementar este controle. Para os casos 2, 3, e 4 acima descritos, vemos que os métodos herdados da classe Object: wait(), notify() e notifyAll() são utilizados para implementar este controle sobre as instancias do objetos que estam sendo executados dentro das threads. Juntamente com eles, podemos destacar os métodos das classe classe Thread: join(), resume() isAlive(), yield(), interrupted(), setDaemon() e sleep() que também são usados dar a possibilidade dos desenvolvedores implementarem o controle das threads dentro deste ambiente gerenciável.

Outros casos mais “cabeludos” que eu deixarei de fora para não aumentar o post seria o DeadLock, Race Conditions e o Starvation. Veja os link para mais detalhes.

Bom é isso galera, o post não tem o objetivo de descrever cada caso ou detalhamentos sobre as API da tecnologia java para ambientes multithread, ficando a carga de cada um se aprofundar no assunto. Para os interessados, segue dois livros que podem fornecer o conteúdo necessários – Certificação Sun para Programador Java 5 – Inglês e Português e SCJD Exam with J2SE 5 Inglês. O post fica aberto para opiniões e complementos 🙂

“Instruirei e te ensinarei o caminho  que deves seguir; e, sob as minhas vistas, te darei direcionamento.” Salmos 32:8

SOA Patterns Reference Card

Postado em Atualizado em

Foi liberado o cartão de referência sobre patterns em aplicação SOA. Ele descreve as arquiteturas comuns, implementações, operações e o gerenciamento de sistemas complexos. Os padrões estão classificados em 4 grupos e em ordem alfabética. Cada padrão tem seu nome, ícone, resumo, problema, solução, aplicação, diagramas, resultados e exemplos.
7030

Para todos os detalhes faça o download e bons estudos 😀

“As misericórdias do SENHOR são a causa de não sermos consumidos, porque as suas misericórdias não têm fim..” Jeremias 3:22

10 Tecnologias Java para 2009

Postado em Atualizado em

Com a chegada de 2009 é sempre bom começarmos olhando para as tecnologias que provavelmente iram se despontar no mercado. Veja este artigo de Joshua Partogi apontando (segundo a sua opinião) as tecnologias que ganharam seu espaço, com grandes chances de serem largamente usadas a partir deste novo ano. Veja um resumo:

1. Rails 3
2. Grails 1.1
3. WebBeans & Seam 3
4. iBatis 3
5. JavaFX
6. JSecurity
7. Buildr
8. JBoss AS 5
9. Glassfish v3_prelude
10.JRuby

Gostaria de aproveitar o post e desejar a todos um ótimo e abençoado ano de 2009.
“A paz que excede todo conhecimento governe e direcione as nossas vidas”

Especialização em Java – UTFPR

Postado em Atualizado em

Especialização em Java – UTFPR Londrina-PR

A Tecnologia Java está presente em vários ramos do mercado de Tecnologia da Informação, e já tem posição consolidada como uma das mais importantes linguagens de programação do mercado. O Curso de Especialização em Tecnologia Java procura abranger as muitas possibilidades que a linguagem Java oferece, qualificando profissionais para seu uso prático e aplicação direta no mercado de trabalho.

Objetivos

Qualificar profissionais para desenvolver sistemas corporativos que dependam do domínio de componentes distribuídos, serviços Web/Desktop e tecnologia wireless fazendo uso da tecnologia Java.

Público Alvo

Graduados em Tecnologia em Analise e Desenvolvimento de Sistemas, Ciência da Computação, Engenharia da Computação e outros profissionais relacionados a desenvolvimento de Sistemas.

Investimento

Taxa de Inscrição: R$ 35,00
Matrícula: R$ 240,00
Mensalidades: 17 parcelas fixas de R$ 240,00

Turno do Curso

O curso será ministrado aos sábados com aulas das 8 às 12 horas e das 13 às 17 horas.

Número de Vagas

Serão ofertadas para comunidade externa 23 vagas. Em caso de não abertura do curso o dinheiro das inscrições será devolvido.

Cronograma

Período de Inscrição: 15/12/2008 a 19/12/2008 e 12/01/2009 a 16/02/2009

Divulgação do resultado: 18/02/2009

Matrícula: 19/02/2009 a 27/02/2009

Segunda chamada: 03/03/2009

Início das aulas: 07/03/2009

Inscrições

As inscrições serão realizadas na secretaria do campus da UTFPR de Londrina, no horário das 09:00 às 12:00 e das 14:00 às 17:00 horas ou pela internet.

Documentos necessários:

  1. Cópia autenticada do diploma ou certificado de conclusão do curso de graduação.
  2. Cópia autenticada do histórico escolar do(s) curso(s) de graduação.
  3. Curriculum vitae.
  4. Uma foto 3×4.
  5. Cópia de Certidão de nascimento ou casamento.
  6. Cópia do documento de identidade.
  7. Cópia do titulo de eleitor.
  8. Cópia do CPF.
  9. Cópia do certificado de serviço militar (masculino).
  10. Alunos estrangeiros e/ou portadores de diploma de instituições de ensino estrangeiras deverão apresentar documentação complementar.

Critério de Seleção

A seleção dos candidatos será realizada por meio de um processo de classificação, analisada por uma comissão constituída pelo coordenador do curso e pelo menos mais dois professores da área que façam parte do quadro de professores do curso, designada pelo Departamento de Pesquisa e Pós-Graduação do Campus Londrina.

Disciplinas (ementas)

  • Tecnologia de Orientação A Objetos e Ferramentas UML
  • Linguagem de Programação Java I
  • Linguagem de Programação Java II
  • Java aplicado a Redes de Computadores
  • Sistema de Banco de Dados
  • Servlet e JSP (JEE)
  • XML e Web Services
  • Enterprise Java Beans
  • Frameworks Web (JEE)
  • Desenvolvimento Java para dispositivos móveis
  • Tópicos Avançados em Tecnologia Java
  • Metodologia de Pesquisa

Corpo Docente

  • Prof. Msc. Alexandre L`Erário
  • Prof. Msc. Edson Alves de Oliveira Junior
  • Prof. Esp. Edson Shozo Nishi
  • Prof. Msc. Eidy Leandro Guandeline
  • Prof. Msc. Eduardo Cotrin Teixeira
  • Prof. Esp. Fernando Franzini
  • Prof. Msc. Leandro Batista  de Almeida
  • Profa. Msc. Lígia Flávia Antunes Batista
  • Prof. Dr. Luciano T. Esteves Pansanato
  • Prof. Msc. Maurício Correia Lemes Neto
  • Prof. Msc. Rogério Santos Pozza
  • Prof. Esp. Thiago Prado de Campos

Coordenação

Prof. Msc. Maurício Correia Lemes Neto
E-Mail: e-mail oculto Exibir E-mail

Informações

UTFPR – Campus Londrina
Rua Alagoas, 2.001 – 1 º Andar

Fone/Fax: (43) 3029-3226
Londrina-Paraná
http://www.ld.utfpr.edu.br/posjava
e-mail oculto Exibir E-mail

Link Oficial

“Bom é o SENHOR para os que esperam por ele…” Jeremias 3:25

Quiz Java

Postado em Atualizado em

pendukeTermine o ano com um super quiz de férias da Sun.
Boas festas a todos 😀

“O coração do homem traça o seu caminho, mas o SENHOR lhe dirige os passos.” Provérbios 16:9