Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: "Used technologies" clarified: we have Java stack and Python stack

...

For the whole ODN, we will follow the guidelines for sustainable development proposed for developing ODN/UnifiedViews (https://grips.semantic-web.at/display/UDDOC/Guidelines+for+Contributors).

6.2. Used technologies

There are two main technological stacks in the ODN, derived from re-use of UnifiedViews and CKAN in the project:

  1. Java based stack - for ODN/UnifiedViews, ODN/Management, etc.
  2. Python based stack - for ODN/InternalCatalog and ODN/PublicCatalog

6.2.1. Java stack

Java based technologies are used for majority of ODN modules. Each module has its own sub-set of technologies, frameworks, libraries and tools. Some of those are mentioned here, but for more concrete and up-to-date information, please refer to homepages and documentation of upstream projects (TODO: add Wiki page listing all main upstram projects and link here).

6.2.1.1. Spring

Spring is an open source application framework and inversion of control container for Java platform. The core features of the Spring Framework can be used by any Java application, but there are extensions for building web applications on top of the Java EE (enterprise) platform. Spring will be used in all ODN modules implemented in Java.

6.2.1.2. Vaadin

Java open source framework for building web applications. This framework incorporates event-driven programming and widgets, which enables a programming model that is closer to GUI software development than traditional web development with HTML and JavaScript. Developers may write pure Java code and the framework ensures the communication between server side code (application server) and client side code (browser), also Java code is automatically translated to JavaScript for the client code. Vaadin will be used in ODN/UnifiedViews, ODN/Management, ODN/Publication for implementing Management GUI. ODN/InternalCatalog, ODN/PublicCatalog will be based on existing tool - DKAN - and its interface.

6.2.1.3. Sesame openRDF

Sesame openRDF is an open source framework for processing RDF data. This includes parsing, storing, inferencing and querying of/over such data. It offers an easy-to-use API that can be connected to all leading RDF storage solutions. It allows to connect to SPARQL endpoints and create applications that leverage the power of linked data and Semantic Web. OpenRDF is used in ODN/UnifiedViews, ODN/Storage, ODN/Publication to work with RDF database.

EclipseLink is the open source Eclipse Persistence Services Project. The software provides an extensible framework that allows Java developers to interact with various data services, including databases, web services, Object XML mapping (OXM), and Enterprise Information Systems (EIS). EclipseLink is used to persist data objects in ODN/UnifiedViews.

6.2.1.5. XStream

XStream is a simple library to serialize objects to XML and back. XStream uses reflection to discover the structure of the object graph to serialize at run time and does not require modifications to objects. It can serialize internal fields, including private and final, and supports non-public and inner classes. XStream is used in ODN/UnifiedViews to store pipeline configurations.

6.2.1.6. KineticJS

KineticJS is an HTML5 Canvas JavaScript framework that enables high performance animations, transitions, node nesting, layering, filtering, caching, event handling for desktop and mobile applications.

You can draw things onto the stage, add event listeners to them, move them, scale them, and rotate them independently from other shapes to support high performance animations, even if your application uses thousands of shapes.

6.2.1.7. OSGI framework

ODN/UnifiedViews must support easy and smooth extension with custom DPUs added into the running application. Every DPUs may use its set of libraries. These libraries must not be in conflict. To ensure that, we use OSGI framework, in particular the Apache Felix implementation (http://felix.apache.org/).

6.2.2. Python stack

TODO: Add some more details about Python itself (version supported, etc.) and frameworks used in CKAN, etc.

6.3. Development tools

6.3.1. Maven

...