I'd like to know if there is a jar-file out there that could do the following:
DateMidnight dateInQuestion = new DateMidnight(12,12,2000);
Nothing robust exist in Java as far as I know. It also makes sense, this kind of information is namely extremely sensitive to changes. Hardcoding it would make your code potentially break on every Java update which may lead to lot of maintenance and compatibility troubles. Currently at hightest the timezones are hardcoded/maintained in Java SE and even alone that has already lead to many bugs.
Rather use a public webservice for that. E.g. http://www.bank-holidays.com
This site informs you of all the days when banks (as well as stock exchange & school holidays in a number of countries) are closed due to religious or public events. Major events (elections, announced strikes, trade fairs, festivals, sports events...) are also listed.
Our FREE SERVICE allows you to view the current calendar year (view only). For 2 euros/country/year, our PAY SERVICE (click on credit card icon) gives you access to calendar years 2000-2070.
And write a Java wrapper around that. Or look for existing Java API's which are in turn already backed by a webservice.