Serialization opt-in syntax (summary)

David M. Lloyd david.lloyd at
Fri Oct 12 09:32:07 PDT 2012

Users might also expect this to work:

SerializablePredicate = Proxy.newProxyInstance(
     new Class[] { SerializablePredicate.class },
     new NonSerializableHandler());

But it doesn't, for exactly the same reasons in fact.

On 10/12/2012 11:06 AM, Brian Goetz 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 <mailto:david.lloyd at>> 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
>> <mailto:kevinb at>


More information about the lambda-spec-experts mailing list