I have my front end as a Java application, how will ADF talk to Tridion and run the Fredhopper queries to render content based on rules configured in Fredhopper? Do I need to write a code at JSP page level? Kindly provide some pointers.
Your JAVA website will use the SmartTaget tag library, or if you like the SmartTarget API, to get the content for a specific SmartTarget region. SmartTarget will also take care of the SmartTarget markup for Experience Manager.
In a JSP page you could add some JSP tags to define the SmartTarget region on the page. SmartTarget will do the rest. See a minimal JSP example, full JSP example, also the Dreamweaver templating and TCDL equivalent. The documentation (login required) explains a lot of detail as well.
The SmartTarget libraries will then form a Fredhopper query and execute it. A helper in the SmartTarget API takes claims (variables) from ADF and maps them to Fredhopper triggers (the mapping is configured in the smarttarget_conf.xml on the website webapp).
So ADF does not talk to Fredhopper. The role of ADF is to gather the user context variables named claims. SmartTarget will take this data, figure out which triggers have to be set on the Fredhopper query, and execute this query.
Off-topic but nice to know: In SmartTarget 2014 SP1 the SmartTarget API is very open, for example, you change the Fredhopper query before it gets executed, change the triggers which were mapped from ADF and more.