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.
|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.|
|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¶
|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.
|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|
|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.|
|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.|
|Type of Application||Eclipse
|Web Application (Java)||+||-||+||+||storing data?||multitenancy?
|asynchr. exchange of data?|
|Webservice (Java)||+||-||+||+||storing data?||multitenancy?
|asynchr. exchange of data?|
Learning Resources for Beginners¶
|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.|