The first step in developing any successful project is choosing the correct technology stack. Dunno how many software evangelists second this idea, but I have known this with experience in many of the projects whose part I have been.
The technology platform or stack can actually depend on lot of points –
1. Team Competency – How competent is your team in the particular technology, It will be quite an herculean task to roll out something in time if you plan to learn and master the technology and language along with developing the product. You should choose a technology which your team has either masters or at least has fair exposure to.
2. How stable and ripe is the technology – I would not prefer to write a commercial product based on some beta technology or product which is not backed by some reputed vendor. Its better to always base your end product with professionally supported technology stack which has a good developer community and decent vendor support. Else if you are stuck somewhere, you will be stuck up for ages with no support or help.
Open Source can be an option many at times, but again make sure its supported with some premium support.
3. Will it support the Architecture you propose and how easily?– This is the most important question the Lead Architect of the team should always ask himself. Its very important to figure out whether the technology and programming language that you are choosing has all the important aspects and features which will be required by a complex Multiplayer game like online poker.
Typically I would expect the language to support OOPs fully, else it will be very difficult to implement proper design patterns and the end result could be spaghetti code.
Along with this I would prefer that the framework has pre built classes for Server-Client implementation (ease of use).
4. Deployment – The last thing you should bother about the most is how and where your application is going to be deployed. In our case, we want to deploy it to all platforms (Windows, Linux and MAC), make it run as a standalone desktop client and also as a web based deployment inside the browser. Along with this we also wanted the possibility of easily porting the client code for Mobile Deployment, without any changes in server code. Along with this, we wanted to have live poker experience where users can see each other in real time with their web cams and speak over microphones in their respective rooms.
I did my research across the web, scanned through tons of sites , books and stuff, I came up to these final technology stacks.
1. Microsoft – .NET and related technologies
2. Adobe – Flash AS3, Flex , AIR , Flash Media Server and related technologies
3. Sun Micro systems – Java, JavaFX and related technologies.
There were lot many others which made up in my list but these three were worth comparing and mentioning.
I have compared the anomalies and advantages of each and shown how I finally arrived to my chosen platform.