quarta-feira, 22 de março de 2017

Java 9 trará ajustes de limite de memória em containers Docker

O Java 9 ganhou uma mudança experimental para que a JVM consiga perceber que está rodando dentro de um container e ajuste os limites de memória de forma apropriada. Apesar do aumento da popularidade dos containers nos últimos anos, muitas ferramentas, incluindo a JVM, ainda dependem dos parâmetros do host para avaliar os recursos disponíveis, muitas vezes ficando sem memória com mensagens de erro desconcertantes. Essa mudança, que pode estar disponível para o público assim que o Java 9 for lançado, tenta prevenir vários destes cenários.

Tecnologias Container como Docker, Heroku ou Kubernetes são uma forma de máquinas virtuais leves baseadas no sistema operacional Linux. Assim, elas podem fornecer uma funcionalidade muito parecida com as máquinas virtuais mais rápidas e consumindo menos recursos, mas existem algumas desvantagens: enquanto as máquinas virtuais completas simulam uma pilha inteira de hardware dedicado, o que significa que o software existente funciona principalmente como esperado, as tecnologias de containers usam o hardware e o sistema operacional do host, o que significa que o software que se baseia em informações do host pode ignorar as restrições extras que os containers impõem.

Na JVM, se o limite máximo da memória é definido com -Xmx, ela irá configurá-lo como uma fração da memória física (tipicamente ¼, mas pode variar), e isso pode não levar em conta os limites impostos pelo container. A mudança proposta tenta prevenir esse problema ao verificar se a JVM está rodando dentro de um Control Group ou cgroup, uma tecnologia Linux como a maioria das tecnologias de container usadas para impor limites no uso de hardware e outros recursos. Se a JVM detecta que está dentro de um cgroup, ela tentará encontrar o limite de memória definido no container e considerará esse limite como a memória física disponível. Como ainda é experimental, a novidade somente será aplicada se ativada com a opção -XX:+UseCGroupMemoryLimitForHeap.

Incorporado ao Kernel do Linux em 2008 e redesenhado em 2013, o cgroups isola o uso de recursos e permite que aplicações controlem o acesso a memória, CPU, IO e rede, entre outros. Diferentes aplicações podem criar sua própria hierarquia de cgroups com limites diferentes por grupos, o que significa que uma aplicação não conhece, a priori, o grupo que a mesma irá executar. É por isso que a JVM só pode fazer uma suposição sobre cgroups e o limite de memória, divulgou o site InfoQ.

Fonte: Imasters

Google lança primeiro developer preview do Android O

Já faz um ano que o Google anunciou o primeiro preview do Android Nougat. Hoje, a empresa lançou o primeiro developer preview da próxima versão do seu sistema operacional móvel, atualmente batizado de Android O.

“Para este lançamento, queríamos nos concentrar em dar aos desenvolvedores tempo para testar compatibilidade, explorar novos recursos e enviar comentários que ajudarão a fazer do Android O uma ótima plataforma”, disse um porta-voz do Google ao site TechCrunch.

Entre as novidades do Android O estão:

Notificações: o Android O adicionou um novo recurso chamado de notification channels. Isso vai dar aos desenvolvedores a capacidade de agrupar notificações de seus aplicativos em grupos (digamos que você tem um aplicativo de notícias e deseja agrupar notificações por “política” ou “tecnologia”, por exemplo). Os usuários serão capazes de gerenciar essas notificações com base nesses canais.

Picture in Picture: os aplicativos de vídeo do Android O poderão se colocar em um modo Picture in Picture para que o vídeo continue sendo reproduzido depois de alternar para um aplicativo diferente.

Suporte para multitela: esse recurso parece estar voltados tanto para novos tipos de dispositivos quanto para Android no Chrome OS. Com isso, os desenvolvedores poderão lançar uma atividade em uma tela remota.

Navegação por teclado: esse recurso é voltado para Android Apps no Chrome OS e permitirá aos desenvolvedores dar melhor suporte para a navegação por seta e aba em seus aplicativos. “Com o advento do Android Apps no Chrome OS, estamos vendo um ressurgimento do uso de navegação por teclado em aplicativos Android”, diz o Google no anúncio de hoje.

Limites de background: os últimos lançamentos do Android colocaram uma ênfase pesada em melhorar a vida da bateria. O Android O coloca limites automáticos sobre o que um aplicativo pode fazer enquanto está no segundo plano. Esses limites se concentram em três áreas: transmissões implícitas, serviços em background e atualizações de localização. Para os desenvolvedores, isso pode realmente ser o mais abrangente dos novos recursos no Android O.

Novos recursos Wi-Fi: o Android O está adicionando suporte para alguns (relativamente) novos recursos de conectividade. O sistema operacional atualizado oferecerá suporte para mais recursos Wi-Fi Aware, como Neighborhood Aware Networking (NAN). NAN facilita a comunicação entre aplicativos e dispositivos sem um ponto de acesso à Internet no meio (ou qualquer conexão à Internet). O Google diz que está trabalhando com parceiros para oferecer suporte para NAN nos dispositivos “o mais rápido possível”.

Melhor interoperabilidade para aplicativos de chamada: o Android O facilitará a chamada de aplicativos para conversarem entre si e fazer chamadas pela rede de operadoras. Os desenvolvedores agora serão capazes de usar o novo framework Telecom para construir sua própria interface de usuário para fazer chamadas, e as chamadas serão exibidas e controláveis através de dispositivos Bluetooth com telas, como você encontraria em um carro.

Existem outros novos recursos e ajustes, que incluem ícones adaptáveis, suporte para monitores de cores amplas, suporte para codecs de áudio Bluetooth de alta qualidade, uma nova API de áudio nativa, melhor suporte para fontes e um WebView aprimorado que tem o modo multiprocesso habilitado por padrão.

O Google também observa que o Android O irá suportar uma série de novas APIs Java e que o Android Runtime agora é significativamente mais rápido, com alguns benchmarks registrando uma melhoria de 2x.

Como no ano passado, o Google promete que vai dar detalhes sobre o Android O na conferência de desenvolvedores I/O em maio. Se a empresa seguir o mesmo cronograma de lançamento do ano passado, provavelmente veremos os primeiros dispositivos com o Android O em um evento de hardware do Google em outubro.

Fonte: Imasters

Android ganha suporte para recursos de linguagem do Java 8

A equipe de desenvolvimento do Android revelou nesta semana que decidiu adicionar suporte para recursos de linguagem do Java 8 diretamente ao conjunto de ferramentas atual javac e dx e depreciar a toolchain Jack. Com essa mudança, as ferramentas existentes e os plugins dependentes do formato de arquivo de classe Java devem continuar a funcionar. Além disso, os recursos de linguagem do Java 8 serão nativamente suportados pelo sistema de build do Android. A equipe pretende lançar isso como parte do Android Studio nas próximas semanas.

Inicialmente, os devs do Android testaram a adição de suporte para Java 8 através da toolchain Jack. Com o tempo, eles perceberam que o custo de mudar para Jack era muito alto para a comunidade, quando eles consideraram os processadores de anotação, analisadores de bytecode e rewriters impactados.

A equipe espera que o novo plano possa fazer com que todos aproveitem os recursos da linguagem Java 8 no Android.

Fonte: Imasters

terça-feira, 14 de março de 2017

Java EE 8, Quando mesmo?

No blog da oracle, foi anunciada as datas do cronograma de lançamento do JAVA EE 8, segue abaixo:

Apesar do mês de fevereiro ser curto, para o Java foi um mês de muito trabalho

A programação da plataforma Java EE 8 (JSR 366) foi atualizada da seguinte forma:

Revisão Pública - Abr / Mai 2017
Projeto Final Proposto - Junho de 2017
Versão Final - Julho de 2017 (!)

O período de revisão pública do CDI 2.0 está quase concluído, portanto, certifique-se de fornecer seu feedback para o JSR 365 ,ou seja, ... agora!

O JAX-RS 2.1 Early Draft está quase pronto; Veja aqui para obter um detalhe maior. Neste projeto, a API de eventos enviados pelo servidor mudou bastante. Para mais detalhes, verifique aqui e aqui (JAX-RS 2.1 m04).

O Bean Validation 2.0 (JSR 380) EG lançou um Early Draft. Para saber mais sobre o BV 2.0, você pode querer ouvir este episódio do JBoss Community Asylum.

Servlet 4.0 (JSR 369) passou com êxito a sua votação de renovação e, entretanto, o Servlet EG está evoluindo em relação ao seu Early Draft.

A API de Segurança (JSR 375) EG também está na etapa de preparar seu Rascunho Inicial.

Também foi anunciado que há a intenção de fazer uma Release JPA Maintenance para Java EE 8.

JSF 2.3 e JSON-P 1.1 já entraram no período da Balança de Revisão Pública. Isso significa que essas 2 especificações estão ficando muito perto de ser finalizado!

Finalmente e se você quiser contribuir, certifique-se de assistir ao 2o Webcast Adopt-A-JSR que foi recentemente publicado pelo JCP.

Fonte: Oracle´s Blog