
Mrunali Tandel et al, / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 7 (3) , 2016, 1242-1245 Literature Review : Scripting in Qt for Scripting Engine development Mrunali Tandel#1, Prof. Uday Joshi#2, Amit Golhani*3 #Department of Computer Engineering, University of Mumbai K J Somaiya College of Engineering, Mumbai, India *Larsen & Toubro Automation, Navi Mumbai, India Abstract— For an application development, the organization development framework, developed by Digia and Qt selects programming language according to the various Projects (currently maintained by the Qt company), used for requirements of the application. C/C++ is considered to be one developing applications that can be run on various software of the strongest programming languages with advantages such and hardware platforms. It is available with both as excellent performance and control over memory-layout to commercial and open source licence. The main list a few. Though developing an entire application using C/C++ provides high performance, it becomes tedious for development language for Qt is C++ and it supports GCC extending it. Only a programmer proficient in those languages C++ compiler and MSVC. [5]There are many third-party can extend them and this dependency can be time consuming. scripting extensions for Qt which enables extending the Qt Scripting language can be considered as one of the option. If application using scripts. The language includes but not the entire application is developed in scripting language, it can limited to JavaScript, Lua, Python and Ruby. be extended easily; enabling rapid application development, In order to balance the high performance provided but the performance of the application will get degraded. In languages such as C++/C and ease of programming the competitive market of software, performance of the provided by scripting language, the concept of scripting application, frequent updating and customisation plays an engine is proposed. The scripting engine is a tool/library, important role. The concept of scripting engine is introduced to ease the above tasks. From the number of frameworks which is capable of loading, compiling and running script available for C/C++ programming, Qt framework is code. It can be used in an application to handle all the non- considered for this research, as it is widely used and third- performance critical and user-interface events. The scripting party scripting extensions are available in the market for Qt. engine will enable to develop or extend an existing With the Qt framework, the developer can integrate the application easily using scripts, without hampering the performance critical application developed in C/C++ with the performance of overall application. The further chapters script to manage the user-interaction and non-performance explains the proposed concept of scripting engine as well as critical events. the comparative study of various scripting extensions available in Qt, which enable integrated development using Keywords— Scripting Engine, cross-platform, Qt Framework, high performance programming language(C++) and scripts. library. II. LITERATURE REVIEW I. INTRODUCTION The Qt application can be extended by scripting With the advent of many programming languages, the language using scripting modules provided by The Qt programmer got the wide variety of choices for developing Company or the scripting extensions provided by third- their applications. In the past, the entire software was party. The scripting languages for which, the scripting written in high performance programming language such as extension is available for Qt are JavaScript, Lua, Python C/C++. No matter, it provides an excellent performance as and Ruby. The extensions for JavaScript are QtScript [7] the code is precompiled; it becomes very difficult to and QJSEngine [8], both provided by Qt framework. The program the application. High performance programming extensions for Lua in Qt are QtLua by Savannah projects languages are very difficult to master in. On the other hand, [9] and Lqt [10]. The extensions for Python in Qt are PyQt scripting languages do not provide a high performance as, by Riverbank Computing [11], Pyside by Nokia [12], the conversion to machine code is on-fly, it is very easy to Pyotherside [13] and PythonQt [14]. The extensions for write an application in scripting language compared to Ruby in Qt are QtRuby by Korundum [15] and Ruby-QML compiler-based language. Also, programming in scripting by seanchas116 [16]. Thus, with any of the extensions language enables rapid development of an application. available, scripting engine can be developed, where the core Thus, either the application developed will have low part of the engine is written in C++ and non-performance performance, or it will be very difficult to program or critical part using scripts or the extension of the application extend. There are many frameworks available in market, in scripting language which can interact with the user- with Qt being used widely in industrial software interface. development. Qt is a cross-platform application www.ijcsit.com 1242 Mrunali Tandel et al, / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 7 (3) , 2016, 1242-1245 The comparative study based on the requirement of and is more compliant with ECMA standard [42][43]. But, product of each of the extensions available is as follows: it is still in developing phase and lacks features which are present in QtScript such as instantiating QObject from A. Ease of using JavaScript, exposing individual native function to The scripting language to be used in scripting engine JavaScript and debugging API. [24][44]. should be easy to use, as the purpose of its introduction in PyQt supports Qt4 and Qt5.4.x. The support for Qt 5.5 application is to extend the core part of library using script is still not available [11]. PySide supports only Qt4, there is for rapid development. If an easy to learn and readable no official support for Qt5 [25]. Pyotherside currently scripting language is selected, then the application can be supports Qt5 and is actively maintained one [13]. PythonQt extended easily by anyone, including a non-programmer or currently supports Qt4 and Qt5. It is actively maintained are the person with least expertise in programming. developers are working to provide support for Qt 5.5 [14]. Considering JavaScript, Lua, Python and Ruby, all are easy The QtLua supports Qt 5.1, 5.2, 5.3, 5.4.x. The support for to use compared to high performance language like C/C++. Qt 5.5 is not official [9]. Lqt project is no longer maintained Considering the readability of language, Lua and Python by the author and the existing Lqt contains many bugs and are readable. Ruby is bit confusing, as in Ruby there are limited features. Thus, Lqt's support for Qt is stranded to Qt more than one way of doing things in Ruby. eg. Conditional 4.7. statements, aliasing methods and opposite methods QtRuby is no longer maintained by its developers and [29][30]. the existence QtRuby library supports only Qt 4.x [26]. Ruby-QML provides binding between Ruby and QML. It B. Support provided for extensions currently provides support up to Qt 5.4 and is actively As some of the extensions provided for scripting are maintained [23]. third party extensions, support provided by this third party organization plans a vital role in development of this E. Platform Supported project. Support includes the forums and mailing list which The product should support multiple platforms, as it can addresses the issues related to these extensions. QtScript be used by anyone on the desired platforms. The table and QJSEngine are the part of Qt framework, thus all below shows the platform supported by each of the forums related to Qt addresses the issues. The extensions [27][11][18] forums/mailing list for QtScript and QJSEngine are [31], TABLE I [32], [33], [34]. For Python, the extension PyQt has PLATFORM SUPPORTED BY THE BINDINGS maximum support such as [32], [35], [36], [37]. PySide has a mailing list which addresses PySide related questions [38]. QtLua, lqt and QtRuby have mailing list each [39], [40] and [41] respectively. C. Licensing Licensing plays an important role, when the aim is to develop a proprietary application. QtScript and QJSEngine, F. Speed of execution both are licensed under GNU Library General Public Compared to the high performance language like License (LGPL) [7] [8]. PyQt is available with both C/C++, the scripting language plays low. Table I below commercial license and GNU General Public License shows the time taken in milliseconds by each language for (GPL) with no functional difference between them. execution [6]: TABLE III Informal support is provided for commercial license holder COMPARISON WITH RESPECT TO SPEED [17]. PySide and PythonQt licensed under LGPL version 2.1 license [18][19]. Pyotherside is licensed under ISC/BSD license [20]. QtLua is licensed under LGPL version 3 license and Lqt is licensed under MIT(X11) license [21][10]. QtRuby is licensed under LGPL version 2.1 license [22]. Ruby-QML is licensed under MIT license [23]. D. Roadmap to support future versions The extension should provide support to the recent versions of Qt and should support the maximum features of Qt. Considering QtScript and QJSEngine, both are the part of Qt framework. QtScript, which is based on JavaScriptCore engine, has been deprecated since Qt 4.7, since; it failed to give high performance as JavaScript V8
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages4 Page
-
File Size-