I want to build a SyncML parsing library (no UI) which should be able to build up messages based on information provided by the host application, fed in by the library's methods. Also, the library should to be able to do callbacks to methods in the host application.I want to be able to compile this and have it available on as many platforms as possible: Windows, Windows Phone 7 OS, OSX, iOS, Linux, Android, BlackBerry. Basically as many platforms as possible.The priority is to have this available on mobile devices.Questions:What setup should I use? (programming languages, compilers, IDE etc.)How would I compile this library for these different platforms and how would I connect to it?Any other info? e.g. articles that cover the subject of cross-platform development?I haven't done this sort of a cross-platform project before, so any available information to put me in the right direction would be welcomed.Myself, I have a background in C#/.NET and Objective-C.
What language should I use for making a cross platform library?
programming languages;cross platform;standard library
Using the Java platform / JVM would be the obvious choice - it has the widest cross-platform coverage of any language, and if you have a C#/.Net background the concepts will be very familiar.Note that you don't have to use Java language to gain the benefits of the Java platform - in fact nowadays, if starting a project from scratch I'd probably recomemnd one of the following:Scala - if you want a powerful, statically typed, multi-paradigm langauge with great performance on the JVM. Could suit you if you have a C# background.Clojure - if you prefer functional programming, like dynamic languages and enjoy living on the cutting edge. Clojure has truly excellent concurrency capabilities which may be appealing - the linked video is well worth watching for some deep insights.Groovy - if you want a simple-but-effective dynamic object oriented scripting language that will feel very familiar to C#/Java developers.All these languages get all the benefits of being on the JVM (fantastic JIT compiler, very effective garbage collection, a huge set of libraries) but are much more productive languages to work in.By the way, there's already an open source SyncML library available in Java called Funambol. Not sure of the extent to which this is useful directly to you but it's an example of the fact that there is usually an open source Java library for pretty much anything.......Thoughts on other options:C/C++ can certainly work cross-platform, but it requires a recompile (and subsequent testing) into native code for each platform. With JVM languages that isn't necessary as the compiled bytecode itself is portable. Unless you absolutely need C/C++ for performance or access to raw hardware features, I think it is a headache you should avoid.C# in the form of Mono could work (witness the success of Unity as a cross-platform library for example), but it's nowhere the JVM ecosystem in terms of maturity, library availability or even raw performance. Also it's never going to be 100% compatible with Microsoft .Net since .Net has windows-specific features which are a nightmare for portability. Still, worth considering if you are determined to stick with C#.Javascript might be an outside option if you are interested in using the library on both the client and server side.