signatures that are recorded for default methods

David Holmes david.holmes at oracle.com
Sun Dec 16 20:12:31 PST 2012


On 15/12/2012 1:01 AM, Paul Benedict wrote:
> David, forgive me for lousy sentence construction :-)
>
> There's no way to say "The default implementation does..." and not
> have it be part of the interface spec. Whatever the default method
> does becomes the stated contract for any other implementation of
> OpenJDK.

That need not be true and that is exactly what has yet to be determined.

The precedent already exists with implementation notes in existing JDK 
classes. Such notes do not constrain others who wish to provide an 
implementation of the JDK.

David
-----

> Paul
>
> On Fri, Dec 14, 2012 at 12:21 AM, David Holmes<david.holmes at oracle.com>  wrote:
>> Paul,
>>
>>
>> On 14/12/2012 9:46 AM, Paul Benedict wrote:
>>>
>>> Lance,
>>>
>>> Good questions. Someone with authority will surely answer, but here's
>>> my armchair opinion...
>>>
>>> If the Javadoc is to specify how the default method executes, than
>>> that would naturally infer all default implementations must have a
>>> stated contract. You can't document the default execution behavior in
>>> the public API and then let a provider switch the behavior. The two go
>>> hand-in-hand, imo.
>>
>>
>> I couldn't really make sense of that. :) The method has a contract. The
>> "default implementation" has to honor that contract. The question is whether
>> how the "default implementation" honors the method contract is required to
>> be part of a second contract.
>>
>> I hope that made sense :)
>>
>> David
>> -----
>>
>>
>>
>>> Paul
>>>
>>> On Thu, Dec 13, 2012 at 5:30 PM, Lance Andersen - Oracle
>>> <Lance.Andersen at oracle.com>   wrote:
>>>>
>>>>
>>>> On Dec 13, 2012, at 6:16 PM, Leonid Arbuzov wrote:
>>>>
>>>>> Good point, Joe.
>>>>> Those extra assertions for default methods can be checked
>>>>> by regular API tests separately from signature tests.
>>>>
>>>>
>>>> I am not clear on this.  See the message attached from David which ask a
>>>> similar question (from the attached email):
>>>> -------------------
>>>> 2. It is not obvious to me that the JDK's choice for a default
>>>> implementation has to be _the_ only possible implementation choice. In
>>>> many/most cases there will be a very obvious choice, but that doesn't mean
>>>> that all suppliers of OpenJDK classes have to be locked in to that choice.
>>>> -------------------
>>>>
>>>>
>>>> If everyone needs to implement the same default implementation then great
>>>> the JCK/TCK can test it and IMHO we should have a javadoc tag for this.
>>>>
>>>> If everyone is free to choose what the default behavior is, then we
>>>> cannot test it.
>>>>
>>>> So has there been a decision WRT the requirements for default methods?
>>>>
>>>>
>>>> Best
>>>> Lance
>>>>>
>>>>> Thanks,
>>>>> -leonid
>>>>>
>>>>> On 12/13/2012 1:05 PM, Joe Darcy wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> As with concrete methods on abstract classes, I would expect the
>>>>>> specifications of the default methods to often contain text akin to "This
>>>>>> default implementation does x, y, and z" since if the method is to be called
>>>>>> by subtypes, the self-use patterns in the default method need to be known.
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> -Joe
>>>>>>
>>>>>> On 12/13/2012 11:24 AM, Leonid Arbouzov wrote:
>>>>>>>
>>>>>>> Hello Lance,
>>>>>>>
>>>>>>> My understanding would be that the signature test
>>>>>>> should check that interface method is marked as default method
>>>>>>> but do not track the code in its default body
>>>>>>> (assuming that the body is not a part of a spec - API javadoc).
>>>>>>>
>>>>>>> (I've confirmed that with the signature test developer)
>>>>>>>
>>>>>>> Thanks,
>>>>>>> -leonid
>>>>>>>
>>>>>>> On 12/6/2012 9:01 AM, Lance Andersen - Oracle wrote:
>>>>>>>>
>>>>>>>> Folks,
>>>>>>>>
>>>>>>>> Will the signatures for interfaces that are recorded by the TCKs for
>>>>>>>> interfaces record the fact that a method includes a default method? or will
>>>>>>>> it just record the method definition?
>>>>>>>>
>>>>>>>> I am assuming it will, but I know there has been discussion that a
>>>>>>>> implementor could choose a different default implementation on one of the
>>>>>>>> recent threads that was up for review.
>>>>>>>>
>>>>>>>> I am still trying to understand what our guidelines are, if any for
>>>>>>>> documenting the behavior of the supplied default methods given the javadocs
>>>>>>>> are part of the specification for many APIs (and in some case the only
>>>>>>>> spec).
>>>>>>>>
>>>>>>>> Best
>>>>>>>> Lance
>>>>>>>>
>>>>>>>> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
>>>>>>>> Oracle Java Engineering
>>>>>>>> 1 Network Drive
>>>>>>>> Burlington, MA 01803
>>>>>>>> Lance.Andersen at oracle.com
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>>> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
>>>> Oracle Java Engineering
>>>> 1 Network Drive
>>>> Burlington, MA 01803
>>>> Lance.Andersen at oracle.com
>>>>
>>>>
>>>>
>>>
>>


More information about the lambda-dev mailing list