I was not comfortable - but am happy to be corrected if my understanding is wrong.
The difference between interface and base class is does not (in my understanding) line up with the C distinction around header files and implementation (used to enable the idea of linking employed by the GPL). The distinction between base class and interface is even less for Java 8 where default methods can now be introduced for interfaces. The GPL with Classpath exception explicitly provide language for use in Java applications.
Since the GeoServer project uses GPL I believe the intension is that all work making use of that API is itself distributed under the GPL. As a GeoServer PMC member this is the stance we have taken with organizations wanting permission to make additional proprietary web services hooked into the GeoServer catalog. Here is a discussion from 2009 where the issues was discussed (
http://comments.gmane.org/gmane.comp.gis.geoserver.devel/6096).
Sorry if I am wearing two hats on this one. I would like to check how GPL considers "linking" handled in Java. There must be some slack as application servers like Tomcat can load up both a GPL Web App and a BSD Web App. I guess the apps can communicate via HTTP (look ma no linking) or possibly share a few resources like JDBC connections via JNDI (the point of Java being distributed as GPL+Classpath). I cannot think of any examples where an implementation of a GPL Interface (or GPL base class) is used - can anyone?
--
Jody