# Software development with ESDL

The use of ESDL requires software that can handle ESDL models. For the development of software that can handle ESDL, we have gained most experience using Java and Python. This produces good results and relatively easy handling of an ESDL model in memory. We have some experience with Javascript and Typescript and no experience yet with .NET.

## Java

ESDL is made to be used in all kinds of applications. Since the ESDL-model is EMF-based, the simplest way is to use the generated model code directly using Java or another JVM-based language.

## Python

If you're used to programming in Python, the [PyEcore](https://pyecore.readthedocs.io/en/latest/index.html) project provides very nice support for handling ecore models in Python.

Click [here](/esdl/software-development/integration-with-python-and-pyecore.md) to see detailed instructions

### Jupyter Notebook ESDL Tutorial

Click [here](https://github.com/EnergyTransition/ESDL-PyEcore-Tutorial/blob/master/ESDLTutorials.ipynb) to find a Jupyter Notebook based tutorial to learn how to use ESDL in python (using PyEcore)

## .NET

Using the ECoreNetto library ([link](https://github.com/RHEAGROUP/EcoreNetto)) you can use the ESDL ECore model in dotnet applications, however we've never tried it ourselves and have no idea if and how it works.

## Others (javascript, typescript, ...)

An alternative is using the generated XML-Schema to integrate with non-Java-based programming languages. When code is generated, it automatically creates this XML-schema called `esdlXML.xsd`. Other export options are also available, as EMF stores its models in XMI (XML Metadata Interchange):

* XML Schema for XMI (creating an XMI-based XML schema)
* UML - uses the UML concepts to export to the UML. UML files can subsequently read by other UML modeling tools such as Enterprise Architect or Papyrus UML editor.

You can find these export options by right-clicking on the `esdl.genmodel` file and select "Export model..."

![](/files/-LM2HRCt791SaZPwp0Fm)

Summarizing the following toolchain is currently available for ESDL (and in use):

![](/files/-LM2asGGdnMovAo2nuiH)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://energytransition.gitbook.io/esdl/software-development.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
