SNMP and Java

Hi friends,
I need to work with an application that exposes SNMP interface. I have googled to check SNMP in general but I find it difficult a bit. I know in HTTP you send request and get response and with the two you can play around. I have never done any SNMP but have done FTP/HTTP.

In summary here are my two questions for now:
1. How SNMP works in real world (I'll appreciate if you Point me to any useful resource or write one :) )

2. How Can you write SNMP Application In Java? Any library or tutorial (I prefer the second but can take also the first)?