Migração Java Applet www.javaavancado.com Alex Fernando Egidio www.javaavancado.com Java avançado direto ao ponto SOBRE Olá, obrigado por ter adquirido meu ebook, temos interesses em comum para serem compartilhados em desenvolvimento de software onde tenho essa profissão como uma verdadeira paixão em exercê-la. Se estiver estudando frameworks já deve estar familiarizado com os ícones da capa deste projeto que são das tecnologias que abordaremos aqui. A ideia do projeto nasceu de uma vontade grande em compartilhar soluções avançadas e complexas em Java usando as ferramentas e frameworks mais utilizados pelo mercado a nível mundial, soluções essas que não são encontradas facilmente na internet ou são o tipo de implementações que você conseguiria desenvolver após ler centenas de páginas de documentações e hoje sabemos que não temos tempo a perder, gastar quase uma semana lendo documentações dos frameworks para desenvolver uma rotina pode custar muito caro pra você e para a empresa onde trabalha. Com isso a missão é trazer ao leitor a solução pronta com exemplos e explicações detalhadas de implementações que mais são requisitadas no desenvolvimento de software em ambiente corporativo, exemplos com explicações principalmente da lógica do funcionamento o que é extremamente importante para seu aprendizado e entendimento em como as ferramentas se ligam. Hoje com anos de profissão em análise e desenvolvimento de software, durante todo esse tempo de aprendizado senti grande falta de conteúdo bem claro sobre as implementações e uso dos frameworks Java, você mesmo já deve ter percebido que dificilmente consegue implementar uma solução encontrada na internet, muitas vezes falta algo que demoramos para descobrir, essa é a intenção do deste ebook ter a certeza que o conteúdo que irá encontrar aqui será extremamente útil e você conseguirá implementar aquela solução tão complexa que te deixará muito feliz em realizar e entregar o software pronto. www.javaavancado.com Java avançado direto ao ponto Mini-biografia Alex Fernando Egidio, desenvolvedor e analista de sistemas em Java, graduado em analise e desenvolvimento de sistemas, pós graduado em engenharia de sistema web ambas as formações aplicadas especificamente para a linguagem Java, apaixonado por desenvolvimento web em Java e pela “mágica” que seus frameworks trazem para o dia a dia de nós desenvolvedores. Trabalho atualmente como desenvolver de projetos web e desktop em ambiente corporativo desenvolvendo projeto de grande porte e nível de complexidade. Moro atualmente em Maringá no Paraná cidade que é a terceira maior do estado e com uma das melhores estatísticas em qualidade de vida no Brasil, cidade também que conta com uma polo grande de tecnologia contendo dezenas de empresas focadas em desenvolvimento de software. Fique a vontade para entrar em contato comigo quando quiser. E-mail: [email protected] Abraços e ótimos estudos. www.javaavancado.com Java avançado direto ao ponto ENTENDENDO O QUE ACONTECEU NO JAVA UM PONTO FINAL À HISTÓRIA DA MORTE DO JAVA A notícia que o Google Chrome bloqueou o Java no ano de 2015 foi interpretada de forma errada por muitos entusiastas do mundo da programação principalmente para os iniciantes desta linguagem. Acabei me deparando com o desespero de muita gente em muitos fóruns, blog e grupos em redes sociais pensando que a linguagem estava sendo extinta, com isso decidi escrever este post para sanar a duvida do pessoal e acalmar os ânimos principalmente dos estudantes que estão se dedicando e investindo no aprendizado desta linguagem de programação. A plataforma Java é dividida em 3 partes: •Java SE que faz parte do Development Kit que junto com o Swing é destinada para aplicações desktop. •Java EE que junto com o Development Kit é destinada a aplicações web. •Java ME que junto com o Development Kit é destinada a aplicações para dispositivos moveis. Além destas 3 partes temos o plugin para browser do Java que permite que pequenas aplicações desenvolvidas em Java rodem dentro do navegador web, estes são os chamados applets, são estes plugins que foram bloqueados pelo Chrome com versão acima de 42, seu bloqueio se deu justamente por segurança e desempenho e por utilizar a plataforma NPAPI que se encontrada totalmente ultrapassada nos dias de hoje. Mas não foram apenas os plugins da linguagem Java que foram afetados outros como Silverlight, Facebook Video e outros plug-ins semelhantes baseados na NPAPI também tiveram restrições pelo Google. Se acessarmos o site oficial da Oracle na página que demostra como ativar o Java no navegador veremos uma caixa de aviso de bloqueio, antes existia um opção para habilitar e desabilitar com o bloqueio a opção foi removida das configurações do navegador. Para quem precisa trabalhar com applet e quiser usar o chrome terá que ficar atrelado a www.javaavancado.com Java avançado direto ao ponto versão mais antigas e ativar o suporte a NPAPIno navegador digitando a opção chrome://flags ou chrome://flags/#enable-npapi na URL e ativando o recurso, outra alternativa é usar navegadores como Mozilla Firefox que ainda liberam o uso destes plugins. EXEMPLO DO PLUGIN MOZILLA FIREFOX RODANDO NO NAVEGADOR Desenvolvi um exemplo onde tenho um applet lendo um arquivo local, o seu start se dá no navegador e sua rotina faz leitura de um arquivos TXT no diretório do usuário demonstrando o poder de invasão desse tecnologia. EXEMPLO DO PLUGIN RODANDO NO CHROME VERSÃO 45 SENDO BLOQUEADO: Essa é a imagem que aparece quando o navegador bloqueia totalmente a execução do plugins Java, até o console do deixou de ser exibido. Podemos ver que o bloqueio foi apenas dos plugins applet que já se encontram defasados e que nenhuma das 3 plataformas Java serão afetadas por isso muito menos ter a sua morte decretada. O Java hoje é umas das linguagens lideres no mundo corporativos em desenvolvimento de software e cada vez mais ganhando espaços no mercado em todas as áreas, podemos ficar tranquilos em continuar nosso estudos e nossa profissão. www.javaavancado.com Java avançado direto ao ponto PROBLEMAS QUE SURGIRAM • • Aplicações web e desktop que usavam rotinas de Applet pararam de funcionar. Bloqueios de segurança barravam a execução do Applet. A própria Oracle divulgou um documento explicando as razões e dando alternativas para os Applets serem substituídos. Alternativas são: • Converter os Applet para aplicativos Java Web Start Application. Link Oracle. Para isso temos que transformar o Applet em um pequeno software executável em formato *.jar, este nosso executável deve ser assinado com um certificado de segurança CODE SIGNING adquirido pela empresa dona do Applet. Após a assinatura a nova aplicação deve ser armazenada em algum servidor on-line para acesso do JNLP que é o arquivo responsável por invocar aplicativos Java Web Start Application. • Usar WebView FX em conjunto com a sua aplicação. Link Oracle. Os desenvolvedores terão que construir um navegador usando WebView FX, esse navegador irá interagir entre a aplicação web e próprio navegador WebView. CASO DE USO IMPRESSÃO LOCAL PROJETO JAVA WEB DIRETO NA IMPRESSORA EM O CENÁRIO O sistema possui várias configurações de impressoras, cada tipo de relatório pode ser enviado para uma impressora diferente. O sistema também possuí impressoras etiquetas de térmicas, o principal requisito é imprimir direto na impressora sem mostrar no navegador para o usuário e sem pedir a impressora, resumindo a impressão deve ser feita por baixo dos panos, clicar e imprimir diretor sem pedir e sem mostrar nada ao usuário. Como o javascritpt não tem acesso a recursos da maquiná essa rotina era feita em Applet agora deve ser feita em JNLP com Java Web Start e devem ser assinados com um certificado CODE SIGNING. Requisitado em muitos sistemas web, a impressão na máquina do cliente foi umas das rotinas mais complicadas que tive o desafio de fazer, com os bloqueios de segurança do Java e o bloqueio dos navegadores aos Applets, somente após muitas pesquisas e estudo cheguei a uma solução correta. www.javaavancado.com Java avançado direto ao ponto O PROJETO ACOMPANHA 2 EXEMPLOS Projeto 1 1 – Código fonte do Applet lendo o arquivo local. 2 – Código fonte do Applet fazendo a impressão local. 3 – Código fonte do Java Web Start (JNLP) fazendo a impressão local. 4 – Exemplo de script Apache Ant de como assinar uma aplicação com certificado de assinatura de código fonte. Projeto 2 1 – Projeto demonstrado acima no vídeo onde mostra o uso do Applet e Java Web Start (JNLP). 2 – Código fonte das servlet se comunicando com Applet. 3 – Código fonte das servlet se comunicando com Java Web Start (JNLP). 4 – Código fonte da impressão direta local. 5 – Jar assinado e autorizado do Applet. 6 – Jar assinado e autorizado para Java Web Start (JNLP). Vídeo aulas 1 – Detalhes do projeto 2 – Arquitetura do projeto 3 – Implementação 4 – Limpar cache ARQUITETURA O projeto pode ser adquirido no link abaixo: http://www.javaavancado.com/impressao-local-direto-no-impressora-em-projeto-java-web/ www.javaavancado.com