<Swing Dev> JDK 9 RFR of JDK-8033221: Fix serial lint warnings in sun.swing.*

Joe Darcy joe.darcy at oracle.com
Fri Jan 31 17:49:25 UTC 2014


Hello,

On 01/30/2014 11:36 AM, Tom Hawtin wrote:
> On 30/01/2014 13:05, Sergey Bylokhov wrote:
>> It seems to me that in this fix we actually suppress a bugs. These
>> classes can be extended from the public classes, and can be assigned to
>> the parent.
>> If serialization of these classes are not supported, we should block it
>> via readObject+writeObject with assertion error, if it is supported it
>> should be implemented.
>
> + readObjectNoData. Correctly spelt serialPersistenFields as an array 
> containing null appeared to be most effective, though implementation 
> dependent.
>
> Really the legacy serialisation mechanism should be extended with a 
> @NotActuallySerializable annotation. Apply that to sun.swing.-, 
> com.sun.swing.-, javax.swing.- and others.
>
> Tom
>

Especially for the JDK, javac should be a first-line static analysis 
tool to help find and prevent problems. Since the JDK can use a version 
of the Java language not supported anywhere else (while a feature 
release is in development), javac may be the only such static tool 
available.

In my estimation, we are being hampered by not being able to use javac 
in this capacity to a greater degree in the JDK build.

For example, during JDK 8 I pushed a fix for

     JDK-8021109 Add serialVersionUID to LambdaConversionException.java

Another engineer had added an exception type and forgot to add a 
serialVersionUID (since all exception types are serializable, thanks 
RMI!). I've made this sort of omission myself and had to correct it 
later; this sort of omission would be kicked out immediately if the 
serial javac lint warning was enabled during the build.

I am not a client engineer by training or inclination, but in JDK 9, 
I've been working on clearing the client libraries of lint and doclint 
warnings [1] to help complete the larger effort of clearing the jdk 
repository of such warnings, a stated goal for JDK 9 [2]. As a result, 
hundreds of lint warnings have been removed and three additional lint 
warning categories have been enabled in the build of the jdk repo so far 
in JDK 9 [3]. The serial warning is the lint category I'm currently 
working on.

Many of the files I've been modifying haven't been updated for a decade 
or more and didn't seem likely to be updated absent a cleanup effort. I 
would welcome (and actually prefer!) more direct involvement from 
engineers with experience in the client code in the effort of clearing 
warnings in that code.

If a more comprehensive update to the serialization status of the sun.* 
libraries is in order, I in no way oppose that. But, the better is the 
enemy of the good, and in the mean time I think we need a JDK build that 
is clean on javac lint warnings.

Cheers,

-Joe

[1]
JDK-8033221     Fix serial lint warnings in sun.swing.*
JDK-8032733     Fix cast lint warnings in client libraries
JDK-8032627     Add @SuppressWarnings("serial") to appropriate 
javax.swing classes
JDK-8032616     Fix non-deprecation warnings in com.sun.beans.*
JDK-8032047     Fix static lint warnings in client libraries
JDK-8031736     Fix doclint issue in javax.print
JDK-8031589     Fix doclint issues in java.beans.beancontext
JDK-8031550     Fix overloads lint warnings in client code
JDK-8031467     Fix doclint missing issues in java.awt.{dnd[.peer], 
datatransfer}
JDK-8031082     Fix non-missing doclint problems in client libraries
JDK-8030845     Fix doclint missing issues in java.awt.event

[2] 
http://mail.openjdk.java.net/pipermail/jdk9-dev/2013-December/000141.html

[3]
JDK-8032734: Add cast lint warning to build of jdk repository
JDK-8032048: Add static lint warning to build of jdk repository
JDK-8031747: Add overloads lint warning to build of jdk repository




More information about the swing-dev mailing list