[hibernate-dev] HHH-10487 - @Incubating annotation

Gunnar Morling gunnar at hibernate.org
Fri Jan 29 13:43:52 EST 2016


One reason potentially speaking against RUNTIME is that any attributes
of the annotation would be retained as well, e.g. Strings with a
description. So it'd consume a tiny bit of memory which is not needed
by the user application.

Btw. there is a related JEP (http://openjdk.java.net/jeps/277) which
aims at generalising the existing @Deprecated annotation for purposes
like this. It suggests to add attributes to @Deprecated for expressing
the deprecation reason and an enum with possible causes. One being
EXPERIMENTAL:

    @Deprecated(EXPERIMENTAL)
    void myNewApi() { ... }

No idea though whether/when it will be part of Java, it's not listed
in the Java 9 JEPs at http://openjdk.java.net/projects/jdk9/.

Interestingly, @Deprecated has RUNTIME retention which may be the
reason that they don't propose to add a String attribute such as
description() as part of that JEP.

2016-01-29 19:19 GMT+01:00 Steve Ebersole <steve at hibernate.org>:
> I don't have anything specific in mind.  Just more of a general thought
> process, since its the first annotation of this type I am adding.
>
>
> On Fri, Jan 29, 2016 at 12:11 PM Sanne Grinovero <sanne at hibernate.org>
> wrote:
>>
>> I would think that such a tool would work at compile time rather than
>> reflectively at runtime, but one can't be sure of course so it depends
>> on what you have in mind.
>>
>> I'd also say make @Incubating with CLASS retention, it's more than
>> what people had before.. you can always evolve it later if someone
>> come with a brilliant use case which requires more.
>>
>>
>> On 29 January 2016 at 18:06, Steve Ebersole <steve at hibernate.org> wrote:
>> > I personally do not in terms of usage from ORM,  nor in usage by ORM
>> > users
>> > either. I do wonder about tooling though. Like would it be useful for a
>> > tool to see an implementation of an @Incubating contract being used and
>> > warn the user?
>> >
>> > On Fri, Jan 29, 2016, 12:02 PM Gunnar Morling <gunnar at hibernate.org>
>> > wrote:
>> >
>> >> Do you see any use case for accessing it reflectively at runtime?
>> >>
>> >> FWIW, OGM's @Experimental has CLASS retention, which I think is
>> >> "enough retention" for its purpose.
>> >>
>> >> 2016-01-29 18:50 GMT+01:00 Steve Ebersole <steve at hibernate.org>:
>> >> > Per HHH-10487[1], I want to add an @Incubating annotation to mark
>> >> > APIs
>> >> that
>> >> > are still incubating.  Specifically, what do y'all think of
>> >> > `java.lang.annotation.RetentionPolicy#CLASS` versus
>> >> > `java.lang.annotation.RetentionPolicy#RUNTIME`?
>> >> >
>> >> > [1] https://hibernate.atlassian.net/browse/HHH-10487
>> >> > _______________________________________________
>> >> > hibernate-dev mailing list
>> >> > hibernate-dev at lists.jboss.org
>> >> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>> >>
>> > _______________________________________________
>> > hibernate-dev mailing list
>> > hibernate-dev at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev


More information about the hibernate-dev mailing list