Десктопный мессенджер в стиле Discord — без голосового чата, только текст и файлы.
Учебный проект по курсу Java Programming | Final Project Exam
JavaFX Messenger — многопользовательский десктопный мессенджер с поддержкой:
- Приватные чаты (пространств для общения)
- Каналов внутри серверов
- Истории сообщений из базы данных
- Аутентификации
┌─────────────────┐ TCP Sockets ┌──────────────────────┐
│ Client (JavaFX)│ ◄────────────────────────► │ Server (Java) │
│ │ Serialized Packets │ │
│ - GUI (FXML) │ │ - ServerSocket │
│ - Controllers │ │ - ClientHandler │
│ - NetworkClient│ │ - ThreadPool │
└─────────────────┘ └──────────┬───────────┘
│ JDBC
▼
┌──────────────────────┐
│ MySQL Database │
│ users, channels, │
│ messages │
└──────────────────────┘
javafx-messenger/
├── messenger-server/ # Серверная часть
│ └── src/main/java/com/messenger/
│ ├── server/ # ServerApp, ClientHandler, ThreadPoolManager
│ ├── db/ # DAOs, DatabaseManager
│ ├── model/ # (ссылается на shared)
│ └── protocol/ # PacketType, обработка команд
│
├── messenger-client/ # Клиентская часть (JavaFX)
│ └── src/main/java/com/messenger/
│ ├── client/ # ClientApp, NetworkClient
│ ├── controller/ # FXML-контроллеры
│ └── model/ # (ссылается на shared)
│ └── src/main/resources/
│ ├── fxml/ # login.fxml, main.fxml, ...
│ └── css/ # styles.css
│
├── shared/ # Общие классы (модели + протокол)
│ └── src/main/java/com/messenger/
│ ├── model/ # User, Channel, Message, ...
│ └── protocol/ # Packet, PacketType
│
├── docs/ # Документация
│ ├── schema.sql # Схема базы данных
│ ├── architecture.md # Описание архитектуры
│ └── diagrams/ # UML-диаграммы
│
└── README.md
| Инструмент | Версия |
|---|---|
| JDK | 17+ |
| JavaFX SDK | 17+ |
| MySQL | 8.0+ |
| Maven | 3.8+ |
| IntelliJ IDEA | 2022+ (рекомендуется) |
git clone https://github.com/YOUR_USERNAME/javafx-messenger.git
cd javafx-messenger# Создать БД и таблицы
mysql -u root -p < docs/schema.sqlСоздать файл конфигурации (не попадает в Git):
cp messenger-server/src/main/resources/db.properties.example \
messenger-server/src/main/resources/db.propertiesЗаполнить db.properties:
db.host=localhost
db.port=3306
db.name=messenger_db
db.user=root
db.password=YOUR_PASSWORDcd messenger-server
mvn clean package
java -jar target/messenger-server.jar
# Сервер запустится на порту 8080cd messenger-client
mvn clean package
java --module-path /path/to/javafx-sdk/lib \
--add-modules javafx.controls,javafx.fxml \
-jar target/messenger-client.jar| Критерий | % | Где реализовано |
|---|---|---|
| OOP: Классы и объекты | 10% | shared/model/ — User, Message, Channel и др. |
| OOP: Полиморфизм и наследование | 10% | AbstractMessage → TextMessage, SystemMessage |
| OOP: Абстракции и интерфейсы | 5% | MessageHandler, UserRepository, Serializable |
| Collections | 5% | Map<Integer, ClientHandler>, List<Message>, Set<String> |
| Сериализация / File I/O | 10% | Packet по сети + сохранение файлов + конфиг |
| Threads | 10% | ClientHandler thread per user, ExecutorService, Platform.runLater |
| Socket programming | 15% | ServerSocket + ObjectStreams |
| JDBC + MySQL | 15% | DAOs + DatabaseManager + Connection Pool |
| GUI – JavaFX | 20% | 6 экранов, кастомные ячейки, CSS тема |