I came to the conclusion that developing the client as a WinJS-only application was a bad idea. The canvas implementation of Metro apps is too slow for what I want to do and I am essentially closing out all people except for the Windows 8 early adopters.
So which programming language to use?
Keeping the client in WinJS:
- + profit from the Windows 8 early adopters
- + collect Windows 8 experience
- - performance is horrible
- - badly documented API
- - Testing and development in a VM
Platforms to dismiss completely: Everything but Windows 8
Client in Javascript:
- + very accessible, because it requires no plugins and no download
- + keep much of the existing code
- + GUI in HTML
- + users behind proxy servers can play (websocket / AJAX go through HTML)
- - users behind proxy servers can't be IP-banned efficiently
- - it's a horrible language for larger applications
- - annoying differences between browsers
- - WebSocket is currently disabled or unimplemented in most browsers. Workarounds exist (AJAX long polling), but the performance is unsatisfying.
Platforms to dismiss completely: only Windows XP with IE8, it would even runs on most smartphones.
Client as Java Applet:
- + Almost as accessible as JS
- + Runs on a lot of platforms
- + share code between client and server
- + powerful library
- + data exchange via serialized objects is possible (but turned out to be 4x as bandwidth-intense as JSON for some of my test cases)
- + applet allows integration into browsers
- - But no communication with the website, because Java DOM isn't supported well enough
- - Java plugin required
- - Conspicuous Do-you-trust-this-applet click required unless I do without some crucial features
Platforms to dismiss completely: Android and iOS
Client in C++:
- + Very good performance
- + platform-independent development is possible, but a lot harder than in JS and Java
- - development will take longer due to low level stuff I have to deal with
- - Binary download and installation required
Platforms to dismiss completely: Mac, most Linux distributions (sorry, but I can't create packages for all of them), Android, iOS
No comments:
Post a Comment