Java and RFID

Im planning on doing a staff registration program (for a office) for a school project using RFID tags, I am only in the brainstorming phaase.
Was wondering about the fesablility and what would be required to read RFID tags from a program ( written in java most likely). Curious about the complexities and any possible ways of doing it.

I am assuming you would have the staff carry RFID tags on their person and register against a possibly wall-mounted device, or a door-lock.

I would suggest using NFC tags instead of RFID tags, and an Android smartphone with NFC reader/writer that you can program (that would then be in Java) to read and write NFC directly. That should simplify the hardware requirements and complexity quite a bit.

Do note the risk that not all Android smartphones that claim to be able to read/write NFC also are any good at it, and iOS does currently not provide NFC API:s.

In a future development, you could use a Raspberry PI or a PI clone device with an NFC reader attached to the device, so that you don't need to mount an Android cellphone to a wall, but that may be beyond the expected scope of the school project. You could also use the Android cellphone to actually open a URL somewhere on the web and/or register the log in on a simple server you set up, but that may also be beyond the expected scope of the school project.

As for scope, I think I may go as far as using a Pi , but not a server. I will likely use a local database on the pi along with the program (written in java) and the NFC reader.
From a programming aspect, how easily can NFC, java and a database work togther ?

The advantage to using an Android smartphone hardware would have been that you don't need to worry about this. Java would in this case be the only important glue between the Android NFC API and a smartphone-local database.

If you use a Pi, you will need to connect an NFC/RFID module to it. From then you will have a lot more options. Mind you, lots of options is not always good. It takes time to pick them, which is a disadvantage, but you will learn lots of new stuff. That learning may come as a risk to completing the project on deadline.

In case of a Pi, there will be a driver for the NFC/RFID module, an API library that you will need to import, which will need to talk to your programming language, and then a database (or a flat file). If the API library for the module does not have a well working native Java interface, then you will need to decide whether to learn Java native API:s, or use another programming language (like Python, C, C++, C#/Mono) with easier native bindings. You can install many different OS:es on a Raspberry Pi, so you will need to choose one that supports appropriate driver, API library, and programming language environment.As for database, I think that is a small worry - you can really pick something as simple as SQLite or just a flat file with CSV.

Once you commit to the project you won't want to have too many ifs. Perhaps you can try these things out yourself on a Pi as an input to your own brainstorming? Check the docs, and then play around and see how fast you are getting anywhere?

I would want to use a seperate program on the pi as doing it on the phone wouldn't be enough to show case my technical ability in order to gain my marks on the project.
Where would I go looking for the APIs so I can check compability between the APIs ,the NFC modules for the pi and Java ??

I so totally respect that :), and this is how I would have done it:

First search the internet for candidate NFC, RFID, or combined NFC/RFID modules for Pi. You don't need to exclude RFID, I suggested that only in order to make the project compatible with some Android smartphones' NFC-capability. Then check those modules that have both read and write capability, and then check which are the most popular ones and that have most hits on forums where people ask questions on the subject, and that those hits are somewhat recent. This makes it much more likely that you will find help and info if you ever get stuck. I would also search forums for comments from people who have used those modules specifically on a Pi. Did they have any obstacles to using them? Are their posts relatively recent? Are there any how-tos on specific NFC modules?

The drivers and API:s for Pi for those modules could come from manufacturer, from the OS itself (for example, Raspbian could have all the necessary drivers and API libs built in to support third party modules - I don't know that), or from the Linux community, etc. Hopefully, the API libs and drivers should have all the functionality you need.

Also, somewhere, someone should have made a thorough how-to on the subject of NFC and Pi, perhaps even a youtube vid that can help you keep on track, or even get you through the most issues you will face.

This search should also give you an idea on what programming languages have proper API bindings for the modules. As for java, if there is an API binding for C (a .dll, or an .so), then you should also be able to use Java Native Access (JNA) to dynamically load a native lib API into Java VM. There are plenty tutorials about using native SDL library with Java to help you with that process.

thank you very much you have been helpful . :)