Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 67250 invoked from network); 11 May 2005 12:42:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 11 May 2005 12:42:22 -0000 Received: (qmail 23396 invoked by uid 500); 11 May 2005 12:45:48 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 23336 invoked by uid 500); 11 May 2005 12:45:48 -0000 Mailing-List: contact harmony-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-dev@incubator.apache.org Received: (qmail 23313 invoked by uid 99); 11 May 2005 12:45:48 -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 imag.imag.fr (HELO imag.imag.fr) (129.88.30.1) by apache.org (qpsmtpd/0.28) with ESMTP; Wed, 11 May 2005 05:45:47 -0700 Received: from [129.88.103.2] (invite2.imag.fr [129.88.103.2]) by imag.imag.fr (8.13.0/8.13.0) with ESMTP id j4BCXJZK019994 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 11 May 2005 14:34:32 +0200 (CEST) Message-ID: <4281FB92.1010601@ungoverned.org> Date: Wed, 11 May 2005 08:33:22 -0400 From: "Richard S. Hall" User-Agent: Mozilla Thunderbird 1.0.2-1.3.2 (X11/20050324) X-Accept-Language: en-us, en MIME-Version: 1.0 To: harmony-dev@incubator.apache.org Subject: Re: Class Library Modularity [Was Re: State of the World] References: <42806577.6080503@ungoverned.org> <4281A571.6010304@realityforge.org> <4281BD0B.1040100@ungoverned.org> <4281D861.7070900@realityforge.org> In-Reply-To: <4281D861.7070900@realityforge.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-1.6 (imag.imag.fr [129.88.30.1]); Wed, 11 May 2005 14:34:33 +0200 (CEST) X-IMAG-MailScanner: Found to be clean X-IMAG-MailScanner-Information: Please contact the ISP for more information X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Peter Donald wrote: > Richard S. Hall wrote: > >> However, while I agree that Sun's implementation does provide some >> modularity mechanisms, there seems to be two short comings: >> >> 1. The mechanisms themselves do not go far enough, they only provide >> minimal capabilities. > > > True but what more do you need at the runtime level? Well, I can think of one thing I would like, some way for the packages contained in a JAR file be able to inform the underlying runtime not only its external dependencies, but also what it provides (or what it exposes). Due to limitations in the Java visibility/protection rules, sometimes it is not possible to avoid making implementation API public because you are forced to declare classes/methods as public if you need to use them from more than one package. Of course, you could just put everything in the same package and use package protection, but that also defeats the purpose of trying to structure things into modules. So, for a module to be able to say that I export package "foo", but not "foo.FooImpl" would be very useful from my perspective. Then other packages inside the JAR are privy to implementation APIs, where packages outside the JAR are not. I also have lots of interesting ideas about dynamic deployment/updates too, but I am sure that these things would be extension to the platform as opposed to implementing a conforming J2SE platform. :-) -> richard