Update Programming Languages authored by Breit Simon's avatar Breit Simon
# Programming languages
Contents:
* [Summary](#summary)
* [Issue](#issue)
* [Decision](#decision)
* [Status](#status)
* [Details](#details)
* [Assumptions](#assumptions)
* [Constraints](#constraints)
* [Positions](#positions)
* [Argument](#argument)
* [Implications](#implications)
* [Related](#related)
* [Related decisions](#related-decisions)
* [Related requirements](#related-requirements)
* [Related artifacts](#related-artifacts)
* [Related principles](#related-principles)
* [Notes](#notes)
## Summary
### Issue
We need to decide wich programming languages we use for our project. We need a language for our web-based frontend and a language for our REST-API backend.
### Decision
We are choosing Java for the backend.
We are choosing JavaScript / Typescript for the frontend.
### Status
Decided. Alternatives
## Details
### Assumptions
The front-end applications are typical:
* Typical users and interactions
* Typical browsers and systems
* Typical developments and deployments
The front-end requirements are the following:
* We want to ensure fast development and an easy learning process for new developers.
* We value provability, such as type safety.
* We do not need legacy compatibility.
The back-end requirements are the following:
* Typical standarts for quality, reliability and security.
* Fast and easy development process, easy learning process for new developers.
### Constraints
There are no technical constraints for the languages.
### Positions
We considered these langauges:
* C#
* Java
* JavaScript
* TypeScript
### Argument
Summary per language:
* C#: Rejected, because of to many not experienced devs in the team. Also a small community and too few existing projects and learning materials on the front-end side.
* Java: All devs in team know it. Spring framework is widely used and industry standart. Lots of learning material
* JavaScript: Rejected, because of missing typesafety and too complicated eco system in server environments. Partly rejected for frontend since TypeScript has typesafety and is completely compatible to JS.
* TypeScript: Wide range of frontend frameworks. Direct compatibility to JS. Industry standart for modern web applications.
### Implications
Front-end developers will need to learn TypeScript. This is likely an easy learning curve if the developer's primary experience is using JavaScript.
Back-end developers will need to learn Java and the spring web framework. Since all dev already know Java the learning can concentrate on the spring framework
TypeScript and Java are widely used in current projects. So there should be a lot of learning material and existing projects or packages.
IDE support for these languages is very good since JetBrains sells IntelliJ for Java development and WebStorm for TypeScript development.
## Related
### Related decisions
We will aim toward ecosystem choices that align with these langauges.
We need to choose a frontend framework. It will likely be a TypeScript based framework.
### Related requirements
Our entire toolchain must support these languages.
### Related artifacts
We expect we may export some secrets to environment variables.
### Related principles
We aim for stable and easily mantainable code. Speed might be neglected, if it requires to build unsafe code.
## Notes
Any notes here.
\ No newline at end of file