I need to develop an app which should look kind of the same on desktop and as a website incarnation.
Since I am a web dev and have never developed for desktop, I want to use a language that can embed a webkit view so I can use the same HTML/JS front-end for both usages, and minimize the learning curve for GUI at least.
C++ and Java can both use webkit, however, I am looking for alternatives where functions are first-class citizens, because I prefer prototype-based languages by far.
I am mainly a web developer; I'm at ease with js/as3/php/python.
Lately however, I had ideas that need other languages to get done. Namely, I have an idea for a software that is part custom-database and part GUI. So I began tackling desktop oriented languages such as Java and C++.
I need a language that has the following features:
- Functional. By "functional", I mean a large definition. This includes any language where functions are first-class citizens (where "actions" are more important than "actors").
- Portable: I picked C++/GTK or Java because of easy portability and no license restrictions. So portability here means os-independent (with realistic limits) as well as open license.
- Can use a webkit view:(like in GTK,or in Java) or similar; I intend to leverage my knowledge of web apps to build a beautiful, usable, gui in html5. The same interface will be used in the online version of the app. Therefore, I need the language to have a way to embed and interact with HTML5
- Can use JS: ideally, through V8, although rhino or a similar tool is ok. If a window js object could be exposed to the js code (so I can use standard libs such as jQuery), it would be perfect.
- Low-level: I need the database part to be fast. Could code my db in C and my GUI in whatever-language-it-will-be, but ideally, I'd like to use one toolset for both
- Less important, but: if the language could be a derivative of ECMA script, so I can leverage my js skills, it would be cool.
My Current Options
- Titanium, which has all the above features and uses js as it's primary code; However, I dislike being tied to a particular SDK and I'd rather use independent open-source libs that I can read.
- Your suggestion?