8004874: (profiles) Reduce dependency on java.beans to only add/removePropertyChangeListener

David Holmes david.holmes at oracle.com
Wed Dec 12 04:27:24 UTC 2012

Hi Alan,

This decoupling looks fine to me.


On 12/12/2012 5:55 AM, Alan Bateman wrote:
> Those tracking the work to get us to a modular JDK will know that the
> java.beans package is highly problematic.
> For the "core" modules then j.u.l.LogManager and j.u.jar.Pack200 have
> support for PropertyChangeListener and that means edges in the module
> graph that are highly undesirable. As I've mentioned in other mails
> here, the plan to address this is to deprecate the
> add/removePropertyChangeListener methods defined by these classes in JDK
> 8 and remove them outright in JDK 9.
> In the mean-time we have Compact Profiles coming in JDK 8 so we need a
> solution that allows the java.util.logging and java.util.jar packages be
> included in the profiles without java.beans. As we are only talking
> about 6 methods in non-mainstream areas then the proposal is that these
> methods are not present in the subset Profiles of Java SE. This may be a
> surprise but it avoids a long of list of complications that would
> otherwise arise if there are references to types that do not exist. In
> implementation terms they will be removed in the build of the profiles,
> that's a minor detail.
> The changes proposed are just minor updates to LogManager and the
> Pack200.Packer and Pack200.Unpacker implementations so that the only
> dependencies on PropertyChangeListener and PropertyChangeEvent are in
> the addPropertyChangeListener and removePropertyChangeListener methods.
> Once they get to the profiles forest then we can put changes in to
> remove these methods (and maybe GC the constant pool too).
> One other thing to point out is that Packer and Unpacker are interfaces
> and so removing methods means that implementations that compile against
> the subset will not compile when the add/removePropertyChangeListener
> methods are present. As it should be very rare to implement Packer and
> Unpacker then it's probably not a big deal but we can use default
> methods to eliminate the concern so that implementations that compile
> against compact1 (for example) will also compile on the full platform.
> The webrev with the changes is here. Note that only changes to
> LogManager and pack200's PropMap are proposed to be included for now,
> changing the methods to default methods will come later along with
> javadoc updates, perhaps via the profiles forest. One other thing is
> that the Beans supporting class is duplicated between the two, this is
> mostly to avoid it getting used more widely. It will of course be
> removed once these methods are removed from the full platform, as per
> the original plan.
> http://cr.openjdk.java.net/~alanb/8004874/webrev/
> Thanks,
> Alan.

More information about the core-libs-dev mailing list