I’m not sure if this is the best way to ask this question but I’m in the very early stages of learning programming/development and there are a lot of things that I would like to do including web development and at some point when I have some proficiency, mobile development.
I started out thinking I would learn Java because of its overall pervasive presence in the world of development and especially with J2ME’s saturation in mobile development. It seemed however that the .NET framework, specifically C# was better suited for web development given the whole system/framework.
It seems that C# would be a good compromise to a language for both web development and application development, and hopefully not a difficult switch to Java/J2ME given the similarities between C# and Java.
Java, it seems is not as convenient for web development in my very limited experience. It seems that there are comparatively fewer hosting providers.
My question is, is this an accurate assessment of Java? Is it just as suited for web development as .NET with hosts and frameworks? I know it’s a great language but I’m just not clear on what the typical roadmap is for doing web development with it.
Apologies for the verbose question. Any input would be much appreciated.
In addition to some of the remarks made already, there are other things to consider professionally:
Enterprise software is largely dominated by Java because many large scale clients prefer to deploy on a UNIX environment and the .NET CLRs that are out there don’t really agree with most IT shops of these large clients.
Java is generally considered to be a more attractive acquisition target in the enterprise software space.
Geographical demand seems to be disparate between the two. On the west coast, Northern California area, Java dominates. What you specialize in may dictate where you will find work.
If your interest is in building a consumer site, many consumer sites are built on neither Java nor .NET/C# these days. In addition to the old PHP standby – there is also Django/Python and Rails/Ruby worth considering. There are extremely mature solutions for deployment in all of these areas. I know this from experience.
IMO, the Rails stack is light years ahead of anything that is offered in the Java world which in most cases still requires you to stitch together a disparate platform and hope it plays nice (this is less of an issue with C#/.NET). The strongly typed languages themselves also tend to be more verbose than the Python/Ruby where you can take advantage of functional programming techniques such as clojures and lambdas.
Moving between languages is easy enough, but as is the case with programming, it’s leveraging what’s already been built – that’s the tricky part. Learning the language is 10% of the effort towards true mastery. Knowing the vagaries of the framework you are using, the libraries, and understanding what’s available is the tricky part. The Java Foundation Classes alone comprise of thousands of class files! It’s important to master at least one platform before skipping about.