Giter Site home page Giter Site logo

neoemf's Introduction

NeoEMF

Build Status CodeCov Codacy Maven Central Javadoc Plugin Licence FOSSA Status

Check out our wiki for further information on the installation, usages, supported backends, code examples, developer resources, etc.

What Is NeoEMF?

NeoEMF is an AtlanMod research team project that aims at handling large EMF models in an efficient and scalable way.

It is based on our work on Neo4EMF, a scalable and graph-based backend for persisting EMF models.

NeoEMF is a multi-backend framework developped to allow an easy integration of custom backends depending on user needs.

What Are the Features?

NeoEMF comes with some features depending on the backend used:

  • Lazy-loading mechanism: A model is loaded part by part while needed
  • Caching: NeoEMF relies on database caches to retrieve EObjects But in some situation where time performance is important this is not enough and it is possible to use application-level caches to speed up information loading
  • Auto-commit: For the backend having restrictions on transaction sizes it is possible to use the auto-commit feature to split large transaction into several small ones
  • Dirty saving: Handle large models that haven't been persisted to avoid memory overhead

Why Should I Use NeoEMF?

NeoEMF is fully EMF compliant, that means there is no modification to do to use it with existing EMF based applications.

Additionally NeoEMF can be plugged with several persistence solutions and is configurable to fit the best your needs (custom caches, in-memory resources, auto-commit,...).

In addition, NeoEMF provides a query API to perform optimized OCL queries over models and reify the results as navigable models.

Usage

Latest Release

The most recent release is NeoEMF 1.0.2, released May 21, 2017.

To add a dependency on NeoEMF using Maven, use the following:

<dependencies>
  <dependency>
    <groupId>fr.inria.atlanmod.neoemf</groupId>
    <artifactId>neoemf-core</artifactId>
    <version>1.0.2</version>
  </dependency>

  <dependency>
    <groupId>fr.inria.atlanmod.neoemf</groupId>
    <artifactId>neoemf-io</artifactId>
    <version>1.0.2</version>
  </dependency>
</dependencies>

Supported Implementations

All native implementations are located under the neoemf-data artifact. To add the dependency of the specific implementation you want to use, simply use:

<dependency>
  <groupId>fr.inria.atlanmod.neoemf</groupId>
  <artifactId>neoemf-data-{name}</artifactId>
  <version>1.0.2</version>
</dependency>

Where {name} is any of:

  • Blueprints:
    • TinkerGraph : blueprints-core
    • Neo4j : blueprints-neo4j (requires blueprints-core)
  • MapDB : mapdb
  • BerkeleyDB: berkeleydb
  • HBase: hbase

Snapshots

Snapshots are automatically build from the master and are available throught Maven using 1.0.3-SNAPSHOT.

Installation

Dedicated pages are available in our wiki for the installation and the build.

Update Site

The simplest way to install NeoEMF is to use the update-site that is available here. Install the NeoEMF Persistence Framework component, which provides NeoEMF core classes and utils. Select the backend specific implementation(s) you want to plug in NeoEMF.

Local Build

You can build locally NeoEMF by following the instructions in the Build section. It is then possible to install NeoEMF from the local built update-site, or by importing the generated plugins.

Benchmarks

A full benchmarks description is available at here.

Issues

If you experience issues installing or using NeoEMF, you can submit an issue on github or contact us at [email protected]

Known issues:

  • Only Luna plugins are fetched (the compatibility is not ensured for previous Eclipse versions)
  • The Eclipse plugins can not be built if Maven can not access internet (it is needed to fetch Luna p2 repositories)
  • Sometimes the plugin build crashes and/or freezes during p2 index fetching from Luna repositories. It is generally sufficient to cancel the build (ctrl-c) and to relaunch it.

Credits

Performance problems and memory leaks are diagnosed with Java Profiler

License

FOSSA Status

neoemf's People

Contributors

abelgomez avatar amine-ben avatar fossabot avatar gdaniel avatar sunye avatar timeraider4u avatar yvrng avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.