Serialization opt-in syntax (summary)
Remi Forax
forax at univ-mlv.fr
Mon Oct 15 15:12:44 PDT 2012
On 10/12/2012 08:17 PM, Brian Goetz wrote:
> I believe this option was on the list on the issue tracker?
>
> Sent from my iPhone
How do you want to implement that ?
Patch the compiler and the spec to emit an invokedynamic when wrap() is
called ?
Rémi
>
> On Oct 12, 2012, at 5:31 PM, Sam Pullara <sam at sampullara.com
> <mailto:sam at sampullara.com>> wrote:
>
>> Crazy idea. Can we just make it a method call that wraps up the lamba
>> in a wrapper that can be serialized? We could add the static method
>> to Serializable:
>>
>> Callable<Boolean> r = Serializable.wrap(() -> true);
>>
>> It may have to be a little magical (not unlike serialization) but at
>> least it is obvious and doesn't introduce anything new. You could
>> even include the name if you want to make them more robust:
>>
>> Callable<Boolean> r = Serializable.wrap("My True Callable", () -> true);
>>
>> Sam
>>
>> On Fri, Oct 12, 2012 at 9:06 AM, Brian Goetz <brian.goetz at oracle.com
>> <mailto:brian.goetz at oracle.com>> wrote:
>>
>> I don't even agree that posterity would prefer it the other way,
>> since there still are inner classes and many users have learned
>> to deal with the frustrating interaction between inner classes
>> and serialization. A more accurate statement is that posterity
>> would have preferred we not make the mistakes of the past the
>> first time, but absent a time machine, we're kind of stuck there.
>>
>> In any case, I don't think "lambdas cannot be serializable" is a
>> realistic option at this point. Users will expect:
>>
>> SerializablePredicate p = x -> true
>>
>> to be serializable -- and entirely reasonably so. We made a
>> commitment to SAM conversion a long time ago, and part of that is
>> users should not have to reason about "how was this SAM
>> constructed -- did it come from a lambda or a class?" Otherwise
>> it is a leaky abstraction. Yes, serialization sucks -- and we're
>> copying the suckage mode that users have spent 15 years getting
>> used to. But that 15 years of user community experience matters
>> -- users have learned how to deal with the limitations, and there
>> is a lot of value in not asking users to learn new and different
>> limitations (especially those that punish the users who learned
>> to live within the old limitations.)
>>
>> The EG took a poll on this at the July meeting last year, and was
>> unanimously in favor of the "weak serialization" target. David
>> wasn't at that meeting, which is too bad, but I just don't see
>> enough new evidence to reopen this issue now.
>>
>> However, we can and should spend our effort on "how can we make
>> things as good as we can subject to the 'no worse than inner
>> classes' rubric. I suggest we redirect our efforts towards that.
>> Choosing a less-brittle translation strategy is a good place to
>> start.
>>
>> On Oct 12, 2012, at 4:46 PM, Kevin Bourrillion wrote:
>>
>>> On 10/12/2012 09:37 AM, Brian Goetz wrote:
>>>
>>> I keep going back to the rubric of "no worse than inner
>>> classes."
>>>
>>>
>>> On Fri, Oct 12, 2012 at 8:17 AM, David M. Lloyd
>>> <david.lloyd at redhat.com <mailto:david.lloyd at redhat.com>> wrote:
>>>
>>> And I keep going back to "making the mistake once does not
>>> justify making it again"...
>>>
>>>
>>> Ha. I completely see the sense in both of these mindsets.
>>>
>>> Posterity hugely prefers that we see it the second way; yet here
>>> we are in the present tense and we have to get something working
>>> and deliver it. Is that the conflict we're having?
>>>
>>> --
>>> Kevin Bourrillion | Java Librarian | Google,
>>> Inc. |kevinb at google.com <mailto:kevinb at google.com>
>>>
>>
>>
More information about the lambda-spec-observers
mailing list