[Java 7] As alterações aprovadas:

muito legal! curti pra caramba :stuck_out_tongue:

Java 7 What`s New, Performance Benchmark 1.5 1.6 1.7
http://www.taranfx.com/blog/?p=1754

Tem também o invokedynamic, quem sabe aumente a velocidade das chamadas aos métodos via reflection (o que vários frameworks fazem, como o hibernate, ou os mvcs web)

Melhor do que isso parece que ta difícil.

Acredito que é desnecessário. Gosto de closures, no entanto, em breve, quem sabe, pode ser possível você implementar o seu próprio closure utilizando o MPS (Meta Programming System), por exemplo. Vamos esperar o MPS amadurecer e ver se será aceito pela comunidade.

Acredito que é desnecessário. Gosto de closures, no entanto, em breve, quem sabe, pode ser possível você implementar o seu próprio closure utilizando o MPS (Meta Programming System), por exemplo. Vamos esperar o MPS amadurecer e ver se será aceito pela comunidade.[/quote]

Sem querer ser chato mas seu posto mostra o estado atual do Java onde nada é de graça mais. Quer closures, leva um framework. Não sei qual o nome disto mais é além do que cancer do ponto e vírgula.

Sim. É verdade. No entanto, eu penso que estão surgindo muitas outras linguagens e ferramentas como opção e acho um tanto injusto ficar esperando tanto do java 7. Acho que a tendência é migrar para novas linguagens e/ou DSL. No caso da DSL algumas ferramentas já estão criando formas de você reaproveitar sintaxe, expressões e etc… então, seria possível você herdar uma DSL idêntica ao java e implementar você mesmo os novos recursos de linguagem que você almeja. Pode ser que tenha uma curva de aprendizagem alta, mas tornaria muito mais fácil a evolução desta linguagem por uma comunidade que esteja interessada e ativa.

Acho que não vai haver mais nenhuma otimização quanto a propria jvm. O que tinham planejado sobre o java Kernel que ia sair pro Java 7 já foi lançado no Java 6_u12 ou 16 nao lembro.

Falando de DSLs e outras linguagens, me apaixonei por esta aqui:

http://www.scala-lang.org/node/138

Fora o GCG1 o novo Garbage Colector.
E mais umas coisinhas.

[quote=Bruno Laturner]http://www.infoq.com/articles/java7-module-system

Basicamente é para não deixar que APIs internas sejam vistas por classes de fora, e também facilitar a distribuição das APIs em partes, conforme elas são necessitadas.

Antes só tenho que avisar que é bem capaz dessa JSR não sair, até hoje não chegaram num acordo. Sem falar que veio o Projeto Jigsaw como uma espécie de concorrente, e também o OSGi que suprem bastante do que essa modularização visa a resolver.[/quote]

Valew pela explicação. Achei complicado, acho que também não sai.
Mas eu queria mais coisas no Swing (JTable). O coitado leva séculos para ganhar melhorias e eu sou um dos poucos que torce por ele :frowning:

Quanto ao multicatch, é uma proposta bem simples e fácil de implementar. Espero que venha no java 7.
Para quem não entendeu o que ela é:

try { fazerAlgo(); } catch (MeuPrimeiroException ex) { tratar(ex); } catch (MeuSegundoException ex) { tratar(ex); } catch (MeuTerceiroException ex) { tratar(ex); }Ficaria assim:try { fazerAlgo(); } catch (MeuPrimeiroException | MeuSegundoException | MeuTerceiroException ex) { tratar(ex); }
O tratamento no catch é o mesmo para todas estas exceções. A variável ex é do tipo da superclasse em comum a todas as exceções declaradas (normalmente Exception).

Mais além:

[code]public void foo() throws IOException, SQLException, FooException {
// …
}

public void goo() throws IOException, SQLException, FooException {
try {
foo();
} catch (final Throwable ex) {
fazerLog(ex);
throw ex;
}
}[/code]No java 6 este código não compila porque o throw do método goo() é para Throwable e a cláusula throws não contém Throwable. Já o compilador do java 7 será mais inteligente, ele verá que o corpo do try lança IOException, SQLException e FooException declaradas e possivelmente RuntimeException e Error que nunca são relevantes. O compilador detectará isso e saberá que o Throwable do catch deverá ser de uma dessas cinco classes ou possíveis subclasses (as três exceções declaradas por foo() mais RuntimeException e Error). Logo, Throwable não precisa ser declarado na cláusula throws, apenas as exceções que estão no corpo do try do método goo().

Sim. É verdade. No entanto, eu penso que estão surgindo muitas outras linguagens e ferramentas como opção e acho um tanto injusto ficar esperando tanto do java 7. Acho que a tendência é migrar para novas linguagens e/ou DSL. No caso da DSL algumas ferramentas já estão criando formas de você reaproveitar sintaxe, expressões e etc… então, seria possível você herdar uma DSL idêntica ao java e implementar você mesmo os novos recursos de linguagem que você almeja. Pode ser que tenha uma curva de aprendizagem alta, mas tornaria muito mais fácil a evolução desta linguagem por uma comunidade que esteja interessada e ativa.[/quote]

Se for herdar uma DSL idêntica do Java então não será uma DSL porque java não é uma DSL. Acho que esta fazendo alguma confusão. Uma característica das DSLs é terem uma curva de aprendizagem baixa. Voce deve estar falando de DSLs externas, é isso?

Bem, eu queria uma ferramenta decente para construir interfaces desktop, ao inves de uma IDE que usa 2 gb de memoria.

[quote=Mark_Ameba]Os safe-null operators sairam mesmo?

Até onde vi tava planejado mas não ia sair.

Isso seria algo muito interessante.

Não gosto de switchs então vou continuar não usando mesmo aceitando Strings.[/quote]

Sim Mark, vão sair.

[]s,

[quote=victorwss]Quanto ao multicatch, é uma proposta bem simples e fácil de implementar. Espero que venha no java 7.
[/quote]

Pelo que o Darcy disse (embora haja uma implementação do multicatch, infelizmente no protótipo do Gafter para closures - http://www.javac.info ) , cujo fonte não foi publicado), o multicatch não irá aparecer no Java 7. Alguma coisa deve ter sido descoberta pelo Gafter que deixa, na verdade, essa história do multicatch mais complexa que parece.

A curva de aprendizagem é baixa para ser usuário de uma DSL, no entanto, para você criar sua DSL a curva é altíssima. Por isso esperamos que surjam boas IDE’s (DSL Workbench) e boas linguagens para ajudar na criação de DSL. Se você já tem uma DSL para um domínio especifico pronta, pq não reaproveitá-la para então customizá-la? Ainda tem muita água pra rolar quanto a isso e discutir isso aqui vai chegar em lugar nenhum, rsrs :wink: Dê uma procurada pelos artigos do Fowler sobre DSL Workbench.

Obs: sim, estou falando de DSL Externa.

Até o PHP já tinha isso a anos…

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;   
} 

[quote=Thiago Senna]
[…]e boas linguagens para ajudar na criação de DSL.[…][/quote]

Essas ja existem. Procure por Groovy, Scala, Clojure. Mas obviamente estou falando de DSLs internas que são relativamente mais fáceis de serem criadas.

E a nova API de Data e Hora, o que acham ? rsrs

javax.time

Por exemplo, para subtrair quatro anos de uma data

date = date.withYear(2009).withMonthOfYear(5).withDayOfMonth(10);                           

date = date.minusYears(4);

Que mudança !

sobrecarga de operadores, nada né?

[code]

	BigDecimal s1 = new BigDecimal("10");
	BigDecimal s2 = new BigDecimal("10");
	
	BigDecimal result = s1 + s2;[/code]

odeio esses métodos add, sub, e afins do BigDecimal. O código fica totalmente ilegivel, alé de ser totalmente improdutivo.

talvez no java 8? :frowning:

O que me deixa cheateado é que certas “coisinhas” poderiam ser implementadas sem nenhum problema… apenas alterando o proprio javac… e nao a VM (como no caso do bigdecimal , do Multicatch) e os caras simplesmente se negam a fazer isso…

é lamentavel…