Development Environment

Setup and configure a development environment in which to develop and test OntoPop.
Last Updated: 16 March 2022 • Page Author: Jillur Quddus


This page is intended for software engineers and data engineers who wish to setup and configure a development environment in which to develop and test OntoPop.

Build Tools

Please ensure that the following prerequisite build tools are installed in your development environment:
  • OpenJDK 11 - open source reference implementation of Java 11.
  • Apache Maven - open source build automation tool for Java.
  • Git - open source distributed version control system.
  • Node.js 14 LTS - open source backend JavaScript runtime environment.
  • NPM - package manager for the Node.js JavaScript runtime environment.
OntoPop is primarily written in Java 11 and heavily utilizes the Java Spring Framework. Apache Maven is used as the dependency management and build automation tool for OntoPop's Java projects. A small number of modules are written in JavaScript for the Node.js (14 LTS) runtime environment - these modules use npm for package management.

Development Tools

Please install your preferred integrated development environment (IDE) for Java development. Industry-standard IDEs that support Java include:
  • Eclipse IDE - integrated development environment (released under the free and open source Eclipse Public License) for Java that also supports numerous industry-standard languages and frameworks via its plugin architecture, including C/C++, JavaScript, Julia, PHP, Python, R, Ruby and more, with native Git and Apache Maven integration.
  • IntelliJ IDEA - integrated development environment (available as a free community edition under the Apache 2.0 license, or as a commercial product) supporting multiple industry-standard languages and frameworks including Java, Kotlin, Groovy, JavaScript, Python, Scala and PHP with native Git, Apache Maven and Docker integration.

Deployment Tools

Dependent on your target deployment environment, you may wish to install cloud-native command line interfaces (CLIs) for easy deployment to cloud-based managed services such as AWS Lambda, AWS Elastic Beanstalk, Azure Function and Azure Web App instances.
  • AWS CLI - command line interface for managing AWS services.
  • EB CLI - command line interface for managing AWS Elastic Beanstalk environments.
  • Azure CLI - command line interface for managing Microsoft Azure services.
  • Azure Functions Core Tools - toolkit for developing, testing and running Azure Functions locally.
It is strongly recommended to setup and configure CI/CD pipelines (using your preferred CI/CD technologies such as Jenkins) to automate the build, testing and deployment of OntoPop's software services.

Open Software

OntoPop is developed using open standards and open frameworks and, as such, is agnostic of the target deployment environment meaning that it can be deployed to on-premise, private cloud, public cloud (including Amazon Web Services, Microsoft Azure and Google Cloud Platform), multi-cloud and/or hybrid environments, and supports integration with industry-standard middleware and other open software services.
If you wish to provision a local development environment for development and testing purposes, it is recommended to provision and configure a local self-managed environment consisting of entirely open-source software services and frameworks. Referring to the example self-managed deployment architecture, you may wish to provision and configure the following open software services for integration with OntoPop for local development and testing purposes:
Logical Software Service
Open Software Service
Self-Managed Installation *
Graph Database
Message Broker
Object Storage
Local Filesystem
Relational Database
Search Engine
Secrets Engine
Apache Jena (Fuseki)
* The self-managed installation instructions provided refer to provisioning and configuring local self-managed instances for development and testing purposes only (i.e. non-production environments).

Secure Tunnels

During local development and testing, there may be times when you wish to temporarily expose a local web server (such as the simple Node.js HTTP server or the Spring Boot embedded server) to the internet via a publicly accessible URL. For example, you may wish to test integration with a GitHub or WebProtégé webhook which requires a publicly-accessible payload URL to be configured.
In order to expose a local web service to the internet via a publicly accessible URL, you can install and deploy ngrok which can be used to create secure introspectable tunnels to localhost. For example, once installed, to start a tunnel that exposes a local web service running on port 8080 and bound to the localhost network interface, you can simply run the command ./ngrok http 8080 which will generate a publicly-accessible URL using HTTPS (for example https://e386-586-142-186-215.ngrok.io). For further information regarding using ngrok, please visit https://ngrok.com/docs.