2.5 Apa kebutuhan komunitas Java yang akan dipenuhi oleh spesifikasi yang diusulkan?
Saat ini Java SE memiliki dua API tanggal dan waktu terpisah - java.util.Date dan java.util.Calendar. Kedua API tersebut secara konsisten digambarkan sebagai sulit digunakan oleh pengembang Java di weblog dan forum. Khususnya, keduanya menggunakan indeks nol selama berbulan-bulan, yang merupakan penyebab banyak bug. Kalender juga mengalami banyak bug dan masalah kinerja selama bertahun-tahun, terutama karena menyimpan statusnya dalam dua cara berbeda secara internal.
Satu bug klasik (4639407) mencegah tanggal tertentu dibuat di objek Kalender. Urutan kode dapat ditulis yang dapat membuat tanggal di beberapa tahun tetapi tidak di tahun lain, yang berdampak mencegah beberapa pengguna memasukkan tanggal lahir yang benar. Hal ini disebabkan oleh kelas Kalender yang hanya mengizinkan penambahan waktu musim panas selama satu jam di musim panas, padahal secara historis itu ditambah 2 jam sekitar waktu perang dunia kedua. Meskipun bug ini sekarang telah diperbaiki, jika suatu saat di masa mendatang suatu negara memilih untuk memperkenalkan penambahan waktu musim panas lebih dari tiga jam di musim panas, maka kelas Kalender akan rusak lagi.
Java SE API saat ini juga menderita di lingkungan multi-threaded. Kelas yang tidak dapat diubah diketahui secara inheren aman untuk thread karena statusnya tidak dapat berubah. Namun, Tanggal dan Kalender dapat berubah, yang mengharuskan pemrogram untuk mempertimbangkan kloning dan threading secara eksplisit. Selain itu, kurangnya keamanan thread di DateTimeFormat tidak banyak diketahui, dan telah menjadi penyebab banyak masalah threading yang sulit dilacak.
Selain masalah dengan kelas yang dimiliki Java SE untuk datetime, ia tidak memiliki kelas untuk pemodelan konsep lain. Tanggal atau waktu non-zona waktu, durasi, periode dan interval tidak memiliki representasi kelas di Java SE. Akibatnya, developer sering menggunakan int untuk mewakili durasi waktu, dengan javadoc menentukan unitnya.
Kurangnya model tanggal dan waktu yang komprehensif juga mengakibatkan banyak operasi umum menjadi lebih rumit dari yang seharusnya. Misalnya, menghitung jumlah hari antara dua tanggal merupakan masalah yang sangat sulit saat ini.
JSR ini akan menangani masalah model tanggal dan waktu lengkap, termasuk tanggal dan waktu (dengan dan tanpa zona waktu), durasi dan periode waktu, interval, pemformatan, dan penguraian.