Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Migrating from Java Calendar to Joda Date Time

Tags:

java

jodatime

Previously, when I first design a stock application related software, I decide to use java.util.Date to represent date/time information of a stock.

Later, I realize most of the methods in java.util.Date is deprecated. Hence, very soon, I refactor all my code to make use of java.util.Calendar

However, there is 2 shortcomings I encounter.

  1. Construct java.util.Calendar is comparative slower than java.util.Date
  2. Within the accessors getCalendar method of Stock class, I need to clone a copy, as Calendar is a mutable class

Here is the current source code for Stock.java

Recently, I discover Joda-Time. I do the following benchmarking, by creating 1,000,000 java.util.Date, java.util.Calendar and org.joda.time.DateTime. I found org.joda.time.DateTime performs better than java.util.Calendar, during instantiation.

Here is the benchmarkingalt text result.

This instantiation speed is important, especially many instance of Stocks will be created, to represent a long price history of a stock.

Do you think is it worth to migrate from Java Calendar to Joda Date Time, to gain application speed performance? Is there any trap I need to pay attention to?

like image 340
Cheok Yan Cheng Avatar asked Oct 28 '10 14:10

Cheok Yan Cheng


People also ask

Is Joda-time deprecated?

Cause joda-time is deprecated.

Is Java calendar deprecated?

Date are deprecated since Java 1.1, the class itself (and java. util. Calendar , too) are not officially deprecated, just declared as de facto legacy. The support of the old classes is still important for the goal of backwards compatibility with legacy code.

Is Joda-time followed in Java 8?

Joda-Time is an API created by joda.org which offers better classes and having efficient methods to handle date and time than classes from java. util package like Calendar, Gregorian Calendar, Date, etc. This API is included in Java 8.0 with the java.


1 Answers

Note that java.util.Date is mutable too - so if it's a problem now you're using Calendar, it would have been a problem using Date too. That said, using Joda Time is definitely worth doing just because it's a much, much better API.

How certain are you that performance is actually an issue in your particular app? You say there will be "many instances" of Stock created... how many? Have you profiled it? I wouldn't expect it to actually make a significant difference in most situations. It's not obvious from your benchmarking graph what you're actually measuring.

Moving to Joda Time is a good idea in general, but I would measure the performance to see how much difference it really makes for you.

like image 114
Jon Skeet Avatar answered Oct 01 '22 05:10

Jon Skeet