Well the best way is to practice as much as you can. For example when I was still young I mastered English by frequenting english sites and using it alot (accompanied with some studies). Right now I'm starting German from scratch using Duolingo, and it is quiet helpful! Of course you must study as much as possible. Other than that I've tried a few other apps and books. But now I'm gonna give Rosetta Stone a try (it seems good).
It is possible to learn up to a certain level with applications and books. You can learn the theoretical knowledge from such sources. But in order to learn a new language, you have to be in the environment where the language is spoken. It can help you watch movies about the language you want to learn. But the best way is to go to the country where that language is spoken.
Indeed. One should frequent the language's communities or anywhere it is spoken. Else he will have a tough time learning pronounciation, dialects and the such.