Nope - your situation is very normal in any industry (lots of people are on fixed contracts nowadays), but the most important thing is you must be clear and up-front about your availability
Clearly write when you will be available in your application cover-letter, AND on your resume / C.V.
A line on your C.V reading "Available for work: (or just: Availability:) 21st July 2016 onwards" would be acceptable - probably with your other vital statistics at the top of your C.V.
Is it a 'hard' date, i.e. there is NO WAY you could start before then, or a 'soft' date? i.e. if it was a deal breaker you could move things around to start in 3 months instead of 4?
If it is 'soft' you might want to mention that e.g. write "Available for work: July 2016" instead of "21st July". Or perhaps "Available to start work June/July 2016" (Just don't write "Available: June-July 2016" because it might be assumed you are only looking for one month's worth of work!)
One possibility you could consider: perhaps you could work part time until your hard start date? If so you should include that on your cover letter and on your resume/C.V. too.
If you get an interview, that will happen shortly after you apply, they don't delay the interview just because your start date might be distant.
It's also important to note that some recruiting processes can take months!! There might be one interview and bam, you're in, but some will have a recruiter interview, then maybe a personality test, an aptitude test, then 2 more rounds of interviews: a company interview, then an interview by the actual people you will be working with.
Especially graduate programs: one I did had all of the above, plus a maths test, a whole day of 'team work' role-playing kind of tests, and a day of "Information sessions/induction/training type stuff to make sure we knew what we were getting into! (This was before you were hired!). A friend who applied to teach in a prison had a 6 month process!
It will not hurt your chances. It shows you are organised and that you plan ahead! Sure some employers will reject you outright because they need someone urgently, or a project starts IMMEDIATELY, or because they have a graduate or intake program that follows a schedule. But many might have a fixed number of graduates they want to hire each year and if they think you sound like a good prospect they won't mind you starting in a few months - especially as a graduate they might not have a specific project or position that they want you to fill, they just need to intake a certain number of people each year.
Many jobs are fixed-term-contract positions now, and some on-going/permanent/indefinite positions might have a clause that says they have to give 3 months notice if they want to leave.
It doesn't reflect badly on you - it could indicate that you are in demand, that you have important stuff going on in your life (means you are a go-getter). It also shows you are not unemployed and desperate - it is actually harder to find a job if you are unemployed because of this (often unconscious) bias that recruiters and employers have. (Even if you are technically unemployed, you are still 'occupied' by something - and that something values you)
If you are comfortable, you might want to include the reason you are unavailable, e.g. that you finish your studies then, finishing a research project, travelling, or you are expecting a baby, getting out of jail, or that you will be moving to the area then, or you are working a fixed term contract that ends then, but this is NOT essential- it is your private business. But have an answer or deflection ready for the interview. (e.g. "It was a private / family matter." was is important to say if you're going down that route or they might not trust you or your loyalty to them in the future.)
Think about the type of company it is - if you are going to be designing surfwear and it's a laid-back 'youthful' company, then saying you have been travelling could be great. If it is something to do with children then telling them it's a family illness/baby etc might reflect well on you (or that could backfire terrribly because they might forsee days of absences and not being LOYAL TO THE COMPANY).
Many people go for jobs in other cities/states etc without mentioning that they don't live there yet - some employers may worry that your relocation could cause a hiccup or stress you out or might fall through and affect your start date, and other employers may not mind at all and include a relocation allowance! (But relocation allowances are pretty much unheard of if you are a new graduate - they are more common from big companies for specialised positions)
Your demands aren't unreasonable - but make it clear from the start when you are available. Expect rejection if the job description specifically states that an immediate start is required. HOWEVER it still might be worth applying for these jobs because there may be other positions they know they will want to fill down the track
Don't delay your job search. It is normal for people to already have a job when they apply for a new job. It also shows you are valued by this entity keeping you occupied until that date.
In negotiations as long as you have already been upfront in your application, this shouldn't be a problem. They might ask if you could start earlier but if it's a hard date you simply cannot change don't be afraid of saying that.
Source: I've been a developer/ analyst programmer since 2004. Started in a graduate program. Changed jobs into science, and government since then (still as a programmer primarily)