JAVA, or precisely speaking J2ME (Java 2 Mobile Edition), is the most popular environment for software development for mobile phones. It comes from the fact, that for the past few years practically each new mobile phone model supports J2M games and applications. Supposedly the only phone, which doesn't do that is Apple's iPhone.
Despite limited technical features of mobile phones (small display, low memory), there are hundreds of great mobile games being developed: arcade, adventure, sports, puzzle, strategic, and even 3D games. Mobile applications are not only closed pieces of software - they are sophisticated client-applications, connecting and exchanging data with various Internet servers.
Creating Java games and applications has its difficulties, mostly connected with fact, that various phone models differ a lot from each other. They have different displayes, different memory resorces, differnt processors, keypads, and sometimes they even interpret J2ME procedures in a different way. Making the software run on over 1 thousand various devices is called 'porting'.