Se você já tem algum tempo de estrada trabalhando com desenvolvimento, vai concordar comigo que o Java domina o mercado de desenvolvimento de software há décadas.
As estatísticas nos mostram que Java deve permanecer no mercado por muito tempo e esses são alguns dos motivos:
1) Vários dos softwares desenvolvidos em Java precisam ser mantidos e/ou migrados.
2) É muito comum migrações Java para novas versões da linguagem, 3) além do crescente desenvolvimento de novos softwares usando a linguagem.
![java 11](https://zup.com.br/wp-content/uploads/2021/03/5d6fc8fa1698641baefe3e2d_java-11.png)
A vez do Java 11
Existem várias distribuições do Kit de Desenvolvimento para Java, o famoso JDK. Em Janeiro de 2019 a Oracle não dará mais suporte para o Java 8 a última versão LTS (Long Team Suport) é interessante migrar aplicações críticas bem como desenvolver novas aplicações utilizando Java 11 que também é LTS e para ajudar a escolher qual distribuição do Java você deve utilizar escrevi este outro post (link)
A migração do Java 8 para o Java 11 está acontecendo:
![funcionalidades java](https://zup.com.br/wp-content/uploads/2021/03/5d6fc97e59e5517da0052e92_funcionalidades-java.png)
Leia também Java vs Kotlin: Vantagens, Desvantagens e Performance
Funcionalidades Java 11
Execute um arquivo Java com um único comando
Antes era preciso compilar um arquivo Java usando javac primeiro, agora você pode usar o comando java diretamente e a compilação vai ser implícita antes da execução. Essa funcionalidade chegou após a especificação JEP 330.
Métodos java String
isBlank() – A instância retorna um valor boolean caso a string esteja em branco ou haja espaço em banco.
<p> CODE: https://gist.github.com/maluaraujo/1d5c351c8d12c75f30eb951e031fd827.js</p>
lines() – Este método retorna uma matriz de strings que é uma coleção de todas as substrings divididas por linhas.
<p> CODE: https://gist.github.com/maluaraujo/d1fe2097195b164e805efd8e6d90ab56.js</p>
Saída
<p> CODE: https://gist.github.com/maluaraujo/5a84e5dbb06d49b6057d3a84c462cd19.js</p>
strip() – evolução do método trim, pois o mesmo não previa unicode, remove espaços do início e no fim da string, stripLeading() remove espaços a esquerda, stripTrailing() remove espaços a direita.
<p> CODE: https://gist.github.com/maluaraujo/5355d778e4390b1fb7f8834f1dd99a3b.js</p>
Saída
<p> CODE: https://gist.github.com/maluaraujo/b9ccd20791d3e82d33d76d5eb775d648.js</p>
repeat(int) – O método repeat simplesmente repete a string a quantidade de vezes que foi passado em parâmetro, como mencionado no método na forma de um int.
<p> CODE: https://gist.github.com/maluaraujo/3296d07bbcd81772ba93fb353a4b8ab8.js</p>
Sintaxe da variável local para parâmetro Lambda
O JEP 323 permite que var seja usado para declarar os parâmetros formais de uma expressão lambda implicitamente tipada.
<p> CODE: https://gist.github.com/maluaraujo/aace0099315127ab023750620c88363b.js</p>
Limitação deste recurso
Você deve especificar o tipo var em todos os parâmetros ou nenhum.
Coisas como as seguintes não são possíveis:
<p> CODE: https://gist.github.com/maluaraujo/d9e2e670a6b68ff068b64a2736aa52f4.js</p>
Ler e Gravar Strings de/para arquivos
O Java 11 se esforça para tornar a leitura e gravação de String conveniente. Ele introduziu os seguintes métodos para ler e gravar em / dos arquivos readString() writeString().
<p> CODE: https://gist.github.com/maluaraujo/4e766b2f5841b60b9ad8b98ec8e2b8e4.js</p>
Java é pago?
![blog da zup](https://zup.com.br/wp-content/uploads/2021/03/5d77f357c494dd226500a4fb_java-11.png)
Vejo bastante confusão sobre o Java e seus SDKs (Kits de Desenvolvimento de Software) disponíveis. Você pode ter ouvido o Java SDK ser chamado de JDK. Eles são um e o mesmo.
Java SE (Standard Edition) é uma especificação que é governada pelo JCP (Java Community Process). Esse processo decide o que entra ou é removido do JDK do Java. Qualquer um pode implementar a especificação Java.
Se eles passarem pelo TCK (Kit de compatibilidade de teste) serão considerados um JDK viável.
A confusão em torno do Java SDK teve início por dois eventos:
Java começou a lançar novas versões principais a cada seis meses e Oracle mudou seu modelo de suporte para Java.
A Oracle agora distribui duas compilações do JDK: Oracle JDK e Oracle OpenJDK. A versão Oracle JDK exige licença, veja aqui o valor.
Já o Oracle Open JDK é gratuito para desenvolvimento e teste, mas você tem que pagar por isso se usá-lo em produção, “JDK in production requires a commercial license”.
Entenda melhor aqui.
Opções do Java SDK
Atualmente, o único código-fonte para o JDK está no projeto OpenJDK. Você pode verificar o código fonte do OpenJDK e construí-lo você mesmo, se quiser. No entanto, não é considerado “compatível com Java SE”, a menos que passe no TCK.
Além disso, você não pode chamá-lo de “Java SE” sem obter uma licença da Oracle.
Existem muitas opções do Java SDK além do Oracle.
Vamos dar uma olhada nos principais e quando usá-los.
AdoptOpenJDK
AdoptOpenJDK é uma comunidade e código que constroem binários OpenJDK gratuitos, publicados para o site adoptopenjdk.net..
Os binários são publicados por cinco anos após o lançamento inicial da versão. Os builds estão disponíveis para OpenJ9 (IBM’s JVM) e HotSpot.
O que é o OpenJ9?
De acordo com o site AdoptOpenJDK, o OpenJ9 é uma JVM projetada para uso com pouca memória e tempo de inicialização rápido. Uma JVM executa o bytecode Java compilado, enquanto a linguagem Java fornece uma sintaxe de como produzir esse bytecode.
As construções AdoptOpenJDK não são testadas com o TCK devido um desacordo com a Oracle. Eles testam com um conjunto de testes funcionais, de integração e de desempenho. Eles também testam bibliotecas, linguagens e aplicativos de frameworks populares.
Amazon Corretto
A Amazon é o novo fornecedor do bloco que oferece versões do OpenJDK em aws.amazon.com/corretto. O Amazon Corretto 8 (baseado no Java 8) está em pré-visualização.
Não há nenhuma versão do Java 11 disponível. Corretto 11 está programado para ser lançado no segundo trimestre de 2019. GA para Corretto 8 é Q1. Corretto é o único que tem suporte de longo prazo sem custo da Amazon e suas construções passaram pelo TCK.
Atualmente, o suporte a Java 8 está previsto para ser executado até junho de 2023.
Todas as instâncias do AWS que executam o Java usam Corretto por padrão.
Azul Zulu
Azul constrói e publica o Zulu em azul.com/downloads/zulu. É uma versão do OpenJDK que foi aprovada pelo TCK e é totalmente compatível com o padrão Java SE. O Zulu Enterprise é a oferta comercial da Azul com suporte pago. Ele fornece suporte de longo prazo por oito anos após o lançamento inicial da versão.
A plataforma Azure da Microsoft usa o Zulu para seu suporte a Java.
OpenJDK da Oracle
O Oracle constrói e publica o OpenJDK em jdk.java.net. Os binários só são publicados nos primeiros seis meses após um lançamento importante. A versão comercial de marca (que não pode ser usada na produção sem o pagamento do Oracle) está disponível em oracle.com/technetwork/java/javase/downloads.
jdk.java.net é onde as compilações do OpenJDK da Oracle são publicadas para download, o openjdk.java.net é o próprio projeto OpenJDK.
Red Hat
A Red Hat distribui as compilações OpenJDK via Red Hat Enterprise Linux, um produto comercial. Ele também tem um projeto IcedTea que cria o OpenJDK e adiciona alguns recursos. No entanto, não parece ser muito ativo (não há suporte para Java 11) e você quase não ouve mais falar sobre isso.
Qual distribuição JDK você deve usar?
Creio que deve ser utilizados vários parâmetros para esta decisão. Se você já está utilizando uma plataforma como Amazon, Azure e OpenShift (RedHat) considere fortemente usar a versão OpenJDK deles aproveitando o suporte oferecido por cada grande empresa. Eu acredito no opensource e por isso minha escolha iria com certeza no AdoptOpenJDK ou até mesmo no OpenJDK da Oracle.
Opções de OpenJDK
- AdoptOpenJDK
- Amazon Corretto
- Azul Zulu
- BellSoft Liberica
- IBM
- Oracle JDK
- Oracle OpenJDK
- Ojdkbuild
- RedHat
- SapMachine
Ainda ficou com alguma dúvida sobre Java 11? Conta pra gente nos comentários.
Newsletter sobre desenvolvimento
Quer receber os melhores conteúdos sobre desenvolvimento no seu e-mail toda semana? Assine abaixo nossa newsletter.