|
1 | 1 | ## OGO ## |
2 | 2 | <img src="images/ogo_logo.png" width="700" /> |
3 | 3 |
|
4 | | -Object Graph Programming (OGO) enables manipulating the JVM heap declaratively through queries. The queries |
5 | | -are written using the [Cypher Query Language](https://neo4j.com/developer/cypher/). OGO supports two high-level |
6 | | -modes, $OGO^{Neo}$ and $OGO^{Mem}$. The former serializes a sub-graph of the entire JVM heap object graph, loads |
7 | | -it into a standalone Neo4J database and executes queries inside it. The latter executes queries in-memory (inside |
8 | | -the native agent) using [Antlr](https://www.antlr.org/) to parse the query and visitors to execute it Currently, |
9 | | -$OGO^{Mem}$ is under construction and not all functionalities may work. |
10 | | - |
11 | | -The OGO API is divided primarily into two packages, `client` and `server`. The `client` classes are common to both |
12 | | -the modes whereas the `server` classes are exclusive to $OGO^{Neo}$. These packages are implemented as an |
13 | | -[RMI](https://docs.oracle.com/javase/tutorial/rmi/overview.html) client server application. This prevents polluting |
14 | | -the JVM heap of the test subject with Neo4J database objects. |
| 4 | +Object Graph Programming (OGO) enables manipulating the JVM heap |
| 5 | +declaratively through queries. The queries are written using the |
| 6 | +[Cypher Query Language](https://neo4j.com/developer/cypher/). OGO |
| 7 | +supports two high-level modes, $OGO^{Neo}$ and $OGO^{Mem}$. The former |
| 8 | +serializes a sub-graph of the entire JVM heap object graph, loads it |
| 9 | +into a standalone Neo4J database and executes queries inside it. The |
| 10 | +latter executes queries in-memory (inside the native agent) using |
| 11 | +[Antlr](https://www.antlr.org/) to parse the query and visitors to |
| 12 | +execute it Currently, $OGO^{Mem}$ is under construction and not all |
| 13 | +functionalities may work. |
15 | 14 |
|
16 | 15 | ## Examples ## |
17 | 16 |
|
|
0 commit comments