Java 7

7 respostas
K

Olá pessoal,

baixei o jdk 7 do endereço: https://jdk7.dev.java.net/
Sei que ainda não é versão final, mas eu quero ir testando e vendo as novidades.
Mas não sei ainda quais são todas as novidades da linguagem. alguém sabe onde consigo um documento dizendo todas as novas features da linguagem?
Quero testar as closures, properties e essas coisas, mas preciso ver como ficou a sintaxe disso tudo, alguém sabe onde encontro o documento que relacione todas elas?

vlws

7 Respostas

P

Sinto cheiro de informação por aqui:

http://today.java.net/lpt/a/421#java-7-features

T

Sr. Keitaro,

Provavelmente não vai dar tempo para implantar as novidades (closures, etc.) no Java 7 (e é por isso que você o baixou e instalou mas ele não dá suporte nenhum a esses novos recursos, como você já deve ter percebido), mas se você quiser baixar um pacote que modifica o JDK de forma que ele seja compatível com a próxima proposta de closures, vá até http://www.javac.info , para poder usar a última versão do compilador.

O sr. Neal Gafter , que está por trás da proposta BGGA de Closures (B = Gilad Bracha, G = Neal Gafter, G = James Gosling, A = Peter von der Ahé ) publica um blog sobre essa modificação em http://gafter.blogspot.com .

K

É thingol, realmente não consegui testar os novos recursos na versão que baixei… Será que até eles lançarem a versão final, vão conseguir incluir todos os novos recursos propostos?? Espero que sim…

Me digam uma coisa, andei vendo um monte de propostas, mas não vi nada falando sobre mais flexibilidade nos Generics, não haverá nenhuma melhoria com relação aos Generics??

T

Há três coisas que deveriam ser feitas para os Generics serem melhores de usar:

  • “Reification” - ou seja, um List<int> ser realmente uma lista do tipo primitivo “int”, não uma coisa proibida
  • “Type inference” - ou seja, em vez de você usar esta declaração complexa:
Map<String,String> map = new TreeMap<String,String>();
for (Map.Entry<String,String> entry : map.entrySet()) {
    System.out.println (entry.getKey() + "=" + entry.getValue());
}

você ter algo mais simples, usando o princípio DRY (Don’t Repeat Yourself)

Map<String,String> map = new TreeMap<>(); // <> abrevia <String,String> neste caso
// ou
var map = new TreeMap<String,String>(); // var abrevia TreeMap<String,String> neste caso
for (var entry : map.entrySet()) { // var abrevia "Map.Entry<String,String> neste caso
    System.out.println (entry.getKey() + "=" + entry.getValue());
}
  • Um “foreach” que fosse mais fácil de usar com Map, como o seguinte:
Map<String,String> map = new TreeMap<String,String>();
for (String key, String value : map.entrySet()) {
    System.out.println (key + "=" + value);
}

As 3 coisas foram já propostas, mas quem se habilita a fazê-las? Veja que algumas dessas coisas estão sendo feitas por gente no projeto Kijaro ( http://kijaro.dev.java.net ). Mas outras estão só nas propostas.

T

A inferência automática de tipos é tão importante, na verdade, que vai fazer parte da próxima versão do C++ (conhecida por C++0X, embora provavelmente não esteja votada antes de 2009) - onde iremos ter um novo sentido para a palavra-chave “auto”, e é central para o uso de LINQ no C# 3.0 (Visual Studio 2008 ).

K

São propostas bem interessantes e inteligentes.

Quanto ao codigo abaixo, particularmente prefiro a primeira forma, onde você declara o tipo (linha 1) do que usar a palavra var.

thingol:

você ter algo mais simples, usando o princípio DRY (Don’t Repeat Yourself)

Map<String,String> map = new TreeMap<>(); // <> abrevia <String,String> neste caso
// ou
var map = new TreeMap<String,String>(); // var abrevia TreeMap<String,String> neste caso
for (var entry : map.entrySet()) { // var abrevia "Map.Entry<String,String> neste caso
    System.out.println (entry.getKey() + "=" + entry.getValue());
}

Mas e quanto a informações do parâmetro Genérico em Runtime ou até mesmo a possibilidade de utilização do mesmo com static methods? Ninguém sente falta disso também?

Quanto ao C++0X, eu li as propostas para a nova especificação há alguns dias e tem muita coisa legal vindo por aí, eu adoro C++ apesar de muitos argumentos que já li contra a linguagem, é legal saber que ainda a estão evoluindo.

T

A “reification” contempla também isso (identificação do parâmetro genérico em tempo de execução). Veja que isso é bastante complexo de implementar, e é por isso que não vi nenhum protótipo desses “rolando” por aí.

Criado 22 de maio de 2008
Ultima resposta 23 de mai. de 2008
Respostas 7
Participantes 3