Novidades Java 7 – Project Coin
Na semana passada estive presente na festa de lançamento do Java 7, durante o TDC 2011 e foi bem legal. Fiquei ansiosa por usar o Java 7, e decidi ir pra casa brincar um pouco com as novas features.
Fotos do evento: http://www.flickr.com/photos/loiane/sets/72157627015952961/
Vídeo do Evento (Oracle): http://blogs.oracle.com/java/entry/java_7_celebration_begins
Slides: http://blogs.oracle.com/darcy/resource/ProjectCoin/CoinLaunch.pdf
Sempre acompanhava blogs e fóruns com a lista das novidades, mas nem todas entraram para essa release. Neste post vou listar e dar exemplos das que realmente entraram.
O primeiro passo é fazer download do Java 7. Nesse caso usei Windows mesmo (:/).
Como a Oracle só vai lançar o Java de verdade no fim do mês de julho (2011), o Eclipse ainda não tem suporte nativo. Tem apenas um plugin que está na versão beta. Decidi não usar.
Vou então usar o NetBeans, que já está com suporte ao Java 7. Se você instalar o Java 7 e depois instalar o NetBeans, vai perceber que a JDK padrão já é a versão 7.
Quando criar um projeto Java no NetBeans, o compilador do projeto será Java 7, mas o compilador do código fonte ainda vai estar na versão 6. Para funcionar com o Java 7, é necessária fazer uma pequena mudança.
Vamos então começar a brincar com o Project Coin:
Strings in Switch:
Para todos os exemplo, tentei primeiro escrever o código como escrevemos hoje (Java 6) para depois tentar converter para o Java 7. O legal do NetBeans, é que ele já vem com algumas dicas de mudanças e faz isso automaticamente pra gente.
Primeiro, fiz comparação de Strings com if-else. O NetBeansme mostrou um warning sugerindo para trocar:
E se aceitar a mudança, vai trocar para:
E o código:
Antes:
public void testStringInSwitch(String param){
final String JAVA5 = "Java 5";
final String JAVA6 = "Java 6";
final String JAVA7 = "Java 7";
if (param.equals(JAVA5)){
System.out.println(JAVA5);
} else if (param.equals(JAVA6)){
System.out.println(JAVA6);
} else if (param.equals(JAVA7)){
System.out.println(JAVA7);
}
}
Java7:
public void testStringInSwitch(String param){
final String JAVA5 = "Java 5";
final String JAVA6 = "Java 6";
final String JAVA7 = "Java 7";
switch (param) {
case JAVA5:
System.out.println(JAVA5);
break;
case JAVA6:
System.out.println(JAVA6);
break;
case JAVA7:
System.out.println(JAVA7);
break;
}
}
Binary Literals:
Antes:
public void testBinaryIntegralLiterals(){
int binary = 8;
if (binary == 8){
System.out.println(true);
} else{
System.out.println(false);
}
}
Java7:
public void testBinaryIntegralLiterals(){
int binary = 0b1000; //2^3 = 8
if (binary == 8){
System.out.println(true);
} else{
System.out.println(false);
}
}
O NetBeans também dá dica para trocar um número literal para um binário literal:
Para
public void testUnderscoresNumericLiterals() {
int oneMillion_ = 1_000_000;
int oneMillion = 1000000;
if (oneMillion_ == oneMillion){
System.out.println(true);
} else{
System.out.println(false);
}
}
Underscore Between Literals:
public void testUnderscoresNumericLiterals() {
int oneMillion_ = 1_000_000; //new
int oneMillion = 1000000;
if (oneMillion_ == oneMillion){
System.out.println(true);
} else{
System.out.println(false);
}
}
Diamond Syntax:
Before:
public void testDinamond(){
List<String> list1 = new ArrayList<String>();
Map<String, List<String>> map1 = new HashMap<String, List<String>>();
}
Java7:
public void testDinamond(){
List<String> list = new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();
}
O NetBeans também dá dica:
Para
Multi-Catch Similar Exceptions:
Antes:
public void testMultiCatch(){
try {
throw new FileNotFoundException("FileNotFoundException");
} catch (FileNotFoundException fnfo) {
fnfo.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
Java 7:
public void testMultiCatch(){
try {
throw new FileNotFoundException("FileNotFoundException");
} catch (FileNotFoundException | IOException fnfo) {
fnfo.printStackTrace();
}
}
Mesma coisa aqui. Dica para converter o código para Java 7:
Para
Try with Resources:
Antes:
public void testTryWithResourcesStatement() throws FileNotFoundException, IOException{
FileInputStream in = null;
try {
in = new FileInputStream("java7.txt");
System.out.println(in.read());
} finally {
if (in != null) {
in.close();
}
}
}
Java 7:
public void testTryWithResourcesStatement() throws FileNotFoundException, IOException{
try (FileInputStream in = new FileInputStream("java7.txt")) {
System.out.println(in.read());
}
}
Dica:
Para:
A simplificação de varargs também entrou na lista. Mas não entendi direito como usar. Talvez porque nunca tenha usado varargs profissionalmente em um projeto. Item para estudar mais!
Existem outras features que foram submetidas, mas não entraram nessa release:
O código apresentado neste post não é apenas teoria, já funciona no NetBeans e pode já pode ser usado em projetos. Você pode fazer o download no meu github: https://github.com/loiane/Java7HelloWorld
Um update: A DZone lançou um um RefCardz sobre NetBeans e Java 7 – o download é gratuito: http://refcardz.dzone.com/refcardz/netbeans-ide-7-programming
Comments (11)
Links to this Post
- Novidades do Java 7 « Programando com Java | 01/09/2011
- Confira o que há de novo no java 7 | Thiago Dieb | 25/05/2012




















Oi Loiane!
Primeiramente queria dizer que curto muito tuas explicações sobre Ext-JS, estou aprendendo bastante!
“Segundamente”, deixa eu perguntar… Ou era você ou tinha uma sósia tua fazendo compras no Pão de Açucar aqui da Francisco Morato agora há pouco? Hahaha
Como eu não te conheço e só vi você aqui pelo site, fiquei meio assim de perguntar…rs
Valeu! E parabéns pelo trabalho
Ei Bruno,

Que bom que o blog te ajudou!
era eu mesma no supermecado!
[]‘s
Parabéns pelo post, mto legal a comparação de mudanças, ficou mto claro e explicativo.
Olá Loiane, parabéns pelo post com as features… fiquei muito feliz em ver que a nova versão foi finalmente lançada… Vida longa ao Java
Um abraço
Achei estranha a parte sobre “Try with Resources”. A primeira vista não curti muito essa parte.
Valeu pelas dicas Loiane.
Muito bom esse teu post, Loiane!
Não conhecia teu blog e, ao ver o link para esse post eu temi o de sempre: “será que é mais um daqueles artigos que repetem explicações teóricas lidas em outro lugar sem muita objetividade?”. Foi quando vi que tudo aqui é testado e explicado como programadores devem fazer: com código
Parabens pelo trabalho.
Oi Loiane, post muito interessante. Ficou bem claro entender as features que eu ainda não tinha assimilado corretamente.
Parabéns pelo post e “vida longa ao java”.
Seu post foi muito esclarecedor…
Realmente tbm não gostei muito do try with resources…
E na sintaxe Diamond, existe um possível erro discutido aqui: http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.html?spref=fb
Gostei do try com Resources.