There are various technical approaches to building GUI clients. The devonfw proposes rich clients that connect to the server via data-oriented services (e.g. using REST with JSON). In general, we have to distinguish among the following types of clients:
-
web clients
-
native desktop clients
-
(native) mobile clients
Our main focus is on web-clients. In our sample application my-thai-star we offer a responsive web-client based on Angular following devon4ng that integrates seamlessly with the backends of my-thai-star available for Java using devon4j as well as .NET/C# using devon4net. For building angular clients read the separate devon4ng guide.
In order to get started with client development as a Java developer we give you some hints to get started. Also if you are an experienced JavaScript developer and want to learn Java this can be helpful. First, you need to understand that the JavaScript ecosystem is as large as the Java ecosystem and developing a modern web client requires a lot of knowledge. The following table helps you as experienced developer to get an overview of the tools, configuration-files, and other related aspects from the new world to learn. Also it helps you to map concepts between the ecosystems. Please note that we list the tools recommended by devonfw here (and we know that there are alternatives not listed here such as gradle, grunt, bower, etc.).
Topic | Aspect | JavaScript | Java |
---|---|---|---|
Programming |
Language |
TypeScript (extends JavaScript) |
|
Runtime |
VM |
nodejs (or web-browser) |
|
Dependency-Management |
Tool |
||
Config |
|||
Repository |
|||
Build-Management |
Taskrunner |
||
Config |
gulpfile.js (and |
||
Clean cmd |
gulp clean |
mvn clean |
|
Build cmd |
yarn install && gulp build:dist |
||
Test cmd |
gulp test |
mvn test |
|
Test-Tool |
|||
Test-Framework |
|||
Browser Testing |
|||
Extensions |
AssertJ,*Unit and spring-test, etc.) |
||
Code Analysis |
Code Coverage |
karma-coverage (and remap-istanbul for TypeScript) |
|
Development |
IDE |
||
Framework |
Angular (etc.) |
Spring (etc.) |