KosherJava Zmanim Library 3.0.0 Released


The KosherJava Zmanim API version 3.0.0 was released on Oct 21, 2026 י׳ חשון תשפ״ז in Maven and GitHub.

This is a major release, and unlike the releases that came before it, it will break existing code. The API has moved to java.time, a number of classes and methods were renamed, and the methods that had been deprecated over the years were removed. The zmanim themselves are almost all unchanged; what changed is what they are called and what type they return. Allow some time for the upgrade, and see the full list of changes since the 2.5.0 release in GitHub.

New in Version 3.0.0

Two New Calculators

  • The MeeusCalculator implements Jean Meeus’s high-accuracy algorithm. The existing NOAACalculator, which remains the default, is based on NOAA‘s implementation of his low-accuracy algorithm.
  • The SPACalculator implements the Solar Position Algorithm. Both new calculators are more accurate and slower than the NOAA calculator, though for practical zmanim the difference is a matter of seconds.
  • The USNO-based SunTimesCalculator is now deprecated. It is less accurate than the other three and is only being kept for reference and comparison with older implementations.

Breaking Changes

  • The minimum supported JRE is now Java 11, up from Java 8. Note that the JavaDocs only generate properly under Java 21. This affects generating the documentation, not the compiled code, which continues to target Java 11.
  • The API uses java.time throughout. All zmanim return Instants rather than Dates, sha’os zmaniyos return a Duration (and null rather than Long.MIN_VALUE when not applicable), Calendar and GregorianCalendar gave way to LocalDate and ZonedDateTime, TimeZone to ZoneId, and SimpleDateFormat to DateTimeFormatter. The now obsolete com.kosherjava.util.Time class was removed.
  • The confusingly named ComplexZmanimCalendar is now the ComprehensiveZmanimCalendar.
  • Generically named methods in the ZmanimCalendar were renamed to say which opinion they calculate. The zmanim did not change, only the names: getTzais() is now getTzaisGeonim8Point5Degrees(), getAlosHashachar() is getAlos16Point1Degrees(), getSofZmanShmaMGA() is getSofZmanShmaMGA72Minutes(), and getMinchaGedola(), getMinchaKetana() and getPlagHamincha() gained a GRA suffix. Minute-based zmanim now spell out Minutes, and getChatzos() is getChatzosHayom().
  • Parsha was renamed Parshah, in the formatters as well, and the misspelled isAssurBemlacha() and getBainHasmashos() methods were corrected.
  • Deprecated methods flagged for removal are gone, among them getSofZmanShmaKolEliyahu(), the fixed local chatzos based zmanim, and the JewishCalendar tefila methods that moved to TefilaRules. The redundant GeoLocationUtils class was removed in favor of GeoLocation.
  • A few zmanim that were a drop too early were corrected. getTzaisGeonim4Point37Degrees() is now getTzaisGeonim4Point42Degrees() and getTzaisGeonim4Point61Degrees() is getTzaisGeonim4Point66Degrees(). getTzaisGeonim5Point88Degrees() was removed.
  • The getSofZman*Chametz* methods return null when it is not Erev Pesach.
  • The source is now UTF-8, so the Hebrew in the documentation and code (particularly in HebrewDateFormatter) appears properly.

Chatzos

  • getChatzosHalayla() was added, calculated as astronomical midnight rather than as halfway between sunset and sunrise or twelve hours after chatzos hayom.
  • Two settings control how chatzos is used: useAstronomicalChatzos (on by default, retaining the backwards compatibility break introduced in 2.5.0) and useAstronomicalChatzosForOtherZmanim (off by default). getChatzosAsHalfDay() returns half-day chatzos regardless of the setting.
  • The generic getHalfDayBasedZman(startOfHalfDay, endOfHalfDay, hours) replaces getFixedLocalChatzosBasedZmanim() and allows other zmanim to be based on chatzos, and getPercentOfShaahZmanisFromDegrees(degrees, sunset) simplifies percentage-of-the-day calculations.

The Sun’s Position, and the Arctic

  • Solar azimuth and elevation were fixed in the NOAACalculator, and getSolarAzimuth(Instant, GeoLocation) and getSolarElevation(Instant, GeoLocation) were added to the AstronomicalCalculator, along with getTimeAtAzimuth(azimuth) in the AstronomicalCalendar.
  • The sun’s apparent angular semi-diameter for the day is now used by default rather than a fixed radius.
  • getPolarPlagHaminchaBenIshChai() and getPolarStartOfDayTeshuvosVehanhagos() were added for latitudes where the sun does not cross the horizon, together with getSunriseOrEasternmostSolarAzimuth() and getSunsetOrWesternmostSolarAzimuth().
  • The USNO noon calculation was corrected in locations where it was sometimes twelve hours off, and getInstantFromTime() was tweaked to address issues near the dateline.

The Calendar Classes

  • JewishCalendar gained getTekufa() and getTekufaAsInstant() for the tekufos, plus and minus methods for years, months and days matching LocalDate, and a public isJewishLeapYear(int). isHavdalahRecited() was renamed isTonightMutarBemelacha(), isYomTov() now returns true for 20 Nissan, and getDaysInJewishMonth() and getLastDayOfGregorianMonth() take their parameters in year, month order.
  • HebrewDateFormatter gained formatParsha(Parshah), and getHebrewMonthList() / setHebrewMonthList(String[]), which allow overriding the default month names such as Cheshvan to Marcheshvan.
  • TefilaRules gained isMizmorLesodaRecited(), and no longer has Tachanun recited on Erev Rosh Hashana.
  • ComprehensiveZmanimCalendar gained getMisheyakir12Point85Degrees(), getSofZmanAchilasChametzMGA72MinutesZmanis() and getSofZmanBiurChametzMGA72MinutesZmanis(), and a getMinchaGedolaGreaterThan30(Instant) that works with any mincha gedola calculation.

A number of other small changes, null-handling corrections and bug fixes are in the full list of changes. I would like to thank Moshe Dicker, Elyahu Jacobi and Maor Na’im of RoyZmanim, and many others who helped with code that went into this release. I would also like to thank Eli Julian for his continued release support skills.

KosherJava Zmanim API 2.5.0 Released


The KosherJava Zmanim API version 2.5.0 was released on June 9, 2023 י״ג סיון תשפ״ג in Maven and GitHub.

New in Version 2.5.0

See the full list of changes between v2.4.0 and v2.5.0 in GitHub. I would like to thank Eli Julian for his continued release support skills.

Zmanim API 2.4.0 Released


The KosherJava Zmanim API version 2.4.0 was released on Nov 27, 2022 ד׳ כסלו תשפ״ג in Maven and GitHub.

New in Version 2.4.0