Here are matrixes of some development platform.
Any option or complementarity is appreciated .
A glancing maxtrix
User Interface | Document/Community/employees | Cross-platform | Development efficiency | |
Air(Flex) | Good looking, it has abundant animation effect. | Many official document/Few employees | MS/Windows, Linux , Mac Os | Easy to editing user interface. Use css to render the style. |
WPS(.net) | Good looking. | a few document/Few employees. | MS/Windows | |
Swing(java) | Unsightly | Extensive document/ Rich community/ many employees. | MS/Windows, Linux , Mac Os | Slow. |
QT(C++). | Good looking, it has different style in different system. | Extensive document/ Rich community/ Few employees. | MS/Windows , Linux , Mac OS | Easy to Editing user interface. But it maybe take time to redraw the style |
Other Choice:
GTK(PHP): it is not used universal.( http://gtk.php.net/)
Delphi: it seem outdated
Python: free, easy to learn, can run on any OS.
A maxtrix base on some specific issues
1. Ability to monitor file system for changes
2. Robustness for connecting to web-service .. and deal with intermittent / lost connections
3. Photo transcode
4. Video transcode
5. Ability to control CPU load
6. Ability to control network load
7. Boot time impact
8. Update mechanism
9. Ability / difficulty to do notifications pop-ups
I am not familiar with C++. But there is a word , “C++ can do what java can do.”
Detail:
1 | Ability to monitor file system for changes |
Flex | do periodic job by flash.utils.Timer. Flash.filesystem.File.getDirectoryListing(). |
Java | do periodic job by thread.(Quartz). Java.io.File.listFiles() |
C++ | |
Comment | The language should support both periodic job and files scan. |
2 | Robustness for connecting to web-service .. and deal with intermittent / lost connections |
Flex | By adding “RANGE: bytes=*****” to http header, and using flash.filesystem.FileStream to write, to support Resuming broken downloads/uploads |
Java | By adding “RANGE: bytes=*****” to http header, and using java.io.RandomAccessFile to write, to support Resuming broken downloads/uploads |
C++ | |
Comment | The language should support to modify http header and have ability to write a file from a offset offered. |
3 | Photo transcode |
Flex | use flash.display.BitmapData, mx.graphics.codec.JPEGEncoder , flash.net.FileReference |
Java | has implement.(Java Image/IO) |
C++ | |
Comment | The language should have image API to read, convert and export. |
4 | Video transcode |
Flex | use FFmpeg (NativeProcess , nativeProcessStartupInfo) |
Java | use FFmpeg.( java.lang.ProcessBuilder) |
C++ | |
Comment | FFmpeg is a cross-platform solution for Video transcode. The language should have API to run system program and arguments. |
5 | Ability to control CPU load |
Flex | There is no function sleep in As3, and flash.utils.Timer can simulate it. But it is not what we want. |
Java | make the threads sleep , or have lower priority |
C++ | make the threads sleep |
Comment | there is no way to control the CPU load or usage directly, or every application will run as fast as they can . correct me if I'm wrong. But we can optimize code , reduce the IO operation or let the thread sleep. In Windows: right click the java process in TaskManager and change priority. In Unix: nice [-increment | +increment] java/as3. |
6 | Ability to control network load |
Flex | |
Java | |
C++ | |
Comment | I have not found some useful resource about it but some newwork monitor. Do you have some suggestion? |
7 | Boot time impact |
Flex | Air have no api to modify registry but read, but we can use ”sc create” to register it as a window server instead. |
Java | modify windows registry by jni (http://trustice.com/java/jnireg/) |
C++ | |
Comment | Windows: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] auto run when system start completely Linux: /etc/rc.d/re?.d /etc/rc.d/init.d |
8 | Update mechanism |
Flex | Flex have a strong update framework . We should not release any path , and the application will update automatically. |
Java | one answer is Java Web Start.( http://www.java.com/en/download/faq/java_webstart.xml) (a part of JRE 5.0) The system will download jar if the version has changed. |
C++ | |
Comment | The flex has better experience with comfortable updating , and is kind to developer as it isn’t necessary to change code. About Java(JWS), if user’ machine has not install JRE5.0 , or above, it should install Java Web Start first , and developer should change code for security reason , and all code and resource is supported to be compressed into one jar. |
1 | Ability / difficulty to do notifications pop-ups |
Flex | There are two very good and free components available that we can use Flex Notification(http://afoucal.free.fr/index.php/2009/07/06/flex-notification ) FlexGrowl(http://lukesh.wordpress.com/2009/04/04/rawr-flexgrowl-component-available) |
Java | Swt components A sample from http://hexapixel.com/2009/06/30/creating-a-notification-popup-widget |
C++ | |
Comment |