Developer paths beyond the Visual Studio juggernaut

I have just purchased a Mac laptop and am planning to partition it to run OSX and Ubuntu. Currently I use Microsoft Visual Studio on Windows for development projects. My concern is whether there is an equivalent to Visual Studio and the Microsoft Developer Network (MSDN) on OS X or Ubuntu?

Today I was asked this question, one which is very similar to others I have been asked and answered in the past. In Windows the decisions a developer must make prior to starting coding are relatively simple because it is an environment dominated by Visual Studio. When making the move to OSX or Linux the decisions facing the developer are more complicated because no single company dominates these platforms in the same way Microsoft does Windows.

Outside of this Microsoft’s sphere of influence is a large number of avenues to consider which can significantly influence the productivity and even success, of your software project. The short answer is there no direct equivalent to Visual Studio and MSDN for OSX or Ubuntu, but there are plenty of satisfactory alternatives. In making your decision consider what languages you use now, or are interested in learning in the future. Also identify what general platform you wish to develop for; be it the desktop, server, web or mobile. And always remember whilst none of these discussed paths are wrong, some are more right than others depending on the project.

SpringSource tc Server: The right product at the right time

Releasing a new product into one of the worst economic climates ever would generally be considered a bad move, but for SpringSource it may prove a master stroke. Recently they announced that early next year (Jan/Feb) version 1.0 of tc Server, a fully supported, business-friendly edition of Tomcat 6.0, will be available. For those in the Java world Tomcat is the first port of call when developing or deploying web applications. This is because it is free (open source), lightweight and relatively easy to use compared to the Java application server competition; JBoss, GlassFish, WebLogic and WebSphere.

Unfortunately when compared to alternatives Tomcat has never been as well supported in the role of mission critical, business server. JBoss does support Tomcat so that it can fulfill the role of servlet engine for their application server, but most will acknowledge the two are quite different beasts. Other companies ship Tomcat as part of their products, for example Novell and Alfresco, but in these cases support is of a token nature and generally extends only to how the company's own software runs within it. So in this cloudy support and economic environment it is easy to see why SpringSource is moving to offer a supported, business-friendly edition of Tomcat.

Google outflanks Sun with Android

Google recently released the highly anticipated Android mobile phone platform to developers. Android promises to be a more consistent and powerful environment for mobile applications compared to what currently exists in the fragmented mobile market. Whilst many people were disappointed that Android was not a Google-branded iphone; from a developers perspective if it can gain broad adoption it will make the developing powerful, Internet-centric mobile applications significantly easier.

One of the most interesting aspects of Android is that it is released under the Apache v2 software license. This license grants obligation-free use of the code to any party. This is different to other popular open-source licenses like the GPL which requires source-code modifications to be made publically available. In the competitive mobile phone market such an obligation is problematic which is why Sun releases the Java Mobile Edition (ME) under different open and closed source licenses.

A question that was hanging around Android was how Google had managed to release a Java mobile platform under the Apache license given that the licenses Sun release JavaME under are not compatible. Stefano Mazzocchi points out on his blog that Google have outflanked Sun by releasing a platform that supports the Java language but does not use Sun's Java compiler or the Java byte-code at its core. Instead Google have created Dalvik, a virtual machine released under the Apache license which understands how to compile Java source code into its own byte-code for execution.

This move outflanks Sun's licensing policies, essentially cutting them out of the Android equation. It is a gutsy move by Google but it does free them to focus on developing a platform they have complete control over rather than working in partnership with Sun. From the perspective of Java as a language this move wouldn't seem to pose any problems as the mobile and desktop/server worlds have always been quite distinct. Plus if anything Google's use of the Apache Harmony JavaSE libraries may actually make developing for the mobile and desktop more consistent than Sun's distinct JavaME and JavaSE implementations.

All things considered this news has made Android more interesting from my perspective. Before I heard this it was just another JavaME implementation but now it sounds like Google will have the capability to do some really interesting things. What has yet to be seen is what level of support (if any) this platform will have on the iPhone. Google and Apple have a strong relationship there and it would seem like Dalvik runtime would be a natural fit on the device if it is lightweight, fast and provides developers with the ability to write applications for both Android and the iPhone. 

Comparing Web Development with Java and .Net

I was recently asked to comment on what the pros and cons were of Java compared to ColdFusion and ASP.Net when it comes to Web development. I guess the first thing to get straight with this question is what exactly constitutes 'Java' in a Web development sense.

The basics of the two technologies

The diagram below outlines the elements that comprise of Java and .Net Web development.

Both technologies are very similar as in essence Microsoft based .Net on many of Sun's original Java concepts and borrowed a lot of Java syntax when designing C#. Both utilise managed containers in which code is compiled and executed within. These containers are referred to as the JavaVM or CLR runtime in Java and .Net respectively. Both managed containers have the ability to execute code written in a number of languages, for example it is not uncommon to have a .Net application written in both VB.Net and C#. Whilst not as common the Java runtime is also beginning to support multiple languages such as Python and Ruby. Increased emphasis has come on this ability after the meteoric rise to fame of the Ruby on Rails Web development framework.

The consequences of a GPLed Java

A few days back Sun offically announced they would be open sourcing Java under the GPL to applause from most of the industry. For a long time it was generally accepted that Sun would be fully open sourcing Java, the real question lay in exactly what license would be applied and how it would be undertaken. It turns out things will take about a year to be fully open sourced but even now the OpenJDK website is looking very promising.

S3 meets Java meets WebDAV

The s3DAV looks like an interesting project. It is written in Java and exposes the Amazon S3 online storage service via WebDAV. It is promising because it looks like it can seamlessly expose S3 storage to users via most operating system's native WebDAV support. This will make using S3 as simple as using a network drive. Being Java it can run on just about any platform and either operate at the server or client level. If I had the time I would like to add authentication code to the project, it authentication to OpenLDAP/eDirectory and SQL databases would be a very handy feature to have if you wanted to expose the service to a number of users.

Interesting moves on the JavaVM front

Java One is turning out to be quite interesting this year. Not only has the Java license been changed to allow for easier distribution in Linux channels, but there is also a lot of buzz about coding in different languages for the JavaVM. The most tantalizing from a business perspective is Sun's commitment to get Visual Basic running within the JavaVM. Whilst it will not be practical to get Visual Basic applications written specifically for Windows frameworks running, (that is what Mono is for) it still will be interesting to see whether this significantly grows the Java (as a concept rather than a language) developer community. Even though Visual Basic may be ported across the fact it won't be tightly integrated into Windows like traditional Visual Basic it will more than likely not encourage a mass-migration of low-end, practical developers as some would hope. Still it will be nice to be able to get basic software written in by someone who only knows Visual Basic and have it able to run on any platform that supports the JavaVM.

Thomas Fuchs AJAX presentation & Google's AJAX API

Thomas Fuchs, the guy behind recently did a presentation in San Francisco about AJAX that looked pretty interesting. He has is slide show online in PDF format here. Associated notes made during the presentation have been put online by the guys at Ajaxian.

Software Development

During the working day (and night) a large portion of my time is spent developing web-based software solutions for organisations located within Wellington, New Zealand. Most of this development is related to knowledege management, primarily the field human resources.
Development is undertaken in the Java programming language as it is powerful yet flexible enough to be deployed on any major operating system in use.