Java 17.

Mais um lançamento semestral do Java foi disponibilizado dia 14 de Setembro de 2021, a versão 17 do Java.

A versão do Java 17 é LTS(Long Time Support), ou seja, a versão conta com um suporte até 2026 e suporte estendido até 2029.

Como todos os lançamentos, a versão conta com várias atualizações e melhorias, além de 14 JEP’s(JDK Enhancement Proposals).

A Oracle ainda quer deixar mais simples a adesão de licenças que para muitos ainda não é tão clara.

Apesar disso, a Oracle ainda vai disponibilizar versões públicas sob a Licença Pública Geral de código aberto (GPL).

Novidades do Java 17.

Aprimoramento da linguagem:

  • Jep-409 Classes seladas: Adicionado as classes e interfaces seladas que restringem outras classes ou interfaces que podem estendê-las ou implementá-las.

Atualizações e melhorias para bibliotecas:

  • Jep-306 Restaure a semântica de ponto flutuante Always-Strict: semântica de ponto flutuante estrita foram removidas;
  • Jep-356 Gerador de número pseudo-aleatório aprimorado: fornece novos tipos de interface e implementações para geradores de número pseudo-aleatório (PRNGs);
  • Jep-382 Novo pipeline de renderização do macOS: implementa um pipeline Java 2D para macOS usando a API Apple Metal.

Suporte para nova plataforma:

  • Jep-391 mac OS AArch64 Port: Portas do JDK para a plataforma macOS AArch64, a porta permitirá que os aplicativos Java sejam executados nativamente nos novos computadores Apple Silicon baseados no Arm 64.

Programas Java de Prova Futura:

  • Jep-403 Encapsular fortemente JDK: Não será mais possível relaxar o forte encapsulamento de elementos internos por meio de uma única opção de linha de comando, como era possível no JDK 9 ao JDK 16.

Remoção e Descontinuação:

  • Jep-398 descontinuar a API do mini aplicativo para remoção: Todos os navegadores da web removeram o suporte para plug-ins de navegador Java ou anunciaram planos para iniciarem a solução;
  • Jep-407 Remoção do RMI Activation: remoção do mecanismo de ativação de Remote Method Invocation (RMI), preservando o resto do RMI;
  • Jep-410 Remoção do AOT experimental e o compilador JIT: O compilador experimental baseado em Java (AOT) e just-in-time (JIT) foram recursos experimentais que não tiveram muita adoção e foram removidos do código fonte;
  • Jep-411 Descontinuação o Security Manager para Remoção: Descontinuação do do Security Manager remonta ao Java 1.0 para uma futura remoção.

Conclusão.

A comunidade Java junto com a Oracle estão empenhados em entregar a cada lançamento da versão Java novidades e melhorias em todos os pontos, desde produtividade até a segurança do sistema.

Link

Comentários de código e boas práticas.

É muito comum encontrar artigos e livros sobre boas práticas de código, mas é importante manter boas práticas nos comentários também.

Péssimos comentários podem atrapalhar o entendimento do código, “sujar” o código e até confundir a manutenção do código.

Particularmente, eu não sou adepto a codificação com comentários, prefiro um código mais limpo e de fácil entendimento sem comentários.

Mas existem empresas que exigem que os códigos sejam bem documentados com comentários nos códigos.

Como o compilador não interpreta os comentários, é obrigação do desenvolvedor escrever comentários bem escritos.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/2021/comment.html.

Link

STM8f e comunicação serial Java.

Nesse Post vamos utilizar a placa STM8f e executar uma leitura de uma comunicação serial com Java.

O STM8 é bem mais interessante que um microcontrolador PIC, pois a placa já vem montada com led’s de indicação de tensão e teste, facilitando diagnósticos, além dos I/O’s representadas na mesma.

Vamos demonstrar um pequeno teste capturando as informações enviadas na comunicação serial utilizando Java.

Acesse o tutorial completo em: https://nakalabs.herokuapp.com/articles/stm8Java.html.

Link

Spring Webflux.

O Spring Webflux é uma lib do ecossistema Spring para programação reativa.

A programação reativa para Java é uma ótima opção para quem quer uma aplicação não blocante.

Para atender as requisições assíncronas, o Webflux utiliza o servidor Netty que vem embarcado com a lib.

Diferente da programação síncrona, a programação não blocante consegue atender várias requisições simultaneamente.

Mas para que o sistema atenda às requisições simultaneamente, toda infraestrutura precisa ser não blocante.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/2021/webflux.html.

Link

Gradle.

O Gradle tem como propósito principal gerenciar sistemas de build.

Assim como o Maven, o Gradle é facilmente configurável, a diferença é que o Gradle é configurado utilizando json e o Maven xml.

O Gradle e o Maven não são diretamente rivais, inclusive podem se combinar e trabalhar juntos.

Os downloads das dependências tem suporte a Ivy e Maven.

No Gradle podemos tanto gerenciar builds de projetos como criar tarefas isoladas para automatizar processos.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/2021/gradle.html.

Java 16.

https://nakatech.herokuapp.com/img/works/20210424/index.jpg

Dia 16 de Março foi lançada a nova versão do Java, o Java 16.

Obedecendo a cadência de lançamentos semestrais, o Java 16 é a sétima versão nessa modalidade de release da Oracle.

Os lançamentos semestrais tem se mostrado muito eficiente, as capacidades são testadas e avaliadas mais rapidamente, não comprometendo a segurança das API’s.

A Oracle informou que o Java 16 ainda receberá mais algumas atualizações trimestrais até o lançamento do Java 17.

Foram corrigidos 1897 problemas da versão anterior, e o mais interessante é que as correções dos bugs foram divididas entre desenvolvedores individuais, desenvolvedores do meio corporativo e funcionários da própria Oracle.

Novidades do Java 16.

Apesar de várias correções absorvidas pela nova versão do Java 16, vamos listar 5 das que achei mais interessantes:

Novos Recursos de linguagem: Foi introduzido novamente Pattern Matching que aprimora correspondência de padrões para a instanceof.

Melhorias JVM: Foi adicionado Metaespaço Elástico, uma capacidade da JVM que aloca a memória de metaespaço em pedaços menores, reduzindo a carga do carregador de classe.

Novas Ferramentas e Bibliotecas: Uma novidade bem interessante que foi introduzido nas ferramentas Java foi a Ferramenta de Empacotamento que agora permite empacotar a aplicação em formato exe, msi, pkg, dmg, deb e rpm.

Características de Incubadora e Visualização: A API Vector (Incubadora) fornece uma iteração inicial de uma API para expressar cálculos vetoriais que compilam de forma confiável em tempo de execução.

Melhorando a Produtividade para Desenvolvedores OpenJDK: Adicionado Recursos de linguagem C++14 (no código fonte JDK) que permite o uso do C++14 no código-fonte JDK, possibilitando alteração do Hotspot.

Conclusão.

A Oracle vem mostrando que está disposta a competir com outras linguagens, disponibilizando e corrigindo as novas capacidades lançadas. O Java 16 apresenta várias melhorias que deixaram a versão mais eficiente.

Link

O.O Java e Python.

Quando falamos em Orientação a Objetos(O.O), logo já pensamos em Java, C++ ou C#.

Mas existem outras linguagens como Python que também possibilitam a programação Orientada a Objetos.

Nesse Post, vamos apresentar algumas diferenças na sintaxe entre Java e Python utilizando Orientação a Objetos.

Apesar do Python possibilitar uma Programação Orientada a Objetos, ainda acho que existem algumas deficiências, como a impossibilidade de deixar as variáveis privadas.

Outra deficiência é que o Python não disponibiliza utilização de Interfaces de forma natural e fluida.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/2021/pyJava.html.