You can communicate with a Smart Card or similar device (including a Java Card Smart Card, an NFC-enabled phone..) on any platform with a working implementation of PC/SC (Winscard, PCSC-Lite..), and a working PC/SC reader supporting the interface used by the Smart Card (ISO 7816-3, ISO 14443, variants therof..).
Virtually all Smart Card readers are PC/SC compatible (the few exceptions are either antiques, or very specialized, e.g. testing tools). There is not such thing as one with specific support for Java Card Smart Cards.
The program communicating with the Smart Card could be a native program built on top of PC/SC, or a Java program using the package javax.smartcardio
built into Java since the JRE release (1.)6. Java Card is not required for reader-side development (though it may contain useful additional layers that I do not know).