US20150254074A1 - Method and system for platform-independent application development - Google Patents
Method and system for platform-independent application development Download PDFInfo
- Publication number
- US20150254074A1 US20150254074A1 US14/719,131 US201514719131A US2015254074A1 US 20150254074 A1 US20150254074 A1 US 20150254074A1 US 201514719131 A US201514719131 A US 201514719131A US 2015254074 A1 US2015254074 A1 US 2015254074A1
- Authority
- US
- United States
- Prior art keywords
- platform
- commands
- hybrid application
- native engine
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Definitions
- the present application relates generally to the field of computer, thin client, and mobile device applications and more specifically to hybrid applications that support functionality that may be accessed via a combination of web programming and platform-specific executable code.
- hybrid solutions usually rely on access through a mobile device's web browser that may expose the device to security risks, among other things. Additionally, hybrid solutions may restrict or limit access to specialized hardware, such as a global positioning system (GPS), camera, and other peripherals, among other things. Further, hybrid solutions typically require a constant connection to the Internet or may require certain tightly-coupled components or resources that may limit their use on a thin client.
- a web programming language such as hypertext markup language 5 (HTML5) and/or JavaScript
- hybrid solutions usually rely on access through a mobile device's web browser that may expose the device to security risks, among other things. Additionally, hybrid solutions may restrict or limit access to specialized hardware, such as a global positioning system (GPS), camera, and other peripherals, among other things. Further, hybrid solutions typically require a constant connection to the Internet or may require certain tightly-coupled components or resources that may limit their use on a thin client.
- GPS global positioning system
- a method of executing a hybrid application on a device includes commands related to both platform-specific functionality and platform-independent functionality of the device.
- the method includes steps of initializing a loosely-coupled native engine configured to receive commands from the hybrid application.
- the loosely-coupled native engine is further configured to facilitate implementation of platform-specific functionality on the device.
- the loosely-coupled native engine includes a Hypertext Transfer Protocol (HTTP) server and initializing the loosely-coupled native engine comprises initializing the HTTP server.
- HTTP Hypertext Transfer Protocol
- the method includes assigning a unique instance ID to the HTTP server, and configuring the HTTP server to only accept commands comprising the unique instance identifier (ID).
- the method includes initializing the hybrid application.
- the method includes receiving commands from the hybrid application.
- the commands include the unique instance ID of the HTTP server, and at least one of the commands comprises a device command to be converted to a corresponding platform-specific executable code prior to execution of the platform-specific executable code.
- the method includes verifying that the commands comprise the unique instance ID of the HTTP server. And the method includes creating a handler to serve the device command and facilitate execution of the corresponding platform-specific executable code.
- the device comprises a memory configured to store local files, a loosely-coupled native engine, and a hybrid application.
- the loosely-coupled native engine comprises a webserver module, a command dispatch system connected to the webserver module and configured to pass commands to, and receive commands from, the webserver module, and a plurality of handlers configured to handle commands from the command dispatch system and serve a resulting code.
- the webserver module of the native engine receives a unique instance ID upon initialization of an instance of the webserver module, and the unique instance ID is transmitted to the memory.
- the webserver module is configured to reject communications that do not include the unique instance ID.
- the hybrid application is programmed in a platform-independent development environment, wherein the hybrid application comprises commands to be transmitted to the webserver module of the loosely-coupled native engine, and wherein the commands comprise the unique instance ID of the webserver module.
- a non-transitory computer-readable medium having instructions that when executed cause the implementation of a method is disclosed herein.
- the medium has instructions for facilitating the execution of at least a first hybrid application on a first device, the first hybrid application comprising commands related to platform-specific functionality and platform-independent functionality of the first device.
- the method includes initializing a loosely-coupled native engine configured to receive commands from the first hybrid application and to facilitate platform-specific functionality on the first device.
- the loosely-coupled native engine comprises a webserver module.
- the method includes receiving commands from the first hybrid application, wherein at least one of the commands comprises a device command to be converted to a corresponding platform-specific code prior to execution of the platform-specific code.
- the method includes creating a handler to serve the device command and facilitate execution of the corresponding platform-specific code.
- FIG. 1 illustrates an embodiment of a platform-independent application development system.
- FIG. 2 illustrates an application distribution framework
- FIG. 3 illustrates a client device according to the present disclosure.
- FIG. 4 illustrates another embodiment of a client device.
- FIG. 5 illustrates a native engine in a platform-independent application development system.
- FIG. 6 illustrates a remote server according to the present disclosure.
- FIG. 7 illustrates a method of processing an application according to the present disclosure.
- FIG. 8 illustrates another embodiment for processing an application.
- FIG. 1 shows one embodiment of a system 100 for platform-independent application development comprising client 105 , clients 110 a - d , remote server 120 , and database 125 all connected via Internet 115 .
- platform-independent application development refers to the development of applications in one programming language, referred to as a platform-independent development language, or on one platform, that may be implemented on a plurality of platforms without programming, or otherwise developing, a new version of the application for each platform.
- a platform may be any type of computer or other electronic hardware device having a standard design for use with a compatible operating system.
- a platform may be an operating system, such as Windows-based OS, Mac-based OS, UNIX, Linux, iOS, Android, Windows Phone-based OS, Blackberry-based OS, etc.
- an application may be programmed in a first language, for instance, a platform-independent development language, and may then be implemented on both iOS and Android platforms without having to program native iOS or Android versions of the application.
- clients 105 and 110 a - 110 d may all be connected to Internet 115 .
- Client 105 may comprise any suitable client device configured to access or otherwise load a system 100 for platform-independent application development.
- client 105 may comprise a Windows-based machine accessing the system 100 for platform-independent application development via a web browser comprising a user interface (UI).
- client 105 may comprise a system 100 for platform-independent application development loaded in its own internal memory so as to facilitate application development without a connection to Internet 115 .
- Client 110 a represents a tablet or smartphone configured to access Internet 115 via a wired or wireless connection.
- client 110 a may comprise a tablet with a radio connection to a local router, such as via WiFi, or to a remote cellular tower via long-term evolution (LTE), among other things.
- LTE long-term evolution
- any suitable connection is contemplated by the present disclosure, including different cellular wireless connections, such as global system for mobile (GSM), general packet radio service (GPRS), code division multiple access (CDMA), evolution-date optimized (EV-DO), universal mobile telecommunications system (UMTS), enhanced data rates for GSM evolution (EDGE), worldwide interoperability for microwave access (WiMAX), LTE, and/or any other next generation transmission standard.
- GSM global system for mobile
- GPRS general packet radio service
- CDMA code division multiple access
- EV-DO evolution-date optimized
- UMTS universal mobile telecommunications system
- EDGE enhanced data rates for GSM evolution
- WiMAX worldwide interoper
- client 110 a may connect to Internet 115 via a wired connection such as an Ethernet connection to a router, and a cable or DSL connection to an ISP.
- clients 110 b and 110 c also represent mobile devices, such as tablets, smartphones, or any other relevant device, configured to connect to Internet 115 via either a wired or wireless connection.
- Client 110 d represents a dumb terminal or thin client device (collectively “thin client”).
- a thin client represents any device designed to be lightweight and thus reliant or dependent on another device or computer for a bulk of the processing power necessary to perform its operations.
- a plurality of hand-held devices may be utilized to scan merchandise and then transmit processing related to the scanned merchandise back to a central computer or computers.
- the scanned information may be entered into a database for tracking stock of a given product, for instance.
- a plurality of thin clients may be set up at a store or movie theater to permit self-checkout, and the plurality of thin clients may be networked with a central server or servers to handle part or a majority of the data processing.
- Remote server 120 represents any suitable form of device configured to exchange data with clients 105 and 110 a - 110 d .
- Remote server 120 may comprise a webserver configured to host data associated with a website or otherwise interact with clients 105 and 110 a - 110 d .
- remote server 120 may comprise an Apache server configured to function using HTTP protocol.
- Database 125 may comprise any suitable form of database, such as a relational model, an object model, or an object relational model database, among other things.
- database 125 may comprise a relational structured query language (SQL) database on remote server 120 .
- database 125 may be remote to remote server 120 .
- database 125 may comprise a Sybase® database on remote server 120 .
- a user may access the platform-independent development environment via client 105 .
- the user may be presented with a graphical user interface via which the user may program a hybrid application to work on a plurality of platforms.
- a hybrid application is an application developed in a system 100 for platform-independent application development, and combining elements of both a native application and a Web application.
- the hybrid application may comprise commands related to functionality that may be accessed independent of the native functionality of a platform or without use of platform-specific executable code.
- the hybrid application may include functionality related to displaying a UI on a mobile device and allowing a user to interact with the UI.
- the hybrid application may also comprise elements to be accessed through the native functionality of a platform.
- functionality that can only be accessed through the native framework of a platform is referred to as platform-specific functionality.
- the hybrid application may include functionality related to a GPS of the mobile device, and in some cases, functionality related to the GPS of a mobile device may be platform-specific functionality.
- platform-specific functionality may be achieved using platform-specific executable code, which may correspond to a platform-specific command. Said otherwise, a platform-specific command, or device command, may be drawn to platform-specific functionality of a given platform.
- the user may upload the hybrid application to a remote server 120 , and the hybrid application may be accessed and/or downloaded to a client device 110 a - 110 d .
- client 110 a of a first platform, client 110 b of a second platform, client 110 c of a third platform, and thin client 110 d of a fourth platform may all access the same hybrid application, and the hybrid application may be configured to operate on the first through fourth platforms without having to code platform-specific versions of the hybrid application in order to access platform-specific functionality.
- FIG. 2 illustrates a method and system by which a hybrid application 201 may be distributed to clients 210 a - 210 c according to one embodiment of the present disclosure.
- a hybrid application 201 may be pushed to an application distribution center 202 from which the hybrid application 201 may be distributed to clients 210 a - 210 c.
- the application distribution center 202 may be housed on remote server 120 .
- the developer may then cause the hybrid application 201 to be uploaded to the application distribution center 202 .
- a user of client 210 a may elect to download and/or install hybrid application 201 .
- a user interface of client 210 a may direct the user to a website to download hybrid application 201 , or hybrid application 201 may be automatically pushed to client 210 a .
- hybrid application 201 may be stored in a database, such as database 125 shown in FIG. 1 , and may be accessed and otherwise downloaded by way of a user interface of client 210 a . Any other suitable mode or means of application distribution is contemplated by the present disclosure.
- FIG. 3 shows a client 310 in one embodiment comprising a hybrid application 301 , a web browser 303 , local files 304 , and a native engine 306 .
- client 310 may be connected to the Internet 315 .
- a remote server 320 may also be connected to the Internet 315 .
- Native engine 306 may comprise a webserver module 330 configured to receive commands related to platform-independent functionality.
- Native engine 306 may also comprise a handler module 345 configured to receive commands related to platform-specific functionality.
- Native engine 306 may have logical connections, existing in hardware and/or software, to web browser 303 , hybrid application 301 , and/or local files 304 .
- web browser 303 may have logical connections, existing in hardware and/or software, to hybrid application 301 , to native engine 306 , and optionally to local files 304 .
- Hybrid application 301 may have logical connections to local files 304 , native engine 306 , and web browser 303 .
- local files 304 may have logical connections to hybrid application 301 , native engine 306 , and optionally to web browser 303 .
- Hybrid application 301 may comprise any application programmed to take advantage of functionality based on web programming languages, such as hypertext markup language (HTML), HTML5, cascade style sheets (CSS), and JavaScript (or asynchronous javascript and xml (AJAX), which is used interchangeably in the present disclosure), among other things, but nevertheless offers access to platform-specific functionality through a thin native container referred to as native engine 306 in the present disclosure.
- native engine 306 a thin native container referred to as native engine 306 in the present disclosure.
- hybrid application 301 may be developed primarily using HTML5 and JavaScript, but also relying on native engine 306 to interpret commands from hybrid application 301 into code that may be executed by a given platform.
- Native engine 306 may comprise any combination of software and hardware configured to receive commands related to platform-specific functionality and/or platform-independent functionality, and assist in facilitating the execution and/or implementation thereof.
- native engine 306 may be configured to receive commands from hybrid application 301 .
- hybrid application 301 may include commands related to platform-specific functionality such as the camera on an iOS device, among other things.
- a command may comprise a line of code in an application or program directing the implementation or performance of a task or functionality on a client 310 .
- a command may direct a program, such as a virtual machine or a web browser, among other things, to assist to facilitate the implementation or performance of a task or functionality on a client 310 .
- hybrid application 310 may comprise commands related to displaying images and content and exchanging information between client 310 and a remote server 120 .
- web browser 303 and webserver module 330 may work together to facilitate the display of the relevant images and content, among other platform-independent functionality.
- native engine 306 may participate in the implementation of a command from a hybrid application 301 by receiving the command, and transmitting the command to the appropriate module, such as webserver module 330 or a handler module 345 .
- Native engine 306 may receive executable code from the webserver module 330 and/or the handler module 345 and may transmit or otherwise pass the received executable code to the appropriate module or component of client 310 so that the received executable code may be executed or implemented by client 310 .
- native engine 306 may receive executable code from webserver module 330 , which it may transmit to web browser 303 .
- native engine 306 may receive executable code from handler module 345 , which it may transmit to a relevant module of client 310 for execution.
- webserver module 330 and/or handler module 345 may be configured to transmit executable code directly to a relevant module of client 310 .
- Hybrid application 301 may rely on web browser 303 to interpret and execute commands of hybrid application 301 that have been programmed in, for instance, HTML5 and JavaScript. For instance, portions of hybrid application 301 may be programmed in a combination of HTML5 and JavaScript in order to take advantage of graphical display and interaction functionality accessible through, and built into, web browser 303 .
- hybrid application 301 may comprise commands related to a graphical user interface comprising form elements such as drop down menus, buttons, and text boxes, among other things.
- the graphical user interface of hybrid application 301 may not need to access platform-specific functionality in order to be displayed.
- hybrid application 301 may comprise commands related to logging into, accessing, writing and reading from a database 125 .
- hybrid application 301 may not need to access platform-specific functionality in order to process the commands related to database 125 , and may perform the commands through web browser 303 .
- Web browser 303 may comprise a standard web browser of a platform, such as, for example, a WebKit-based browser such as Safari browser on an iOS device, a Chrome browser on an Android device, a Gecko-based browser such as Firefox, or a Presto-based browser such as Opera, among other browsers.
- web browser 303 may comprise a non-standard web browser, such as a web browser integrated into native engine 306 .
- web browser 303 may comprise a thin browser integrated into native engine 306 .
- Local files 304 represent any number and configuration of local files that may be relied upon or accessed by hybrid application 301 , web browser 303 , and/or native engine 306 .
- Local files 304 may be stored on a memory of client 310 , and the memory may be integrated or removable, among other things.
- the memory may be a non-transitory computer-readable medium comprising instructions for executing a method.
- local files 304 may store information related to the user and/or the client 310 .
- Local files 304 may store a cache of local data.
- Local files 304 may be configured to facilitate the functionality of hybrid application 301 and native engine 306 .
- local files 304 may contain application files that may reside locally in order to accelerate execution of hybrid application 301 , native engine 306 , and/or web browser 303 code.
- Local files 304 may also permit client 310 to function and to execute hybrid application 301 without a connection to Internet 315 .
- local files 304 may comprise local files that may be updated each time a hybrid application 301 or native engine 306 synchronizes with a remote server, such as remote server 120 in FIG. 1 .
- local files 304 may comprise, among other things, image resources for a hybrid application 301 , and the image resources in local files 304 may be updated any number of times, as required, in order to keep hybrid application 301 running the most up-to-date version possible.
- the present disclosure contemplates uses of local files 304 beyond the preceding illustrative list.
- Native engine 306 represents a container or native engine configured to receive commands from hybrid application 301 and to translate those commands into executable native code, as necessary. Native engine 306 may be further configured to otherwise handle and/or facilitate the execution of commands using web browser 303 . For instance, native engine 306 may be configured to facilitate the implementation of application-specific and application-independent functionality via webserver module 330 and handler module 345 . As used herein, native engine 306 is a loosely-coupled native engine 306 . Generally speaking, loosely-coupled components are components that are not required to have direct knowledge of each other to function, where coupling refers to the degree of direct knowledge that one component may have of the others.
- a loosely-coupled native engine 306 is a native engine that functions independently of hybrid application 301 and/or a remote server, such as remote server 120 in FIG. 1 .
- loosely-coupled native engine 306 is configured to be run on an entirely different device from hybrid application 301 and client 310 , and nevertheless still permit hybrid application 301 to function on client 310 , as seen in FIG. 4 .
- the integration of webserver module 330 into native engine 306 may facilitate and/or otherwise permit the loosely-coupled nature of native engine 306 .
- Hybrid application 301 of client 310 may comprise commands related to a combination of functionality including platform-specific functionality and platform-independent functionality.
- the platform-specific functionality may need to be executed relying upon code specific to the given platform of client 310
- the platform-independent functionality may be executed using a combination of webserver module 330 and web browser 303 .
- platform-independent functionality may be any functionality that may be accessed without recourse to platform-specific code or the underlying native framework of a platform.
- the platform-independent functionality of a first platform may differ from the platform-independent functionality of a second platform.
- platform-specific functionality of a first platform may differ from the platform-specific functionality of a second platform.
- both platform-specific and platform-independent functionality may pass through native engine 306 .
- Hybrid application 301 may pass commands for platform-specific functionality to native engine 306 , and native engine 306 may facilitate the execution of the platform-specific functionality.
- Hybrid application 301 may also pass commands related to platform-independent functionality to native engine 306 , in order to facilitate the execution of platform-independent functionality via webserver module 330 .
- hybrid application 301 may comprise commands, such as user-interface-related commands, that may be executed using webserver module 330 , web browser 303 , and local files 304 .
- hybrid application 301 may include a user interface that may be displayed by client 310 .
- hybrid application 301 may require access to a peripheral or platform-specific functionality of client 310 , such as a GPS unit or a camera, among other things. As hybrid application 301 may need access to such functionality, commands may be passed to native engine 306 , the native engine may return executable native code, and the resulting executable native code may then be executed within the platform framework of client 310 .
- hybrid application 301 may comprise a music player application and client 310 may comprise a smartphone or other handheld device.
- initializing or initialization refers to starting, running, or creating an instance, or instantiating a program or application, such as hybrid application 301 or native engine 306 , among others.
- the user may be presented with a user interface implemented using a combination of webserver module 330 , web browser 303 , and local files 304 . For instance, the user may be presented with a logon screen or a selection of music from which to select a music station.
- a portion of the functionality may be achieved using commands programmed in HTML5 and JavaScript, transmitted to webserver module 330 , and implemented by web browser 303 .
- other functionality such as functionality related to the operation of LEDs on client 310 , access to and use of a GPS device, camera device, and any other platform-specific functionality, may be handled by handler module 345 of native engine 306 .
- hybrid application 301 may request a geospatial location of client 310 in order to provide relevant advertising.
- Such functionality may comprise platform-specific code and may thus need to be translated or otherwise converted into executable native code in order to be implemented on client 310 .
- native engine 306 and/or handler module 345 may comprise a lookup table configured to facilitate the conversion of a command related to platform-specific functionality into a platform-specific executable code.
- information that could assist in the conversion may be stored in a database on client 310 , or remotely in a remote server 120 .
- the database may comprise any suitable database, including, but not limited to, a SQL or Sybase® database, among other things.
- hybrid application 301 may comprise a social network photo sharing program.
- hybrid application 301 may require access to the camera hardware of client 310 . Therefore, whenever hybrid application 301 needs access to platform-specific functionality, such as the camera hardware of client 310 , platform-specific code corresponding to the desired functionality may be received from native engine 306 and/or handler module 345 and executed on client 310 . Additionally, and particularly if the code is used frequently, it may be stored in local files 304 in order to accelerate implementation of hybrid application 301 .
- FIG. 4 illustrates another embodiment of a platform-independent application environment.
- Client 410 comprises a hybrid application 401 , an optional web browser 403 , and local files 404 .
- native engine 406 may run remotely from client 410 and may comprise a webserver module 430 and a handler module 445 .
- client 410 may comprise a thin client, and native engine 406 may run on another machine or server.
- Internet 415 may optionally be connected to either client 410 or native engine 406 , or both client 410 and native engine 406 .
- a remote server 420 may also be connected to the Internet 415
- hybrid application 401 may comprise a combination of platform-specific and platform-independent functionality.
- the platform-independent functionality of hybrid application 401 may be executed on client 410 relying on a code from webserver module 430 implemented by web browser 403 and local files 404 .
- hybrid application 401 may include commands related to a user interface.
- Client 410 may display the user interface-related functionality of hybrid application 401 using commands from hybrid application 401 as handled by webserver module 430 and implemented by web browser 403 .
- native engine 406 may be configured to receive commands related to the platform-specific functionality of client 410 , handle the commands at the handler module 445 , and transmit code corresponding to the platform-specific functionality to be executed by client 410 .
- client 410 may comprise a handheld scanning device used in a warehouse environment, and native engine 406 may be installed and running on a server or other computer.
- client 410 may be connected to a network in the warehouse environment by which it may access native engine 406 .
- native engine 406 may be located locally within the warehouse environment or outside of the warehouse environment, such as on an intranet or on a larger IP network, among other things.
- Hybrid application 401 may comprise an application configured to facilitate the tracking of product or other aspects of the warehouse environment. Thus, according to the present disclosure, updates may be automatically pushed to hybrid application 401 without specifically updating each client 410 .
- client 410 may be replaced with a new client 410 of an entirely different platform, but hybrid application 401 , native engine 406 , webserver module 430 , and handler module 445 may still support the new platform.
- client 410 may comprise an IR scanning module configured to scan barcodes.
- client 410 may display a user interface using platform-independent functionality.
- web browser 403 may be configured to display code related to the user interface as received from webserver module 430 .
- the user interface of hybrid application 401 may include a button that the user may activate when needing to scan a barcode using the IR scanning module of client 410 , which may comprise platform-specific functionality in this example.
- native engine 406 and handler module 445 may provide native code corresponding to the desired platform-specific functionality.
- client 410 may comprise thin client terminals located, for instance, on a university campus connected to a university network.
- client 410 may comprise a web browser 403 , a hybrid application 410 , and local files 404 .
- Client 410 may comprise a light-weight and inexpensive device supporting any number of platforms. Such light-weight devices may offer a number of advantages over traditional full-powered client devices.
- Native engine 406 may be located on a server or other machine on the university network.
- hybrid application 401 may comprise an application to give university students access to their university email, class schedule, and other student-specific resources.
- Hybrid application 401 may include HTML5 and JavaScript programming to present students with access to the university services.
- hybrid application 401 may first present the user with a logon screen prompting entry of user credentials.
- Client 410 may communicate with native engine 406 and/or webserver module 430 in order to facilitate the implementation of commands related to the logon screen.
- Hybrid application 401 may also include platform-specific functionality, such a biometric or image-based identification at logon. As described above, commands related to platform-specific functionality may be transmitted to native engine 406 and/or handler module 445 , and code corresponding to the given platform-specific functionality may be received in return to be executed on client 410 .
- FIG. 5 illustrates one embodiment of native engine 506 .
- native engine 506 comprises a command dispatch system 540 configured to facilitate the transfer of communication data between, to, and from a webserver module 530 , a raw socket server 535 and/or a plurality of handlers 545 a - d .
- a database command handler 545 a configured to handle and/or serve commands related to a database
- an OS command handler 545 b configured to handle and/or serve commands related to functionality of a given operating system
- a peripheral command handler 545 c configured to handle and/or serve commands related to the peripherals of a client device (for instance, GPS, IR reader, camera, etc.)
- a user-defined handler 545 d configured to handle and/or serve commands related to any user-defined functionality.
- platform-specific functionality may comprise functionality related to any combination, or in the totality, of handlers 545 a - 545 d , depending on the platform. For instance, a first platform may require access to platform-specific code in order to access database functionality via database command handler 545 a , while a second platform may not.
- the database with which database command handler 545 a interacts may reside on a client, such as client 310 illustrated in FIG. 3 .
- data may be transmitted to the database and stored therein in order to facilitate the operation of an offline mode of a client, such as client 310 , where contact with the remote server, such as remote server 120 in FIG. 1 , may not be required.
- the database may reside external to client 310 .
- Command dispatch system 540 may comprise any combination of hardware and/or software required to facilitate the communication of data within, or external to, native engine 506 .
- command dispatch system 540 may operate in the software stack of client 310 .
- webserver module 530 may comprise any suitable type of webserver configured to function within the system 100 for platform-independent application development of the present disclosure.
- a webserver such as webserver module 530
- webserver module 530 may be any combination of hardware and software configured to listen on a network port, and implement the HTTP server protocol.
- webserver module 530 may comprise a standard HTTP server configured to handle communications and commands as would any traditional HTTP server.
- webserver module 530 may comprise a specialized and/or proprietary module configured to handle commands from a hybrid application, such as hybrid application 301 illustrated in FIG. 3 , and/or command dispatch system 540 .
- webserver module 530 may be stored on a system external to native engine 506 .
- Raw socket server 535 may comprise any suitable module for providing interprocess communication and/or listening in on raw sockets.
- raw socket server 535 may comprise a Berkeley socket server configured to provide Internet and Unix domain sockets.
- raw socket server 535 may listen in on raw sockets and receive a communication from a hybrid application, such as hybrid application 301 illustrated in FIG. 3 .
- the communication may be passed to command dispatch system 540 in order to determine how the communication should be routed. For instance, if the communication includes a command for platform-specific functionality, command dispatch system 540 may route the command to the appropriate handler 545 a - 545 d . If the communication includes a command related to platform-independent functionality, command dispatch system 540 may route it to webserver module 530 for handling.
- a hybrid application such as hybrid application 301 illustrated in FIG. 3
- Commands from the hybrid application directed to, for example, user interface layout may be directed, via command dispatch system 540 to webserver module 530 , and then back to the client for implementation.
- commands from the hybrid application directed to platform-specific functionality such as a GPS unit, may be received at command dispatch system 540 and directed to the appropriate handler 545 a - 545 d .
- the command may be directed to peripheral command handler 545 c , and an executable code returned to the client.
- a hybrid application such as hybrid application 401 illustrated in FIG. 4
- commands from the hybrid application directed to platform-independent functionality may be directed, via command dispatch system 540 to webserver module 530 , and then back to the client for display.
- commands from the hybrid application directed to platform-specific functionality such as a camera module, may be received at command dispatch system 540 and directed to the appropriate handler 545 a - 545 d .
- the command may be directed to peripheral command handler 545 c .
- the command may be directed to OS command handler 545 b .
- OS command handler 545 b these are but two illustrative examples of how native engine 506 may receive, transmit, handle, and serve commands from a hybrid application, such as hybrid application 301 illustrated in FIG. 3 or hybrid application 401 illustrated in FIG. 4 .
- FIG. 6 illustrates an embodiment of a remote server 620 .
- Remote server 620 may be connected to a client 610 via the Internet 615 .
- remote server 620 may comprise a database module 625 comprising webserver components 650 and default components 655 .
- the remote server 620 further comprises a synchronization server 660 , a license server 665 , and an auto update server 670 .
- the components of remote server 620 may be located on the same server or device, or on different servers or devices, or any suitable combination thereof.
- remote server 620 may also comprise a management server 675 , as indicated by the broken lines in FIG. 6 .
- management server 675 may be configured to facilitate communication with a client 610 and proper function of the system for platform-independent application development, such as the system 100 illustrated in FIG. 1 .
- Management server 675 may reside in a memory on remote server 620 .
- the memory may comprise a non-transitory computer-readable medium comprising instructions for executing a method.
- management server 675 may reside on a system or server separate from remote server 620 .
- Management server 675 may work in conjunction with a device management module (not shown) in order to facilitate communication between remote server 620 and a client 610 .
- Remote server 620 and its subparts may comprise any combination of hardware and/or software.
- synchronization server 660 may be available for access from a client 610 .
- a server comprising a database such as database 125 illustrated in FIG. 1
- management server 675 may reside on the same device or server as synchronization server 660 , or on a different device or server.
- synchronization server 660 may be configured to control LAN access, synchronization server 660 , and/or a database.
- remote server 620 may comprise a system controller (not shown) configured to start, stop, add, and remove servers. In one example, the system controller may be configured to be accessible only from a console of remote server 620 .
- Default components 655 represent any components that may be installed on remote server 620 by default.
- default components 655 may include a database server, a synchronization server, a management console/server, a system services controller, and extended enterprise connections (not shown), among other things.
- default components 655 may comprise a different combination of components and modules than in another embodiment, based, in part, on the unique needs and interests of a given user.
- different default components 655 may be offered based on a subscription or license level of a user. Indeed, a flexible system is contemplated whereby a user may be provided basic core components in a module of default components 655 , and additional components may be added as necessary.
- default components 655 may comprise a combination of components necessary for managing an application independent development environment, components necessary to connect to an enterprise database (ODBC connections), third party systems (e.g., third party accounting, CRM, and ERP systems, among other things), and components necessary to connect to client devices and facilitate the implementation of hybrid applications using a combination of web programming languages, such as HTML5 and JavaScript, and native languages, among other things.
- ODBC connections components necessary to connect to an enterprise database (ODBC connections)
- third party systems e.g., third party accounting, CRM, and ERP systems, among other things
- synchronization server 660 and auto update server 670 may be combined into one module. Alternatively, synchronization server 660 and auto update server 670 may be independent. Synchronization server 660 and auto update server 670 may be included in default components 655 , or may be installed separately. Synchronization server 660 may be configured to facilitate the synchronization of a client 610 , with remote server 620 . Auto update server 670 may be configured to facilitate pushing updates of a native engine 606 , and/or updates of a hybrid application 601 , to a client 610 . License server 665 may be configured to verify the license of a given user.
- license server 665 may verify whether the developer of a hybrid application 601 has a valid license, and therefore, whether hybrid application 601 may access remote server 620 and/or native engine 606 . In another embodiment, license server 665 may verify whether the user of a hybrid application 601 has a valid license, and therefore, whether the hybrid application 601 may access remote server 620 and/or native engine 606 .
- a hybrid application 601 and/or a native engine 606 may periodically connect to remote server 620 .
- native engine 606 may attempt to connect to remote server 620 every time native engine 606 is initialized.
- Information from database 625 may be transmitted to client 610 .
- synchronization server 660 and/or auto update server 670 may communicate with native engine 606 of a client 610 to verify that all components of native engine 606 and/or hybrid application 601 are synchronized and otherwise up-to-date. This verification may comprise sending and/or receiving synchronization data that may comprise data regarding the current status of a hybrid application 601 and/or a native engine 606 .
- the synchronization data may also comprise data regarding new and unsynchronized data for the hybrid application 601 and/or the native engine 606 .
- the synchronization data may also comprise data regarding new and unsynchronized data for the hybrid application 601 and/or the native engine 606 .
- the platform of client 610 were to install an update requiring an update of native engine 606
- files may be accessed and transferred from webserver components 650 and/or default components 655 in order to update native engine 606 to take advantage of any changes and/or new functionality of the platform of client 610 .
- the new version of hybrid application 601 could be pushed to client 610 .
- FIG. 7 illustrates a method 700 comprising a plurality of steps for the operation of a hybrid application 301 and a native engine 306 .
- native engine 306 is initialized. In one embodiment, this initialization of native engine 306 may occur automatically when a client 310 starts up. In another example, initialization of native engine 306 may occur automatically when a hybrid application 301 is initialized. In yet another example, native engine 306 may initialize upon receiving a request or interaction from a user, for example, if a user clicks or selects an icon, among other things.
- a webserver module 330 is initialized after native engine 306 is initialized or concurrently therewith.
- a software or hardware error may not allow webserver module 330 to initialize and a method step 701 b comprising testing whether the webserver module 330 successfully initialized may throw an error and notify the user and/or the developer of the native engine 306 of the error in a method step 701 c .
- a unique instance ID is created and assigned to the webserver module 330 in a third method step 703 .
- the unique instance ID may comprise any suitable identification configured to identify a given instance of webserver module 330 .
- the unique instance ID may be used when transmitting commands to webserver module 330 and may assist in the avoidance of unauthorized communications and functionality.
- the unique instance ID of native engine 306 is published.
- the unique instance ID may be communicated locally to all hybrid applications 301 installed on a client 310 .
- the unique instance ID may be communicated to a remote server, such as remote server 420 illustrated in FIG. 4 , or other device to facilitate the communication with a native engine, such as native engine 406 illustrated in FIG. 4 , residing remotely from a hybrid application 401 .
- the unique instance ID may be communicated only to clients 410 on a local network shared by a client 410 and a native engine 406 .
- any other suitable arrangements are also contemplated by the present disclosure.
- the webserver module 330 is ready to receive and transmit communications.
- webserver module 330 indicates this readiness by sending a communication to native engine 306 .
- webserver module communicates directly with any and all hybrid applications 301 installed on a client 310 .
- webserver module 330 does not actively indicate readiness, and only responds to queries when ready.
- a hybrid application 301 may be initialized in parallel with, or independently of, native engine 306 in a method step 706 .
- a hybrid application 301 may be displayed like any native application, such as, for example, as an icon on a client 310 .
- hybrid application 301 may be accessed through menu available through native engine 306 or an application associated with native engine 306 .
- hybrid application 301 checks to verify that a webserver module 330 is available on native engine 306 . If not available, an error may be thrown in another method step 708 .
- a command from hybrid application 301 is appended with the unique instance ID of webserver module 330 in a next method step 709 .
- the command with appended unique instance ID is then transmitted to native engine 306 and/or webserver module 330 in a next method step 710 .
- a next step 711 the command with appended unique instance ID is received.
- the command may be tested to determine whether a unique instance ID has been appended. If there is no unique instance ID, then the command is rejected in method step 713 .
- native engine 306 and webserver module 330 may be configured to reject unauthorized communications and access.
- the appended unique instance ID may be checked against the unique instance ID published in step 704 . If there is no match, then the communication is rejected and the process is stopped in a method step 715 . However, if the unique instance IDs match, then the processing of the command may be continued in a next step 716 .
- native engine 406 and webserver module 430 may be configured to receive communications and/or commands external sources like client 410 .
- method step 704 comprising publishing the unique instance ID of webserver module 430 may comprise transmitting unique instance ID to client 410 , or to a remote server 420 .
- client 410 may transmit and receive communications from native engine 406 .
- FIG. 8 illustrates a method 800 of operating a native engine 306 that is consistent with the present disclosure.
- a native engine such as native engine 306 illustrated in FIG. 3
- Native engine 306 may automatically initialize upon startup of a client, such as client 310 illustrated in FIG. 3 , or it may initialize as the result of a user selection or interaction, such as a click.
- a detection routine may run to determine whether the application has ever initialized previously, or if the present initialization represents the first time that the application has initialized.
- this initialization represents the first initialization of the native engine 306
- a subroutine may run to test the presence of a connection to the Internet and to sync application data in steps 803 and 805 .
- the native engine 306 may attempt to connect to remote server 320 , in order perform any initial setup that may be required. For instance, it may be required to sync application data to client 310 . It may also be necessary to verify a license prior to providing access to content, among other things.
- the native engine 306 may provide a notification to the user via, for example, a prompt on the screen of client 310 .
- the notification may indicate the lack of Internet connectivity and inform the user that he or she will need to connect to the Internet to continue using the native engine 306 and/or any associated applications.
- the notification may inform the user of the lack of connectivity, but nevertheless provide limited access to its functionality.
- the step 805 of syncing application data may comprise providing remote server 320 with information about the particular installation of an application and/or native engine 306 , and may receive information from remote server. For instance, remote server 320 may transmit updated files to native engine 306 .
- the native engine 306 will detect whether multiple hybrid applications 301 are installed or otherwise associated with client 310 . If more than one hybrid application 301 is installed, then the native engine 306 will run a subroutine comprising displaying an application list in a method step 807 , and detecting a user selection in a method step 808 .
- a page associated with a hybrid application 301 will be received by client 310 and/or native engine 306 .
- hybrid application 301 may have an initial screen that may be displayed using a web programming language such as HTML5 and/or JavaScript.
- hybrid application 301 may transmit commands related to its initial screen to native engine 306 for implementation in this step.
- the commands received from hybrid application 301 may comprise a combination of HTML5 and JavaScript commands, and native engine 306 may implement and/or display the HTML5 commands normally while detecting and sending the JavaScript commands through a webserver module 330 for processing and implementation in a step 810 .
- This processing may comprise sending parameters to webserver module 330 in a method step 811 .
- the commands received from hybrid application 301 may comprise commands requesting access to a database programmed in JavaScript, and the command parameters may be sent on to webserver module 330 for processing.
- the webserver 330 can parse the command to find the relevant request command.
- a command handler is available for the request. If no appropriate handler is found, then an error is thrown in a step 813 , and the process terminates. Otherwise, in a step 814 , the appropriate handler is created and the parameters are passed to the handler.
- the command may require an OS command handler 545 b , a peripheral command handler 545 c , or a user-defined command handler 545 d , among other things.
- the command may be related to the operation of a GPS of a client 310 , and the relevant peripheral command handler, such as peripheral command handler 545 c , may receive the command and parse out the appropriate command language, among other things.
- the handler will handle the command. In some cases, this may represent a result being returned. In other cases, it will result in executable code, among other things, being returned, which may trigger a success event in response to the JavaScript call.
- database command handler 545 a may return data from a database, or may return a success result.
- OS command handler 545 b may return executable code related to a platform-specific functionality, such as, for example, an LED on a client 310 .
- peripheral command handler 545 c may return a result related to a peripheral function.
- peripheral command handler 545 c may return a result, such as executable code or other data, related to a peripheral of client 310 .
- the returned result may comprise, for example, a geospatial position of client 310 , or it may comprise executable code from an IR reader or a Bluetooth module, among other things.
- user-defined handler 545 d may return a result related to a user-defined function. For instance, a developer may develop a handler for performing a predetermined function, and may set up a specific handler to perform the predetermined function.
- a browser or the platform may execute the result returned. For example, if the command sent was related to verifying a username and a password, the result could relate to the success of the username/password combination, or that there was an error or mismatch. In another example, if the command was related to accessing a platform-specific functionality, the result could be executable code related to the platform-specific functionality.
- the result is executed or processed. For instance, if the relevant handler 545 a - 545 d returns executable code, then the code will be executed on client 310 .
- database command handler 545 a may return code related to content on in a database 125 .
- database command handler 545 a may return information related to the user of client 310 , such as a name and/or profile information, among other things, to provide a dynamic experience.
- code may be returned related to a platform-specific functionality.
- a loosely-coupled native engine may be configured to facilitate the implementation of hybrid applications on a wide range of clients, including mobile devices and thin clients, among other things.
- a loosely-coupled native engine comprising a webserver module may be configured to facilitate the interpretation of commands related to both platform-specific functionality and platform-independent functionality without transmitting the commands a remote server.
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A non-transitory computer-readable medium having instructions that when executed cause the implementation of a method is disclosed herein. The medium has instructions for facilitating the execution of at least a first hybrid application on a first device, the first hybrid application including commands related to platform-specific functionality and platform-independent functionality of the first device. The method includes initializing a loosely-coupled native engine configured to receive commands from the first hybrid application and to facilitate platform-specific functionality on the first device. The loosely-coupled native engine includes a webserver module. The method includes receiving commands from the first hybrid application, wherein at least one of the commands includes a device command to be converted to a corresponding platform-specific code prior to execution of the platform-specific code. And the method includes creating a handler to serve the device command and facilitate execution of the corresponding platform-specific code.
Description
- The present application is a continuation of and claims priority to U.S. patent application Ser. No. 13/874,305, filed on Apr. 30, 2013 and entitled “Method and System for Platform-Independent Application Development,” the contents of which are hereby incorporated by reference in their entirety.
- The present application relates generally to the field of computer, thin client, and mobile device applications and more specifically to hybrid applications that support functionality that may be accessed via a combination of web programming and platform-specific executable code.
- Since 2007, the mobile application industry has grown significantly. For instance, recent research suggests that while in 2007 the market for mobile applications was nonexistent, in 2013 the two primary mobile application stores or marketplaces combined include more than a million applications. And it is expected that by 2016 the mobile application industry will reach almost $50 B in revenue.
- Developers seeking entry into the industry usually have the options of either programming independent versions of their products for each platform, programming their products entirely in a web programming language, such as hypertext markup language 5 (HTML5) and/or JavaScript, or using a hybrid solution that includes aspects of both platform-specific programming and web programming. These hybrid solutions usually rely on access through a mobile device's web browser that may expose the device to security risks, among other things. Additionally, hybrid solutions may restrict or limit access to specialized hardware, such as a global positioning system (GPS), camera, and other peripherals, among other things. Further, hybrid solutions typically require a constant connection to the Internet or may require certain tightly-coupled components or resources that may limit their use on a thin client.
- There is a need for a method and system for hybrid applications that will facilitate the development of platform-independent applications. It would be preferable that implementing a hybrid application would not expose the mobile device to potential security risks. There is a need for a method and system for developing a hybrid application that may be implemented on mobile devices and thin clients.
- A method of executing a hybrid application on a device is disclosed herein. The hybrid application includes commands related to both platform-specific functionality and platform-independent functionality of the device. The method includes steps of initializing a loosely-coupled native engine configured to receive commands from the hybrid application. The loosely-coupled native engine is further configured to facilitate implementation of platform-specific functionality on the device. And the loosely-coupled native engine includes a Hypertext Transfer Protocol (HTTP) server and initializing the loosely-coupled native engine comprises initializing the HTTP server. The method includes assigning a unique instance ID to the HTTP server, and configuring the HTTP server to only accept commands comprising the unique instance identifier (ID). The method includes initializing the hybrid application. The method includes receiving commands from the hybrid application. The commands include the unique instance ID of the HTTP server, and at least one of the commands comprises a device command to be converted to a corresponding platform-specific executable code prior to execution of the platform-specific executable code. The method includes verifying that the commands comprise the unique instance ID of the HTTP server. And the method includes creating a handler to serve the device command and facilitate execution of the corresponding platform-specific executable code.
- Also disclosed herein is a device compatible with a first platform. The device comprises a memory configured to store local files, a loosely-coupled native engine, and a hybrid application. The loosely-coupled native engine comprises a webserver module, a command dispatch system connected to the webserver module and configured to pass commands to, and receive commands from, the webserver module, and a plurality of handlers configured to handle commands from the command dispatch system and serve a resulting code. The webserver module of the native engine receives a unique instance ID upon initialization of an instance of the webserver module, and the unique instance ID is transmitted to the memory. The webserver module is configured to reject communications that do not include the unique instance ID. The hybrid application is programmed in a platform-independent development environment, wherein the hybrid application comprises commands to be transmitted to the webserver module of the loosely-coupled native engine, and wherein the commands comprise the unique instance ID of the webserver module.
- A non-transitory computer-readable medium having instructions that when executed cause the implementation of a method is disclosed herein. The medium has instructions for facilitating the execution of at least a first hybrid application on a first device, the first hybrid application comprising commands related to platform-specific functionality and platform-independent functionality of the first device. The method includes initializing a loosely-coupled native engine configured to receive commands from the first hybrid application and to facilitate platform-specific functionality on the first device. The loosely-coupled native engine comprises a webserver module. The method includes receiving commands from the first hybrid application, wherein at least one of the commands comprises a device command to be converted to a corresponding platform-specific code prior to execution of the platform-specific code. And the method includes creating a handler to serve the device command and facilitate execution of the corresponding platform-specific code.
-
FIG. 1 illustrates an embodiment of a platform-independent application development system. -
FIG. 2 illustrates an application distribution framework. -
FIG. 3 illustrates a client device according to the present disclosure. -
FIG. 4 illustrates another embodiment of a client device. -
FIG. 5 illustrates a native engine in a platform-independent application development system. -
FIG. 6 illustrates a remote server according to the present disclosure. -
FIG. 7 illustrates a method of processing an application according to the present disclosure. -
FIG. 8 illustrates another embodiment for processing an application. - Like reference numbers and designations in the various drawings indicate like elements.
- In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific embodiments in which the disclosure may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the disclosure, and it is to be understood that other embodiments may be utilized and that various changes may be made without departing from the spirit and scope of the present disclosure. The following detailed description is, therefore, not to be taken in a limiting sense.
-
FIG. 1 shows one embodiment of asystem 100 for platform-independent applicationdevelopment comprising client 105, clients 110 a-d,remote server 120, anddatabase 125 all connected via Internet 115. As used herein, platform-independent application development refers to the development of applications in one programming language, referred to as a platform-independent development language, or on one platform, that may be implemented on a plurality of platforms without programming, or otherwise developing, a new version of the application for each platform. A platform may be any type of computer or other electronic hardware device having a standard design for use with a compatible operating system. Additionally, as used herein, a platform may be an operating system, such as Windows-based OS, Mac-based OS, UNIX, Linux, iOS, Android, Windows Phone-based OS, Blackberry-based OS, etc. Thus, for example, an application may be programmed in a first language, for instance, a platform-independent development language, and may then be implemented on both iOS and Android platforms without having to program native iOS or Android versions of the application. - As seen in
FIG. 1 ,clients 105 and 110 a-110 d may all be connected to Internet 115.Client 105 may comprise any suitable client device configured to access or otherwise load asystem 100 for platform-independent application development. For instance,client 105 may comprise a Windows-based machine accessing thesystem 100 for platform-independent application development via a web browser comprising a user interface (UI). Alternatively,client 105 may comprise asystem 100 for platform-independent application development loaded in its own internal memory so as to facilitate application development without a connection to Internet 115. -
Client 110 a represents a tablet or smartphone configured to access Internet 115 via a wired or wireless connection. For instance,client 110 a may comprise a tablet with a radio connection to a local router, such as via WiFi, or to a remote cellular tower via long-term evolution (LTE), among other things. Of course, any suitable connection is contemplated by the present disclosure, including different cellular wireless connections, such as global system for mobile (GSM), general packet radio service (GPRS), code division multiple access (CDMA), evolution-date optimized (EV-DO), universal mobile telecommunications system (UMTS), enhanced data rates for GSM evolution (EDGE), worldwide interoperability for microwave access (WiMAX), LTE, and/or any other next generation transmission standard. In another embodiment,client 110 a may connect to Internet 115 via a wired connection such as an Ethernet connection to a router, and a cable or DSL connection to an ISP. 110 b and 110 c also represent mobile devices, such as tablets, smartphones, or any other relevant device, configured to connect to Internet 115 via either a wired or wireless connection.Clients -
Client 110 d represents a dumb terminal or thin client device (collectively “thin client”). As used herein, a thin client represents any device designed to be lightweight and thus reliant or dependent on another device or computer for a bulk of the processing power necessary to perform its operations. For example, in a warehouse setting, a plurality of hand-held devices may be utilized to scan merchandise and then transmit processing related to the scanned merchandise back to a central computer or computers. The scanned information may be entered into a database for tracking stock of a given product, for instance. In another example, a plurality of thin clients may be set up at a store or movie theater to permit self-checkout, and the plurality of thin clients may be networked with a central server or servers to handle part or a majority of the data processing. -
Remote server 120 represents any suitable form of device configured to exchange data withclients 105 and 110 a-110 d.Remote server 120 may comprise a webserver configured to host data associated with a website or otherwise interact withclients 105 and 110 a-110 d. For instance, in one example,remote server 120 may comprise an Apache server configured to function using HTTP protocol. Of course, any other suitable form ofremote server 120 is contemplated by the present disclosure.Database 125 may comprise any suitable form of database, such as a relational model, an object model, or an object relational model database, among other things. For instance,database 125 may comprise a relational structured query language (SQL) database onremote server 120. In another example,database 125 may be remote toremote server 120. In yet another example,database 125 may comprise a Sybase® database onremote server 120. - A user may access the platform-independent development environment via
client 105. The user may be presented with a graphical user interface via which the user may program a hybrid application to work on a plurality of platforms. As used herein, a hybrid application is an application developed in asystem 100 for platform-independent application development, and combining elements of both a native application and a Web application. Thus, the hybrid application may comprise commands related to functionality that may be accessed independent of the native functionality of a platform or without use of platform-specific executable code. - For example, the hybrid application may include functionality related to displaying a UI on a mobile device and allowing a user to interact with the UI. The hybrid application may also comprise elements to be accessed through the native functionality of a platform. As used herein, functionality that can only be accessed through the native framework of a platform is referred to as platform-specific functionality. For instance, the hybrid application may include functionality related to a GPS of the mobile device, and in some cases, functionality related to the GPS of a mobile device may be platform-specific functionality. In one embodiment, platform-specific functionality may be achieved using platform-specific executable code, which may correspond to a platform-specific command. Said otherwise, a platform-specific command, or device command, may be drawn to platform-specific functionality of a given platform.
- The user may upload the hybrid application to a
remote server 120, and the hybrid application may be accessed and/or downloaded to a client device 110 a-110 d. For instance,client 110 a of a first platform,client 110 b of a second platform,client 110 c of a third platform, andthin client 110 d of a fourth platform may all access the same hybrid application, and the hybrid application may be configured to operate on the first through fourth platforms without having to code platform-specific versions of the hybrid application in order to access platform-specific functionality. -
FIG. 2 illustrates a method and system by which ahybrid application 201 may be distributed to clients 210 a-210 c according to one embodiment of the present disclosure. Ahybrid application 201 may be pushed to anapplication distribution center 202 from which thehybrid application 201 may be distributed to clients 210 a-210 c. - In the context of the
system 100 for platform-independent application development, theapplication distribution center 202 may be housed onremote server 120. After a developer completes development of ahybrid application 201, the developer may then cause thehybrid application 201 to be uploaded to theapplication distribution center 202. Thereafter, a user ofclient 210 a may elect to download and/or installhybrid application 201. A user interface ofclient 210 a may direct the user to a website to downloadhybrid application 201, orhybrid application 201 may be automatically pushed toclient 210 a. In another example,hybrid application 201 may be stored in a database, such asdatabase 125 shown inFIG. 1 , and may be accessed and otherwise downloaded by way of a user interface ofclient 210 a. Any other suitable mode or means of application distribution is contemplated by the present disclosure. -
FIG. 3 shows aclient 310 in one embodiment comprising ahybrid application 301, aweb browser 303,local files 304, and anative engine 306. As shown inFIG. 3 ,client 310 may be connected to theInternet 315. Aremote server 320 may also be connected to theInternet 315. Also as illustrated inFIG. 3 ,Native engine 306 may comprise awebserver module 330 configured to receive commands related to platform-independent functionality.Native engine 306 may also comprise ahandler module 345 configured to receive commands related to platform-specific functionality.Native engine 306 may have logical connections, existing in hardware and/or software, toweb browser 303,hybrid application 301, and/orlocal files 304. Likewise,web browser 303 may have logical connections, existing in hardware and/or software, tohybrid application 301, tonative engine 306, and optionally tolocal files 304.Hybrid application 301 may have logical connections tolocal files 304,native engine 306, andweb browser 303. Finally,local files 304 may have logical connections tohybrid application 301,native engine 306, and optionally toweb browser 303. -
Hybrid application 301 may comprise any application programmed to take advantage of functionality based on web programming languages, such as hypertext markup language (HTML), HTML5, cascade style sheets (CSS), and JavaScript (or asynchronous javascript and xml (AJAX), which is used interchangeably in the present disclosure), among other things, but nevertheless offers access to platform-specific functionality through a thin native container referred to asnative engine 306 in the present disclosure. For instance,hybrid application 301 may be developed primarily using HTML5 and JavaScript, but also relying onnative engine 306 to interpret commands fromhybrid application 301 into code that may be executed by a given platform.Native engine 306 may comprise any combination of software and hardware configured to receive commands related to platform-specific functionality and/or platform-independent functionality, and assist in facilitating the execution and/or implementation thereof. For instance,native engine 306 may be configured to receive commands fromhybrid application 301. - In one example,
hybrid application 301 may include commands related to platform-specific functionality such as the camera on an iOS device, among other things. As used herein, a command may comprise a line of code in an application or program directing the implementation or performance of a task or functionality on aclient 310. In one embodiment, a command may direct a program, such as a virtual machine or a web browser, among other things, to assist to facilitate the implementation or performance of a task or functionality on aclient 310. For instance,hybrid application 310 may comprise commands related to displaying images and content and exchanging information betweenclient 310 and aremote server 120. In this example,web browser 303 andwebserver module 330 may work together to facilitate the display of the relevant images and content, among other platform-independent functionality. - As used herein, facilitating the implementation or execution of a command, executable code, or a given functionality refers to the participation of a given component or program in a particular task. For instance, in one example,
native engine 306 may participate in the implementation of a command from ahybrid application 301 by receiving the command, and transmitting the command to the appropriate module, such aswebserver module 330 or ahandler module 345.Native engine 306 may receive executable code from thewebserver module 330 and/or thehandler module 345 and may transmit or otherwise pass the received executable code to the appropriate module or component ofclient 310 so that the received executable code may be executed or implemented byclient 310. In one example,native engine 306 may receive executable code fromwebserver module 330, which it may transmit toweb browser 303. In another example,native engine 306 may receive executable code fromhandler module 345, which it may transmit to a relevant module ofclient 310 for execution. Alternatively,webserver module 330 and/orhandler module 345 may be configured to transmit executable code directly to a relevant module ofclient 310. -
Hybrid application 301 may rely onweb browser 303 to interpret and execute commands ofhybrid application 301 that have been programmed in, for instance, HTML5 and JavaScript. For instance, portions ofhybrid application 301 may be programmed in a combination of HTML5 and JavaScript in order to take advantage of graphical display and interaction functionality accessible through, and built into,web browser 303. In one example,hybrid application 301 may comprise commands related to a graphical user interface comprising form elements such as drop down menus, buttons, and text boxes, among other things. In one embodiment, the graphical user interface ofhybrid application 301 may not need to access platform-specific functionality in order to be displayed. In another example,hybrid application 301 may comprise commands related to logging into, accessing, writing and reading from adatabase 125. In this example,hybrid application 301 may not need to access platform-specific functionality in order to process the commands related todatabase 125, and may perform the commands throughweb browser 303. -
Web browser 303 may comprise a standard web browser of a platform, such as, for example, a WebKit-based browser such as Safari browser on an iOS device, a Chrome browser on an Android device, a Gecko-based browser such as Firefox, or a Presto-based browser such as Opera, among other browsers. Alternatively,web browser 303 may comprise a non-standard web browser, such as a web browser integrated intonative engine 306. In one example,web browser 303 may comprise a thin browser integrated intonative engine 306. -
Local files 304 represent any number and configuration of local files that may be relied upon or accessed byhybrid application 301,web browser 303, and/ornative engine 306.Local files 304 may be stored on a memory ofclient 310, and the memory may be integrated or removable, among other things. In one example, the memory may be a non-transitory computer-readable medium comprising instructions for executing a method. - For instance,
local files 304 may store information related to the user and/or theclient 310.Local files 304 may store a cache of local data.Local files 304 may be configured to facilitate the functionality ofhybrid application 301 andnative engine 306. For instance,local files 304 may contain application files that may reside locally in order to accelerate execution ofhybrid application 301,native engine 306, and/orweb browser 303 code.Local files 304 may also permitclient 310 to function and to executehybrid application 301 without a connection toInternet 315. In one embodiment,local files 304 may comprise local files that may be updated each time ahybrid application 301 ornative engine 306 synchronizes with a remote server, such asremote server 120 inFIG. 1 . For instance,local files 304 may comprise, among other things, image resources for ahybrid application 301, and the image resources inlocal files 304 may be updated any number of times, as required, in order to keephybrid application 301 running the most up-to-date version possible. Of course, as would be readily apparent to one of ordinary skill in the art, the present disclosure contemplates uses oflocal files 304 beyond the preceding illustrative list. -
Native engine 306 represents a container or native engine configured to receive commands fromhybrid application 301 and to translate those commands into executable native code, as necessary.Native engine 306 may be further configured to otherwise handle and/or facilitate the execution of commands usingweb browser 303. For instance,native engine 306 may be configured to facilitate the implementation of application-specific and application-independent functionality viawebserver module 330 andhandler module 345. As used herein,native engine 306 is a loosely-couplednative engine 306. Generally speaking, loosely-coupled components are components that are not required to have direct knowledge of each other to function, where coupling refers to the degree of direct knowledge that one component may have of the others. Applying this definition tonative engine 306, a loosely-couplednative engine 306 is a native engine that functions independently ofhybrid application 301 and/or a remote server, such asremote server 120 inFIG. 1 . Specifically, loosely-couplednative engine 306 is configured to be run on an entirely different device fromhybrid application 301 andclient 310, and nevertheless still permithybrid application 301 to function onclient 310, as seen inFIG. 4 . In one example, the integration ofwebserver module 330 intonative engine 306 may facilitate and/or otherwise permit the loosely-coupled nature ofnative engine 306. -
Hybrid application 301 ofclient 310 may comprise commands related to a combination of functionality including platform-specific functionality and platform-independent functionality. In one example, while the platform-specific functionality may need to be executed relying upon code specific to the given platform ofclient 310, the platform-independent functionality may be executed using a combination ofwebserver module 330 andweb browser 303. As used herein, platform-independent functionality may be any functionality that may be accessed without recourse to platform-specific code or the underlying native framework of a platform. As would be readily apparent to one of ordinary skill in the art, the platform-independent functionality of a first platform may differ from the platform-independent functionality of a second platform. Likewise, platform-specific functionality of a first platform may differ from the platform-specific functionality of a second platform. - In some cases, both platform-specific and platform-independent functionality may pass through
native engine 306.Hybrid application 301 may pass commands for platform-specific functionality tonative engine 306, andnative engine 306 may facilitate the execution of the platform-specific functionality.Hybrid application 301 may also pass commands related to platform-independent functionality tonative engine 306, in order to facilitate the execution of platform-independent functionality viawebserver module 330. For example,hybrid application 301 may comprise commands, such as user-interface-related commands, that may be executed usingwebserver module 330,web browser 303, andlocal files 304. In one embodiment,hybrid application 301 may include a user interface that may be displayed byclient 310. Additionally,hybrid application 301 may require access to a peripheral or platform-specific functionality ofclient 310, such as a GPS unit or a camera, among other things. Ashybrid application 301 may need access to such functionality, commands may be passed tonative engine 306, the native engine may return executable native code, and the resulting executable native code may then be executed within the platform framework ofclient 310. - In one example,
hybrid application 301 may comprise a music player application andclient 310 may comprise a smartphone or other handheld device. As used herein, initializing or initialization refers to starting, running, or creating an instance, or instantiating a program or application, such ashybrid application 301 ornative engine 306, among others. When a user initializeshybrid application 301, the user may be presented with a user interface implemented using a combination ofwebserver module 330,web browser 303, andlocal files 304. For instance, the user may be presented with a logon screen or a selection of music from which to select a music station. In this example, a portion of the functionality may be achieved using commands programmed in HTML5 and JavaScript, transmitted towebserver module 330, and implemented byweb browser 303. However, other functionality, such as functionality related to the operation of LEDs onclient 310, access to and use of a GPS device, camera device, and any other platform-specific functionality, may be handled byhandler module 345 ofnative engine 306. For instance,hybrid application 301 may request a geospatial location ofclient 310 in order to provide relevant advertising. Such functionality may comprise platform-specific code and may thus need to be translated or otherwise converted into executable native code in order to be implemented onclient 310. For instance, in one embodiment,native engine 306 and/orhandler module 345 may comprise a lookup table configured to facilitate the conversion of a command related to platform-specific functionality into a platform-specific executable code. In another example, information that could assist in the conversion may be stored in a database onclient 310, or remotely in aremote server 120. The database may comprise any suitable database, including, but not limited to, a SQL or Sybase® database, among other things. - In another embodiment,
hybrid application 301 may comprise a social network photo sharing program. In this example,hybrid application 301 may require access to the camera hardware ofclient 310. Therefore, wheneverhybrid application 301 needs access to platform-specific functionality, such as the camera hardware ofclient 310, platform-specific code corresponding to the desired functionality may be received fromnative engine 306 and/orhandler module 345 and executed onclient 310. Additionally, and particularly if the code is used frequently, it may be stored inlocal files 304 in order to accelerate implementation ofhybrid application 301. -
FIG. 4 illustrates another embodiment of a platform-independent application environment.Client 410 comprises ahybrid application 401, anoptional web browser 403, andlocal files 404. Additionally,native engine 406 may run remotely fromclient 410 and may comprise awebserver module 430 and ahandler module 445. For instance,client 410 may comprise a thin client, andnative engine 406 may run on another machine or server.Internet 415 may optionally be connected to eitherclient 410 ornative engine 406, or bothclient 410 andnative engine 406. Aremote server 420 may also be connected to theInternet 415 - In operation, much as described above in relation to
FIG. 3 ,hybrid application 401 may comprise a combination of platform-specific and platform-independent functionality. The platform-independent functionality ofhybrid application 401 may be executed onclient 410 relying on a code fromwebserver module 430 implemented byweb browser 403 andlocal files 404. For instance,hybrid application 401 may include commands related to a user interface.Client 410 may display the user interface-related functionality ofhybrid application 401 using commands fromhybrid application 401 as handled bywebserver module 430 and implemented byweb browser 403. In order forclient 410 to execute the platform-specific functionality ofhybrid application 401,native engine 406, taking advantage of its loose coupling withclient 410, may be configured to receive commands related to the platform-specific functionality ofclient 410, handle the commands at thehandler module 445, and transmit code corresponding to the platform-specific functionality to be executed byclient 410. - In one example,
client 410 may comprise a handheld scanning device used in a warehouse environment, andnative engine 406 may be installed and running on a server or other computer. In this example,client 410 may be connected to a network in the warehouse environment by which it may accessnative engine 406. Thus,native engine 406 may be located locally within the warehouse environment or outside of the warehouse environment, such as on an intranet or on a larger IP network, among other things.Hybrid application 401 may comprise an application configured to facilitate the tracking of product or other aspects of the warehouse environment. Thus, according to the present disclosure, updates may be automatically pushed tohybrid application 401 without specifically updating eachclient 410. Additionally,client 410 may be replaced with anew client 410 of an entirely different platform, buthybrid application 401,native engine 406,webserver module 430, andhandler module 445 may still support the new platform. As implemented in the warehouse environment,client 410 may comprise an IR scanning module configured to scan barcodes. In this example,client 410 may display a user interface using platform-independent functionality. For instance,web browser 403 may be configured to display code related to the user interface as received fromwebserver module 430. However, the user interface ofhybrid application 401 may include a button that the user may activate when needing to scan a barcode using the IR scanning module ofclient 410, which may comprise platform-specific functionality in this example. In such cases,native engine 406 andhandler module 445 may provide native code corresponding to the desired platform-specific functionality. - In another example,
client 410 may comprise thin client terminals located, for instance, on a university campus connected to a university network. In this example,client 410 may comprise aweb browser 403, ahybrid application 410, andlocal files 404.Client 410 may comprise a light-weight and inexpensive device supporting any number of platforms. Such light-weight devices may offer a number of advantages over traditional full-powered client devices.Native engine 406 may be located on a server or other machine on the university network. In one example,hybrid application 401 may comprise an application to give university students access to their university email, class schedule, and other student-specific resources.Hybrid application 401 may include HTML5 and JavaScript programming to present students with access to the university services. For example,hybrid application 401 may first present the user with a logon screen prompting entry of user credentials.Client 410 may communicate withnative engine 406 and/orwebserver module 430 in order to facilitate the implementation of commands related to the logon screen.Hybrid application 401 may also include platform-specific functionality, such a biometric or image-based identification at logon. As described above, commands related to platform-specific functionality may be transmitted tonative engine 406 and/orhandler module 445, and code corresponding to the given platform-specific functionality may be received in return to be executed onclient 410. - Of course, the preceding examples are provided for illustrative purposes and are not intended to be an exhaustive list of functionality. Indeed, a wide range of possible uses and implementations are contemplated by the present disclosure.
-
FIG. 5 illustrates one embodiment ofnative engine 506. In this implementation,native engine 506 comprises acommand dispatch system 540 configured to facilitate the transfer of communication data between, to, and from awebserver module 530, araw socket server 535 and/or a plurality of handlers 545 a-d. The handlers 545 a-d shown inFIG. 5 include adatabase command handler 545 a configured to handle and/or serve commands related to a database, anOS command handler 545 b configured to handle and/or serve commands related to functionality of a given operating system, a peripheral command handler 545 c configured to handle and/or serve commands related to the peripherals of a client device (for instance, GPS, IR reader, camera, etc.), and a user-defined handler 545 d configured to handle and/or serve commands related to any user-defined functionality. - As used in the present disclosure, platform-specific functionality may comprise functionality related to any combination, or in the totality, of handlers 545 a-545 d, depending on the platform. For instance, a first platform may require access to platform-specific code in order to access database functionality via
database command handler 545 a, while a second platform may not. In one embodiment, the database with whichdatabase command handler 545 a interacts may reside on a client, such asclient 310 illustrated inFIG. 3 . For example, data may be transmitted to the database and stored therein in order to facilitate the operation of an offline mode of a client, such asclient 310, where contact with the remote server, such asremote server 120 inFIG. 1 , may not be required. In another example, the database may reside external toclient 310. -
Command dispatch system 540 may comprise any combination of hardware and/or software required to facilitate the communication of data within, or external to,native engine 506. For instance, in one example,command dispatch system 540 may operate in the software stack ofclient 310. Likewise,webserver module 530 may comprise any suitable type of webserver configured to function within thesystem 100 for platform-independent application development of the present disclosure. As used herein, a webserver, such aswebserver module 530, may be any combination of hardware and software configured to listen on a network port, and implement the HTTP server protocol. For example,webserver module 530 may comprise a standard HTTP server configured to handle communications and commands as would any traditional HTTP server. Alternatively,webserver module 530 may comprise a specialized and/or proprietary module configured to handle commands from a hybrid application, such ashybrid application 301 illustrated inFIG. 3 , and/orcommand dispatch system 540. In one embodiment,webserver module 530 may be stored on a system external tonative engine 506.Raw socket server 535 may comprise any suitable module for providing interprocess communication and/or listening in on raw sockets. For example,raw socket server 535 may comprise a Berkeley socket server configured to provide Internet and Unix domain sockets. - In operation,
raw socket server 535 may listen in on raw sockets and receive a communication from a hybrid application, such ashybrid application 301 illustrated inFIG. 3 . The communication may be passed to commanddispatch system 540 in order to determine how the communication should be routed. For instance, if the communication includes a command for platform-specific functionality,command dispatch system 540 may route the command to the appropriate handler 545 a-545 d. If the communication includes a command related to platform-independent functionality,command dispatch system 540 may route it towebserver module 530 for handling. - In one embodiment, a hybrid application, such as
hybrid application 301 illustrated inFIG. 3 , may comprise a music application, as described above, comprising application-specific functionality and application-independent functionality. Commands from the hybrid application directed to, for example, user interface layout may be directed, viacommand dispatch system 540 towebserver module 530, and then back to the client for implementation. On the other hand, commands from the hybrid application directed to platform-specific functionality, such as a GPS unit, may be received atcommand dispatch system 540 and directed to the appropriate handler 545 a-545 d. In the case of a command related to the GPS unit, the command may be directed to peripheral command handler 545 c, and an executable code returned to the client. - In another embodiment, a hybrid application, such as
hybrid application 401 illustrated inFIG. 4 , may comprise an application on a thin client, such asclient 410 illustrated inFIG. 4 , of a university network. In this example, commands from the hybrid application directed to platform-independent functionality, for example, user interface layout and function, may be directed, viacommand dispatch system 540 towebserver module 530, and then back to the client for display. On the other hand, commands from the hybrid application directed to platform-specific functionality, such as a camera module, may be received atcommand dispatch system 540 and directed to the appropriate handler 545 a-545 d. In the case of a command related to the camera module of the client, the command may be directed to peripheral command handler 545 c. In the case of, for example, access to a given bus of the client, the command may be directed toOS command handler 545 b. Of course, these are but two illustrative examples of hownative engine 506 may receive, transmit, handle, and serve commands from a hybrid application, such ashybrid application 301 illustrated inFIG. 3 orhybrid application 401 illustrated inFIG. 4 . -
FIG. 6 illustrates an embodiment of aremote server 620.Remote server 620 may be connected to aclient 610 via theInternet 615. As shown inFIG. 6 ,remote server 620 may comprise adatabase module 625 comprisingwebserver components 650 anddefault components 655. Theremote server 620 further comprises a synchronization server 660, alicense server 665, and anauto update server 670. The components ofremote server 620 may be located on the same server or device, or on different servers or devices, or any suitable combination thereof. Optionally,remote server 620 may also comprise amanagement server 675, as indicated by the broken lines inFIG. 6 . In this example,management server 675 may be configured to facilitate communication with aclient 610 and proper function of the system for platform-independent application development, such as thesystem 100 illustrated inFIG. 1 .Management server 675 may reside in a memory onremote server 620. In this example, the memory may comprise a non-transitory computer-readable medium comprising instructions for executing a method. Alternatively,management server 675 may reside on a system or server separate fromremote server 620.Management server 675 may work in conjunction with a device management module (not shown) in order to facilitate communication betweenremote server 620 and aclient 610.Remote server 620 and its subparts may comprise any combination of hardware and/or software. - In one embodiment, synchronization server 660 may be available for access from a
client 610. In one example, a server comprising a database, such asdatabase 125 illustrated inFIG. 1 , may be located external to synchronization server 660, and may be located behind a firewall. Meanwhile,management server 675 may reside on the same device or server as synchronization server 660, or on a different device or server. In any case, synchronization server 660 may be configured to control LAN access, synchronization server 660, and/or a database. Additionally,remote server 620 may comprise a system controller (not shown) configured to start, stop, add, and remove servers. In one example, the system controller may be configured to be accessible only from a console ofremote server 620. -
Default components 655 represent any components that may be installed onremote server 620 by default. For instance,default components 655 may include a database server, a synchronization server, a management console/server, a system services controller, and extended enterprise connections (not shown), among other things. In one example,default components 655 may comprise a different combination of components and modules than in another embodiment, based, in part, on the unique needs and interests of a given user. In another example,different default components 655 may be offered based on a subscription or license level of a user. Indeed, a flexible system is contemplated whereby a user may be provided basic core components in a module ofdefault components 655, and additional components may be added as necessary. For instance, in one embodiment,default components 655 may comprise a combination of components necessary for managing an application independent development environment, components necessary to connect to an enterprise database (ODBC connections), third party systems (e.g., third party accounting, CRM, and ERP systems, among other things), and components necessary to connect to client devices and facilitate the implementation of hybrid applications using a combination of web programming languages, such as HTML5 and JavaScript, and native languages, among other things. - In some embodiments, synchronization server 660 and
auto update server 670 may be combined into one module. Alternatively, synchronization server 660 andauto update server 670 may be independent. Synchronization server 660 andauto update server 670 may be included indefault components 655, or may be installed separately. Synchronization server 660 may be configured to facilitate the synchronization of aclient 610, withremote server 620.Auto update server 670 may be configured to facilitate pushing updates of anative engine 606, and/or updates of ahybrid application 601, to aclient 610.License server 665 may be configured to verify the license of a given user. In one embodiment,license server 665 may verify whether the developer of ahybrid application 601 has a valid license, and therefore, whetherhybrid application 601 may accessremote server 620 and/ornative engine 606. In another embodiment,license server 665 may verify whether the user of ahybrid application 601 has a valid license, and therefore, whether thehybrid application 601 may accessremote server 620 and/ornative engine 606. - In operation, a
hybrid application 601 and/or anative engine 606 may periodically connect toremote server 620. For instance, in one example,native engine 606 may attempt to connect toremote server 620 every timenative engine 606 is initialized. Information fromdatabase 625 may be transmitted toclient 610. For example, synchronization server 660 and/orauto update server 670 may communicate withnative engine 606 of aclient 610 to verify that all components ofnative engine 606 and/orhybrid application 601 are synchronized and otherwise up-to-date. This verification may comprise sending and/or receiving synchronization data that may comprise data regarding the current status of ahybrid application 601 and/or anative engine 606. The synchronization data may also comprise data regarding new and unsynchronized data for thehybrid application 601 and/or thenative engine 606. For instance, if the platform ofclient 610 were to install an update requiring an update ofnative engine 606, upon connection ofnative engine 606 withremote server 620, files may be accessed and transferred fromwebserver components 650 and/ordefault components 655 in order to updatenative engine 606 to take advantage of any changes and/or new functionality of the platform ofclient 610. Also, if a developer were to issue an update ofhybrid application 601, upon connection toremote server 620, the new version ofhybrid application 601 could be pushed toclient 610. -
FIG. 7 illustrates amethod 700 comprising a plurality of steps for the operation of ahybrid application 301 and anative engine 306. In afirst method step 701,native engine 306 is initialized. In one embodiment, this initialization ofnative engine 306 may occur automatically when aclient 310 starts up. In another example, initialization ofnative engine 306 may occur automatically when ahybrid application 301 is initialized. In yet another example,native engine 306 may initialize upon receiving a request or interaction from a user, for example, if a user clicks or selects an icon, among other things. - In a
second step 702, awebserver module 330 is initialized afternative engine 306 is initialized or concurrently therewith. In some cases, a software or hardware error may not allowwebserver module 330 to initialize and amethod step 701 b comprising testing whether thewebserver module 330 successfully initialized may throw an error and notify the user and/or the developer of thenative engine 306 of the error in amethod step 701 c. Aswebserver module 330 initializes, a unique instance ID is created and assigned to thewebserver module 330 in athird method step 703. The unique instance ID may comprise any suitable identification configured to identify a given instance ofwebserver module 330. The unique instance ID may be used when transmitting commands towebserver module 330 and may assist in the avoidance of unauthorized communications and functionality. In anext method step 704, the unique instance ID ofnative engine 306 is published. In one example, the unique instance ID may be communicated locally to allhybrid applications 301 installed on aclient 310. In another example, the unique instance ID may be communicated to a remote server, such asremote server 420 illustrated inFIG. 4 , or other device to facilitate the communication with a native engine, such asnative engine 406 illustrated inFIG. 4 , residing remotely from ahybrid application 401. Alternatively, the unique instance ID may be communicated only toclients 410 on a local network shared by aclient 410 and anative engine 406. Of course, any other suitable arrangements are also contemplated by the present disclosure. - In a
next method step 705, thewebserver module 330 is ready to receive and transmit communications. In one embodiment,webserver module 330 indicates this readiness by sending a communication tonative engine 306. In another embodiment, webserver module communicates directly with any and allhybrid applications 301 installed on aclient 310. In another example,webserver module 330 does not actively indicate readiness, and only responds to queries when ready. - A
hybrid application 301 may be initialized in parallel with, or independently of,native engine 306 in amethod step 706. In one embodiment, ahybrid application 301 may be displayed like any native application, such as, for example, as an icon on aclient 310. In another embodiment,hybrid application 301 may be accessed through menu available throughnative engine 306 or an application associated withnative engine 306. In anext method step 707,hybrid application 301 checks to verify that awebserver module 330 is available onnative engine 306. If not available, an error may be thrown in anothermethod step 708. Assuming that thewebserver module 330 is available, a command fromhybrid application 301 is appended with the unique instance ID ofwebserver module 330 in anext method step 709. The command with appended unique instance ID is then transmitted tonative engine 306 and/orwebserver module 330 in anext method step 710. - In a
next step 711, the command with appended unique instance ID is received. In amethod step 712, the command may be tested to determine whether a unique instance ID has been appended. If there is no unique instance ID, then the command is rejected inmethod step 713. Thus, in one embodimentnative engine 306 andwebserver module 330 may be configured to reject unauthorized communications and access. In an associatedstep 714, the appended unique instance ID may be checked against the unique instance ID published instep 704. If there is no match, then the communication is rejected and the process is stopped in amethod step 715. However, if the unique instance IDs match, then the processing of the command may be continued in anext step 716. - However, in a thin client embodiment,
native engine 406 andwebserver module 430 may be configured to receive communications and/or commands external sources likeclient 410. For instance,method step 704 comprising publishing the unique instance ID ofwebserver module 430 may comprise transmitting unique instance ID toclient 410, or to aremote server 420. In this example,client 410 may transmit and receive communications fromnative engine 406. - It is to be understood that the preceding
method 700 is presented to illustrate operation of ahybrid application 301 andnative engine 306, orhybrid application 401 andnative engine 406, in one embodiment of the present disclosure. One of ordinary skill in the art would appreciate that the principles discussed in this disclosure support additional methods and processes. -
FIG. 8 illustrates amethod 800 of operating anative engine 306 that is consistent with the present disclosure. In aninitial step 801, a native engine, such asnative engine 306 illustrated inFIG. 3 , is initialized is initialized on a client.Native engine 306 may automatically initialize upon startup of a client, such asclient 310 illustrated inFIG. 3 , or it may initialize as the result of a user selection or interaction, such as a click. In anext step 802, a detection routine may run to determine whether the application has ever initialized previously, or if the present initialization represents the first time that the application has initialized. - If it is determined that this initialization represents the first initialization of the
native engine 306, then a subroutine may run to test the presence of a connection to the Internet and to sync application data in 803 and 805. Insteps Internet detection step 803, thenative engine 306 may attempt to connect toremote server 320, in order perform any initial setup that may be required. For instance, it may be required to sync application data toclient 310. It may also be necessary to verify a license prior to providing access to content, among other things. If thenative engine 306 is unable to establish a connection toremote server 320, or otherwise unable to detect a connection to the Internet, then in astep 804 thenative engine 306 may provide a notification to the user via, for example, a prompt on the screen ofclient 310. In one example, the notification may indicate the lack of Internet connectivity and inform the user that he or she will need to connect to the Internet to continue using thenative engine 306 and/or any associated applications. In a different embodiment, the notification may inform the user of the lack of connectivity, but nevertheless provide limited access to its functionality. Thestep 805 of syncing application data may comprise providingremote server 320 with information about the particular installation of an application and/ornative engine 306, and may receive information from remote server. For instance,remote server 320 may transmit updated files tonative engine 306. - In a
next method step 806, thenative engine 306 will detect whether multiplehybrid applications 301 are installed or otherwise associated withclient 310. If more than onehybrid application 301 is installed, then thenative engine 306 will run a subroutine comprising displaying an application list in amethod step 807, and detecting a user selection in a method step 808. In anext method step 809, a page associated with ahybrid application 301 will be received byclient 310 and/ornative engine 306. For example,hybrid application 301 may have an initial screen that may be displayed using a web programming language such as HTML5 and/or JavaScript. In this example,hybrid application 301 may transmit commands related to its initial screen tonative engine 306 for implementation in this step. The commands received fromhybrid application 301 may comprise a combination of HTML5 and JavaScript commands, andnative engine 306 may implement and/or display the HTML5 commands normally while detecting and sending the JavaScript commands through awebserver module 330 for processing and implementation in astep 810. This processing may comprise sending parameters towebserver module 330 in amethod step 811. In one example, the commands received fromhybrid application 301 may comprise commands requesting access to a database programmed in JavaScript, and the command parameters may be sent on towebserver module 330 for processing. - Associated with
step 811, thewebserver 330 can parse the command to find the relevant request command. In anext step 812, it is determined whether a command handler is available for the request. If no appropriate handler is found, then an error is thrown in astep 813, and the process terminates. Otherwise, in astep 814, the appropriate handler is created and the parameters are passed to the handler. For example, the command may require anOS command handler 545 b, a peripheral command handler 545 c, or a user-defined command handler 545 d, among other things. For instance, the command may be related to the operation of a GPS of aclient 310, and the relevant peripheral command handler, such as peripheral command handler 545 c, may receive the command and parse out the appropriate command language, among other things. - In
method step 815, the handler will handle the command. In some cases, this may represent a result being returned. In other cases, it will result in executable code, among other things, being returned, which may trigger a success event in response to the JavaScript call. In one example,database command handler 545 a may return data from a database, or may return a success result. In another example,OS command handler 545 b may return executable code related to a platform-specific functionality, such as, for example, an LED on aclient 310. In yet another example, peripheral command handler 545 c may return a result related to a peripheral function. For instance, peripheral command handler 545 c may return a result, such as executable code or other data, related to a peripheral ofclient 310. The returned result may comprise, for example, a geospatial position ofclient 310, or it may comprise executable code from an IR reader or a Bluetooth module, among other things. Additionally, user-defined handler 545 d may return a result related to a user-defined function. For instance, a developer may develop a handler for performing a predetermined function, and may set up a specific handler to perform the predetermined function. - In a
next method step 817, a browser or the platform may execute the result returned. For example, if the command sent was related to verifying a username and a password, the result could relate to the success of the username/password combination, or that there was an error or mismatch. In another example, if the command was related to accessing a platform-specific functionality, the result could be executable code related to the platform-specific functionality. - In one example of
method step 817, the result is executed or processed. For instance, if the relevant handler 545 a-545 d returns executable code, then the code will be executed onclient 310. In one example,database command handler 545 a may return code related to content on in adatabase 125. For instance,database command handler 545 a may return information related to the user ofclient 310, such as a name and/or profile information, among other things, to provide a dynamic experience. In another example, code may be returned related to a platform-specific functionality. - The present disclosure illustrates the advantages of a system having a loosely-coupled native engine comprise a webserver module. A loosely-coupled native engine may be configured to facilitate the implementation of hybrid applications on a wide range of clients, including mobile devices and thin clients, among other things. A loosely-coupled native engine comprising a webserver module may be configured to facilitate the interpretation of commands related to both platform-specific functionality and platform-independent functionality without transmitting the commands a remote server.
- Although this disclosure has been described in terms of certain preferred embodiments, other embodiments that are apparent to those of ordinary skill in the art, including embodiments that do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is defined only by reference to the appended claims and equivalents thereof.
Claims (20)
1. A device compatible with a first platform, the device comprising:
a memory configured to store local files;
a loosely-coupled native engine comprising:
a webserver module;
a command dispatch system connected to the webserver module and configured to pass commands to, and receive commands from, the webserver module; and
a plurality of handlers configured to handle commands from the command dispatch system and serve a resulting code;
wherein the webserver module of the native engine receives a unique instance identifier (ID) upon initialization of an instance of the webserver module, and the unique instance ID is transmitted to the memory;
further wherein the webserver module is configured to reject communications that do not include the unique instance ID; and
a hybrid application programmed in a platform-independent development environment, wherein the hybrid application comprises commands to be transmitted to the webserver module of the loosely-coupled native engine, and wherein the commands comprise the unique instance ID of the webserver module.
2. The device of claim 1 further comprising a raw socket server communicably connected to the command dispatch system.
3. The device of claim 1 wherein the loosely-coupled native engine is configured to transmit and receive communications from a remote server comprising a synchronization server, and wherein the received communications comprise synchronization data.
4. The device of claim 1 wherein the loosely-coupled native engine is configured to transmit and receive communications from a remote server comprising a license server, and wherein the license server is configured to verify that a license associated with the loosely-coupled native engine is valid.
5. The device of claim 1 wherein the loosely-coupled native engine is configured to transmit and receive communications from a remote server comprising an auto update server, and wherein the auto update server is configured transmit updates of the loosely-coupled native engine or the hybrid application to the device.
6. The device of claim 1 wherein the resulting code from the plurality of handlers is executed by the device.
7. The device of claim 1 wherein the loosely-coupled native engine is configured to parse commands from the hybrid application, detect commands comprising JavaScript, and send the commands comprising JavaScript to the webserver module.
8. A non-transitory computer-readable medium having instructions that when executed cause the implementation of a method, the medium having instructions for facilitating the execution of at least a first hybrid application on a first device, the first hybrid application comprising commands related to platform-specific functionality and platform-independent functionality of the first device, the method comprising:
initializing a loosely-coupled native engine configured to receive commands from the first hybrid application and to facilitate platform-specific functionality on the first device;
wherein the loosely-coupled native engine comprises a webserver module;
receiving commands from the first hybrid application, wherein at least one of the commands comprises a device command to be converted to a corresponding platform-specific code prior to execution of the platform-specific code; and
creating a handler to serve the device command and facilitate execution of the corresponding platform-specific code.
9. The computer-readable medium of claim 8 further comprising:
transmitting commands from the first hybrid application to the native engine, wherein the first device comprises a thin client device which comprises the first hybrid application, and a remote device is communicably connected to the thin client device, the remote device comprising the loosely-coupled native engine;
transmitting the corresponding platform-specific code from the native engine to the thin client device; and
executing the corresponding platform-specific code on the thin client device.
10. The computer-readable medium of claim 9 further comprising:
receiving commands from a second hybrid application of a second device of a second platform, wherein the first device is of a first platform;
converting the commands from the second hybrid application into a corresponding platform-specific code related to the second platform; and
transmitting the corresponding platform-specific code related to the second platform to the second device for execution.
11. The computer-readable medium of claim 8 wherein:
initializing the loosely-coupled native engine comprises receiving an instance ID corresponding to an instance of the webserver module;
receiving commands of the first hybrid application comprises verifying that the commands comprise the instance ID of the webserver module; and
rejecting commands that do not comprise the instance ID of the webserver module.
12. The computer readable medium of claim 8 wherein the created handler comprises a peripheral handler.
13. A method of executing platform-independent applications comprising:
initializing a hypertext transfer protocol (HTTP) server at a device;
assigning a unique instance identifier (ID) to the HTTP server;
receiving commands corresponding to a hybrid application, the commands including the unique instance ID, and at least one of the commands including a device command to be converted to corresponding platform-specific executable code prior to execution of the platform-specific executable code;
verifying that the commands include the unique instance ID; and
initializing a handler to serve the device command including initiating execution of the corresponding platform-specific executable code.
14. The method of claim 13 , wherein the hybrid application includes commands related to platform-specific functionality and platform-independent functionality of the device.
15. The method of claim 13 , further comprising converting the commands to the corresponding platform-specific executable code using a lookup table.
16. The method of claim 13 , further comprising converting the commands to the corresponding platform-specific executable code by retrieving conversion information from a database.
17. The method of claim 13 , further comprising transmitting the unique instance ID to a client.
18. The method of claim 13 , wherein the commands are received from a client via a raw socket server.
19. The method of claim 13 , further comprising using a web browser to interpret and execute a subset of the commands that may be executed without platform-specific functionality.
20. The method of claim 13 , further comprising:
receiving the hybrid application at a remote server; and
pushing the hybrid application to an application distribution center for distribution to a plurality of clients.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/719,131 US20150254074A1 (en) | 2013-04-30 | 2015-05-21 | Method and system for platform-independent application development |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/874,305 US9069375B2 (en) | 2013-04-30 | 2013-04-30 | Method and system for platform-independent application development |
| US14/719,131 US20150254074A1 (en) | 2013-04-30 | 2015-05-21 | Method and system for platform-independent application development |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/874,305 Continuation US9069375B2 (en) | 2013-04-30 | 2013-04-30 | Method and system for platform-independent application development |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20150254074A1 true US20150254074A1 (en) | 2015-09-10 |
Family
ID=51014612
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/874,305 Active - Reinstated 2033-10-31 US9069375B2 (en) | 2013-04-30 | 2013-04-30 | Method and system for platform-independent application development |
| US14/719,131 Abandoned US20150254074A1 (en) | 2013-04-30 | 2015-05-21 | Method and system for platform-independent application development |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/874,305 Active - Reinstated 2033-10-31 US9069375B2 (en) | 2013-04-30 | 2013-04-30 | Method and system for platform-independent application development |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US9069375B2 (en) |
| TW (1) | TW201507419A (en) |
| WO (1) | WO2014179352A1 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109101228A (en) * | 2018-08-10 | 2018-12-28 | 百度在线网络技术(北京)有限公司 | The execution method and apparatus of application program |
| US20190095200A1 (en) * | 2017-03-14 | 2019-03-28 | Ping An Technology (Shenzhen) Co., Ltd. | Compatibility method based on hybrid, adapter, operation device, system and computer-readable storage medium |
| US20240061678A1 (en) * | 2020-03-16 | 2024-02-22 | Quicket Solutions, Inc. | Configuration-driven applications |
Families Citing this family (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9378055B1 (en) | 2012-08-22 | 2016-06-28 | Societal Innovations Ipco Limited | Configurable platform architecture and method for use thereof |
| WO2014197521A1 (en) | 2013-06-03 | 2014-12-11 | Seven Networks, Inc. | Blocking/unblocking algorithms for signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
| US20150312102A1 (en) * | 2014-02-18 | 2015-10-29 | Seven Networks, Inc. | Policy management for signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
| US10154095B2 (en) | 2014-05-21 | 2018-12-11 | N.Io Innovation, Llc | System and method for aggregating and acting on signals from one or more remote sources in real time using a configurable platform instance |
| AU2015263042B2 (en) | 2014-05-21 | 2018-08-09 | N.Io Innovation, Llc | System and method for fully configurable real time processing |
| US9891893B2 (en) | 2014-05-21 | 2018-02-13 | N.Io Innovation, Llc | System and method for a development environment for building services for a platform instance |
| US10467320B2 (en) * | 2014-08-05 | 2019-11-05 | Polycom, Inc. | Method for providing seamless graphical user interface control for a complex system consisting of distributed hardware modules |
| US9880816B2 (en) * | 2014-11-27 | 2018-01-30 | Sap Se | Simulator with local resource capabilities |
| WO2016151398A1 (en) | 2015-03-23 | 2016-09-29 | Societal Innovations Ipco Limited | System and method for configuring a platform instance at runtime |
| US11102313B2 (en) * | 2015-08-10 | 2021-08-24 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
| US10582001B2 (en) | 2015-08-11 | 2020-03-03 | Oracle International Corporation | Asynchronous pre-caching of synchronously loaded resources |
| US10452497B2 (en) | 2015-08-14 | 2019-10-22 | Oracle International Corporation | Restoration of UI state in transactional systems |
| US10419514B2 (en) | 2015-08-14 | 2019-09-17 | Oracle International Corporation | Discovery of federated logins |
| US10582012B2 (en) | 2015-10-16 | 2020-03-03 | Oracle International Corporation | Adaptive data transfer optimization |
| US9817653B2 (en) * | 2015-12-16 | 2017-11-14 | Sap Se | Updating extension in response to opening associated document |
| US9952835B2 (en) * | 2016-02-23 | 2018-04-24 | Sap Se | Generation of hybrid enterprise mobile applications in cloud environment |
| US10365916B2 (en) * | 2016-04-19 | 2019-07-30 | Dropbox, Inc. | Providing access to a hybrid application offline |
| US10607002B2 (en) | 2016-08-30 | 2020-03-31 | Microsoft Technology Licensing, Llc | Isolating an application running inside a native container application |
| CN107357560A (en) * | 2017-04-28 | 2017-11-17 | 阿里巴巴集团控股有限公司 | Interaction processing method and device |
| US10101985B1 (en) | 2017-05-11 | 2018-10-16 | Oracle International Corporation | Scalable ecosystem for enterprise mobility |
| CN107368560B (en) * | 2017-07-07 | 2022-11-04 | 腾讯科技(深圳)有限公司 | Page implementation method and device for mobile application and computer-readable storage medium |
| CN109460216A (en) * | 2018-11-14 | 2019-03-12 | 四川长虹电器股份有限公司 | A method of TV generic data service is provided on TV for WEB page |
| JP7527866B2 (en) * | 2020-07-01 | 2024-08-05 | キヤノン株式会社 | PROGRAM, INFORMATION PROCESSING APPARATUS AND CONTROL METHOD |
| CN114116683B (en) * | 2022-01-27 | 2022-05-27 | 深圳市明源云科技有限公司 | Multi-language processing method and device for computing platform and readable storage medium |
| KR102708827B1 (en) * | 2022-08-09 | 2024-09-24 | (주)인스웨이브시스템즈 | Multi-platform supporting application build and deploy system and method |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140026113A1 (en) * | 2012-07-19 | 2014-01-23 | Arshad Farooqi | Mobile Application Creation System |
| US20150019944A1 (en) * | 2011-07-05 | 2015-01-15 | Visa International Service Association | Hybrid applications utilizing distributed models and views apparatuses, methods and systems |
| US20150248302A1 (en) * | 2014-03-03 | 2015-09-03 | Baidu Online Network Technology (Beijing) Co., Ltd | Method, apparatus, server and system for implementing web application |
| US20150289123A1 (en) * | 2013-10-04 | 2015-10-08 | Cisco Technology, Inc. | System and method for orchestrating mobile data networks in a machine-to-machine environment |
| US20150347119A1 (en) * | 2014-06-02 | 2015-12-03 | Qiushi WANG | Automatic deployment and update of hybrid applications |
Family Cites Families (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020059402A1 (en) | 1996-11-15 | 2002-05-16 | Charles E. Belanger | Server-sided internet-based platform independent operating system and application suite |
| US7448021B1 (en) * | 2000-07-24 | 2008-11-04 | Sonic Solutions, A California Corporation | Software engine for combining video or audio content with programmatic content |
| US20080313282A1 (en) * | 2002-09-10 | 2008-12-18 | Warila Bruce W | User interface, operating system and architecture |
| FI117151B (en) * | 2003-12-18 | 2006-06-30 | Capricode Oy | Method, data transfer arrangement, server and terminal device for executing information in the terminal device |
| US7926030B1 (en) * | 2005-09-30 | 2011-04-12 | Harmony Information Systems, Inc. | Configurable software application |
| US7921059B2 (en) * | 2005-12-15 | 2011-04-05 | Microsoft Corporation | Licensing upsell |
| US8554758B1 (en) * | 2005-12-29 | 2013-10-08 | Amazon Technologies, Inc. | Method and apparatus for monitoring and maintaining health in a searchable data service |
| US7810076B2 (en) * | 2006-09-22 | 2010-10-05 | International Business Machines Corporation | Method and system for scaling standalone applications to be executed as internet applications |
| US8863083B2 (en) * | 2006-10-10 | 2014-10-14 | Sap Ag | Presenting user interfaces based on messages |
| US20140033171A1 (en) * | 2008-04-01 | 2014-01-30 | Jon Lorenz | Customizable multistate pods |
| US8099472B2 (en) * | 2008-10-21 | 2012-01-17 | Lookout, Inc. | System and method for a mobile cross-platform software system |
| US8656354B2 (en) * | 2008-12-11 | 2014-02-18 | Infosys Limited | Compound versioning and identification scheme for composite application development |
| US20110320475A1 (en) * | 2010-06-25 | 2011-12-29 | Nokia Corporation | Methods, apparatuses and computer program products for extending the capabilities of platform-independent applications on devices |
| JP5743724B2 (en) | 2011-02-15 | 2015-07-01 | キヤノン株式会社 | Management apparatus and management method, management system and network device |
| US8978006B2 (en) * | 2011-04-06 | 2015-03-10 | Media Direct, Inc. | Systems and methods for a mobile business application development and deployment platform |
| US8898629B2 (en) * | 2011-04-06 | 2014-11-25 | Media Direct, Inc. | Systems and methods for a mobile application development and deployment platform |
| US9524378B2 (en) * | 2011-05-31 | 2016-12-20 | Qualcomm Incorporated | Apparatus and method of in-application licensing |
| US8640093B1 (en) * | 2011-06-24 | 2014-01-28 | Amazon Technologies, Inc. | Native web server for cross-platform mobile apps |
| US10148762B2 (en) | 2011-10-18 | 2018-12-04 | Facebook, Inc. | Platform-specific notification delivery channel |
| US20130205277A1 (en) * | 2012-02-07 | 2013-08-08 | Telerik, AD | Environment and method for cross-platform development of software applications |
| US8966508B2 (en) * | 2012-02-20 | 2015-02-24 | Electronics And Telecommunications Research Institute | Method for executing hybrid web application and apparatus therefor |
| US20140258968A1 (en) * | 2013-03-05 | 2014-09-11 | Research In Motion Limited | Visual Representation Of Edits For Collaborative Application Development |
| US20140258969A1 (en) * | 2013-03-05 | 2014-09-11 | Research In Motion Limited | Web-Based Integrated Development Environment For Real-Time Collaborative Application Development |
| US9158518B2 (en) * | 2013-03-11 | 2015-10-13 | Blackberry Limited | Collaborative application development environment using a connected device |
| US9161156B2 (en) * | 2013-07-31 | 2015-10-13 | Sap Se | Tiles in a mobile application framework |
-
2013
- 2013-04-30 US US13/874,305 patent/US9069375B2/en active Active - Reinstated
-
2014
- 2014-04-29 WO PCT/US2014/035942 patent/WO2014179352A1/en not_active Ceased
- 2014-04-30 TW TW103115569A patent/TW201507419A/en unknown
-
2015
- 2015-05-21 US US14/719,131 patent/US20150254074A1/en not_active Abandoned
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150019944A1 (en) * | 2011-07-05 | 2015-01-15 | Visa International Service Association | Hybrid applications utilizing distributed models and views apparatuses, methods and systems |
| US20140026113A1 (en) * | 2012-07-19 | 2014-01-23 | Arshad Farooqi | Mobile Application Creation System |
| US20150289123A1 (en) * | 2013-10-04 | 2015-10-08 | Cisco Technology, Inc. | System and method for orchestrating mobile data networks in a machine-to-machine environment |
| US20150248302A1 (en) * | 2014-03-03 | 2015-09-03 | Baidu Online Network Technology (Beijing) Co., Ltd | Method, apparatus, server and system for implementing web application |
| US20150347119A1 (en) * | 2014-06-02 | 2015-12-03 | Qiushi WANG | Automatic deployment and update of hybrid applications |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190095200A1 (en) * | 2017-03-14 | 2019-03-28 | Ping An Technology (Shenzhen) Co., Ltd. | Compatibility method based on hybrid, adapter, operation device, system and computer-readable storage medium |
| US10635436B2 (en) * | 2017-03-14 | 2020-04-28 | Ping An Technology (Shenzhen) Co., Ltd. | Compatibility method based on hybrid, adapter, operation device, system and computer-readable storage medium |
| CN109101228A (en) * | 2018-08-10 | 2018-12-28 | 百度在线网络技术(北京)有限公司 | The execution method and apparatus of application program |
| US20240061678A1 (en) * | 2020-03-16 | 2024-02-22 | Quicket Solutions, Inc. | Configuration-driven applications |
| US12135966B2 (en) * | 2020-03-16 | 2024-11-05 | Quicket Solutions, Inc. | Configuration-driven applications |
Also Published As
| Publication number | Publication date |
|---|---|
| US20140325470A1 (en) | 2014-10-30 |
| US9069375B2 (en) | 2015-06-30 |
| TW201507419A (en) | 2015-02-16 |
| WO2014179352A1 (en) | 2014-11-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9069375B2 (en) | Method and system for platform-independent application development | |
| US12386492B2 (en) | Information processing terminal and control method | |
| US10289275B2 (en) | Standard commands for native commands | |
| US9372885B2 (en) | System and methods thereof for dynamically updating the contents of a folder on a device | |
| US9584612B2 (en) | Systems and methods for pushing applications | |
| CN107402696B (en) | Editing data across users and devices using an action registry | |
| EP2771803B1 (en) | File fetch from a remote client device | |
| US9652460B1 (en) | Mobile media information capture and management methods and systems | |
| US20120311524A1 (en) | Gateway Data Distribution Engine | |
| US20160380933A1 (en) | System and method for providing crowd-based technical support to smartphone users | |
| US9948819B2 (en) | Information processing system, information processing apparatus, and data process control method | |
| US20150113423A1 (en) | System and method to configure a field device | |
| US20200341617A1 (en) | Program Orchestration Method and Electronic Device | |
| US20170046147A1 (en) | Systems and methods for assisted driver, firmware and software download and installation | |
| US8923828B2 (en) | Method and system for searching for object in network | |
| WO2015003570A1 (en) | Data downloading method,device and system thereof | |
| US10938973B2 (en) | Method and system for searching for object in network | |
| KR101602855B1 (en) | Method for requiring after service using search keywords | |
| US20200012688A1 (en) | Method and device for retrieving content | |
| US20150222712A1 (en) | Information processing terminal and control method | |
| CN101482869A (en) | Device and method for automatically executing a semantic search request | |
| US11822931B2 (en) | Providing a captive portal to manage a driver application for a peripheral device | |
| US20170336924A1 (en) | Using an Action Registry to Match Applications for Editing Data | |
| US20240334502A1 (en) | Terminal device and non-transitory computer-readable recording medium therefor | |
| US20250383872A1 (en) | Machine neutral containerized applications |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: MOBILEDATAFORCE, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PADMAVILASOM, PRIYESH;REEL/FRAME:035694/0125 Effective date: 20130429 |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |