Skip to content

Commit 0396abd

Browse files
README: Provide essential overview & how-tos
1 parent a0d1f8c commit 0396abd

File tree

1 file changed

+99
-1
lines changed

1 file changed

+99
-1
lines changed

README.md

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,99 @@
1-
# MODELED-Java
1+
# MODELED :: Java
2+
3+
> Bringing **M**odel-driven **O**bject-oriented `#coding`
4+
with **D**eclarative, **E**vent-based, **L**ightweight,
5+
& **E**xtensible **D**esign to [Java](https://oracle.com/java) —&
6+
to Java interop in [Python](https://python.org)
7+
via [Jep](https://github.com/ninia/jep)
8+
9+
### For Java it provides:
10+
11+
* a complement to [Lombok](https://projectlombok.org) — though
12+
based on generated code instead of AST manipulation — fueling
13+
properties with `Optional`, `Stream` /
14+
[StreamEx](https://github.com/amaembo/streamex), `Future`,
15+
& event-based access
16+
* a foundation for connecting Java classes more intuitively
17+
with data model languages, with data storage, serialization,
18+
& with user interface technologies, etc.
19+
20+
### For Python, things are yet TODO
21+
22+
## Setup // how-to add it to your project
23+
24+
### Java :: Gradle
25+
26+
* https://docs.gradle.org/current/userguide/declaring_dependencies.html
27+
28+
**Groovy** DSL —`build.gradle`
29+
30+
```groovy
31+
dependencies {
32+
annotationProcessor group: 'me.modeled', name: 'modeled-java', version: '0.1.0-SNAPSHOT'
33+
implementation group: 'me.modeled', name: 'modeled-java', version: '0.1.0-SNAPSHOT'
34+
}
35+
```
36+
37+
**Kotlin** DSL —`build.gradle.kts`
38+
39+
```kotlin
40+
dependencies {
41+
annotationProcessor(group = "me.modeled", name = "modeled-java", version = "0.1.0-SNAPSHOT")
42+
implementation(group = "me.modeled", name = "modeled-java", version = "0.1.0-SNAPSHOT")
43+
}
44+
```
45+
46+
* **OR** through `gradle/libs.versions.toml`
47+
https://docs.gradle.org/current/userguide/version_catalogs.html
48+
49+
```toml
50+
[versions]
51+
modeled-java = '0.1.0-SNAPSHOT'
52+
53+
[libraries]
54+
modeled-java = { group = 'me.modeled', name = 'modeled-java', version.ref = 'modeled-java' }
55+
```
56+
57+
**Groovy** DSL —`build.gradle`
58+
59+
```groovy
60+
dependencies {
61+
annotationProcessor libs.modeled.java
62+
implementation libs.modeled.java
63+
}
64+
```
65+
66+
**Kotlin** DSL —`build.gradle.kts`
67+
68+
```kotlin
69+
dependencies {
70+
annotationProcessor(libs.modeled.java)
71+
implementation(libs.modeled.java)
72+
}
73+
```
74+
75+
### Java :: Maven —`pom.xml`
76+
77+
* https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
78+
79+
```xml
80+
<dependency>
81+
<groupId>me.modeled</groupId>
82+
<artifactId>modeled-java</artifactId>
83+
<version>0.1.0-SNAPSHOT</version>
84+
</dependency>
85+
```
86+
87+
## `#coding` // how-to use it in your project
88+
89+
### Java :: `@Modeled` classes, `@Modeled.Property` fields
90+
91+
For every `@Modeled` class,
92+
a `sealed` & `_Model`-suffixed interface is generated,
93+
which defines a whole variety of `default` access methods — getters,
94+
setters, checkers, & requirers; mappers, streamers, listeners, etc. — for
95+
every `@Modeled.Property` defined within the `@Modeled` class:
96+
97+
```java
98+
import me.modeled.Modeled;
99+
```

0 commit comments

Comments
 (0)