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.
Yes, this is the fastest way to learn a language. And, you can see the video courses. There, too, you can hear the correct pronunciation of words
Video tutorials, educational books, special applications, all of which will be useful for language development. But with this kind of resources you will not make much progress after a certain place.
Because after you leave these resources, you will start talking in your own language again. In daily life you will do other work in your native language. This will also cause you to forget the language you want to learn.