Skip to content

Java lab projects on Spring Boot, sockets, multithreading, and fractals — created for a university technology platforms course in collaboration with @gre-v-el and @ThreeCoffees

Notifications You must be signed in to change notification settings

JanBancerewicz/java-platform-tech-labs-mix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

133 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multipurpose Java Application for Technology Platforms Course

Project Overview

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.

Project Structure and Navigation

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 Modules Overview:

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.

Requirements

  • Java Development Kit (JDK) 11 or higher
  • Apache Maven (for building and dependency management)

Modules overview

Lab1 - Generates a recursive tree structure of employees

Image

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

Image

Image

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.

Image

Image

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.

Image

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

Image

How to Run

  1. 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.git with the actual URL of your repository.)

  2. 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.

  3. Build the Project: After checking out the desired tag, build the project using Maven. This compiles the code and resolves dependencies.

    mvn clean install
  4. 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.jar with the actual name of the generated JAR file found in the target/ 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 (lab4 tag), and in the other, checkout and run the client (lab4 tag). Specific running instructions (e.g., required arguments, host/port configuration) will be detailed within the respective lab's source code or in-code comments.

Program Objective

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.

Authors

@JanBancerewicz

@gre-v-el

@ThreeCoffees

About

Java lab projects on Spring Boot, sockets, multithreading, and fractals — created for a university technology platforms course in collaboration with @gre-v-el and @ThreeCoffees

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages