Skip to content

Onboarding of Developers

Here you find information about the technologies, tools and middleware that are required to be used by software developers who develop applications by means of Virtual Developer. Which of the subsequently listed things are actually required for your individual software project depends on your requirements and the type of applications you need to develop.

Languages

Name Category Comments
Virtual Developer DSLs Modeling Language You have to know Virtual Developer’s domain specific languages (DSLs) to be able to create input for the code generators.
Java Programming Language That’s the main programming language that Virtual Developer generates code for. Proficiency in Java is a must to develop applications with Virtual Developer.
JavaScript Programming Language There is only a marginal amount of JavaScript code generated. JSF, PrimeFaces and the Virtual Developer runtime libs use JavaScript, though. You need to know JavaScript to be able to tweak and troubleshoot an application’s user interface.
C Programming Language Virtual Developer comes with a generator that is capable of generating task-oriented embedded software that uses a real-time operating system (RTOS). Know-how with C programming is only required when you want to use that generator, e.g. when you plan to develop an IoT solution.
HTML Markup Language Virtual Developer doesn’t generate HTML, but the generated web applications use HTML in the browser. You need to know HTML to be able to tweak and troubleshoot an application’s user interface.
XML Markup Language JSF/PrimeFaces use XHTML on the server side. In the end those are XML files and you need to understand XML in order to be able to work with those XHTML files.
CSS Stylesheet Language Virtual Developer doesn’t generate CSS, but the generated web applications use CSS in the browser. You have to know CSS to be able to adapt the look of the generated web applications.
SQL Query Language Virtual Developer doesn’t generate SQL. When you use the JPA code generation, you have to understand SQL in order to understand how JPA accesses a relational database management system (RDBMS). You also need SQL to directly have a look at data in the database and to implement database schema updates.

Frameworks and Standards

Name Description Comments
Jakarta EE This is formerly known as Java EE, the abbreviation JEE is used in both cases.
CDI Contexts and Dependency Injection Component injection by means of annotations is needed and used all over the place. This is required to work with all parts of JEE and also with JPA, Retrofit, JUnit, Arquillian.
JSF Jakarta Server Faces, formerly known as Java Server Faces
PrimeFaces PrimeFaces is an open-source user interface component library for JSF-based applications, created by Turkish company PrimeTek Informatics.
EJB Enterprise Java Beans
JPA Java Persistence Architecture
JAXB Jakarta XML Binding, formerly known as Java XML Binding
JAX-RS Jakarta RESTful Web Services, formerly known as Java RESTful Web Services
Retrofit/OkHttp These are two Java libraries that are used in combination to develop clients for HTTP-based webservices.
JUnit JUnit is a unit testing framework for the Java programming language.
SLF4J + Logback Logging SLF4J is the Simple Logging Facade for Java. And Logback is a Java logging framework. The Mapped Diagnostic Context (MDC) is being used, too.
Arquillian Open source framework for writing Integration and functional tests. It includes Arquillian graphene, Drone and Selenium to write tests to the visual layer too.
Selenium Selenium is a portable framework for testing web applications. You need to know its API in order to be able to write and understand tests.
MQTT Message Queuing Telemetry Transport, Network Protocol, open OASIS and ISO standard This is a lightweight, publish-subscribe network protocol that transports messages between devices. The protocol usually runs over TCP/IP.
Eclipse MicroProfile The MicroProfile project defines a programming model for developing microservice applications in an Enterprise Java environment.
Virtual Developer Runtime Libs These are small open source libraries that are being used by generated applications. The runtime libs contain functionality that is so generic that it would be unnecessary complex to generate that code, too. Maintenance, adaptability and further development of the libraries’ functionality is much easier due to them being libraries and not generated code.

Tools and Middleware

This list represents the software that Generative Software employs. It isn’t mandatory to use the following tools and middleware to be able to work with Virtual Developer and that code that it produces. If you work with Generative Software, this is relevant for you, though.

Future Automation Support

The more configuration, build and runtime artifacts are going to be generated in the future, the more relevant this list becomes. The generation of such artifacts will be primarily geared to the software that is listed here.

Name Category Comments
Virtual Developer Automation Virtual Developer is used to model the applications’ specifications and to execute code generators to create application code.
Apache Maven Build Tool Generated Java applications are built by means of Maven. Gradle would for instance be an alternative that you can also use to do this job.
Eclipse for JEE IDE The Eclipse IDE for JEE is used to generate code, manually write code, run unit tests, build the applications and their components.
Eclipse for C/C++ IDE The Eclipse IDE for C/C++ is used to generate code, manually write code and build the embedded software.
Selenium Testing The Selenium server is used to remotely control web browsers for the sake of executing integration tests (black-box tests). A Selenium server has to be up-and-running to be able to excecute Selenium tests.
Liquibase Database Liquibase is used to have a standardized, controlled and automated way to upgrade database schemas of staging/test and production system.
Docker Containerization Docker is used to configure and run WildFly, HiveMQ and Bitbucket Pipeline Builds.
Git Version Control System
Bitbucket Build Automation
JIRA Issue Tracking
Confluence Technical Documentation Confluence is a wiki system.
WildFly Application Server A different application server could be used, too. This is possible since they implement the Jakarta EE and Eclipse Microprofile standard. However, WildFly and Keycloak are very well integrated with each other. For other application servers, additional work would be needed to make Keycloak and that application server work together.
PostgreSQL Database Server
Keycloak Identity/Access Management Keycloak is an open source software product to allow single sign-on with Identity and Access Management aimed at modern applications and services.
HiveMQ MQTT Broker An MQTT-broker that is written in Java and can be extended to implement custom secruity requirements.

Installation Requirements

Type of Application Eclipse
for JEE
Eclipse
for C/C++
Docker WildFly PostgreSQL Keycloak HiveMQ
Web Application (Java) + - + + storing data? multitenancy?
single-sign-on?
asynchr. exchange of data?
Webservice (Java) + - + + storing data? multitenancy?
single-sign-on?
asynchr. exchange of data?
Embedded Software - + - - - - -

Learning Resources for Beginners

Resource Provided by Comments
JEE 7 Tutorial Oracle This is JEE 7 only, while JEE 8 is the latest version and JEE 9 is in the making. However, all concepts of JEE 7 are used and are still relevant in JEE 8. This tutorial does a good job since it is not too overloaded.

The most relevant areas of JEE in the context of code generation with Virtual Developer are: JSF, CDI, EJB and JPA.
Jakarta EE Tutorial Eclipse Foundation This tutorial provides a huge amount of information. You might not see the wood for the trees there. For this reason, at least at the time being (autumn 2020), it is recommended to start with the Oracle tutorial for JEE7.

Note that Jakarta EE is the successor of Java EE. There is no gap between Jakarta EE and Java EE. It is just the name that has changed and Jakarta EE is steered by the Eclipse Foundation while Java EE was steered by Oracle.
Eclipse IDE for Java - Tutorial vogella GmbH This tutorial gives a good overview on how you can use the Eclipse IDE for Java development. It doesn’t cover any JEE topics, but this is a good thing. The focus is on pure Java development, which provides you with the fundamentals that you will constantly need when you develop for JEE.
Maven Tutorial Jakob Jenkov This compact tutorial explains the basic concepts that you will be facing during the day-to-day work with Maven.