Specialization is for ants (and fields that are incredibly heavily developed with huge bodies of knowledge and accepted fact...so not programming).
Since I was a kid I've used interpreted languages on DOS, compiled languages on Windows, interpreted languages on Linux and compiled languages on Linux, I've written 2D games, Line of Business Applications, Websites and stuff for college, I've learnt and forgotten numerous languages, used multiple database systems hell I've even written VB.
None of this is to brag, it's to make the point that unless you are lucky enough to find a niche you really enjoy the chances are within 5 years most of the technologies you choose now will be either obsolete or so mature that they'll likely be obsolete soon, learn the basics of lots of things, learn the not basics of something and then do the things that interest you and have a commercial value first, do the things that only interest you on the side.
Also you can almost be a specialist at not been a specialist (at least in a subset of fields, these days I can build you a stable reliable solution, write the code, deploy the server, handle the backups, write the unit tests and deal with the customers) I'm acceptable at most of those and good at programming, it's enough.
One final piece of advice: Have hobbies away from a computer (they can involve one but not primarily), Cycling, Jogging, Yoga or something that gets you out the house, 35 year old you will thank 22 year old you, trust me.