I currently use python for GIS scripting in arcgis and image processing using GDAL library. Now, I want to improve my programming skills for GIS application development both for desktop as well as internet applications using either Java or .net. I am a bit confused at this moment which will be better for learning as well as better scope for industry jobs.


The answer to this is probably somewhat subjective depending on what environment or platform you are using. My approach is usually to look at the project and choose what works best for each situation. Generally, I lean towards .NET for ESRI based projects and Java for open source / other solutions. My experience has been that as long as you know how to program in general, it’s not so much the language or syntax that slows you down, it’s learning the different APIs and getting them to do what you need.

In your case, if you know what platform you’ll be using or would like to use, concentrate on the language that best fits. Java and .Net are both widely used in the industry and have a lot of support for getting started. Also, Java and C# for .Net are somewhat similar syntactically, so starting with one over the other won't necessarily hurt you and could allow you to switch over down the road with a smaller learning curve if your needs change.

| improve this answer | |

.NET has a better IDE (Visual Studio 2010) which is the most important thing if you are beginning, and I think more industry jobs.

| improve this answer | |

About internet programming,I don't have any experience but about desktop,I can surely suggest .NET,it has much more resources and tools and facilities.When you install desktop developer kit for ArcGIS after you have installed .NET(VS2005 and later),it adds some wizards to .NET projects special for ArcGIS which makes much facilities for developers and remove some tasks which you have repeat in every project.Maybe the only disadvantage using .NET is its framework which sits between your code and Windows and make your code afew slower than native Windows code(C or C++ code).But this is often seamless for end users.

| improve this answer | |