This repository hosts a collection of Java laboratory projects developed as part of a university "Technology Platforms" course. The application is designed as a multipurpose tool, demonstrating various key concepts in modern software development, including Spring Boot, network communication using sockets, multithreading, and fractal generation.
The project was a collaborative effort by @JanBancerewicz, @gre-v-el, and @ThreeCoffees.
This application is composed of six distinct laboratory parts (labs), each focusing on a different technological aspect or computational task. While each part addresses a specific problem, they are related by the overarching theme of exploring various programming paradigms and technologies relevant to modern platform development.
To access the code for a specific lab, you must switch to its corresponding Git tag. Each lab is tagged for easy navigation and to maintain a clear separation of concerns for each assignment.
| Lab Tag | Corresponding Main File / Application Class | Core Concepts / Focus |
|---|---|---|
lab1 |
Lab1.java |
Basic Java OOP, data structures, and command-line arguments. |
lab2-3 |
Lab2_3.java |
Multithreading, performance analysis, and basic fractal generation. |
lab4 |
Lab4Server.java, Lab4Client.java |
Socket programming (Server-side, Client-side) for distributed computation. |
lab5 |
Lab5Application.java |
Spring Boot fundamentals, persistence (e.g., JPA/Hibernate with a database). |
lab6 |
Lab6Application.java |
Spring Boot with in-memory persistence or different data storage strategies. |
- Java Development Kit (JDK) 11 or higher
- Apache Maven (for building and dependency management)
Lab2_3 - Generates a Mandelbrot set using multiple threads in order to parallelize calculations. Each thread calculates color of a particular pixel and saves the output to a PNG file.
Thread efficiency analysis was performed in the report: pt_sprawko.pdf
Lab4 - Based on the Lab2_3, program allows transmission of data to another server, which calculates color of a pixel and sends the information back. The program consists of Client and Server modules.
Lab5 - Spring Boot application, that manages Employee entities from Lab1. It operates using an in-memory data repository, without the need for external database configuration and showcases application layers such as presentation, service, repository layer.
Lab6 - Comprehensive suite of tests for Spring Boot application, focusing on isolated testing of individual layers (repository and controller) using mocks, as well as verifying correct application context loading
-
Clone the Repository:
git clone [https://github.com/JanBancerewicz/java-platform-tech-labs-mix.git](https://github.com/JanBancerewicz/java-platform-tech-labs-mix.git) cd java-platform-tech-labs-mix(Replace
your_github_username/your-repo-name.gitwith the actual URL of your repository.) -
Switch to the Desired Lab Tag: Before building or running, you must checkout the specific lab you want to work on. For example, to switch to Lab 5:
git checkout lab5
Refer to the "Lab Modules Overview" table above for example tag names.
-
Build the Project: After checking out the desired tag, build the project using Maven. This compiles the code and resolves dependencies.
mvn clean install
-
Run the Application: The method for running depends on the specific lab's architecture:
-
For Spring Boot applications (e.g., Lab 5, Lab 6):
java -jar target/java-platform-tech-labs-mix-SNAPSHOT.jar
(Replace
java-platform-tech-labs-mix-SNAPSHOT.jarwith the actual name of the generated JAR file found in thetarget/directory after building.) -
For standalone Java applications (e.g., Lab 1, Lab 2/3):
java -cp target/classes/ org.example.app.<MainClassName>
(Replace
<MainClassName>with the actual main class for that lab, e.g.,Lab1,Lab2_3.) -
For client-server applications (e.g., Lab 4): You will typically need to open two separate terminal windows. In one, checkout and run the server (
lab4tag), and in the other, checkout and run the client (lab4tag). Specific running instructions (e.g., required arguments, host/port configuration) will be detailed within the respective lab's source code or in-code comments.
-
This project serves as a comprehensive educational tool, demonstrating the application of various Java technologies in solving different computational and architectural problems. Across its modules, the program aims to:
- Illustrate the setup and development of Spring Boot web applications.
- Showcase fundamental concepts of socket programming for inter-process communication.
- Demonstrate the use of multithreading for parallel processing and performance optimization.
- Explore algorithms for fractal generation.
- Provide practical experience with Maven for project management and dependency handling.
- Reinforce Object-Oriented Programming (OOP) principles in a practical context.






