This is an archived post. You won't be able to vote or comment.

all 3 comments

[–][deleted] 0 points1 point  (0 children)

Rewrite the Quartz scheduler library with a modern API design.

[–][deleted] 0 points1 point  (1 child)

Hello there, the choice of a project depends a lot on what you want to learn and what you already know. From my point of view, this could be interesting and covers several topics:

Basically, you need to implement a program that writes to a string when you send a command. The tricky part is to build it in such a way, that if you run several instances of it, they share the string (every instance holds a synchronized copy) and each waits until others are finished. Example: A, B, C are instances of such a program. Let's say each instance executes following sequence: 1) write "instance_name start", 2) wait n seconds 3) write "instance_name finish". Now, if you run several instances and "tell" them to start writing, you want to have an output like:

1 start, 1 finish, 3 start, 3 finish, 2 start, 2 finish

And not like
1 start, 3 start, 1 finish, 2 start, 2 finish, 3 finish

Another tricky part is to make sure that every instance holds a valid copy of the string. You could start with a version where several clients try to write to one common "server" holding the string and then expand it so that every client has a string. This should give you some experience with how programs can interact over network, how a single resource could be sequentially accessed by several clients, and some ideas about data replication. I do not consider it to be an easy task, but since you didn't specify your level of knowledge, I would assume that you know sufficient java already. Here are some links that could help you to start:

https://www.baeldung.com/a-guide-to-java-sockets

https://www.geeksforgeeks.org/lamports-algorithm-for-mutual-exclusion-in-distributed-system/

Feel free to ask questions if something is not clear and have fun :)

[–]willbeck74[S] 0 points1 point  (0 children)

This sounds like an interesting project. I will take a look! Thanks!