db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6856) Make it possible to build Derby using JDK 9
Date Sat, 29 Apr 2017 18:56:04 GMT

    [ https://issues.apache.org/jira/browse/DERBY-6856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15990011#comment-15990011

Rick Hillegas commented on DERBY-6856:

When I compile Derby using JDK 9 build 167, I see several instances of the following warning:

   warning: [deprecation] finalize() in Object has been deprecated



The following deprecation summary now appears in the javadoc for java.lang.Object.finalize():

"Deprecated. The finalization mechanism is inherently problematic. Finalization can lead to
performance issues, deadlocks, and hangs. Errors in finalizers can lead to resource leaks;
there is no way to cancel finalization if it is no longer necessary; and no ordering is specified
among calls to finalize methods of different objects. Furthermore, there are no guarantees
regarding the timing of finalization. The finalize method might be called on a finalizable
object only after an indefinite delay, if at all. Classes whose instances hold non-heap resources
should provide a method to enable explicit release of those resources, and they should also
implement AutoCloseable if appropriate. The Cleaner and PhantomReference provide more flexible
and efficient ways to release resources when an object becomes unreachable."

Most of these classes do implement AutoCloseable. We should investigate hooking these classes
up to the new Cleaner-based mechanism for object rundown. I will need advice from the experts
about how to proceed. I would be grateful for any advice from the community about how to use
this new Cleaner class.

I am worried that migrating this delicate logic may give rise to heisenbugs which our release
processes will not discover. We may want to merely suppress this warning for our first JDK9-built
release. We can always migrate to Cleaner-based finalization after the wider Java eco-system
has developed best practices around using the Cleaner class.

> Make it possible to build Derby using JDK 9
> -------------------------------------------
>                 Key: DERBY-6856
>                 URL: https://issues.apache.org/jira/browse/DERBY-6856
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions:
>            Reporter: Rick Hillegas
>         Attachments: derby-6856-01-ab-addShardingKey.diff, derby-6856-01-ac-cleanup.diff,
derby-6856-02-aa-addShardingKey.diff, derby-6856-03-aa-autoboxingDeprecationWarnings.diff,
derby-6856-03-ab-autoboxingDeprecationWarnings.diff, derby-6856-04-aa-autoboxingDeprecationWarnings-part2.diff,
derby-6856-04-ab-autoboxingDeprecationWarnings-part2.diff, derby-6856-05-ac-roundingMode-Class.newInstance.diff,
derby-6856-05-af-roundingMode-Class.getDeclaredConstructor.diff, derby-6856-05-ag-roundingMode-Class.newInstance.diff,
derby-6856-06-aa-observable.diff, derby-6856-07-aa-oneMoreNewInstance.diff, derby-6856-08-aa-cleanupJavadoc.diff,
derby-6856-09-aa-javadocEntities.diff, derby-6856-10-aa-disable-permissions-subverting-test.diff,
derby-6856-11-aa-jigsawResourceLocation.diff, derby-6856-XX-ab-base.diff, derby-6856-XX-ac-base.diff,
derby-6856-XX-ad-base.diff, derby-6856-XX-ae-base.diff, PTest.java, ptestScript
> Derby can't be built with JDK 9. Java 9 introduces new JDBC classes like java.sql.ShardingKey
and methods which refer to these new classes.
> In addition, project Jigsaw has created a new way to name classes (see http://openjdk.java.net/jeps/220).
This breaks the PropertySetter build tool which we use so that old JVMs can compile Derby
and so that Derby can be compiled to run on old JVMs.
> It is likely that we will need to leave this issue open throughout the development cycle
of Java 9.

This message was sent by Atlassian JIRA

View raw message