You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

6. Development

The main target development platform is Java. ODN/Publication may use PHP tool for generating APIs. Similarly, ODN/InternalCatalog and ODN/Catalog use already existing PHP tool DKAN to ensure data catalog functionality.

ODN must be able to run on both Linux and Windows operating systems.

6.1. Development process

We will create a github project to host ODN source codes. Certain modules, such as ODN/UnifiedViews, are developed under a separated github project (https://github.com/UnifiedViews). 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).

In case of extensions of already existing tools, such as DKAN, we will fork their project (repository) and implement the extensions needed. Consequently, we will issue pull requests to the original project, so that the original forked repository may accept our changes.

6.2. Used technologies

6.2.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.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/Catalog will be based on existing tool - DKAN - and its interface.

 

6.2.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.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.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.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.3. Development tools

6.3.1. Maven

Maven (http://maven.apache.org/) is used for management of dependencies in the source code, portability between Java IDEs and easy application build.

6.3.2. Git + GitFlow

Git (http://git-scm.com/) is a version control system used to keep versions of source code and track changes.

GitFlow (https://github.com/nvie/gitflow) is a collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model (http://nvie.com/git-model).

SourceTree (http://www.sourcetreeapp.com/) is recommended GUI client (available for MS Windows and MAC OSX). For linux, command line is necessary to use to follow gitflow workflow.

6.3.3. IDE for developers

Project is not strictly bounded to specific IDE, but Eclipse (http://www.eclipse.org/), Netbeans (https://netbeans.org/) or InteliJ Idea (http://www.jetbrains.com/idea/) are recommended IDEs for developing Java applications.

Eclipse and Netbeans have also plugins for development of other type of applications (for example php/Drupal based).

  • No labels