What abstractions are useful for expressing distributed interaction? This question has constituted an active area of research in the last decades and several candidates have been proposed, including remote method invocation, tuple spaces and publish/subscribe. How should these abstractions be supported? Through a library or ``directly'' within a language? This important complementary question has sparked less enthousiasm. This paper contributes to addressing this question in the context of Java and the type-based publish/subscribe (TPS) abstraction, an object-oriented variant of the publish/subscribe paradigm. We compare our three implementations of TPS, namely in (1) an extension of Java we designed to inherently support TPS, (2) standard Java, and (3) Java augmented with genericity. Through our comparison, we identify some general purpose that features that an object-oriented language should have in order to enable a satisfactory library implementation of TPS. We (re-)insist here on the importance of providing both genericity and reflective features in the language, and point out the very fact that the way these features are currently supported might indeed enable satisfactory implementations of remote method invocations, yet is still insufficient for TPS and tuple spaces.