We gave some serious thought to building a Java app. If you were to freeze the technology platforms as of today, there would be no question that we would go with a Java/open source development strategy. Java has some key pieces of technology that are difficult to replicate on a Microsoft platform. Java really is the best platform right now for large scale web development. The Hibernate object layer is powerful and I like the various Ajax framework options better. Java is the safe choice.
But we're making a technology decision that will shape our company for decades. So we're looking as much at upcoming features and technologies as we are at current capabilities. And this is where Microsoft starts to shine.
Microsoft understands the next generation of the Internet better than anybody I've seen. They are structuring the .Net framework in such a way that applications written in the framework will also work across their various server platforms, running on a desktop or loaded into a server farm. Their new UI technology works cross-platform, with one set of code running both in a web browser and as a desktop app.
Getting a handle on the Microsoft technology vision was difficult. In 1998, I had to wrap my brain around Visual Basic, ADO, SQL Server, and Internet Information Server--a daunting task or so it seemed at the time. Ten years later, getting a comprehensive handle on Microsoft's future technology platform requires 4x the knowledge, with much of the information scattered across hundreds of Microsoft team blogs. LINQ, Entity Framework, Astoria, WPF/Silverlight, WWF, BizTalk Server, Oslo, WCF, Microsoft SQL (and other databases). The list goes on and on. All the parts interact, with the goal being to build a platform that works stand-alone but also can be configured to work in a large enterprise environment.
Microsoft's overall vision is compelling. A few factors lock the choice in for me. Silverlight is a browser-version of .Net that lets us essentially build desktop apps that run cross-platform in a web browser. I'm also excited about the Workflow framework which should let large clients use Biztalk server to manage their data processing. Astoria will give us a structured SOA layer so users can access FinFolio data over the Internet. LINQ and Entity Framework let our software run on any major client/server database while, at the same time, letting us code to rich abstracted objects and completely ignore the database.
It's amazing how far Microsoft has come in the last couple years. They've made the choice easy.