A desktop chatting application built using JavaFX and RMI as our first project at the Information Technology Institute. It takes full advantage of JavaFX's reactive programming model, using property binding to synchronize Models with Views.
This software project was built using a layered architecture. The following diagram demonstrates an example use case that goes through all the layers.
- Registration and login
- One to one and group chats
- File transfer
- Server statistics and management
- Updating user profiles
- AIML chatbot
- Auto-detect any available server using a UDP discovery protocol
- Voice chat
- Save messages to database
- Maven
- JDBC
- Sockets
- RMI
- JavaFX
- IO / NIO
- Bean Validation (Hibernate Validator)
- MapStruct
- Logback
- HikariCP
- MySQL
- Spring Security Crypto
Maven
- Download version 0.0.4.3 of the chatbot dependency from here.
- Install it using the following maven command:
mvn install:install-file -Df`ile=Ab.jar -DgroupId=com.google -DartifactId=Ab -Dversion=0.0.4.3 -Dpackaging=jar
- Run the
mvn install
phase from the chatty-parent directory to create the shaded executable jars in thetarget/
directory - Run the jars using the
java -jar
command
MySQL
- Use the chatty.sql script to create the database using MySQL 8.0.28
- Create a database user using MySQL Commandline 8.0 using the following commands:
CREATE USER 'chattyuser'@'localhost' IDENTIFIED BY 'P@$$word';
GRANT ALL PRIVILEGES ON chatty . * TO 'chattyuser'@'localhost';
FLUSH PRIVILEGES;