You can always counter-offer, but the reality is they are hiring you into a position you do not yet have the skill set for. That says mountains about how much you've impressed them (that rarely happens!), but you still have to prove your abilities as a coder in C##/Java.
If it were me I'd probably ask if they'd round it up to $50k (I mean why not ask, the worst they could do is say no) and then work your butt off getting really good at Java and C##-- On the company's dime! That's sweet. You will be gaining valuable real-world coding experience, so if it doesn't work out with this company, you can jump to a better offer.
Either way, it sounds like you have the chops to really go far. Good luck!