I've used openCloud to create simple java word clouds using word frequency and or log likelihood values to adjust the words weight (font size). The clouds use random colours and provide a simple random rotation.
Github repository here
English sample
Arabic sample