BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

Java 8 trará nova API de data/hora inspirada no Joda Time

por Charles Humble , traduzido por Rafael Sakurai em 24 Set 2012 |

A nova JSR 310, Date e Time API, liderada por Stephen Colebourne, irá substituir a complexa API de datas e horas do Java. Foi adicionada à lista de características do Java 8 e deve ser liberada em janeiro de 2013 na milestone 6.

O tratamento de datas é um problema complexo, e no Java teve uma história longa e conturbada. O suporte inicial foi através da java.util.Date; era chamado de timestamp numérico e juntava a data e a hora, o que complicava a internacionalização. A API antiga tinha outros aspectos negativos, como o uso inconsistente de propriedades - por exemplo o mês e hora iniciam em zero, o dia do mês inicia em um e o ano começa em 1900.

Em 1997 o Java 1.1 adicionou o suporte a SQL através do JDBC, que trouxe outra classe chamada Date, herdando de java.util.Date, mas com semântica diferente. Em 1998 a IBM contribuiu uma nova API, java.util.Calendar, que oferece internacionalização e flexibilidade, mas com grande custo em complexidade, mesmo para tratar problemas simples. Para piorar, todas as propriedades do java.util.Date e java.util.Calendar são mutáveis, sendo possível por exemplo, que qualquer propriedade do tipo Date (ou do tipo Time ou Timestamp) precise ser clonado antes de ser retornado por um método get.

Em 2005 foi liberada a popular e amplamente usada biblioteca Joda Time, criada por Stephen Colebourne. Essa API melhorou muito a situação, mas ainda assim era externa ao Java SE. A JSR 310 foi construída com base nessa experiência e oferece uma substituição para ambas java.util.Date e java.util.Calendar, na biblioteca padrão do Java SE.

A JSR 310 define uma API extensa, mas consistente e fácil de entender. Resolve problemas de complexidade, oferecendo uma API de alto nível para uso em aplicações, e uma de baixo nível para frameworks e outros casos não suportados diretamente. Por exemplo, um desenvolvedor pode usar a API de baixo nível para estender e suportar os campos de data/hora (YEAR, MONTH, DAY_OF_MONTH, HOUR e outros) e adicionar um novo campo.

A API de alto nível fornece classes como ZonedDateTime, para armazenar uma data e hora com fuso-horário; LocalDate, LocalTime e LocalDateTime, para trabalhar com datas e horas "para humanos"; e Instant para um fornecer um timestamp numérico usado para tarefas como logging (análogo ao java.util.Date). Todas essas classes são imutáveis e thread-safe.

Com a JSR 310 agora planejada para inclusão no Java 8, o projeto ThreeTen foi estabelecido através do OpenJDK e fará o trabalho de integração. O projeto que fornece a implementação de referência do JSR 310 está hospedado no SourceForge, com seu código disponibilizado no GitHub.

O Java 8 está previsto para lançamento em outubro de 2013.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Horário de verão by Eduardo Souza

Vamos ver como essa nova api tratará o horário de verão, pois, atualmente, as operações com data que interceptem datas de inicio ou final de horário de verão sempre resultam em problemas.

Compatibilidade by José Eduardo Tomaz

Como ficara a compatibilidade com o código já escrito usando java.util.date e calendar ? Teremos que escrever tudo novamente ?

Até que em fim by Rodrigo Martins

Faz anos que leio a respeito da possibilidade de substituir toda a tralha de Date e afins por algo baseado no Joda, uma ferramenta que gosto muito. Mudança muito bem vinda.

Re: Até que em fim by renan reis

Também espero por isso a muito tempo!

Re: Compatibilidade by Fuad Saud

Provavelmente não. Só que java.util.Date e java.utilCalendar serão marcadas com @Deprecated.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

5 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT