You can invent any software, for that you need to know the base which you would be using.
For example, if you wish to make a software for chatting purpose, then you would need to know first the platform on which you would need to make, like the operating system. You wish to make the software on Linux, Windows, debian, freebsd?
Then you would need to work on the application or software which you wish to make and that software should support the operating system, since the software and the operating system are linked in one way or the other and to be honest, any software needs an operating system to run, you can also take the example of the mobile, to run an already developed software you would definitely need an operating system.
And then once you have decided with the operating system on which you wish to develop your software you can step up to java which will help you in launching the platform and also mysql which will help you in connecting the java and mysql database.
Hence you would need to get a grip on synchronization of operating system,java and mysql for making a new software. you can also use any combination of the software developing kit.
I hope this answers gives you a clear picture of the flavours required in developing a software.