Monday Apr 13, 2015

Nashorn Maven: Easy Library Classpath Setup

Nashorn is a great technology that comes embedded with Java 8. It is a Javascript engine that allows developers to code for the Java Platform, but using the Javascript language. What does that gives to you? Well, you can basically do whatever the Java Platform allows you to do, except you don't need to set a Java project, compile, and package with a JAR to do something cool.

For example, let's say you want to test the Streams API in JDK 8. In traditional Java development, even without an IDE, you'd have to open a text editor, create a Java class, then compile it with javac, and finally run it with java command. But you just want to try an API, right? So you'd rather prefer to skip that code/compile/run and just do... code/run!

Nashorn itself can be executed by different ways: you can use JSR 223 from within a Java program, and invoke the ScriptEngine API to eval Javascript code using Nashorn, or you can use the jjs command line tool. If you have JDK 8 installed, go to your prompt line, and type jjs, and play with the Nashorn console.

Now that you have got an idea of what Nashorn is and what jjs is, and you have realized you can use any Java API programming in Javascript, what about using 3rd-party libraries? Or your own libraries? Nashorn jjs accepts a parameter -cp to configure a classpath, just like java. But libraries are usually published as Maven artifacts, and have dependencies. You can of course download all the JARs necessary to run the library, and manually setup the classpath with old school jar1:jar2:jar3, but that's not optimal! So what would be the easiest way to code a Nashorn Javascript application that depends on a Maven artifact?

Introducing you project Nasven.js

nasven.js is a tiny Nashorn script that will invoke Maven on top of a POM generated based on a configuration file. It will then call the Dependency Plugin to download all the dependency tree of your application, setup the classpath, and then invoke jjs of your actual application with the full classpath properly configured for you, automatically!

Here's how it works:

1) First you setup a configuration file, for example appdef.js:

1 2 3 4 5 6
var appdef = {
main: "jaxrs.js",
options: "-scripting",
dependencies: ["org.glassfish.jersey.core:jersey-client:2.17",
"org.glassfish.jersey.connectors:jersey-grizzly-connector:2.17"]
}
view raw gistfile1.js hosted with ❤ by GitHub

 2) Then you code your application, that in this case depends on the JAX-RS Client API implemented by GlassFish's Jersey. For example jaxrs.js:

1 2 3 4 5
var ClientBuilder = Packages.javax.ws.rs.client.ClientBuilder;
var client = ClientBuilder.newClient();
var target = client.target("http://ip.jsontest.com/");
var response = JSON.parse(target.request().get(java.lang.String.class));
print("Your IP address is ${response.ip}");
view raw gistfile1.js hosted with ❤ by GitHub

3) Finally you just need to invoke nasven.js. But make sure you have Maven properly installed and configured (in your PATH) as well JDK 8 of course.


    $ jjs -scripting nasven.js -- appdef.js 

  Or

    $ ./nasven.js -- appdef.js

Docker Image

You can also use the Docker image nasven/nasven.js to run right out of the box. The image contains OpenJDK 8 and comes with Nasven.js and their samples, as well Maven installed and with most common dependencies already downloaded for you. Here's how you run on your laptop the JAX-RS Sample (confirm you have Docker already installed);


# docker run -it nasven/nasven.js /nasven/samples/jaxrs

And that's it! Let me know if you liked this! :-)

Learn more about Nashorn

Thursday Jul 17, 2014

O Futuro do Java no Windows XP

Aviso Legal: Este texto foi traduzido do inglês para a sua conveniência. O texto original pode ser encontrado no post de Henrik Stahl, VP of Product Management for Java, "The Future of Java on Windows XP". Se houver qualquer discrepância entre esta versão e a versão original, dê prioridade para o texto original. Para outras dúvidas, consulte meu post Java FAQ Brasil.

Em Abril deste ano de 2014, a Microsoft anunciou o fim do suporte ao Windows XP. Como resultado direto, a Oracle anunciou que não mais dará suporte oficial para o Java no Windows XP. O que isso resulta é que um cliente com um contrato de suporte junto à Oracle pode ter que reproduzir um problema encontrado no Windows XP numa versão recente do Windows, e caso o problema seja específico ao Windows XP a Oracle não é obrigada (ou pode não ter os meios) para corrigir o problema ou oferecer uma solução de contorno (workaround).

 Este anúncio do fim do suporte tem sido interpretado incorretamente como "Java não funciona mais no Windows XP" ou "Oracle não irá disponibilizar mais atualizações para o Java no Windows XP". Estas afirmativas estão incorretas.

Nossa expectativa é que todas as versões do Java, que eram suportadas antes do anúncio de fim de suporte da Microsoft, continuarão funcionando no Windows XP num futuro próximo. Em particular, nossa expectativa é que o JDK 7 continuará funcionando no Windows XP. Atualizações de segurança lançadas pela Oracle continuarão sendo disponibilizadas para desktops com Windows XP. Usuários que fizerem o download do JDK 7 no java.oracle.com ou java.com continuarão podendo instalar no Windows XP.

JDK 8 não é suportado no Windows XP, e existem problemas conhecidos com o instalador para Windows XP que impedem de instalar o Java sem intervenção manual. Nós estamos buscando possíveis formas para resolver este problema mas talvez não o faremos - caso você esteja usando Windows XP talvez não valha a pena atualizar para o Java 8 sem atualizar também para uma versão recente do Sistema Operacional Windows.

O ponto importante aqui é que nós não podemos mais oferecer completa garantia do Java no Windows XP, já que este SO não é mais atualizado pela Microsoft. Nós fortemente recomendamos que usuários atualizem para uma versão recente do Windows que seja suportada pela Microsoft para manter um ambiente estável e seguro.

P: Eu recentemente li na Internet que a próxima atualização de segurança da Oracle para o JDK 7 não funcionará no Windows XP. Isto está correto?
R: Não. Não acredite em tudo que você lê na Internet.

P: Eu tenho um desktop/laptop com Windows XP. Continuarei recebendo atualizações automáticas do JDK 7 quando a Oracle lançar uma nova atualização de segurança?
R: Sim, ao menos até o End of Public Updates para o JDK 7 que no momento está agendado para Abril de 2015. Leia mais em Java Support Roadmap.

P: O que acontecerá após o End of Public Updates para o JDK 7?
R: Nós continuaremos monitorando as aplicações das atualizações no Windows XP. Se o uso continuar alto quanto chegarmos perto desta data, nós tomaremos medidas para manter usuários do Java seguros. Existem opções disponíveis ao nosso alcance caso isso se torne necessário.

P: Posso instalar JDK 8 no Windows XP? Vai funcionar? 
R: O instalador não funciona no Windows XP. Você pode descompactá-lo manualmente e provavelmente irá funcionar.

P: Minha empresa está usando Windows XP Embedded, que ainda é suportado pela Microsoft. A Oracle irá suportar neste caso?
R: Nós nunca suportamos oficialmente Windows XP Embedded para qualquer versão do Java. No entanto, desde que a Microsoft forneça suporte para o Windows XP Embedded, poderemos considerar isso. Entre em contato com um representante de vendas do Java na sua região se você tem uma necessidade para isso.

Monday May 26, 2014

Java FAQ: Tudo o que você precisa saber

Com frequência recebo e-mails de clientes com dúvidas sobre "quando sairá a próxima versão do Java?", ou então "quando vai expirar o Java?" ou ainda "quais as mudanças da próxima versão?". Por isso resolvi escrever aqui um FAQ, respondendo estas dúvidas e muitas outras. Este post estará sempre atualizado, então se você possui alguma dúvida, envie para mim no Twitter @brunoborges.

Qual a diferença entre o Oracle JDK e o OpenJDK?

O projeto OpenJDK funciona como a implementação de referência Open Source do Java Standard Edition. Empresas como a Oracle, IBM, e Azul Systems suportam e investem no projeto OpenJDK para continuar evoluindo a plataforma Java. O Oracle JDK é baseado no OpenJDK, mas traz outras ferramentas como o Mission Control, e a máquina virtual traz algumas features avançadas como por exemplo o Flight Recorder. Até a versão 6, a Oracle oferecia duas máquinas virtuais: JRockit (BEA) e HotSpot (Sun). A partir da versão 7 a Oracle unificou as máquinas virtuais, e levou as features avançadas do JRockit para dentro da VM HotSpot. Leia também o OpenJDK FAQ.

Onde posso obter binários beta Early Access do JDK 7, JDK 8, JDK 9 para testar?

A partir do projeto OpenJDK, existe um projeto específico para cada versão do Java. Nestes projetos você pode encontrar binários beta Early Access, além do código-fonte.

Quando acaba o suporte do Oracle Java SE 6, 7, 8?

Somente produtos e versões com release oficial são suportados pela Oracle (exemplo: não há suporte para binários beta do JDK 7, JDK 8, ou JDK 9). Existem duas categorias de datas que o usuriário do Java deve estar ciente: 
  • EOPU - End of Public Updates
    Momento em que a Oracle não mais disponibiliza publicamente atualizações
  • Oracle Support
    Política de suporte da Oracle para produtos, incluindo o Oracle Java SE
O Oracle Java SE é um produto e portando os períodos de suporte são regidos pelo Oracle Lifetime Support Policy. Consulte este documento para datas atualizadas e específicas para cada versão do Java. O Oracle Java SE 6 já atingiu EOPU (End of Public Updates) e agora é mantido e atualizado somente para clientes através de contrato comercial de suporte. Para maiores informações, consulte a página sobre Oracle Java SE Support.  O mais importante aqui é você estar ciente sobre as datas de EOPU para as versões do Java SE da Oracle.

Consulte a página do Oracle Java SE Support Roadmap e busque nesta página pela tabela com nome Java SE Public Updates. Nela você encontrará a data em que determinada versão do Java irá atingir EOPU.

Como funciona o versionamento do Java?

Em 2013, a Oracle divulgou um novo esquema de versionamento do Java para facilmente identificar quando é um release CPU e quando é um release LFR, e também para facilitar o planejamento e desenvolvimento de correções e features para futuras versões.

  • CPU - Critical Patch Update
    Atualizações com correções de segurança. Versão será múltipla de 5, ou com soma de 1 para manter o número ímpar. Exemplos: 7u45, 7u51, 7u55.
  • LFR - Limited Feature Release
    Atualizações com correções de funcionalidade, melhorias de performance, e novos recursos. Versões de números pares múltiplos de 20, com final 0. Exemplos: 7u40, 7u60, 8u20.

Qual a data da próxima atualização de segurança (CPU) do Java SE?

Lançamentos do tipo CPU são controlados e pré-agendados pela Oracle e se aplicam a todos os produtos, inclusive o Oracle Java SE. Estes releases acontecem a cada 3 meses, sempre na Terça-feira mais próxima do dia 17 dos meses de Janeiro, Abril, Julho, e Outubro. Consulte a página Critical Patch Updates, Security Alerts and Third Party Bulleting para saber das próximas datas. Caso tenha interesse, você pode acompanhar através de recebimentos destes boletins diretamente no seu email. Veja como assinar o Boletim de Segurança da Oracle.

Qual a data da próxima atualização de features (LFR) do Java SE?

A Oracle reserva o direito de não divulgar estas datas, assim como o faz para todos os seus produtos. Entretanto é possível acompanhar o desenvolvimento da próxima versão pelos sites do projeto OpenJDK. A próxima versão do JDK 7 será o update 60 e binários beta Early Access já estão disponíveis para testes. A próxima versão doJDK 8 será o update 20 e binários beta Early Access já estão disponíveis para testes.

Onde posso ver as mudanças e o que foi corrigido para a próxima versão do Java?

A Oracle disponibiliza um changelog para cada binário beta Early Access divulgado no portal Java.net.



Quando o Java da minha máquina (ou do meu usuário) vai expirar?

Conheçendo o sistema de versionamento do Java e a periodicidade dos releases de CPU, o usuário pode determinar quando que um update do Java irá expirar. De todo modo, a cada novo update, a Oracle já informa quando que este update deverá expirar diretamente no release notes da versão. Por exemplo, no release notes da versão Oracle Java SE 7 update 55, está escrito na seção JRE Expiration Date o seguinte:
The JRE expires whenever a new release with security vulnerability fixes becomes available. Critical patch updates, which contain security vulnerability fixes, are announced one year in advance on Critical Patch Updates, Security Alerts and Third Party Bulletin. This JRE (version 7u55) will expire with the release of the next critical patch update scheduled for July 15, 2014.
For systems unable to reach the Oracle Servers, a secondary mechanism expires this JRE (version 7u55) on August 15, 2014. After either condition is met (new release becoming available or expiration date reached), the JRE will provide additional warnings and reminders to users to update to the newer version. For more information, see JRE Expiration Date.
Ou seja, a versão 7u55 irá expirar com o lançamento do próximo release CPU, pré-agendado para o dia 15 de Julho de 2014. E caso o computador do usuário não possa se comunicar com o servidor da Oracle, esta versão irá expirar forçadamente no dia 15 de Agosto de 2014 (através de um mecanismo embutido na versão 7u55). O usuário não é obrigado a atualizar para versões LFR e portanto, mesmo com o release da versão 7u60, a versão atual 7u55 não irá expirar.

Veja o release notes do Oracle Java SE 8 update 5.

Encontrei um bug. Como posso reportar bugs ou problemas no Java SE, para a Oracle?

Sempre que possível, faça testes com os binários beta antes da versão final ser lançada. Qualquer problema que você encontrar com estes binários beta, por favor descreva o problema através do fórum de Project Feebdack do JDK.

Caso você encontre algum problema em uma versão final do Java, utilize o formulário de Bug Report. Importante: bugs reportados por estes sistemas não são considerados Suporte e portanto não há SLA de atendimento. A Oracle reserva o direito de manter o bug público ou privado, e também de informar ou não o usuário sobre o progresso da resolução do problema.

Tenho uma dúvida que não foi respondida aqui. Como faço?

Se você possui uma pergunta que não foi respondida aqui, entre em contato pelo meu Twitter @brunoborges e eu tentarei responder neste artigo.

Tuesday Apr 08, 2014

JavaOne 2014 na faixa, 0800, grátis!

Existem muitas coisas interessantes sobre o JavaOne, a maior conferência de Java deste planeta. Talvez a oportunidade de ficar sabendo em primeira mão sobre grandes lançamentos, ou ouvir sobre novas formas de utilizar a tecnologia, ou ainda conversar com desenvolvedores de todo o mundo, ou melhor: conhecer pessoalmente aqueles com quem conversamos somente por redes sociais e mailing lists. E é claro, a oportunidade de conhecer San Francisco, e o Vale do Silício: os escritórios da Oracle, do Google, da Apple, ou até da Microsoft. :D


Se você nunca foi ao JavaOne, mas tem muito interesse, curiosidade, e muita disposição (são várias sessões, e muitos eventos pós-sessões como happy hours, shows musicais, hackathons, etc!), e quer uma ajudinha para ir no evento, um bom patrocínio, existem duas formas de você fazer isso. A melhor opção é participar do JavaOne 2014 IoT Developer Challenge!.

Continue lendo o post...

Saturday Mar 29, 2014

Get all countries using Java SE 8 Locale

I saw this blog post "Get all the country using Java Locale List" and then I thought about posting something similar, but using Lambda and the Stream API of Java SE 8. Here's my "fork", including a call to sort the locales based on "display country" property.

Continue reading...

Friday Jan 24, 2014

Hackathon de Java e Raspberry Pi na CPBr14


Você que é desenvolvedor Java e vai para a Campus Party na semana que vem de 27 de Janeiro a 2 de Fevereiro de 2014, não pode perder o Hackathon de Java e RaspberryPipromovido pelo SOUJava, com apoio da Oracle, trazendo kits, premiação, e mentoring! O objetivo é aprender, praticar e inovar, e todos os participantes ainda vão ganhar uma camiseta. Um dos projetos será selecionado para apresentação no palco principal!

Presença de grandes nomes da comunidade Java brasileira como:

Para maiores informações, consulte o site do SOUJava Hackathon de Java e Raspberry Pi na Campus Party.

Monday Jan 13, 2014

Nova versão do Java para Janeiro 2014

À partir do dia 15 de Janeiro, estará disponível para os usuários a nova atualização do Java. O aviso já havia sido feito no ano passado, mas hoje saiu o anúncio pré-release do Critical Patch Update de Janeiro de 2014 com maiores detalhes. Os produtos relacionados ao Java (Java SE, Embedded, JavaFX, e JRockit) receberão 36 correções de segurança, das quais 34 podem permitir execução remota sem autenticação. Devido à ameaça representada por um ataque, a Oracle recomenda que os clientes apliquem correções Critical Patch Update assim que possível. Para usuários desktop que necessitam de Java para acessar sites que requerem a tecnologia, como Internet Banking, a atualização do Java é extremamente importante.

Esta atualização do Java é chamada de "Java SE 7u51" ou "Java SE 7 update 51" e vem com uma importante novidade. Usuários podem agora indicar manualmente quais sites são confiáveis. Desta forma, os avisos de segurança não serão exibidos, pois fica entendido que o usuário confia no site. Para saber mais sobre esta funcionalidade, leia o documento Como posso configurar a Lista de Sites de Exceção? na Central de Ajuda do Java em português. Ou veja também aqui no meu blog um post sobre esta nova feature. Outra mudança importante nesta nova versão do Java é que todos os aplicativos Java que precisam ser executados no navegador, à partir de uma página Web, deverão ser assinados digitalmente com um certificado válido. Para saber mais, veja este outro post Mudanças no Java SE 7u51 para Applets e Web Start.

Além do Java, outros produtos da Oracle receberão diversas atualizações e correções de segurança neste lançamento, como Oracle VM VirtualBox, Oracle MySQL, Oracle Database, Oracle Fusion Middleware, e muitos outros. Para maiores informações, consulte o pre-release do anúncio do Critical Patch Update de Janeiro de 2014

Friday Jan 10, 2014

Novo Java 7u51 e os Internet Banks no Brasil

Science Duke

UPDATE: Novo post com detalhes sobre a nova atualização do Java. Clique aqui.

O ano de 2013 foi conturbado para o Java, mas a Oracle resolveu e corrigiu uma série de falhas de segurança. Muitas destas correções foram relacionadas ao funcionamento do Java Browser Plugin, que integra com os navegadores Web e permite a execução de aplicativos Java a partir de páginas HTML.

Agora, 3 meses após a última atualização Java 7u45, na próxima semana teremos o lançamento do update 51. Esta nova atualização virá com mais algumas correções e uma série de novidades, mas talvez a mais importante delas chama-se Exception Site List (documentação em Português), destinada para os usuários finais.

Na atualização 40, incluimos a feature Deployment Rule Set, destinada a administradores de estações de trabalho corporativas para oferecer esta funcionalidade com facilidade de implantação. Para usuários finais, a feature Exception Site List permite uma configuração por interface gráfica bem simples. Assim como no DRS, esta funcionalidade permitirá que usuários configurem em seus computadores os domínios Web nos quais eles confiam. Por exemplo, um usuário pode digitar https://www.sitedomeubanco.com.br e o Java irá confiar nos Applets (e também aplicativos Java Web Start) hospedados nestes sites.

Comparação do Exception Site List com Deployment Rule Set

A introdução da Exception Site List cria um segundo caminho para confiar (whitelist) em RIAs (Applets e JWS) e diminui as exigências para administradores de sistema.

 Exception Site List
Deployment Rule Set
 Desde quando?  Java 7 update 51 (Janeiro 2014)
 Java 7 update 40 (Setembro 2013)
 Destinado a
 Usuário final  Administrador de Sistemas
 Forma da configuração
 Interface gráfica  Arquivo JAR assinado
 Se os dois conflitarem
 Perde

 Ganha 


 Para aplicação de políticas padrão de segurança, alguns administradores de sistema podem bloquear o uso da Exception Site List como fariam com qualquer outra configuração do painel de controle.

Adicionando um site à Lista de Exceção

Usuários finais podem acessar esta funcionalidade à partir do painel de controle do Java.

  1. Abra o painel de controle do Java
    1. Windows/Mac - abra o painel de controle do sistema ou as Prefeências do Sistema, e escolha Java
    2. Linux/Solaris - Execute o comando jcontrol
  2. Clique na aba Segurança
  3. Clique em "Gerenciar Lista de Sites" / 
  4. Uma nova janela aparecerá

  5. Clique no botão Adicionar / Incluir

  6. O endereço não deve conter nome de arquivo no final:
    • Correto: https://www.meubanco.com.br/ib/
    • Errado: https://www.meubanco.com.br/ib/pagina.html
  7. Clique em OK. A janela irá fechar. Talvez você veja uma janela de confirmação caso utilize um canal de comunicação não-criptografado como http://. Prefira sempre o procolo https//.
  8. De volta ao painel de controle do Java, clique em OK para fechar.
  9. Recarregue a página onde está a aplicação Java, no seu navegador.

Distribuição da Exception Site List

Apesar de esta funcionalidade ser voltada a usuários finais controlando sua própria lista de exceções, quase todas as configurações de software podem ser automatizadas.

O arquivo que controla esta lista é armazenado no diretório do usuário descrito na configuração de deployment. Por exemplo, no Windows 7 este local é
C:\Users\%USER%\AppData\LocalLow\Sun\Java\Deployment\security\exception.sites

O formato do arquivo é puro texto, uma URL por linha.

Veja também maiores informações sobre o uso de Deployment Rule Sets. Para manter-se informado sobre as mudanças no Java, acompanhe o blog (em inglês) Java Platform Group

<origem>

Monday Nov 18, 2013

Você Está Pronto Para O Próximo Update do Java?

Oracle criou dois novos recursos, o 
Java RIA Security Checklist e o Java Security Resource Center para ajudar você a se preparar para a próxima atualização do Java SE, Java SE 7 update 51 (agendado para Janeiro de 2014). Esta versão modifica os requisitos de deployment para aplicações em Applet & Web Start com dois novos requisitos: 

  1. Uso do atributo Manifest, chamado Permissions
  2. Assinaturas de código válidas

Estas mudanças não afetarão desenvolvedores de aplicações back-end, ou cliente standalone; o escopo é limitado somente para Java Applets & Java Web Start (RIAs). Leia alguns destes detalhes no meu post anterior Mudanças no Java SE 7u51 para Applets e Web Start.

Java RIA Security Checklist


A mudança agendada para o Java SE 7u51 irá fazer com que o controle de segurança "default" (security slider) requererá o atributo Permissions no Manifest, e que o código esteja assinado devidamente com um certificado de código válido. O Java RIA Security Checklist
 provê as melhores práticas para ajudar os times de desenvolvimento a identificarem as tarefas necessárias para atender a estes novos requisitos.

Security Resource Center


A Oracle lançou o novo Java Security Resource Center para agrupar informações relacionadas a segurança para a comunidade Java, de acordo com o perfil de cada profissional: desenvolvedor, administrador de sistemas, usuário doméstico, ou especialista em segurança.

Recursos Adicionais

 

Nota:
 Para garantir que sistemas de usuários finais (end users) estejam protegidos quando usando conteúdo baseado em Java, a Oracle recomenda que você esteja sempre atualizado para a mais recente versão. Você pode remover versões antigas do Java seja durante o processo de atualização, ou com usando a ferramenta Java Uninstall Tool em Java.com.

Tuesday Sep 10, 2013

Java SE 7 update 40 e o Mission Control 5.2

Java SE Downloads
Chegou uma nova atualização do Java SE 7: update 40. Esta versão inclui várias novas funcionalidades como o Java Mission Control, Deployment Rule Set, suporta para o Retina display no Mac, e suporte a Hard Float ABI no Linux ARM v7. Também inclui diversas correções de bugs. Para quem desenvolve Applets e aplicações Java Web Start, este release, fica a atenção para conhecer e enteder as mudanças.

Deployment Rule Sets

Esta funcionalidade permite um administrador de desktops a controlar o nivel de compatibilidade para clientes Java assim como níveis de segurança para a empresa. Para maiores detalhes, veja a documentação do Deployment Rule Set.

Java Mission Control

O Mission Control era até então uma ferramenta disponível para clientes Oracle, e que foi lançada há muito tempo atrás junto com o JRockit (JRMC). Mas a Oracle agora disponibilizou a ferramenta junto com a JRE HotSpot 7u40. 

Esta ferramenta permite monitorar, gerenciar, introspectar, e detectar memory leaks nas suas aplicações Java, sem ter que introduzir códigos para isso, que normalmente degradam a performance da aplicação. Hoje esta ferramenta está agora disponível no download do Oracle HotSpot JDK 7u40!

Flight Recorder

Mas a principal e mais importante característica é o Flight Recorder. Este recurso funciona através da leitura de eventos produzidos pela JVM. Mesmo ativando a geração destes eventos, a sobrecarga total  para as suas aplicações ainda fica abaixo de 2%, que considerando o tipo e o valor de informação que você recebe, é quase nada. Um exemplo de evento é a chamada de um método de uma classe Java.

Com o profile de chamadas de métodos você pode descobrir onde o aplicativo está gastando a maior parte do tempo executando seu código Java. Este é, por exemplo, útil para otimizar a aplicação onde as otimizações realmente terão impacto. Isto sem precisar introspectar seu código manualmente!

Alem disso, você tem também uma visão de otimização para alocação de objetos. Você pode ver por exemplo, a alocação em tempo real de objetos na Old Gen da memória heap. diretamente no espaço de idade, além de outras abas que oferecem diversas informações importantes sobre o processamento de informações na sua aplicação Java. Leituras de arquivos I/O, Socket I/O e muito mais.

Se você precisa de mais informações sobre o Mission Control, entre na página da ferramenta em www.oracle.com/missioncontrol.

E obrigado ao Markus Eisele por ter cedido parte deste post! :-)

Monday Sep 09, 2013

Mudanças no Java SE 7u51 para Applets e Web Start

Science DukeA atualização do Java 7 update 51 (prevista para Janeiro, 2014) pretende incluir duas alterações de segurança desenhadas para melhorar a autenticação e autorização de aplicações Applets e Web Start. O controle de segurança slider do painel do Java está sendo atualizado para bloquear aplicações RIAs (Applets e Web Start) que não atenderem a estes novos requisitos. Importante: estas mudanças só se aplicam para RIAs, e não para Java no servidor ou em aplicações desktop fora do browser.

Sumário:

  • Você deve assinar todas as RIAs (Applets e aplicações Web Start)
  • Você deve definir o atributo "Permissions" dentro do Manifest
  • Sua aplicação será afetada se é inicializada a partir de um web browser. Sua aplicação não será afetada se ela é executada fora de um navegador web.

Informação completa poderá ser encontrada no release notes do Java 7 update 51, assim que for lançado em 2014.

Desenvolvedores:

A partir do Java 7u51 (Janeiro, 2014), RIAs devem ser atualizadas. As mudanças necessárias são no processo de empacotamento e distribuição; nenhuma mudança em código Java ou API é necessária. O estímulo para essas mudanças se refere à potencial abordagem de re-purposing de aplicações sandboxed, em que colocando permissões em um JAR assinado previne a modificação do seu nível de permissão definido. RIAs devem conter duas coisas:

  1. Assinatura de códigos de uma entidade verificadora confiável Trusted Authority. Todo o código para Applets e aplicações Web Start deve ser assinado, independente dos atributos de permissões.
  2. Atributos no Manifest
    1. Permissions - introduzido no Java 7u25, e obrigatório a partir do Java 7u51. Indica que uma aplicação RIA deve ser executada em modo sandboxed ou requerer todas as permissões.
    2. Codebase - introduzido no Java 7u25 e extremamente recomendável a partir do Java 7u51. Aponta para o local conhecido que hospeda o código (por exemplo: intranet.example.com)

Exemplo de META-INF/MANIFEST.MF

Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox 
Codebase: www.java.com java.com 

Este arquivo manifest é criado quando o JAR  é empacotado, seja através do comando JAR, sua ferramenta de build, ou a sua IDE. 

Exemplo JNLP para apps Web Start

<?xml version="1.0" encoding="UTF-8"?>
<jnlp href="JavaDetection_applet.jnlp">
    <information>
        <title>Java Detection</title>
        <vendor>Oracle Inc.</vendor>
    </information>
    <resources>
        <jar href="JavaDetection.jar" />
    </resources>
    <applet-desc
          name="Java Detection Applet"
         main-class="JavaDetection"
         width="1"
         height="1">
     </applet-desc>
     <update check="background"/>
</jnlp>

Veja o documento Development and Deployment of RIAs para maiores detalhes no formato do arquivo JNLP e o deployment toolkit. Para instruções sobre como assinar seu código, veja o tutorial Lesson: Signing Code and Granting It Permissions.

Administradores de Desktops

Se você é um administrador de desktops que gerencia instalações de softwares como o Java, em diversos computadores, considere o uso dos Rule Sets para cadastrar aplicações Java na whitelist. Deployment Rule Sets permite que você certifique que uma aplicação é conhecida como segura e confiável, mesmo que você não possa atualizar esta aplicação para atender a estes novos requerimentos.

Nota: este artigo foi publicado originalmente no blog do Java SE Product Management Team.

Thursday Sep 05, 2013

Install Fusion Middleware Infrastructure on Oracle DB 12c

This week I had the opportunity to play a little with the new and recently released Oracle DB 12c. This version brings a new approach for databases, calledPluggable Databases. There are plenty of articles and YouTube videos already explaining this and I will not focus this article on it. Instead, I want to help you on How to Install Oracle Fusion Middleware Infrastructure on Oracle DB 12c.
There are a couple of steps and commands to be followed, and some very important observations. Starting with a simple one:

Do NOT execute the RCU installer on top of a CDB.
One more time: do NOT execute RCU on top of a CDB. 


If you do point the RCU tool to install over a CDB, you might get this message:

ORA-65096: invalid common user or role name


Now with this in mind, I believe you have understood that the first step is, obviously, to create a PDB. There are some options, but I will use pure SQL commands.

Step 0 - Use the correct encoding for your Database install

Make sure you have installed your DB with the AL32UTF8 encoding. 
This is recommended, but it might work in case you are using something else.

Step 1 - Create a PDB to hold the FMW Infrastructure Data

The following command will create a PDB called PDBFMW with a user "fmw" and password "welcome1".

SQL> CREATE PLUGGABLE DATABASE PDBFMW ADMIN USER fmw IDENTIFIED BY welcome1
 FILE_NAME_CONVERT=(
  '/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf', 
  '/u01/app/oracle/oradata/orcl/pdbfmw/system01.dbf',
  '/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf', 
  '/u01/app/oracle/oradata/orcl/pdbfmw/sysaux01.dbf',
  '/u01/app/oracle/oradata/orcl/pdbseed/pdbseed_temp01.dbf', 
  '/u01/app/oracle/oradata/orcl/pdbfmw/pdbfmw_temp01.dbf'
  )
 STORAGE UNLIMITED


Please make sure to adjust the values to your installation. 

Step 2 - Open the PDB for changes

After you have the PDB created, make sure you change its state to READ_WRITE

SQL> ALTER PLUGGABLE DATABASE PDBFMW OPEN READ WRITE

Step 3 - Fix user privileges

Now you must make sure the user "fmw" has all required privileges. As this is for Development, I will just give everything.

SQL> GRANT ALL PRIVILEGES TO fmw WITH ADMIN OPTION
SQL> GRANT SYS TO fmw

* Important note: I'm not a DBA expert and these might not be the correct privileges for production environment. So please make sure to give only the necessary privileges following the documentation.

Step 4 - Run the RCU tool

This step considers that you have correctly installed Fusion Middleware Infrastructure into your Middleware Home / WebLogic installation folder. In my case, I'm using the full WebLogic + JDeveloper installation package, which brings the FMW Infra bundled. Now go to your $MW_HOME folder and run the RCU tool:

$ cd $MW_HOME
$ cd oracle_common/bin
$ ./rcu

Make sure to use the correct properties to connect to your recently created Pluggable Database:
Database Type: Oracle Database
Host Name: db12c (change to your DB IP address)
Port: 1521
Service Name: pdbfmw (here you use the PDB name)
Username: fmw
Password: welcome1 (or whatever you defined)
Role: SYSDBA
Click "Next" and see if it worked. If you are not using AL32UTF8, it will ask you to Ignore. Just do it, but remember: it might not work properly.

Step 5 - Select components and create new prefix

I like to select everything, and use the "FMW" prefix. Click "Next", "Next", "Next", etc, etc, etc... Until it finishes.

FINISHED!

You have successfuly created the right database structure for your Fusion Middleware Infrastructure, and now you can create a WebLogic domain with ADF and everything else, pointing to this PDB.

If you have any question, post a comment!

Friday Aug 23, 2013

Java EE 7 OTN Tour 2013 Trip Report - Part 1/2

OTN Tour 2013 is over, and after 7 countries, all I have to tell you is this: #JavaEE7 rocks and people loved it! It is quite coincidence that at the end, I went to 7 cities in Latin America to give my "What's new in Java EE 7" talk plus the Hands-on Lab and other talks like the one about WebLogic 12c and another about GlassFish 4.

In reality, I had also planned to go to Panama City, and San José in Costa Rica. Well, things sometimes don't always go as planned, and I couldn't go to Panama. And when I got to Costa Rica, I was sent back to Mexico because I was not with my Yellow Fever card. But I'm looking forward to Java EE 9, if you know what I mean. :-) In the end, I visited 7 cities:
  • Mexico City, Mexico
  • Guadalajara, Mexico
  • Santiago, Chile
  • Lima, Peru
  • Montevideo, Uruguay
  • Buenos Aires, Argentina
  • São Paulo, Brazil
Now, before I talk about each city, let me explain something to you really important: OTN Tour is organized by LAOUC, the Latin America Oracle Users Community. And at each participant city, local OUGs help to organize, set a venue, local partners as sponsors, and also work with the speakers' agenda. Oracle does sponsor these events, both by supporting the local event,  as well by sponsoring Oracle ACEDs to travel with the tour. If you want to become an Oracle ACE, all you need to do is to learn about the Oracle ACE program.

We all know how Database-driven Oracle has been for the past decades, and we understand that most off the Oracle User Groups are more interested on Database stuff. But this is changing. There was a lot of interest during the whole tour on Middleware and Development technologies such as Java EE, ADF, WebLogic, and GlassFish. Dana Singleterry joined me in this tour and brought with him a lot of information on ADF 12c and ADF Mobile. Don't forget to follow him on Twitter.

By the way, this tour was great to improve my Spanish. Yeah, you read it: Spaaaanish. I'm from Brazil, and we speak Portuguese there. And Brazil is the only country in Latin America that speaks Portuguese. To improve my learning, at every country I visited I tried to learn local slangs. So for each city, I did a special slide for Java EE 7. Really, you gotta learn local slangs to be cool with a 2nd/3rd language :-P Anyway, it all started on July 21st in the morning...


Mexico City (DF), Mexico - July 26th

Like I told before, I could not go to Panama nor Costa Rica, so I stayed in Mexico the first week, and worked with Oracle folks there, did customer meetings, worked from hotel, etc. On Friday I finally started. Great venue at Egade Business School as well a very nice setup with coffeebreaks and lunch for everyone. Kudos to ORAMEX, the local OUG. In Mexico, I gave my Java EE talk, and did the Hands-on.
Spanish Lesson Part 1
By the way, chingar is a word in Mexican Spanish that means a lot of things, both for good or bad contexts. It can be used so widely that there is even a "chingonary", or a dictionary on how to use it, that I had to buy one for me in a local bookstore. In this case, it means "Java EE 7 has so many new technologies inside", but of course using a slang, almost a swearing word :P

Pictures: Facebook or Google+

Guadalajara, Mexico - July 27th

Guadalajara was not part of the official OTN Tour. Actually, it was an Oracle Java Day organized by the local Oracle office, with people from the Oracle Curriculum Development Team and where some of the great content of Oracle Learning Library is coming from. This conference was led by Edgar Martinez and I can't say how thankful I am. Edgar and his team did a great job. Everything was perfect: the great staff team, pizza for lunch, the office, the setup, the trail, and last but not least, the happy hour! Edgar blogged about this as a guest at Java blog, so you may want to read more about this there. Here I gave my Java EE 7 talk, and the hands-on. A lot of people showed up!

More pictures of the event on Flicker, my Facebook, and my Google+
Also, all the registration fee for this event was donated to a local orphans institute. Later, perhaps the best moment of it all: when we were walking on the street after the event looking for a place to dinner, we met with the supporters of this institute.


">


Santiago, Chile - August 1st


Santiago is an incredible city. It holds about 30% of the entire population of Chile, and I would guess perhaps more than 50% of the entire economy there. It is one of the most modern city, with great infrastructure and easy access to several touristic places. It was where I could enjoy a tourist-like day, so expect to see regular pictures. :P

Spanish Lesson Part 2
The term bacán in Chilean Spanish means "cool". I had to change my slide here.
The conference here happened at a very nice university, close to a subway station, and here I gave my Java EE 7 talk the hands-on again, and then the GlassFish in Production Environments. I met with great people here both from Oracle User Groups as well some people from the local Java community. It was also where I first met and talked to Tim Hall, really great guy, Oracle ACED, an expert on Oracle Database. If you have any questions about OraDB, follow him on Twitter and check his website, oracle-base.com.

Pictures: Facebook or Google+

Lima, Peru - August 3rd

One day after Santiago, I was flying to Lima for the third country of my list. Lima has really nice areas, like Miraflores so if you plan to visit Peru one day, make sure you stay there to enjoy the best view of the Pacific Ocean. For night life, visit Barranco, full of bars, restaurants, and nightclubs.

Here I gave my traditional Java EE 7 session, catch up with local Oracle people, and had perhaps one of the crowdest room in the whole tour. The question I made to the attendees in the picture below was: "Did you like the new stuff in Java EE 7? Raise your hand if yes!!!"

Pictures: Facebook or Google+

Spanish Lesson Part 3
The term chévere in Peruvian Spanish means "awesome". It is similar to bacán from Santiago, Chile. But people here prefer to be different. :-) So I had to change my slide again.

More next week
I still have to talk about was this tour in Argentina, Montevideo, and finally Brazil. But I will leave that for the next post.

By the way, to keep posted on this, follow me on Twitter! Or Google+... Or Facebook... :-)

Thursday Jul 25, 2013

Como instalar o GlassFish 4.0 (ZIP) [pt_BR]

O jeito mais rápido e fácil de instalar o GlassFish 4 em servidores é utilizando a versão ZIP do instalador. O ZIP já vem com um domínio (domain1) configurado, e por isso o tamanho do arquivo é maior que o instalador nativo (onde um domínio será configurado durante a instalação).

Passo-a-passo

  1. Entre em http://www.glassfish.org/downloads e clique no link abaixo de Zip (quick start). No momento deste post, a versão disponível é a 4.0.
  2. Descompacte o ZIP em um diretório de trabalho:
    $ mkdir ~/Work
    $ cd ~/Work
    $ unzip ~/Downloads/glassfish-4.0.zip
  3. Entre no diretório bin do GlassFish:
    $ cd glassfish4/bin
  4. Execute o seguinte comando para inicializar o domínio domain1
    $ bash asadmin start-domain domain1
  5. Abra o seu navegador e vá para o endereço http://localhost:4848

Pronto! Servidor up and running!

Sunday Jul 21, 2013

OTN Tour 2013 in Latin America

The Oracle Technology Network Tour 2013 has already started, bringing several Oracle and non-Oracle speakers to OUGs (Oracle User Groups) to countries across Latin America. You can check the official OTN Tour 2013 page of the tour to follow up with agenda, dates, speakers and other information. Last year I participated giving talks in Uruguay and Argentina about Oracle WebLogic 12c. That time, I had recently joined Oracle and didn't know much about it. But this year though, I wanted to do more.

Some facts about Latin America
Latin America includes all countries between Mexico and Argentina, most of them who speak Spanish, and where Brazil the only country that speaks Portuguese (not exactly like the one from Portugal, and definitely not like Spanish), and there are other languages too, like French (in French Guiana). These are also know as Romance languages, derived from latin. Spanish is the predominant language and that's why one of the challenges for me as a Product Manager and Java Evangelist here is to communicate with these countries, and taking Spanish classes is just part of the solution. Knowing details about each country and Spanish variations is the "advanced" step. In Mexico for example, chingar is one of these advanced things :-) But it must be used carefuly, for obvious reasons

En Java EE 7, hay un chingo de nuevas APIs.

OUGs+JUGs = Bigger community working together
This tour is slightly different from previous years. There will be much more Java content than before, specially because of the Java EE 7 launch. And local JUGs were invited to join the OUGs that usually organize and coordinate each country. If you want to help, go to this post and provide contact information, for future events. OUGs and JUGs working together is quite a new thing, and I see it as a great thing!! 

Countries for OTN Tour 2013
Here is the full agenda , and in bold where I start.

  • Colombia, 07/12
  • Ecuador, 07/15
  • Guatemala, 07/17
  • Panama, 07/22
  • Costa Rica, 07/24
  • Mexico, 07/26
  • Chile,  08/01
  • Peru, 08/03
  • Uruguay, 08/05 - 08/06
  • Argentina, 08/07 - 08/08
  • Brazil, 08/10

Due to agenda and other conferences, I could not come to the first 3 countries, but I am already on the road to cover the rest, starting with Panama next Monday.

Talks
I proposed a few abstracts to OUGs/JUGs choose which could work best for each country, and here are the topics:

  • GlassFish in Production Environments
  • What WebLogic 12c Has To Offer to Boost Your Productivity
  • What's new in Java EE 7
  • Hands-on for Java EE 7

Photos and videos
I don't have a plan yet on how, when, or if even I will produce videos. But I brought my camera! Let's see how it goes.

Social 
If you want to follow my jorney, connect with my Twitter profile and/or the #OTNTour hashtag.

Join the Tour!!

PS: I will try to write a blog post per country, with pictures, and in the local language. :-) 

 

About


Bruno has been having fun working with Java since 2000 and now helps Oracle on sharing the technology accross all Latin America. Also plays videogames, does trekking and loves beer.

Follow me on Twitter! @brunoborges

Search

Categories
Archives
« August 2015
SunMonTueWedThuFriSat
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
     
Today