Monday, December 1, 2014

FireMeUp Java Job Scheduler - Open Source

In one of the projects at my current employer me and my team were asked to use a Java Job Scheduling library to schedule some jobs doing some business at dynamically configured time. 

We decided to use Quartz as we were using Spring which provides a full integration to Quartz, and I was fascinated with the design and implementation of it.

I thought that I can start a new open source project that implements a Java Job Scheduler for learning purposes with some modifications/simplifications to the current design of Quartz library.

FireMeUp Scheduler is a simple Java scheduler that can be integrated within your application in a very simple way. The library is so simple and can be used in Small and Medium scale projects, and it provides the following functionality.

  •  Jobs that run every interval of time.
  • Jobs that run every day, week, biweekly, monthly, bimonthly, and yearly in a specific time of the day. (e.g., Every day at 12:00 AM).
  • Having more that a scheduler in your application.
  • Enable/Disable scheduler freely throughout your application life time.
  • Configuring more than one trigger and associating them to schedulers.
  • Triggers can be configured in more than one way either a simple trigger that is scheduled to be triggered every interval of time, and crontab trigger that is triggered either daily, weekly, biweekly, monthly, bimonthly, or yearly at specific time HH/MM/SS.
  • Implementing your jobs and associating them to triggers, more than one job to each trigger.
  • Register/Unregister triggers to schedulers.
  • Register/Unregister jobs to triggers.
  • Job can't overlap itself if its in a running state.
  • You can implement your own trigger by extending the AbstractTrigger that contains most of the business.
Future Functions

Here are some ideas I need to add to the current project, and anyone who needs to start his own open source life can start implementing them and be part of the project.
  • Adding state recovery functionality for the configured Schedulers, Triggers, Jobs, I think we can use in-memory (not recovered) and database (recovered) models.
  •  Threading management functionality, manage the number of concurrent running threads.
  •  Configuration management functionality, configuring the application programmatically and using a properties file.
  • Providing a crontab expression parser functionality.
  • Documentation of the whole project.
  • More complex examples and test cases.
Project Links


  1. where is your post on segment trees?


  2. Pretty good post. I just stumbled upon your site and wanted to say that I have really enjoyed reading your site. We are offering thesis writing service.

  3. Very useful blog which helps a lot for students who need to learn new things on Java
    Thank you so much
    Keep sharing on...

  4. Linux Online training in India – Webtrackker Technology is providing the linux online training with 100% placement support. If you are looking for the BEST LINUX & UNIX Training Institute In india or linux online training from india, live project based LINUX & UNIX online training then you can contact to us.

    Python online training in India, RPA Online training in India, Salesforce online training in india, AWS online training in india, Cloud Computing Online Training in India, SAS Online Training in india, Hadoop online training in INDIA, Oracle DBA online training in India, SAP online Training In india, Linux Online training in India

  5. Learned a lot of new things from your post , Thanks for sharing

    Java Online Course Hyderabad

  6. This concept is a good way to enhance the knowledge.thanks for sharing. please keep it up selenium Online Course

  7. I found some useful information in your blog, it was awesome to read, thanks for sharing this great content to my vision, keep sharing.
    laser barcode scanner