17-03-2010

Czas i Data w Javie

Na infoQ pojawił się wywiad dot. zapowiadanego już dawno wprowadzenia jakiejś NORMALNEJ obsługi czasu i dat w Javie. Sam wywiad może nie jest jakiś pasjonujący, ale podobał mi się jeden fragment:
InfoQ: Some of these concepts have already been explored in JodaTime. What's the relationship between that and JSR 310?
Stephen: JodaTime has been used by a lot of developers already, but it's time that the base Java case is improved for everyone. The most obvious change is the package name (from org.joda.time to javax.time), but in practice there are a few subtle differences as well.
Piękne :-) Ciekawe tylko dlaczego trzeba było czekać tak długo na tak oczywisty ruch...

Etykiety:

Komentarze (9):

Blogger Marcin Niebudek pisze...

No ba :D Czas to delikatna materia.. ostrożnie trzeba i powolutku :-)

17 marca 2010 15:55  
Anonymous Łukasz Dywicki pisze...

Cóż, mi do tej pory nie doskwierały klasy "czasowe" w Javie. Do użycia Joda-Time zmusił mnie dopiero fakt, że java.util.Calendar nie da rady użyć w GWT.
A Joda jest w tym środowisku dostępna.

17 marca 2010 17:20  
Blogger Tomek Nurkiewicz pisze...

Ciekawe, czytałem niedawno o JSR 310 (Specification, 4.4) i ujrzałem: The design adopted is notably different to the Java SE Calendar API and the Joda-Time API.

Coś się plączą w zeznaniach, ale dobrze, że coś się dzieje z tym nieprzyjemnym API. Zwłaszcza brak niezmienności Date i Calendar są karygodne.

17 marca 2010 17:58  
Blogger Paweł Lipiński pisze...

Ja myślę, że dla takiego tematu jak czas i data to cokolwiek co nie jest jest jakimś DSLem powinno być karane śmiercią (projektu, nie programisty...) My z Jody korzystamy od samego początku projektu - podjęliśmy decyzję o przejściu na nią po napisaniu... chyba już pierwszego testu :)

17 marca 2010 18:04  
Blogger Michal Margiel pisze...

Łukasz. Jeśli Ci nie doskwierają klasy Calendar i date w Javie to może znaczyć tylko jedno: masz skłonności sado-macho.

mógłbyś mi np pokazać jak używając tych klas obliczyć ilość miesięcy między dwiema datami?

w JodaTime to wygląda tak:

Months.monthsBetween(new LocalDate(2000, 1, 1), new LocalDate(2001, 4, 1)).getMonths()

17 marca 2010 20:09  
Blogger Paweł Lipiński pisze...

@Michał
Łukasz pewnie po prostu nigdy nie operował datami i tyle. Nie jest możliwe, żeby to nie doskwierało. Połowa API jest deprecated a to co nie jest, jest nieużyteczne. Blueee

A poza tym po polsku jest liczba miesięcy a nie ilość. :]

17 marca 2010 20:13  
Blogger Michal Margiel pisze...

fakt, mój błąd.

17 marca 2010 20:15  
Blogger Łukasz Lenart pisze...

A czemu nie używać własnych klas do reprezentacji daty, czasu, kalendarza? Wewnętrzna implementacja nie ma wtedy wpływu na naszą aplikację, a czy będzie to Joda czy Java API jest w tym momencie bez znaczenia.

Nasze klasy ograniczą użycie tylko do niezbędnych operacji i nie pozwolą na "niekontrolowany" dostęp.

Jak widać, nie długo i Joda będzie deprecated ;-)

18 marca 2010 08:36  
Blogger Paweł Lipiński pisze...

No można mieć i swoje, ale przecież nie będziesz tego pisał od zera. Twoje mogą to tylko opakowywać sprawnie a'la np. commons-logging. A do faktycznej implementacji i tak wygodniej użyć Jodę niż ten standardowy shit :-)

18 marca 2010 08:38  

Prześlij komentarz

<< Strona główna