Java 10 novos apresenta o maior número de explicações user-friendly | programa de Força

Autor | não ler o código, bloggers CSDN

Foto da capa | baixar CSDN da VCG

Produzido | CSDN blogue

Desde o início do Java 9, a Oracle ajustado a versão Java da estratégia de lançamento, já não é uma grande versão do N anos antes, substituído por uma versão pequena de um de seis meses, três anos uma versão grande, o que permitiria a última mudança rápida Java na linha enquanto a pequena versão dos ciclos de manutenção antes do próximo lançamento, grandes versões do período de manutenção é de 3 anos. 10 é uma versão tão pequena, porque os novos recursos antes do follow-up irá incluir a versão básica do Java, então Java ou a mudança trouxe cerca de 10 gravação separado sobre.

PEC 322 - com base no número da versão de tempo

Como visto acima, Java ajustou a estratégia de lançamento, a fim de adaptar-se a este modo de gravação ritmo de liberação, que varia, bem como o número da versão Java.

A nova versão do modelo é: ... $ RECURSO $ INTERCALAR $ ATUALIZAÇÃO $ PATCH

  • $ CARACTERÍSTICA: Baseado na versão de lançamento, como o Java 1010.

  • $ INTERCALAR: Quando correções e melhorias + 1, o padrão é 0.

  • +1 Durante as atualizações compatíveis, novos recursos corrigir problemas de segurança: $ UPDATE.

  • $ PATCH: +1 quando os problemas especiais fixo.

Consulte a sua versão Java 10.

$ Java -version versão java "10.0.1" 2018/04/17 Java (TM) SE Runtime Environment 18,3 (construção 10.0.1 + 10) Java HotSpot (TM) 64-Bit VM Server 18,3 (compilação 10.0.1 + 10, de modo misto)

PEC 286 - inferência de tipos locais

PEC 286 propostas para tornar o Java um aumento da função tipo local inferência (Local-Variable Tipo Inference), o que faz com que Java pode ser como auto JS var ou outras linguagens no mesmo tipo de dados pode ser inferido automaticamente. Esta é realmente apenas um novo açúcar sintático, o fundo não mudou em tempo de compilação foi colocado em tipos var dados concretos, mas esta codificação pode ser reduzido.

Você pode usar esta sintaxe como a seguinte var.

var HashMap = new HashMap < String, String > ; hashMap.put ( "WeChat", "wn8398"); var string = "Olá java 10"; fluxo = var Stream.of (1, 2, 3, 4); lista var = new ArrayList < corda > ;

Se você descompilar o código compilado, você ainda vai encontrar o trecho de código familiar.

HashMap < String, String >  hashmap = new HashMap; hashMap.put ( "WeChat", "wn8398"); String String = "Olá java 10"; córrego < número inteiro >  fluxo = Stream.of (1, 2, 3, 4); ArrayList < corda >  list = new ArrayList;

var pode parecer fácil, na verdade, há muitas restrições, o var oficial introduziu só pode ser usado nas seguintes situações.

  • variáveis locais com a inicialização de apenas o programa.

  • para reforço ou para o circuito de circulação.

  • para declaração loop.

Demonstrar a três o uso seguinte.

TestVar public static void { // case 1, nenhum erro de inicialização // lista var; lista var = List.of (1, 2, 3, 4); // Caso 2 for (var inteiro: lista) { System.out.printlnl (inteiro); } // Caso 3 para (var i = 0; i <  list.size; i ++) { System.out.printlnl (list.get (i)); } }

Embora o uso da cena var adicionou um monte de restrições, mas no uso real você ainda tem que prestar atenção, assim como o código abaixo, você não pode ver o resultado de um tipo de dados.

var query = "xxx"; resultado var = dbUtil.executeQuery (query);

PEC 317 - um compilador JIT baseado em Java (experimental)

Este recurso permite a combinação de Java 10 usado no compilador JIT baseado em plataforma Linux / x64 desenvolvimento Graal Java, este é um compilador JIT experimental, algumas pessoas dizem que isso é Java 10 introduziu o mais futurista. Na verdade, Java 9 Graal foi introduzido, ele traz em Java AOT (antes do tempo) compilação, também suporta vários idiomas, tais como JS, Python, Ruby, R, e outro baseado em JVM (como Java, Kotlin ) e baseado em LLVM (tal como C, C ++) língua.

Graal pode querer passar a usar o seguinte parâmetros JVM.

-XX: + UnlockExperimentalVMOptions -XX: + UseJVMCICompiler

Há uma coisa que eu acho muito interessante, olhar para este gráfico.

Isto é muito interessante, Graal é escrito em Java, escrito em compilador Java, e, em seguida, usado para compilar o bytecode Java para código de máquina.

PEC 310 - compartilhamento de dados de classe

Há uma necessidade de carregar aula de step na memória do início da JVM, mas se houver são múltiplas frasco, um frasco da primeira velocidade de carregamento é o mais lento. Isso prolonga o tempo de início do programa, a fim de reduzir este tempo, Java 10 introduz o compartilhamento de dados de classe de aplicação (CDS) mecanismo, ele pode colocar você quiser classes de acções comuns entre os programas para ser compartilhado entre diferentes processos Java esta classe é a classe para reduzir o espaço ocupado e carregar mais rápido.

PEC 307 - G1 paralelo GC completo

Já em Java 9 tempos em tempos foram introduzidos o coletor de lixo G1, muitas vantagens do G1. No Java 10 ainda feito um pequeno ajustamento no quando G1 segmentos simultâneos podem não recolha rápida conclusão da GC completo, ele liga-se automaticamente para o colector paralelo, o que pode reduzir a taxa de GC no pior dos casos.

PEC 314 - Unicode extensão tag idioma

Esta proposta permite alcançar uma mais prolongados JDK mais recentes normas LDML especificados.

O principal aumento nos próximos métodos de extensão.

java.time.temporal.WeekFields :: de java.util.Calendar :: {getFirstDayOfWeek, getMinimalDaysInWeek} java.util.Currency :: getInstance java.util.Locale :: GetDisplayName java.util.spi.LocaleNameProvider java.text.DateFormat :: get * Instância java.text.DateFormatSymbols :: getInstance java.text.DecimalFormatSymbols :: getInstance java.text.NumberFormat :: get * Instância java.time.format.DateTimeFormatter :: localizedBy java.time.format.DateTimeFormatterBuilder :: getLocalizedDateTimePattern java.time.format.DecimalStyle :: de

Experimente.

chinaCurrency moeda = Currency.getInstance (Locale.CHINA); usCurrency moeda = Currency.getInstance (Locale.US); System.out.println ( "moeda local:" + chinaCurrency); System.out.println ( "moeda dos EUA :." + UsCurrency); Corda displayName = Locale.getDefault.getDisplayName; Corda displayLanguage = Locale.getDefault.getDisplayLanguage; Corda displayCountry = Locale.getDefault.getDisplayCountry; System.out.println ( "nome local:" + displayName); System.out.println ( "língua local:" + displayLanguage); System.out.println ( "Estado local:" + displayCountry); int firstDayOfWeek = Calendar.getInstance.getFirstDayOfWeek; System.out.println ( "dia locais da semana:" + firstDayOfWeek);

Saída.

Moeda Local: CNY moeda dos EUA :. USD Nome Local: Chinês (China) língua local: Chinese Locais País: China dia local da semana: 1

atualização API

Java 10 excluídos alguns API, também acrescentou alguns métodos práticos. Por exemplo, você pode obter uma cópia por coleções imutáveis Collection.copyOf, mesmo se as mudanças coleção elemento original não será afetado.

lista var = new ArrayList < corda > ; list.add ( "WeChat"); list.add ( "wn8398"); lista < corda >  CopyList = List.copyOf (lista); list.add ( "ensaio"); System.out.printlnl (CopyList); // resultado //

Opcional também adiciona um novo método orElseThrow. Chamar esse método também pode obter o opcional no valor, mas se o valor for, ele irá lançar uma exceção.

Também na coleta de dados última Stream, coleção pode ser especificado diretamente Collectors coletadas conjunto imutável assim.

list.stream.collect (Collectors.toUnmodifiableList); list.stream.collect (Collectors.toUnmodifiableSet);

outras atualizações

Java atualizar o conteúdo de mais de 10 destes, logo acima listas do comum e os mais interessantes novos recursos. Existem algumas atualizações, tais como:

  • PEC 312: Thread-Local apertos de mão, as funções internas da JVM, o desempenho JVM pode ser melhorado.

  • PEC 313: ferramenta javah excluído, disse a ser eliminado, de fato, características já estão incluídos no 8 javac Java.

  • PEC 316: deixar a memória da pilha JVM pode ser alocado no dispositivo de armazenamento de reposição (por exemplo, NV-DIMM), sem alterar o código.

  • PEC 319: fornece um conjunto padrão de autoridade de certificação raiz de certificação (CA) no JDK.

Artigos casos foram enviados para Github: / jdk-recurso niumoo

Este artigo CSDN blogger "códigos não lidas" artigos originais, lançamento oficial CSDN autorizado.

Endereço Original: https: //blog.csdn.net/u013735734/article/details/104510202

Como visão racional de 5G taxa up?
Anterior
Sob epidemia cidade fechada, consulte distribuídos cadeia bloco de escritórios Melhores Práticas da empresa
Próximo