Intro - fidransky/kiv-pia-labs GitHub Wiki

Target of the day:

  • about instructor, subject objectives, labs plan and semester project
  • install all necessary tools
  • Docker quick start

Why Java?

We know that Java isn't exactly an exciting language to learn - it's old, it's verbose, it may not be very performant. However, while Java may not be as fast as Go, as popular as JavaScript or as ubiquitous as PHP, it's the 4th most popular programming language in the world and it's not going anywhere. For a good reason - Java is very stable and there's a library for everything so you don't have to reinvent the wheel but focus on your project's unique features.

Tools

IntelliJ IDEA

IntelliJ IDEA by JetBrains is a popular IDE (integrated development environment) for Java development.

Alternatives: Eclipse, Netbeans, VS Code etc.

JDK 17

JDK 17 is the current long term support Java Development Kit version. Adoptium (successor of AdoptOpenJDK) is a working group providing an open-source JDK distribution to the public. Eclipse Temurin is the open-source Java SE build based upon OpenJDK.

Alternatives: Oracle OpenJDK, Amazon Corretto, GraalVM etc.

Apache Maven

Maven is a build automation tool used primarily for Java projects.

Maven is a dependency manager and task runner based on the concept of a project object model (POM). Maven is extensible with plugins. Every plugin has goals which run at specified phase of the Maven lifecycle. Maven uses a well-defined project structure with a specific folder for all project files. Maven allows projects to consist of many submodules and transparent dependency management.

Alternatives: Gradle, Ant

Docker

Docker lets you build and run containerized applications without the hassle of setting up local dev environment. You'll learn more about Docker during the next semester in KIV/CICD subject.

We're going to use Docker to run accompanying tools without having to install them locally.

Related: Docker Compose

Alternatives: Podman

Apache Tomcat

Tomcat is an open-source web server and servlet container. It implements Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications.

Alternatives: Jetty, Netty, Undertow etc.

Node.js and npm

Alternatives: Yarn