Since Biblical times the months and years of the Jewish calendar have been established by the cycles of the moon and the sun.
The date of Jewish holidays does not change from year to year. Jewish holidays are celebrated on the same day of the Jewish calendar every year, but the lunar year of the Jewish calendar is not the same length as the solar year of the Gregorian calendar used by most of the western world, so the date shifts on the Gregorian calendar.
Background and History
The Jewish calendar is based on the lunar year, with each month beginning on the new moon. Rosh Chodesh, the first of the month, begins when the first sliver of moon becomes visible after the dark of the moon.
The problem with strictly lunar calendars is that there are approximately 12.4 lunar months in every solar year, so a 12-month lunar calendar loses about 11 days every year and a 13-month lunar gains about 19 days every year. The months on such a calendar “drift” relative to the solar year. On a 12 month calendar, the month of Nissan, which is supposed to occur in the Spring, occurs 11 days earlier each year, eventually occurring in the Winter, the Fall, the Summer, and then the Spring again. To compensate for this drift, an extra month was occasionally added: a second month of Adar. The month of Nissan would occur 11 days earlier for two or three years, and then would jump forward 29 or 30 days, balancing out the drift.
In the fourth century, Hillel II established a fixed calendar based on mathematical and astronomical calculations. This calendar, still in use, standardized the length of months and the addition of months over the course of a 19 year cycle, so that the lunar calendar realigns with the solar years. Adar II is added in the 3rd, 6th, 8th, 11th, 14th, 17th and 19th years of the cycle. The new year that began Monday, September 25, 1995 (Jewish calendar year 5756) was the 18th year of the cycle. Jewish year 5758 (beginning October 2, 1997) was be the first year of the next cycle.
In addition, Yom Kippur should not fall adjacent to a Shabbat, because this would cause difficulties in coordinating the fast with the Shabbat, and Hoshanah Rabba should not fall on Shabbat because it would interfere with the holiday’s observances. A day is added to the month of Heshvan or subtracted from the month of Kislev of the previous year to prevent these things from happening.
Jewish Calendar up to 2017
Also here is decent brief explanation here
Calendar dissenters here