Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 53775 invoked from network); 5 Mar 2005 01:10:33 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 5 Mar 2005 01:10:33 -0000 Received: (qmail 56384 invoked by uid 500); 5 Mar 2005 01:10:33 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 56357 invoked by uid 500); 5 Mar 2005 01:10:32 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Reply-To: "Derby Development" Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 56343 invoked by uid 99); 5 Mar 2005 01:10:32 -0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: neutral (hermes.apache.org: local policy) Received: from e6.ny.us.ibm.com (HELO e6.ny.us.ibm.com) (32.97.182.146) by apache.org (qpsmtpd/0.28) with ESMTP; Fri, 04 Mar 2005 17:10:31 -0800 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e6.ny.us.ibm.com (8.12.11/8.12.11) with ESMTP id j251ATRq016001 for ; Fri, 4 Mar 2005 20:10:29 -0500 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay02.pok.ibm.com (8.12.10/NCO/VER6.6) with ESMTP id j251ATqw070304 for ; Fri, 4 Mar 2005 20:10:29 -0500 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.12.11/8.12.11) with ESMTP id j251ATSb008406 for ; Fri, 4 Mar 2005 20:10:29 -0500 Received: from [127.0.0.1] (DMCSDJDT41P.usca.ibm.com [9.72.133.49]) by d01av01.pok.ibm.com (8.12.11/8.12.11) with ESMTP id j251ASDf008387 for ; Fri, 4 Mar 2005 20:10:28 -0500 Message-ID: <42290700.3020306@debrunners.com> Date: Fri, 04 Mar 2005 17:10:24 -0800 From: Daniel John Debrunner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.3) Gecko/20040910 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Derby Development Subject: Re: Single JDK14 compile model? References: <4228E051.5010601@debrunners.com> <4228FC74.2020408@apache.org> In-Reply-To: <4228FC74.2020408@apache.org> X-Enigmail-Version: 0.90.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Jeremy Boynes wrote: > Daniel John Debrunner wrote: > >> >> The trick I then use is to modify the class file sometime after >> compilation to mark it concrete by modifying the byte code in the .class >> file (using Derby's class file utilities). This does not cause any >> problems with the JVM (though there are some issues with the current >> version of jikes that Derby uses). >> > > This really really worries me and I am very uncomfortable with it. My justification is that it is exactly the same as if the class file implementing the interface has been compiled against one version of the interface, and then run with a newer version. JVM's handle this correctly. Take a simple example. public interface Y { public void a(); } public class X implements Y { public void a() {} } Now I compile X and Y, everything is correct. Now Y is modified to add a method. public interface Y { public void a(); public void b(); } Now Y is compiled, but *not* X. The VM correectly handles this at runtime, loading X correctly, even though it does not implement all the methods of Y. It has to, in order to support upwards compatibility of java code. My marking the class as not abstract is just mimicing this situation. Dan.