Re: [JEXL] Full Java module descriptor support

2023-04-25 Thread Andres Almiray
Hi Gilles,

On 2023/04/25 15:45:37 Gilles Sadowski wrote:
> It's an interesting functionality, but I think that it should be done in
> a general way, applicable to all "Commons" components (through
> settings/profile in the "parent" POM, I guess).
> 
> Regards,
> Gilles

Well, that's my end goal to be precise ;-)

Right now I'm in need for full Java modules for the following Commons 
components: codec, compress, io, jexl, lang3, net, text. But certainly other 
developers may want to have similar capabilities on other Commons components. 
Just happened to ping Jexl because it's the latest dependency I just added to 
the project I'm working on.

Cheers,
Andres

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



Re: [JEXL] Full Java module descriptor support

2023-04-25 Thread Gilles Sadowski
Hi.

Le mar. 25 avr. 2023 à 17:37, Andres Almiray  a écrit :
>
> Hello!
>
> I'd like to gauge interest in adding a full Java module descriptor (a.k.a 
> JPMS though the use of the acronym is discouraged) to commons-jexl.

It's an interesting functionality, but I think that it should be done in
a general way, applicable to all "Commons" components (through
settings/profile in the "parent" POM, I guess).

Regards,
Gilles

>
> The codebase is currently Java 8 compatible. Adding a full Java descriptor 
> requires using Java 9+ in the build but does not force the whole codebase to 
> migrate. There are a couple of alternatives to make this work:
>
> - setup Maven so that a secondary source tree containing `module-info-.java` 
> is compiled with Java 9+. The compiled class should be added to the project's 
> JAR file inside the versioned space, such as 
> `/META-INF/versions/9/module-info.class`.
>
> - use the Moditect[1] Maven plugin to generate `module-info.class` and place 
> it inside the JAR.
>
> Full Java modules are required when creating custom Java runtimes with jlink, 
> regardless of the modular status of the target application. This is the use 
> case I'm looking for at the moment.
>
> If interested I can work on a PR based on feedback you may have.
>
> Cheers,
> Andres
>
> [1] https://github.com/moditect/moditect
>
> PS: Some metadata of the latest JAR file:
>
> ```
> $ jarviz bytecode show --gav org.apache.commons:commons-jexl3:3.3
> subject: commons-jexl3-3.3.jar
> Unversioned classes. Bytecode version: 52 (Java 8) total: 321
>
> $ jarviz module name --gav org.apache.commons:commons-jexl3:3.3
> subject: commons-jexl3-3.3.jar
> name: commons.jexl3
> source: filename
> automatic: true
> valid: true
>
> $ jarviz bytecode show --gav org.apache.commons:commons-jexl3:3.3
> subject: commons-jexl3-3.3.jar
> Unversioned classes. Bytecode version: 52 (Java 8) total: 321
> aalmiray2:tmp aalmiray$ jarviz module descriptor --gav 
> org.apache.commons:commons-jexl3:3.3
> subject: commons-jexl3-3.3.jar
> name: commons.jexl3
> version: 3.3
> open: false
> automatic: true
> requires:
>   java.base mandated
> provides:
>   javax.script.ScriptEngineFactory with 
> org.apache.commons.jexl3.scripting.JexlScriptEngineFactory
> contains:
>   org.apache.commons.jexl3
>   org.apache.commons.jexl3.annotations
>   org.apache.commons.jexl3.internal
>   org.apache.commons.jexl3.internal.introspection
>   org.apache.commons.jexl3.introspection
>   org.apache.commons.jexl3.parser
>   org.apache.commons.jexl3.scripting
> ```
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



[JEXL] Full Java module descriptor support

2023-04-25 Thread Andres Almiray
Hello!

I'd like to gauge interest in adding a full Java module descriptor (a.k.a JPMS 
though the use of the acronym is discouraged) to commons-jexl.

The codebase is currently Java 8 compatible. Adding a full Java descriptor 
requires using Java 9+ in the build but does not force the whole codebase to 
migrate. There are a couple of alternatives to make this work:

- setup Maven so that a secondary source tree containing `module-info-.java` is 
compiled with Java 9+. The compiled class should be added to the project's JAR 
file inside the versioned space, such as 
`/META-INF/versions/9/module-info.class`.

- use the Moditect[1] Maven plugin to generate `module-info.class` and place it 
inside the JAR.

Full Java modules are required when creating custom Java runtimes with jlink, 
regardless of the modular status of the target application. This is the use 
case I'm looking for at the moment.

If interested I can work on a PR based on feedback you may have.

Cheers,
Andres

[1] https://github.com/moditect/moditect

PS: Some metadata of the latest JAR file:

```
$ jarviz bytecode show --gav org.apache.commons:commons-jexl3:3.3
subject: commons-jexl3-3.3.jar
Unversioned classes. Bytecode version: 52 (Java 8) total: 321

$ jarviz module name --gav org.apache.commons:commons-jexl3:3.3
subject: commons-jexl3-3.3.jar
name: commons.jexl3
source: filename
automatic: true
valid: true

$ jarviz bytecode show --gav org.apache.commons:commons-jexl3:3.3
subject: commons-jexl3-3.3.jar
Unversioned classes. Bytecode version: 52 (Java 8) total: 321
aalmiray2:tmp aalmiray$ jarviz module descriptor --gav 
org.apache.commons:commons-jexl3:3.3
subject: commons-jexl3-3.3.jar
name: commons.jexl3
version: 3.3
open: false
automatic: true
requires:
  java.base mandated
provides:
  javax.script.ScriptEngineFactory with 
org.apache.commons.jexl3.scripting.JexlScriptEngineFactory
contains:
  org.apache.commons.jexl3
  org.apache.commons.jexl3.annotations
  org.apache.commons.jexl3.internal
  org.apache.commons.jexl3.internal.introspection
  org.apache.commons.jexl3.introspection
  org.apache.commons.jexl3.parser
  org.apache.commons.jexl3.scripting
```

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org