On 12/2/2015 1:34 PM, Paul Benedict wrote:
Alex, the primary benefit of annotations (vs. XML) is delivering code
and configuration in one bundle. It's unnecessary to deliver
configuration separately (i.e., XML) if you have a component that
primarily has one way of being configured. That's exactly why
annotations are very valuable in EE development and can displace
configuration files. Because of the bundling, no, I have no any
expectation of going into a text editor for modification.

Totally agree so far.

On the contrary, the discussion on these boards make me believe the
module information is going to be more fluid. Right now it's expressing
dependencies, but it seems frameworks and other tools may want to add
their own bits of information along the way. This, like the Manifest, I
do have expectations for editing at will. Perhaps I want to add data
only I care about, and I may want to see what others have added. That's
all a possibility.

Now we reach the disagreement. We don't think the module declaration will be as fluid as you do. Yes, frameworks and other tools will want to modify module declarations (usually by addition of dependencies or exports) but that's a handful of actors, all of whom are perfectly capable of using ASM. 99.99% of humans have no business modifying someone else's module declaration by hand, so there is no reason for it to be easy.

But, with that said, I am unsure the point you're trying to make. The
Module Descriptor is neither annotation nor XML and doesn't configure
code. Rather, it configures the build-time and/or run-time environment.
It's practically a weak "make" file or IDE project configuration in its
current form. It's very odd to take this information and shoe-horn it
into a class file.

A module declaration configures code -- "exports" determines the accessibility of types.

A module declaration ALSO configures the build-time and run-time environment -- I agree that "requires" is the same kind of dependence widget as found in an IDE project configuration. (Though "requires public" is quite a bit more powerful.)

Sure, you could configure accessibility with @Exported on public type declarations, and configure the build-time and run-time environment with a module.xml file. But if we're going to introduce the concept of a module to millions of Java developers, we see value in consolidating both kinds of configuration in one place -- a place that's fluid during development and not very fluid thereafter.

Alex

Cheers,
Paul

On Wed, Dec 2, 2015 at 2:16 PM, Alex Buckley <alex.buck...@oracle.com
<mailto:alex.buck...@oracle.com>> wrote:

    On 12/2/2015 8:31 AM, Paul Benedict wrote:

        All that information is locked in binary format but it
        should be human readable. I should be able to go in myself and
        do this with
        a text editor. I shouldn't have to compile a file anymore than I
        have to
        compile my MANIFEST.MF or web.xml or application.xml. This is
        all about
        configuration; not executable code.


    Annotations are human readable in source code but end up "locked in
    binary format". Entity mappings and REST endpoints (since we're
    speaking of EE constructs like application.xml) are configuration
    ... do you expect to be able to use a text editor to modify them?

    Is there any more to say on the issue of "source-flowing-to-binary
    versus structured-text" than is already rehearsed at
    
http://stackoverflow.com/questions/182393/xml-configuration-versus-annotation-based-configuration
    ?

    Alex


Reply via email to