When I planned to upgrade the CS1101S DG Website project, selection of the technical stack became a big headache. The current decision is
- Backend: Spring Boot 2.x
- Frontend: Vue.js 2.x + Bootstrap 4.x (integrated with Vue.js using Bootstrap Vue)
In this post, I would like to present the decision-making process.
What are the possible languages, frameworks?
Certainly, there are many different choices. Let’s compare them as follows. To select a backend framework, it is essentially to select a server-side programming language.
- Java (current choice): good for scalability and maintainability, used in many enterprise applications. As a relatively old language, its robustness is no doubt.
- PHP: also a traditional choice. However, its performance is not as good as Java (since Java is a fully compiled language, PHP is parsed into opcode and sent to Zend Engine).
- Ruby: a dynamic-typed language, which becomes famous due to Ruby on Rails. You can write less code to achieve more functionalities. However, its performance is even worse and its development environment is also not trivial to set up.
- Node.js: a newer technology than others. It provides a unified language for both frontend and backend development. It is fast since it leverages JavaScript event loop to create non-blocking I/O.
- Python: clear and compact syntax that is helpful to developers. Similar to Ruby, it has potential performance issues.