It must be written in Java

.
Well if it is Joomla then it is written in PHP. That said it could have been written in assembler, either way it is irrelevant. Thinking about languages as opposed to thinking about the entire software development process is where most people go wrong. Languages don't make or break your system, processes do.
How thoroughly was your analysis done? Did your design satisfy requirements? Is your design flexible enough to cater for changes? What was your emphasis on: speed, quality or budget?
A quick summary of this project would be as follows:
1. Create a fuzzy idea of what the system should look like
2. Put this in a huge and unintelligible document that skirts complexity and gets bogged down in simplicity
3. Put out a tender
4. Each company jumps to outdo each other. Everyone knows the project will take x years. Each company tries to reduce cost and time by putting in a bid that will take (x years) - (y weeks). Hoping that they will recover the y weeks (or by now months) because they will:
a) Bliksem the lazy developers
b) Micromanage the lazy developers
c) Make the lazy developers work 220 hours per month
d) Get TATA in and hope that they save their ass - this option gets thrown out when they realise that TATA is not so cheap
5. Most of the "good" companies get thrown out. They either have insufficient BEE or non-connected / non-name brand BEE.
6. The good companies that are left have no good guvament shareholding. Which considering this is a guvament system, you need.
7. Now the leftovers are combined into one organisation that sounds like it can complete the job and the tender is awarded.
8. The project kicks off, everybody has meetings, sits on committees has discussions and feels important. This is repeated for about 8 months depending on the length of the project.
9. The slowly dawning realisation that the **** is rolling downhill, gathering momentum, getting bigger every minute and heading straight towards them starts to dawn on people.
11. Analysis, design, procedures, tools and processes are half baked or get thrown out the water
11. Panic sets in. Now everything is going crazy, we (as in the developers) must work, work, work! Don't do it well, just get it done quickly is the management command. Sticky tape solutions are the order of the day.
12. Tempers flare, business accuses IT, IT accuses business and Minister Jeff is told that all is well except for one or two minor hiccups.
13. Deadlines, deadlines and deadlines. Some are missed, some are made thanks to lots of sticky tape.
14. The live date is coming closer, with each day that passes the developers feel that one more piece of sticky tape has come off.
15. Live date comes, let’s take a week to implement and hope and pray.
16. God was not listening, scr3w that, we will add some more sticky tape.
17. Java, PHP, .Net is blamed
18. All opposition parties are blamed by Minister Jeff
19. The system reaches some stability and hobbles on thanks to creative user work arounds.
20. It is passed as a guvament success. Lots of whitewashing and backslapping. Someone gets paid, bribed or bought off. The white directors of the IT company take the money and retire in Crete. The black directors take a much smaller slice of the money and hope to be like the white directors and retire on day. In the meantime they buy a BMW.
21. The system is a maintenance nightmare. Lots of time is spent patching and sticking tape all over. Those who can leave do, those who can't can look forward to a dead end career and a guvament pension. They supplement their income by registering stolen vehicles and writing off speeding fines.
Once again mediocrity is applauded.