I am writing a non-web application (written in java) which will allocate cloud resources. I want to make it compatible with as many providers as possible. Is it wise to use OCCI interface? Will it be too complicated?
OCCI as an open standard is indeed a good option with regards to interoperability between different resource providers.
There are quite a few OCCI implementations under development. A list can be found here:
Pollux may be a good starting point for OCCI clients written in Java.
As OCCI was published last year and is still in an early adoption face, support by resource providers is just beginning. OCCI 1.1 support in OpenNebula will be followed by support for OpenStack within the next months.
It's reasonably easy to adopt an OCCI server like the OpenNebula OCCI Implementation (written in Ruby) for other resource providers as well and work is already under way to support a wider range of resource providers.
The reality is that there is no one standard to connect to cloud providers, whether that be at the PaaS, SaaS or IaaS levels. I'm assuming you're utilising IaaS aspects here (your 'allocating resources' wording)?
OCCI is certainly one standard you can implement to cut down the number of different providers you want to support. However, the reality is that you'll also need to write custom code (hopefully RESTFul if you're lucky) or grab custom open source components to connect to some of the cloud providers.