Guide to Java Versions and Features (Português)

Guide to Java Versions and Features (Português)

Java 8, Java 11, Java 13 — what’s the difference?

pode usar este guia para encontrar e instalar o Java mais recente, compreender as diferenças entre as distribuições de Java (AdoptOpenJdk, OpenJDK, OracleJDK, etc.), bem como obter uma visão geral das funcionalidades da linguagem Java, incluindo versões Java 8-13.,

Você também pode gostar: Além do Java 8

Informações de plano de Fundo

Primeiro, vamos dar uma olhada em algumas comuns, questões de ordem prática que as pessoas têm ao tentar escolher a versão do Java para o seu projeto.

Se quiser saber mais sobre uma versão específica, vá ao site AdoptOpenJDK, escolha a última versão Java, baixe e instale-a. Em seguida, volte para este guia e ainda aprenda uma ou duas coisas sobre diferentes versões Java.

que versão Java devo usar?,

a partir de setembro de 2019, Java 13 é a última versão lançada Java, com versões mais recentes a cada 6 meses-Java 14 está programado para Março de 2020, Java 15 para setembro de 2020, e assim por diante. No passado, os ciclos de lançamento Java foram muito mais longos, até 3-5 anos!.

com muitas novas versões saindo, existem basicamente esses cenários de Uso do mundo real:

  • projetos legados em empresas são muitas vezes presos usando Java 8 (veja a “Por que as empresas ainda estão presas no Java 8?” abaixar). Assim, você será forçado a usar Java 8 também., alguns projetos de legado estão presos no Java 1.5 (lançado em 2004) ou 1.6 (lançado em 2006) – desculpe, pals!
  • Se você está se certificando de usar os mais recentes IDEs, frameworks, e construir ferramentas e iniciar um projeto greenfield, você pode, sem hesitação, usar Java 11 (LTS) ou mesmo o mais recente Java 13.
  • existe o campo especial de desenvolvimento do Android onde a versão Java está basicamente presa no Java 7, com um conjunto específico de recursos Java 8 disponíveis. Ou, você pode mudar para usar a linguagem de programação Kotlin.porque é que as empresas ainda estão presas no Java 8?,

    há uma mistura de diferentes razões pelas quais as empresas ainda estão presas com Java 8. To name a few:

    • Build tools (Maven, Gradle, etc.) and some libraries initially had bugs with versions Java versions > 8 and needed updates. Ainda hoje, por exemplo, com Java 9+, certas ferramentas de compilação imprimem “acesso reflexivo”-avisos ao construir projetos Java, que simplesmente “não se sente pronto”, mesmo que as compilações são boas.
    • té Java 8, você estava basicamente usando as compilações JDK da Oracle e você não tinha que se importar com o licenciamento., A Oracle mudou o esquema de licenciamento em 2019, porém, o que fez com que a Internet enlouquecesse dizendo “Java não é mais livre” — e uma grande quantidade de confusão se seguiu. Isto, no entanto, não é realmente um problema, sobre o qual você aprenderá na seção “distribuições Java” deste guia.
    • algumas empresas têm políticas para apenas usar versões LTS e dependem de seus fornecedores de SO para fornecê-los essas compilações, o que leva tempo.

    para resumir as coisas, você tem uma mistura de questões práticas (atualizando suas ferramentas, bibliotecas, frameworks) e questões políticas.,

    Why Are Some Java Versions Called 1.X?

    versões Java antes de 9 simplesmente tinha um esquema de nomenclatura diferente. Assim, Java 8 também pode ser chamado 1.8, Java 5 pode ser chamado 1.5, etc. Quando você emitiu o comando com estas versões, você tem um resultado como este:

    isto simplesmente significa Java 8. Com a mudança para lançamentos baseados no tempo com Java 9, o esquema de nomenclatura também mudou, e as versões Java não são prefixadas com 1.x não mais. Agora, o número da versão se parece com este:

    Qual é a diferença entre versões Java?, Devo aprender um específico?

    vindo de outras linguagens de programação com grandes quebras entre lançamentos, como por exemplo Python 2 a 3, você pode estar se perguntando se o mesmo se aplica a Java.

    Java é especial a este respeito, uma vez que é extremamente compatível ao contrário. Isso significa que seu programa Java 5 ou 8 é garantido para executar com uma máquina virtual Java 8-13 — com algumas exceções que você não precisa se preocupar com agora.

    obviamente não funciona ao contrário, digamos que seu programa depende de recursos Java 13 que simplesmente não estão disponíveis sob um Java 8 JVM.,

    isto significa um par de coisas:

    • Você não apenas “aprender” uma versão Java específica, como Java 12.
    • em vez disso, você terá uma boa base em todas as funcionalidades da linguagem até Java 8.
    • e então, você pode aprender, com um guia como este, quais recursos adicionais vieram em Java 9-13 e usá-los sempre que puder.

    quais são os exemplos destas novas funcionalidades entre versões Java?

    dê uma olhada na seção” Java Features 8-13 ” abaixo.,

    But as a rule of thumb: The older, longer release-cycles (3-5 years, up until Java 8) meant a lot of new features per release.

    O ciclo de lançamento de seis meses significa menos recursos por lançamento, para que você possa alcançar rapidamente as funcionalidades da linguagem Java 9-13.

    Qual é a diferença entre um JRE e um JDK?

    até agora, nós só temos falado sobre ” Java.”Mas o que é Java exatamente?

    primeiro, você precisa diferenciar entre um JRE (Java Runtime Environment) e um JDK (Java Development Kit).,

    historicamente, você baixava apenas um JRE se estivesse apenas interessado em executar programas Java. A JRE inclui, entre outras coisas, a máquina virtual Java (JVM) e a ferramenta de linha de comando “java”.

    para desenvolver novos programas Java, você precisava baixar um JDK. Um JDK inclui tudo o que o JRE, bem como o compilador javac e um par de outras ferramentas como o javadoc (Java gerador de documentação) e jdb (Java Debugger).porque estou a falar no passado?,

    até Java 8, o site Oracle ofereceu JREs e JDKs como downloads separados — mesmo que o JDK também sempre incluiu um JRE em uma pasta separada. Com o Java 9, Essa distinção basicamente desapareceu, e você está sempre baixando um JDK. A estrutura de diretório do JDKs também mudou, sem ter mais uma pasta JRE explícita.

    assim, mesmo que algumas distribuições (veja a seção “distribuições Java”) ainda oferecem um download JRE separado, parece haver a tendência de oferecer apenas um JDK. Por isso, vamos usar Java e JDK alternadamente a partir de agora.,

    Como instalo Java ou um JDK então?

    Ignore as imagens do ‘Java-Docker’,.embalagens MSI, ou pacotes específicos de plataforma para o momento. No final, Java é apenas um .arquivo zip; nada mais, nada menos.

    Portanto, tudo o que você precisa fazer para instalar Java em sua máquina é desapertar seu jdk-{5-13}.ficheiro zip. Nem precisas de direitos de administrador para isso.,

    você descompactou o arquivo Java será parecido com este:

    A mágica acontece no diretório /bin, que sob o Windows, se parece com isto:

    Directory C:\dev\jdk-11\bin...12.11.2019 19:23 272.736 java.exe...12.11.2019 19:23 20.832 javac.exe...

    Então, tudo o que você precisa fazer é descompactar o arquivo e colocar o diretório /bin no seu PATH variável, assim você pode chamar o ‘java’ comando a partir de qualquer lugar.

    (no caso de você estar se perguntando, instaladores de GUI como o da Oracle ou AdoptOpenJDK vai fazer o desbloqueio e modificar a variável PATH para você, isso é tudo.,)

    para verificar que você instalou Java corretamente, você pode então simplesmente executar . Se a saída se parece com a de baixo, você está pronto para ir!

    agora, resta uma pergunta: onde você obtém esse Java .arquivo zip de? O que nos leva ao tema das distribuições.

    distribuições Java

    há uma variedade de sites que oferecem downloads Java (leia: JDK) e não é claro “quem oferece o quê e com que licenciamento”. Esta secção vai esclarecer isto.,

    o projecto OpenJDK

    em termos de código fonte Java (leia: o código fonte para o seu JRE / JDK), existe apenas um a viver no site do projecto OpenJDK.

    Este é apenas o código fonte, no entanto, não uma compilação distribuível (pense: o seu.ficheiro zip com o comando java compilado para o seu sistema operativo específico). Em teoria, você e eu poderíamos produzir um código fonte, chamá-lo, digamos, MarcoJDK, e começar a distribuí-lo. Mas a nossa distribuição não teria certificação, para podermos legalmente chamar-nos Java SE compatíveis.,

    é por isso que, na prática, há um punhado de fornecedores que realmente criam essas compilações, obtê-las certificadas (veja TCK), e, em seguida, distribuí-las.

    E enquanto os vendedores não podem, por exemplo, remover um método da classe String antes de produzir uma nova construção Java, eles podem adicionar branding (yay!) ou adicionar alguns outros utilitários (por exemplo, CLI) que considerem úteis. Mas fora isso, o código fonte original é o mesmo para todas as distribuições Java.

    OpenJDK Builds (by Oracle) and OracleJDK Builds

    um dos vendedores que constrói Java a partir do código é Oracle., Isso leva a duas distribuições Java diferentes, que podem ser muito confusas no início.

    1. OpenJDK builds by Oracle (!). Estas compilações são livres e sem marca, mas a Oracle não vai lançar atualizações para versões mais antigas, digamos Java 13, Assim que o Java 14 sair.
    2. OracleJDK, que é uma construção comercial de marca, começando com a mudança de licença em 2019. Isto significa que ele pode ser usado gratuitamente durante o desenvolvimento, mas você precisa pagar Oracle se usá-lo na produção. Para isso, você tem um suporte mais longo, ou seja, atualizações para versões e um número de telefone que você pode ligar se o seu JVM ficar louco.,

    agora, historicamente (pre-Java 8), existiam diferenças de fonte reais entre o OpenJDK builds e o OracleJDK builds, onde você poderia dizer que o OracleJDK era ‘melhor’. Mas a partir de hoje, ambas as versões são essencialmente as mesmas, com pequenas diferenças.

    em seguida, resume-se a você que deseja suporte comercial pago (um número de telefone) para a sua versão Java instalada.

    AdoptOpenJDK

    em 2017, um grupo de membros do grupo de Usuários Java, desenvolvedores e vendedores (Amazon, Microsoft, Pivot, Red Hat, e outros) começou uma comunidade chamada Adotopenjdk.,

    eles fornecem free, rock-solid OpenJDK builds com maior disponibilidade / atualizações e até oferecem a escolha de duas máquinas virtuais Java diferentes: HotSpot e OpenJ9.

    i altamente recomendado se você está procurando instalar Java.

    Azul Zulu, Amazon Corretto, SAPMachine

    você vai encontrar uma lista completa de compilações OpenJDK no site da Wikipédia OpenJDK. Entre eles estão Azul Zulu, Amazon Corretto, bem como SapMachine, para citar alguns. Para simplificar demais, resume-se a ter diferentes opções de suporte/garantias de manutenção.,

    mas certifique-se de verificar os sites individuais para saber sobre as vantagens de cada distribuição única.

    recomendação

    Java Features 8-13

    como mencionado no início deste guia: essencialmente todas (não seja exigente agora) Java 8 language features work in Java 13. O mesmo vale para todas as outras versões Java no meio.

    por sua vez, isso significa que todas as funcionalidades da linguagem Java 8 servem como um bom conhecimento da Base Java, e tudo mais (Java 9-13) é praticamente recursos adicionais em cima dessa linha de base.,

    Aqui está uma visão rápida do que as versões específicas têm a oferecer:

    Java 8

    Java 8 foi uma versão massiva e você pode encontrar uma lista de todas as funcionalidades no site do Oracle. Há dois conjuntos principais de recursos que eu gostaria de mencionar aqui:

    características da linguagem: Lambdas, etc.,

    Antes do Java 8, sempre que você queria para instanciar, por exemplo, um novo Blog, você tinha que escrever uma classe interna anônima, assim:

     Runnable runnable = new Runnable(){ @Override public void run(){ System.out.println("Hello world !"); } };

    Com lambdas, o mesmo código tenha esta aparência:

    Runnable runnable = () -> System.out.println("Hello world two!");

    Você também tem o método de referências, repetindo-se as anotações, métodos padrão para interfaces, e alguns outros recursos de linguagem.

    Collections & Streams

    In Java 8, you also got functional-style operations for collections, also known as the Stream API., Um rápido exemplo:

    List<String> list = Arrays.asList("franz", "ferdinand", "fiel", "vom", "pferd");

    Agora, o pré-Java 8, você basicamente tinha que escrever para loops para fazer algo com essa lista.

    Com os Fluxos de API, você pode fazer o seguinte:

    list.stream() .filter(name -> name.startsWith("f")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);

    Java 9

    Java 9 também foi um grande lançamento, com algumas adições:

    Collections

    Coleções tenho um par de novos métodos auxiliares para construir facilmente Listas, Conjuntos e Mapas.,

    List<String> list = List.of("one", "two", "three");Set<String> set = Set.of("one", "two", "three");Map<String, String> map = Map.of("foo", "one", "bar", "two");

    Streams

    Streams got a couple of additions, in the form of takeWhile, dropWhile, and iterate methods.

    Stream<String> stream = Stream.iterate("", s -> s + "s") .takeWhile(s -> s.length() < 10);

    Optionals

    Optionals got the sorely missed ifPresentOrElse method.,

    user.ifPresentOrElse(this::displayAccount, this::displayLogin);

    Interfaces

    Interfaces tem private métodos:

    public interface MyInterface { private static void myPrivateMethod(){ System.out.println("Yay, I am private!"); }}

    Outros Recursos de Linguagem

    E um par de outras melhorias, como uma melhor tentar-com-recursos de instrução ou de diamante operador de extensões.

    JShell

    finalmente, Java tem uma shell onde você pode experimentar comandos simples e obter resultados imediatos.

    % jshell| Welcome to JShell -- Version 9| For an introduction type: /help introjshell> int x = 10x ==> 10

    HTTPClient

    Java 9 trouxe a versão de antevisão inicial de uma nova HttpClient., Até então, o Suporte de Http embutido do Java era bastante baixo nível, e você teve que recuar no uso de bibliotecas de terceiros como o Apache HttpClient ou Okhtttp (que são grandes bibliotecas, btw!).

    com Java 9, Java tem seu próprio cliente moderno-embora este esteja no modo de antevisão, o que significa que ele está sujeito a alterações em versões posteriores Java.

    projecto Jigsaw: Módulos Java e ficheiros Jar multi-Release

    Java 9 têm o sistema de Módulos Jigsaw, que se assemelha à boa e antiga Especificação OSGI., Não está no âmbito deste guia entrar em detalhes completos sobre o Jigsaw, mas dar uma olhada nos links anteriores para saber mais.

    Multi-libertação .arquivos jar tornaram possível ter um .jar file que contém classes diferentes para diferentes versões JVM. Então, seu programa pode se comportar de forma diferente / ter classes diferentes usadas quando executado em Java 8 vs. Java 10, por exemplo.

    Java 10

    houve algumas mudanças no Java 10, como coleta de lixo, etc., Mas a única mudança real que você como desenvolvedor provavelmente verá é a introdução do id

palavra-chave, também chamado de inferência de tipo variável local.

local-Variable Type Inference: var-keyword

// Pre-Java 10String myName = "Marco";// With Java 10var myName = "Marco"

Feels Javascript-y, doesn’t it? Ele ainda é fortemente digitado, porém, e só se aplica a variáveis dentro dos métodos (agradecimentos, dpash, por apontar isso novamente).

Java 11

Java 11 também foi um lançamento um pouco menor, a partir de uma perspectiva de desenvolvimento.,

Seqüências de caracteres & Arquivos

Strings e arquivos tem um par de novos métodos de (nem todos os listados aqui):

Executar Arquivos de Origem

Começando com Java 10, você pode executar arquivos de origem Java sem ter que compilá-los primeiro. Um passo em direcção ao guião.

ubuntu@DESKTOP-168M0IF:~$ java MyScript.java

Local-Tipo de Variável de Inferência (var) para os Parâmetros Lambda

O título diz tudo:

(var firstName, var lastName) -> firstName + lastName

HttpClient

HttpClient a partir do Java 9 em seu final, não versão de pré-visualização.,

Other Goodies

Flight Recorder, No-Op Garbage Collector, Nashorn-Javascript-Engine depreciado, etc.

Java 12

Java 12 tem algumas funcionalidades novas e limpezas, mas as únicas que vale a pena mencionar aqui são o Suporte do Unicode 11 e uma antevisão da nova expressão switch, que você verá coberta na próxima secção.

Java 13

pode encontrar aqui uma lista completa de funcionalidades, mas, essencialmente, está a obter o Unicode 12.,1 suporte, assim como duas funcionalidades de antevisão novas ou melhoradas (sujeitas a alterações no futuro):

Switch Expression (Preview)

Switch expressions pode agora devolver um valor., E você pode usar um lambda-sintaxe de estilo para as suas expressões, sem cair por ruptura/problemas:

interruptor de Idade demonstrações ficou assim:

switch(status) { case SUBSCRIBER: // code block break; case FREE_TRIAL: // code block break; default: // code block}

Considerando que com Java 13, declarações switch pode olhar como este:

Multiline Cadeias de caracteres (pré-Visualização)

Você pode, finalmente, fazer isso em Java:

Java 14 e, mais Tarde

Será abordado aqui, assim que forem ficando liberado. Volte em breve!,

conclusão

por esta altura, deverá ter uma boa visão geral de algumas coisas:

  • Como instalar Java, qual a versão a obter, e de onde obtê-la (sugestão: AdoptOpenJDK).
  • O Que é uma distribuição Java, quais existem, e quais são as diferenças.
  • Quais são as diferenças entre versões Java específicas.

Feedback, correções e entrada aleatória são sempre bem-vindos! Basta deixar um comentário lá em baixo.obrigado pela leitura!

há mais onde isso veio de

este artigo apareceu originalmente em www.marcobehler.,com / written as part of a series of guides on modern Java programming. Para encontrar mais guias, visite o site ou subscreva a newsletter para ser notificado dos novos guias publicados: https://bit.ly/2K0Ao4F.

agradecimentos

Stephen Colebourne escreveu um artigo fantástico sobre as diferentes distribuições Java disponíveis. Obrigado, Stephen!

Leitura Adicional

JVM Ecosystem Survey: Why Devs Aren’T Switching to Java 11

Beyond Java 8

Quando É Que o Java 11 irá substituir o Java 8 Como o Java predefinido?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *