I have a dilemma. How to do better? I have a bunch of API interfaces and their implementations which use some specific frameworks/librarys which I would not like to expose. I cannot make a decision about whether to put both API interfaces and their implementation in the same package or split them up to different packages: one (or more) for the API and others for their implementation. Here is what I mean (simplified version):
In the first case we have API and imlementation in the same package which (may) simplify access to it. But in the second case we may also split it into a different jar file which would support more "encapsulation" from a particular implementation.
Personally, I would choose splitting them up to different jar files in order to keep API in isolation from implementations.