Quais novos recursos no java 7 serão implementados? E o que eles estão fazendo agora?
Respostas:
Este é o resumo dos novos recursos do Java 7 da página de recursos do OpenJDK 7 :
vm JSR 292: Suporte para linguagens digitadas dinamicamente (InvokeDynamic) Verificação estrita de arquivo de classe lang JSR 334: Pequenos aprimoramentos de linguagem (Projeto Moeda) arquitetura do carregador de classe de atualização principal Método para fechar um URLClassLoader Simultaneidade e atualizações de coleções (jsr166y) i18n Unicode 6.0 Melhoria de local Local do usuário separado e local da interface do usuário ionet JSR 203: Mais novas APIs de E / S para a plataforma Java (NIO.2) Fornecedor de sistema de arquivos NIO.2 para arquivos zip / jar SCTP (protocolo de transmissão de controle de fluxo) SDP (protocolo Sockets Direct) Use a pilha IPv6 do Windows Vista TLS 1.2 sec criptografia de curva elíptica (ECC) jdbc JDBC 4.1 pipeline XRender do cliente para Java 2D Crie novas APIs de plataforma para recursos gráficos 6u10 Nimbus look-and-feel para Swing Componente Swing JLayer Sintetizador de som Gervill [NOVO] web Atualizar a pilha XML MBeans otimizados de gerenciamento [ATUALIZADO]
isto:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
torna-se:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Você pode declarar mais de um recurso para fechar:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
int one_million = 1_000_000;
String s = ...
switch(s) {
case "quux":
processQuux(s);
// fall-through
case "foo":
case "bar":
processFooOrBar(s);
break;
case "baz":
processBaz(s);
// fall-through
default:
processDefault(s);
break;
}
int binary = 0b1001_1001;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
torna-se:
Map<String, List<String>> anagrams = new HashMap<>();
isto:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
torna-se:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
isto:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
torna-se:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objects
classe, com métodos estáticos para evitar a verificação de referências nulas. Exemplo: if (obj != null && obj.equals(anotherObj))
torna - seif (Objects.equals(obj, anotherObj))
Decore os componentes com a classe JLayer:
A classe JLayer é um decorador flexível e poderoso para componentes Swing. A classe JLayer em Java SE 7 é semelhante em espírito ao projeto do projeto JxLayer em java.net. A classe JLayer foi inicialmente baseada no projeto JXLayer, mas sua API evoluiu separadamente.
Strings in switch Statement :
No JDK 7, podemos usar um objeto String na expressão de uma instrução switch. O compilador Java geralmente gera bytecode mais eficiente a partir de instruções switch que usam objetos String do que instruções if-then-else encadeadas.
Inferência de tipo para instância genérica:
Podemos substituir os argumentos de tipo necessários para invocar o construtor de uma classe genérica por um conjunto vazio de parâmetros de tipo (<>), desde que o compilador possa inferir os argumentos de tipo a partir do contexto. Este par de colchetes angulares é informalmente chamado de diamante. Java SE 7 suporta inferência de tipo limitada para criação de instância genérica; você só pode usar a inferência de tipo se o tipo parametrizado do construtor for óbvio a partir do contexto. Por exemplo, o exemplo a seguir não compila:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Em comparação, o exemplo a seguir compila:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Captura de vários tipos de exceção e relançamento de exceções com verificação de tipo aprimorada:
No Java SE 7 e posterior, um único bloco catch pode manipular mais de um tipo de exceção. Este recurso pode reduzir a duplicação de código. Considere o seguinte código, que contém código duplicado em cada um dos blocos catch:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
Em releases anteriores ao Java SE 7, é difícil criar um método comum para eliminar o código duplicado porque a variável e tem tipos diferentes. O exemplo a seguir, que é válido em Java SE 7 e posterior, elimina o código duplicado:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
A cláusula catch especifica os tipos de exceções que o bloco pode manipular, e cada tipo de exceção é separado por uma barra vertical (|).
O pacote java.nio.file
O java.nio.file
pacote e seu pacote relacionado, java.nio.file.attribute, fornecem suporte abrangente para E / S de arquivos e para acessar o sistema de arquivos. Um provedor de sistema de arquivo zip também está disponível no JDK 7.
Aprimoramentos da linguagem de programação Java @ Java7
Referência oficial Referência
oficial com referência de wiki java8
Simple, Object-Oriented, Portable, Platform independent, Secured...
Além do que John Skeet disse, aqui está uma visão geral do projeto Java 7 . Inclui uma lista e descrição dos recursos.
Nota: o JDK 7 foi lançado em 28 de julho de 2011, então agora você deve ir para o site oficial do java SE .
Mudanças de idioma :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Mudanças na biblioteca :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Mudanças de plataforma :
-support for dynamic languages
Abaixo está o link que explica os recursos recém-adicionados do JAVA 7, a explicação é cristalina com os possíveis pequenos exemplos para cada recurso:
Usando o operador Diamond (<>) para criação de instância genérica
Map<String, List<Trade>> trades = new TreeMap <> ();
Usando strings em instruções switch
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Sublinhado em literais numéricos
int val 12_15; long phoneNo = 01917_999_720L;
Usando uma única instrução catch para lançar múltiplas exceções usando “|” operador
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Não há necessidade de fechar () recursos porque Java 7 fornece instrução try-with-resources
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
literais binários com prefixo “0b” ou “0B”
A lista a seguir contém links para as páginas de aprimoramentos no Java SE 7.
Swing
IO and New IO
Networking
Security
Concurrency Utilities
Rich Internet Applications (RIA)/Deployment
Requesting and Customizing Applet Decoration in Dragg able Applets
Embedding JNLP File in Applet Tag
Deploying without Codebase
Handling Applet Initialization Status with Event Handlers
Java 2D
Java XML – JAXP, JAXB, and JAX-WS
Internationalization
java.lang Package
Multithreaded Custom Class Loaders in Java SE 7
Java Programming Language
Binary Literals
Strings in switch Statements
The try-with-resources Statement
Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
Underscores in Numeric Literals
Type Inference for Generic Instance Creation
Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
Java Virtual Machine (JVM)
Java Virtual Machine Support for Non-Java Languages
Garbage-First Collector
Java HotSpot Virtual Machine Performance Enhancements
JDBC