The last five years I have been working with VBA and ArcObjects for developing a specific application within ArcGIS. That project that began around 2008-2009 carried out with VBA and ArcObjects which is not supported by ESRI anymore. So, I need to migrate in a new programming language and I am not sure which is the best for my case: Python, VB.NET, C# or Java? My aim is to develop specific planning applications within ArcGIS platform. What is the most easiest to learn taking into account that I have experience with VBA and ArcObjects? Which is the most powerful for developing complex GIS applications? Which has the best support? May I have your opinions please?
With your background I would suggest that a .NET language using ArcObjects would be most familiar and VB.NET most familiar of all. Also, if you are looking at wider career opportunities beyond this project, then my gut feel is still with the .NET environment with a leaning towards C#, just based on the requirements I see employers asking for most often.
However, if you want a language that gives you great flexibility in the FOSS4G world then Python becomes a very strong contender. Python seems to be becoming the scripting language of choice in so many packages both OpenSource and otherwise. Python will 'feel' very different to C# or VB but if you see yourself as a scripter rather than a programmer, then Python has another advantage of allowing you to get results in considerably less code. I personally quickly gave up on ArcObjects with C# in favour of Python because I needed to write about tenth of the code using ArcPy and processing speed is rarely a major issue because mostly, for geoprocessing, your Python code is calling compiled C binaries under the hood (i.e. the interpreted vs compiled issue is not very relevant most of the time for geoprocessing with Python). It's largely personal preference, but I do find ArcPy and the Python GDAL libraries much more straightforward than doing the same thing with ArcObjects, perhaps because they remind me more of AML :)
I haven't commented on Java because I don't use it.
I see a C# book has been recommended already. As a fan of Python, may I recommend Erik Westra's book Python Geospatial Development. I notice that a second edition has been released.
Regarding ArcGIS development:
- For ArcObjects development specifically, I would stick to C#. You can certainly use VB.NET, Java, C++, or even Python, but I think you'll find the most support and be most successful with C#.
- I would suggest Python for geoprocessing, scripting and customizing ArcGIS Desktop 10.1 using Python add-ins. You can also write add-ins with .NET and Java at 10.0.
I personally wouldn't focus too much on VB.NET, as it has little uptake compared to other popular languages. That VBA and VB.NET are syntactically similar should not necessarily be interpreted to be an advantage -- to the contrary, it is likely going to make it harder to learn, and to grow, if you continually fall back on your VBA experience to develop with .NET.
Sort Answers first, more detailed on my opinion.
What is the most easiest to learn taking into account that I have experience with VBA and ArcObjects?
As it has been said, with your background (i.e, taking into account that I have experience with VBA and ArcObjects), the easiest to migrate would be VB.NET.
Which is the most powerful for developing complex GIS applications?
Which has the best support
All are well spread languages and you should have good suport for all of them.
Anyway python is also a very popular language with lots of libraries and a big community, so you shouldn't have problem to find some support.
Saying all this in your case I might go for python because I think it's easy to learn, and well adopted among the GIS community.
While this may not help you answer the question of "What is the easiest to learn taking into account that I have experience with VBA and ArcObjects?", you may find an analysis of GIS.StackExchange tags to be a useful guide to what might be the most valuable for you to learn.
@BillDollins posted this blog about 6 months ago called "Carving Up GIS StackExchange". If you look into the data he provided for download (bottom of the blog), you will see the number of times tags are used on this site. I've re-run the code today, and using this as a surrogate for the "most popular (not to be confused with most useful) programming language in GIS", you will see that Python leads the way for GIS users:
- python (1896)
- c# (534)
- .net (178)
- vba (140)
- vb.net (110)
- and a limited number of references to java.
If you look at StackOverflow, it is not that different, except that Python falls down on the list a couple of notches: