If you have a custom Java application where you need to access OPC data, I would recommend using OPC UA, instead of the traditional OPC DA, for new development. UA is also natively available for Java - and has several other alternatives as well in practice.
OPC Foundation is providing the Java stack for it's member's. But a full Java SDK, such as the Prosys OPC UA Java SDK will also provide you the necessary implementation of subscription and session management, etc.
There are some open source initiatives as well, but they are not on a very high level at the moment, so you will save the most by going to a commercial SDK (although I am saying this myself as a Prosys developer).
It doesn't contain SCADA UI components, though, so in that respect the OpenSCADA may be a better alternative, although it does not enable OPC UA.