java.sql.Connection (along with all the other JDBC interfaces) are implemented by the driver you choose.
PreparedStatements have a number of advantages over Statements. They represent precompiled, cached statements so should perform better than ad-hoc statements. They also use parameter binding which hides the logic required to escape database specific formatting issues: i.e. need to escape quotes, or ensure date strings are formatted a particular way.