Skip to content

KosherJava 3.0.0

Latest

Choose a tag to compare

@KosherJava KosherJava released this 21 Oct 16:02
· 41 commits to master since this release
d701e9e

3.0.0 (2026-10-21)

Includes breaking changes

  • Remove deprecated methods flagged for removal, including
    • ComprehensiveZmanimcalendar class
      • getSofZmanShmaKolEliyahu()
      • getTzaisGeonim3Point65Degrees() - was prior to 13.5 minutes in Yerushalayim at the equinox/equilux.
      • getTzaisGeonim3Point676Degrees() - was prior to 13.5 minutes in Yerushalayim at the equinox/equilux.
      • getSofZmanTfilahAteretTorah() - use the getSofZmanTfilaAteretTorah()
      • getSofZmanShmaFixedLocal()
      • getSofZmanTfilaFixedLocal()
      • getMinchaGedolaBaalHatanyaGreaterThan30() should now be calculated via ZmanimCalendar.getMinchaGedolaGreaterThan30(Instant minchaGedolaBaalHatanya)
      • getFixedLocalChatzosBasedZmanim(Date, Date, double)
      • Move getSunriseBaalHatanya() and getSunsetBaalHatanya() to the parent ZmanimCalendar class.
      • various mispelled getBainHasmashos() based zmanim (use the properly spelled getBainHasmashos versions
    • JewishCalendar class
      • isVeseinTalUmatarStartDate() - use TefilaRules.isVeseinTalUmatarStartDate()
      • isVeseinTalUmatarStartingTonight() - use TefilaRules.isVeseinTalUmatarStartingTonight()
      • isVeseinTalUmatarRecited() - use TefilaRiles.isVeseinTalUmatarRecited()
      • isVeseinBerachaRecited() - use TefilaRules.isVeseinBerachaRecited()
      • isMashivHaruachStartDate - use TefilaRules.isMashivHaruachStartDate()
      • isMashivHaruachEndDate() - use TefilaRules.isMashivHaruachEndDate()
      • isMashivHaruachRecited() - use TefilaRules.isMashivHaruachRecited()
      • isMoridHatalRecited() - use TefilaRules.isMoridHatalRecited()
  • Remove deprecated redundant GeoLocationUtils. Use the GeoLocation class instead.
  • Remove the com.kosherjava.util.Time class. Now that Sha'os zmaniyos use the java.time.Duration class, this was obsolete.
  • UTF-8 is here. A number of clases have Hebrew in the documentation and code (especially the HebrewDateFormatter class).
  • Move some methods from ComprehensiveZmanimCalendar to the parent ZaminCalendar classes.
    • getShaahZmanis72Minutes()
    • getAlos16Point1Degrees()
    • getSofZmanShmaMGA72Minutes()
    • getSofZmanTfilaMGA72Minutes()
    • getTzaisGeonim8Point5Degrees()
    • getZmanisBasedOffset(double)
  • ZmanimCalendar class rename some generically named method names to be more specific. The actual zmanim were not changed.
    • rename getTzais() -> getTzaisGeonim8Point5Degrees()
    • getAlosHashachar() -> getAlos16Point1Degrees()
    • getSofZmanShmaMGA() -> getSofZmanShmaMGA72Minutes()
    • getSofZmanTfilaMGA() -> getSofZmanTfilaMGA72Minutes()
    • getMinchaGedola() -> getMinchaGedolaGRA()
    • getMinchaKetana() -> getMinchaKetanaGRA()
    • getPlagHamincha() -> getPlagHaminchaGRA()
    • getShaahZmanisMGA() -> getShaahZmanis72Minutes()
    • getAlos72() -> getAlos72Minutes()
    • getTzais72() -> getTzais72Minutes()
    • getShaahZmanisGra() -> getShaahZmanisGRA()
    • getAlos120() -> getAlos120Minutes()
    • getAlos96() -> getAlos96Minutes()
    • getAlos90() -> getAlos90Minutes()
    • getAlos72() -> getAlos72Minutes()
    • getAlos60() -> getAlos60Minutes()
    • getTzais50() -> getTzais50Minutes()
    • getTzais60() -> getTzais60Minutes()
    • getTzais72() -> getTzais72Minutes()
    • getTzais90() -> getTzais90Minutes()
    • getTzais96() -> getTzais96Minutes()
    • getTzais120() -> getTzais120Minutes()
    • getChatzos() -> getChatzosHayom()
    • getChatzosAsHalfDay() -> getChatzosHayomAsHalfDay()
    • isAssurBemlacha() -> isAssurBemelacha()
  • Rename some classes the confusingly named ComplexZmanimCalendar to ComrehensiveZmanimCalendar.
  • Move "legacy" classes to java.time equivelants
    • All zmanim now return Instants insead of Date objects.
    • Replace SimpledateFormat with DateTimeFormatter
    • Calendar and GregorianCalendar were replaced with LocalDate or ZonedDateTime.
    • TimeZone was replace with ZoneId
    • GeoLocation.getLocalMeanTimeOffset() and getAntimeridianAdjustment() now takes in Instant parameter.
    • Remove the no longer necessary NOAACalculator.adjustHourForTimeZone(Calendar)
  • getSofZman*Chametz* times will retun null if it is not Erev Pesach.
  • Move ErevPesach zmanim calculations from the ComprehensiveZmanimCaledar to generic methods in the parent ZmanimCalendar class. Nothing changed in the signatures of the methods in the ComprehensivZemanimCalendar class.
  • Increase the minimum supported JRE version from version 8 (the code currently almost certainly works on 6 today) to Java 11 or higher.
  • Tweaked logic in AstronomicalCalendar.getInstantFromTime() to address issues near the dateline.
  • Improve null handling in ComprehensiveZmanimCalendar.getMoladBasedTime()
  • Add ComprehensiveZmanimCalendar.getMisheyakir12Point85Degrees()
  • Add getMinchaGedolaGreaterThan30(Instant) that allows it to work with any mincha gedola claculation.
  • ComprehensiveZmanimcalendar rename some methods.
    • getMinchaGedolaGreaterThan30()-> getMinchaGedolaGRAGreaterThan30()`
    • getShaahZmanisAlos16Point1ToTzais3Point8() -> getShaahZmanisAlos16Point1DegreesToTzaisGeonim3Point8Degrees()
    • getShaahZmanisAlos16Point1ToTzais3Point7() -> getShaahZmanisAlos16Point1DegreesToTzaisGeonim3Point7Degrees()
    • getSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees() -> getSofZmanShmaAlos16Point1DegreesToTzaisGeonim7Point083Degrees()
    • getPlagAlos16Point1ToTzaisGeonim7Point083Degrees() -> getPlagAlos16Point1DegreesToTzaisGeonim7Point083Degrees()
  • Change / remove ComprehensiveZmanimcalendar zmanim that were too early.
    • getTzaisGeonim4Point37Degrees() -> getTzaisGeonim4Point42Degrees().
    • getTzaisGeonim4Point61Degrees() -> getTzaisGeonim4Point66Degrees()
    • Remove getTzaisGeonim5Point88Degrees() since it is a drop too early
  • ZmanimCalendar Astronomical Chatzos based changes:
    • Add getChatzosHalayla()
    • Add setting useAstronomicalChatzos (defaulted to true) to keep the mistaken compat break introduced in the v2.5.0 release.
    • Add setting useAstronomicalChatzosForOtherZmanim (defaulted to false).
    • Add getChatzosAsHalfDay() to retain the old behavior of chatzos being halfway between sunrise and sunset.
    • Use useAstronomicalChatzos to control if getChatzos() returns getSunTransit() (astronomical chatzos) or getChatzosAsHalfDay().
    • Add getHalfDayBasedZman(Date startOfHalfDay, Date endOfHalfDay, double hours) to allow other zmanim to be impacted by chatzos.
    • Use useAstronomicalChatzosForOtherZmanim.
    • ZmanimCalendar - add utility method getPercentOfShaahZmanisFromDegrees(double degrees, boolean sunset) to simplify zmaniyos time calculations. This allows calculations of various percentage of the day zmanim calculations.
  • Remove code duplication in NOAACalculator.getUTCSunrise() and .getUTCSunset()
  • Use Astronomical Chatzos Halayla (as opposed as halfway between sunset and sunrise or 12 hours after chatzos hayom)
  • ComprehensiveZmanimCalendar - significant updates
  • zmanimFormatter now formats Duration`s and removed support for formatting longs and Time.
  • HebrewdateFormatter
    • add method formatParsha(JewishCalendar.Parsha parsha) to allow formatting of a parsha retrieved from JewishCalendar.getUpcomingParsha().
    • Add getHebrewMonthList() and setHebrewMonthList(String[]). This allows overriding the default month of Chesvan to Marcheshvan etc.
    • Throw an IllegalArgumentException if the array length of months != 14
    • Remove the experimental and private formatMolad(long moladChalakim)
    • Fixed a bug that ignored the leading 0 format.
    • Fix NullPointer in HebrewDateFormatter week formatting
  • TefilaRules
  • JewishCalendar
  • GeoLocation
  • NOAACalculator - fix Solar Azimuth and Elevation
  • AstronomicalCalculator Add some methods
  • AstronomicalCalendar