SlideShare a Scribd company logo
US00874.5573B2
(12) United States Patent (10) Patent No.: US 8,745,573 B2
Ben-Artzi et al. (45) Date of Patent: Jun. 3, 2014
(54) PLATFORM-INDEPENDENT APPLICATION (58) Field ofClassification Search
DEVELOPMENT FRAMEWORK USPC ...................................................... 717/102, 6
Seeapplication file forcomplete search history.
(75) Inventors: Guy Ben-Artzi, Palo Alto, CA (US);
Yotam Shacham, Palo Alto, CA (US); (56) References Cited
Yehuda Levi, Rishon LeZion (IL);
Russell William Mcmahon, Woodside, U.S. PATENT DOCUMENTS
CA (US); Amatzi Ben-Artzi, PaloAlto, 2002/0184610 A1* 12/2002 Chongetal. .................. 717/109
CA (US); AlexeiAlexevitch, Hertzlia 2003/0070061 A1* 4/2003 Wong etal. ........ T12/220
(IL); Alexander Glyakov, Petach Tikva 2006/0129972 A1* 6/2006 Tyburski etal. ... T17/106
(IL); Tal Lavian, Sunnyvale, CA (US) 2009/0254912 A1* 10,2009 Roundtree et al. ............ T18,102
* cited by examiner
(73) Assignee: Beek Fund B.V. L.L.C., Dover, DE (US)
- Primary Examiner — Li B Zhen
(*) Notice: Subjectto any disclaimer,the term ofthis Assistant Examiner — Duy Khuong Nguyen
patent is extended or adjusted under 35 (74) Attorney, Agent, or Firm —Novak Druce Connolly
(21) Appl. No.: 12/483,598 (57) ABSTRACT
(22) Filed: Jun. 12, 2009 Embodiments of the invention provide a platform-indepen
dent application development framework for programming
(65) Prior Publication Data an application. The framework comprises a content interface
configured to provideanApplication Programming Interface
US 2009/0313OO4A1 Dec. 17, 2009 (API)toprogram theapplication comprisingaprogramming
O O code to be executed on one or more platforms. The API
Related U.S. Application Data providedby theframework is independentoftheoneor more
(60) Provisional application No. 61/132,211, filed on Jun. platforms. The framework further comprises an application
16, 2008. environment configured to provide an infrastructure that is
independent ofthe one or more platforms and one or more
(51) Int. Cl. plug-in interfaces configuredtoprovidean interfacebetween
G06F 9/44 (2006.01) the application environment and the one or more platforms.
(52) U.S. Cl.
USPC ............................ 717/102; 717/106; 717/140 15 Claims, 8 Drawing Sheets
Provide an Application Programming Interface (API)
to program an application Comprising a programming
code to be executed on one or more platforms
Provide an application environment to program the
application, wherein the infrastructure is independent of
the one or more platformsNWWar
Provide an interface between the
application environment and the one or more platforms
804
806
US 8,745,573 B2Sheet 1 of 8Jun. 3, 2014U.S. Patent
US 8,745,573 B2Sheet 2 of8Jun. 3, 2014U.S. Patent
230Z
US 8,745,573 B2Sheet 3 of 8Jun. 3, 2014U.S. Patent
?pOOquepuede?iL-UUJO??eid
Z09)
US 8,745,573 B2U.S. Patent
90
US 8,745,573 B2Sheet 5 of 8Jun. 3, 2014U.S. Patent
US 8,745,573 B2Sheet 6 of 8
909909#709Z09
Jun. 3, 2014U.S. Patent
US 8,745,573 B2U.S. Patent
US 8,745,573 B2Sheet 8 of 8Jun. 3, 2014U.S. Patent
d'O.LS
908Z08
US 8,745,573 B2
1.
PLATFORM-INDEPENDENT APPLICATION
DEVELOPMENT FRAMEWORK
CROSS-REFERENCE TO RELATED
APPLICATION
This application draws priority from U.S. Provisional
Patent Application No. 61/132,211, filed on Jun. 16, 2008,
and hereby incorporated by reference herein in its entirety.
FIELD OF THE INVENTION
Theteachingherein generally relates to application devel
opment framework and more specifically to platform inde
pendent development framework forapplications.
BACKGROUND OF THE INVENTION
Various users across the globe communicate or perform
various activities on computer and device networks. More
over, the users interactwitheach otherthrough the networks,
Suchas the Internet. Typically, devices likepersonal comput
ersareusedbytheuserstointeractovertheInternet.Theusers
can interact from various Internetwebsites orSocial network
ing sites, for example, Facebook, Myspace. Hi5, and Orkut
etc. Recently, the development in mobiledevicessuchas cell
phones, Smartphones and PDAs, computers, laptops and the
like has enabled them to be used for performing various
activities on networks such as the Internet. Moreover, the
mobile devices can be used for real-time interaction with
otherusers onthe network. The interactionorcommunication
can be in the form of chatting, playing interactive online
games, browsing, shopping, music, video, banking, business
and the like.
The rapid pace ofinnovation in technology has generated
varioustypesofdevicesandplatforms.Moreover,thenumber
ofdevices is increasing rapidly. For example, there are vari
ous operating systems available forthe devices Such as Win
dows, Linux,Macintosh,andSymbian,etc. Moreover,alarge
number of J2ME platforms are available for the mobile
devices suchascellphones. Furthermore, the mobiledevices
haveawiderageofcapabilities intermsofscreen size,Screen
type, screen resolution, processor, and memory etc. The
applications forthese devices have to be developed basedon
theirplatforms. As a result, each application has to be devel
opedbasedoneachplatform orportedto otherplatforms. For
example, in case ofcomputer games the programming lan
guages typically used are JAVA, CH, C++. Action Script, and
thelike. Therefore,anapplication developedinAction Script
programming language may have to be ported to other pro
gramming language when not Supported by a device plat
form.
Typically,theprogrammingcodeofanapplication istrans
lated manually from one programming language to another.
However, manual translation requires specific and in-depth
knowledge of the programming languages of the different
operating systems. Moreover, manual translation is a very
timeconsumingprocess. Furthermore,theprogramming lan
guages are constantly developed orget modified. Moreover,
the applications have to be developed on specific develop
ment platforms compatible with the programming language
used for development and the operating system ofa device.
Therefore, knowledge ofspecific tools and Application Pro
gramming Interface (API) for every device platform may be
required to program an application. Some existing mecha
nisms,suchasemulationofapplications andvirtual machines
are available to Support applications on multiple devices.
10
15
25
30
35
40
45
50
55
60
65
2
In case ofvirtual machine mechanisms the programming
codeoftheapplicationis separatedintoplatformindependent
code and platform dependent code. Platform independent
code is written in the virtual machine's coding language,
which usually is a scripting language. Further, the code may
be compiled to a binary that only the virtual machine itself
knows how to execute. Since the code is nevercompiled to a
native platform binary and must run inside the virtual
machine space, thereexist runtime overheads. Moreover, the
existing mechanismsgenerateapplicationprogramcodesthat
are large or require heavy processing time. The problem is
compounded with the continuously increasing number of
device platforms and technology.
Whatis neededinthe artisaframeworkthat is required for
development ofapplications independent ofthe platform of
the device.
SUMMARY
The invention provides a platform-independent applica
tion development framework. The framework comprising: a
content interface configured to provide an Application Pro
gramming Interface (API) to program an application, the
application comprising a programming code to be executed
on one or moreplatforms, wherein theAPI is independent of
the one or more platforms; an application environment con
figured to provide an infrastructure to program the applica
tion, wherein the infrastructure is independent ofthe one or
more platforms; and one or more plug-in interfaces config
ured to providean interfacebetween theapplicationenviron
ment and the one or more platforms.
The invention further provides a platform-independent
application development framework. The framework com
prising: acontentinterfaceconfiguredtoprovideanApplica
tion Programming Interface(API)to program anapplication,
the application comprising a programming code to be
executed on one or more mobile device platforms, wherein
the API is independent of the one or more mobile device
platforms; an application environment configured to provide
an infrastructure to program the application, wherein the
infrastructure is independent of the one or more mobile
device platforms; and one or more plug-in interfaces config
ured to providean interfacebetween theapplicationenviron
ment and the one or more mobile device platforms.
The invention further provides an architecture for plat
form-independent development ofan application, the appli
cation comprisingaprogrammingcodetobeexecutedonone
or more mobile device platforms, the architecture compris
ing: an abstraction layer configured to: provide an Applica
tion ProgrammingInterface(API)toprogramtheapplication,
wherein the API is independent of the one or more mobile
device platforms; provide an infrastructure to program the
application, wherein the infrastructure is independent ofthe
one or more mobile device platforms; and provide an inter
facebetween theabstractionlayerandtheoneormoremobile
device platforms.
Theinvention furtherprovidesa method forplatform inde
pendentdevelopment ofanapplication.The methodcompris
ing: providing an Application Programming Interface (API)
to program an application, the application comprising a pro
gramming code to be executed on one or more platforms,
wherein theAPI is independentoftheoneor moreplatforms:
providing an infrastructure to program the application,
wherein the infrastructure is independent ofthe one or more
platforms;andprovidinganinterfacebetweentheapplication
environment and the one or more platforms.
US 8,745,573 B2
3
An article ofmanufacture forplatform independent devel
opment of an application, comprising: an electronically
accessible medium including instructions, that when
executed by a processor, cause the processor to: provide an
Application Programming Interface (API) to program an
application, the application comprisingaprogramming code
to be executed on oneor moreplatforms, wherein theAPI is
independent ofthe one or more platforms; provide an infra
structure to program the application, wherein the infrastruc
tureis independent ofthe oneormoreplatforms;andprovide
an interfacebetweentheapplicationenvironmentandtheone
or more platforms.
BRIEF DESCRIPTION OF THE DRAWINGS
Having thus described the invention in general terms, ref
erence will now be made to the accompanying drawings,
which are not necessarily drawn to scale, and wherein:
FIG. 1 isa simplifiedblockdiagram ofaplatformindepen
dent development framework;
FIG. 2 shows functional overview of abstraction layer
according to an embodiment ofthe invention;
FIG. 3 shows functional overview ofpre-processor layer
according to an embodiment ofthe invention;
FIG. 4 shows functional overview ofa platform indepen
dent development frameworkaccording toanembodimentof
the invention;
FIG. 5 shows functional overview ofa control infrastruc
ture module according to an embodiment ofthe invention;
FIG. 6 shows functional overview ofa asset management
module according to an embodiment ofthe invention; and
FIG. 7 shows functional overview of a plug-in interface
according to an embodiment ofthe invention.
FIG. 8 is a flowchart illustrating the method for platform
independent development ofan application, according to an
embodiment ofthe invention.
DETAILED DESCRIPTION OF THE INVENTION
Illustrative embodiments of the technology now will be
describedmorefully hereinafterwith reference to theaccom
panyingdrawings,in whichsome,butnotallembodiments of
the technology are shown. Indeed, the technology may be
embodied in many different forms and should not be con
struedas limited to the embodiments set forth herein; rather,
these embodiments are provided so that this disclosure will
satisfy applicable legal requirements. Like numbers refer to
like elements throughout.
Asapreliminary matterbeforeexploringdetails ofvarious
implementations, reference is made to FIG. 1 forillustrating
a simplified block diagram ofa platform independent devel
opment framework. FIG. 1 discloses a platform independent
frameworkthatallows a rapid platform independentapplica
tion development, without the need foran application devel
oper to know each platform. As shown in FIG. 1, devices
102a, 102b, 102c and 102n are connected through an appli
cation development framework 104, which in turn is con
nected to application contents 106a, 106b, 106c and 106n.
Devices 102a-n can be, but not limited to a mobile device
Suchas a cellularphone,a PDAanda Smartphone,a laptop, a
personal computerandthe like. Examples ofapplication con
tents 106a-n include a game, a message, a calendar, an
address, a notepad, a user interface and otherapplications to
be executed on devices 102a-n.
Devices 102a-n may havedifferenthardwareandsoftware
platforms. Examples ofsoftwareplatforms include operating
systems such as Windows, Linux, Macintosh, Symbian, and
10
15
25
30
35
40
45
50
55
60
65
4
so forth. Moreover, devices 102a-n may have different hard
ware such as the screen size, Screen resolution, audio and
video functionality,processorsandsoforth.Therefore,devel
opment of an application for each of these platforms may
require application content 106a-n to be written in various
programming languages and functions compatible with the
platforms. Forexample,C++ programming language may be
used by Windows applications, while JAVA programming
languageisprimarilyusedfordevelopingwebapplets. More
over, the resources required foreach platform may be differ
ent. Forexample,thetypeandsizeofan imagetobedisplayed
may vary based on the screen size and Screen resolution of
devices 102a-n. Therefore, application contents 106a-n may
be developed based on theplatform ofdevices 102a-n.
Application development framework 104 provides a
mechanism for developing application contents 106a-in for
devices 102a-n independently across multiple device plat
forms. Therefore, application contents 106a-in developed
using application development framework 104 is pro
grammed only onceand can be used on various platforms of
devices 102a-n. In an embodiment ofthe invention, applica
tion developmentframework104enablesapplicationcontent
106a-n to be developed based on platform specific require
ment and platform independent requirements. In another
embodiment of the invention, application development
framework 104 provides cross-translation of programming
languages for various device platforms.
In case ofconventional developmentorporting ofapplica
tions, the numberofcoding modules for n numberofappli
cations and 'm numberofdevices can be n*m. Forexample,
when 4 applications are developed for 10 differentplatforms
ofdevices, then a total of40coding modulesforapplications
have to be developed. As is evident from the above calcula
tions,the numberofcoding modules increases tremendously
with increase in the number ofapplications and the type of
deviceplatforms. However, in caseofapplications developed
through platform-independent application development
framework 104, the number ofcoding modules can be n+m.
Forexample,theapplication logic can be written in platform
independent code by using Application Programming Inter
face (API) provided by application development framework
104. Therefore, n numberofplatform independent logics is
required for n number of applications. Similarly, using
application development framework 104 can also program
the platform specific programming code form number of
devices. Therefore, m number ofplatform specific coding
modules is required form numberofdevices. As a result, a
totalofm+n. Forexample, when4applicationsaredeveloped
for 10 different platforms of devices by using application
development framework 104, then a total of14 coding mod
ules for applications have to be developed. As a result, the
complexity ofthe programming code and development time
can be reduced.
Application development framework 104 uses abstraction
layerandpre-processorfunctionalitiestoenabletheprogram
ming code to be developed independent ofthe device plat
forms. The abstraction layer and pre-processor functional
ities are describedin detail in conjunction with FIGS. 2 and3
respectively.
FIG. 2 shows functional overview ofan abstraction layer
204accordingto an embodimentofthe invention. Generally,
in the domain ofsoftwareprogramming, an abstraction layer
enables separation of various details or functionalities of a
programming code from the device platform requirements.
Abstraction layer 204 in the platform-independent develop
ment architecture separates platform independent code 202
fromplatformdependentcodes 206a-bofan application. For
US 8,745,573 B2
5
example, platform independentcode202 may bethe logic of
the application and platform dependentcodes 206a-b can be
the programming code specific to devices 102. Therefore, a
developer that works on the logic or platform engine ofthe
application may not require knowledge about the device
interface. Moreover, thedeveloperthat works on theapplica
tion itself may not require the knowledge about the device
platform.
Platform independent code 202 and platform dependent
codes 206a-b are developedby usingAPIprovidedby appli
cation developmentframework104. Inanembodimentofthe
invention, platform independent code 202 and platform
dependent codes 206a-b are parts of application content
106a-n. Platform dependent code 206a-b can be developed
based on the native language ofthe specific platforms. The
complete code ofthe application that contains the platform
independent code 202 and platform dependent code 206a-b
may be compiled to generate a binary codes 208a-b for the
device platforms. Therefore, the application developed con
tains the complete code and any additional component or
code is not required. Moreover, the processing overheard is
low, because the application code is compiled into native
binary code ofthe platform. In an embodiment ofthe inven
tion, application development framework 104 implements
abstraction layer 204 during the run-time ofthe application.
Abstraction layer 204 further provides infrastructure for
the development ofthe application. The infrastructure pro
videdby abstraction layer 204 includes various utilities, data
structures, tools, design options, and resources required to
developtheapplication. Examplesofdatastructuresandutili
ties include a set ofcollections like arrays and dictionaries,
and examples oftools include Extensible Markup Language
(XML) parsing, unicode string Support and so forth.
Examples of resources include images, sounds, videos and
various other assets required by the application. In an
embodiment ofthe invention, abstraction layer 204 includes
different modules to develop the application. Examples of
modules include, butare not limited to, networking, file Sup
port, rendering, resource loading, system events, system
properties, and resource manipulation. Each ofthe modules
provided by abstraction layer 204 include a common func
tionality, and a device platform specific functionality. The
device platform specific functionality is implemented in the
device plug-in and is explained in detail in conjunction with
FIG. 7.
FIG. 3 shows functional overview ofpre-processor func
tionality according to an embodiment ofthe invention. Gen
erally, a pre-processor processes an input data to produce an
output to be used as input to a computerprogram. In case of
pre-processor manipulation, tags are embedded inside the
application code. The tags instruct the compiler on the sec
tions to be compiled for different platforms. Therefore, as
shown in FIG. 3, application programming code comprises
platform independent code 302 and that in turn comprises
platform dependent codes 304a-b. The application program
mingcodeiscompiledbyacompliertogeneratenativebinary
codes 306a-b. Binary codes 306a-b can then be executed on
the specific device platforms for which the code has been
compiled. There are no layers between platform dependent
codes 304a–b and platform independent code 302, therefore
no runtime overhead is introduced in the execution of the
programming code.
Application development framework 104 implements pre
processor for device platform specific compilation ofappli
cation code. In an embodiment ofthe invention, pre-proces
sorfunctionality isimplementedto maplogicalresourcesand
the real resources based on the device platform. As a result,
10
15
25
30
35
40
45
50
55
60
65
6
thebinarycodesonly includeneeded resourcesandtherefore,
the overhead for mapping is lower. Examples of resources
include images, Sounds, video and so forth. Moreover, the
pre-processor functionality can be used to override imple
mentation ofapplication fora specific deviceinsidethesame
device platform family. For example, a specific model of a
mobile device ofthe Windows Mobile platform may have a
different screen resolution for displaying images. Therefore,
the Graphical User Interface (GUI) can be tailored for the
specificdeviceplatform byusingpre-processorfunctionality.
Moreover, the pre-processor is used for translation of the
programming codeacross differentprogramming languages.
For example, the programming code ofa game may be for a
mobile phone that only Supports JAVA programming lan
gllage.
FIG.4showsfunctionaloverview ofplatform-independent
Application Development Framework (ADF) 104 according
to an embodimentofthe invention. ADF 104 comprises con
tent interface 402, application environment 404, plug-in
interface 412, plug-ins 414.
Content interface 402provides theAPI fordeveloping the
application in ADF 104. Further, content interface 402
includes application specific logic, GUI logic, various assets
Such as images, Sounds, fonts, texts, coordinates etc., and
other optional modules. Content interface 402 enables the
developertoselectthemodules fordevelopinganapplication.
The modules provided by content interface 402 are part of
abstraction layer 204, and hence, they are independent from
the platform and application. Examples of modules include
but are not limited to, gaming module and Social network
module.
Application Environment(AE)404provides infrastructure
to program the application. Examples of infrastructure
include design options, utilities and tools that enable the
creation ofapplications. AE404 is a part ofabstraction layer
204, andhence, is independent from theplatform ofdevices.
AE 404 comprises a utility module406, a control infrastruc
ture module 408, and an asset management module 410.
Utility module406 provides multiple utilitiesand data struc
tures fordevelopingapplications.Theutilitiesand data struc
turesprovidedby utility module406canbeused forplatform
independent application development of application logic,
GUI and otherparts ofthe application. Examples ofutilities
anddatastructuresprovidedbyutility module406includebut
are not limitedto collections ofarrays, vector, dictionary and
the like, data types, GUI data types such as point, rectangle
and the like, eXtensible Markup Language (XML) Support,
document object models, file Support, logging Support, ran
dom number generators, serialize Support, string manipula
tion, time, time formatting Support and so forth.
Control infrastructure module 408 ofAE 404 controls and
manages the flow ofapplication in ADF 104. Control infra
structure module 408 implements a Model-View-Controller
(MVC) architecture in which a controller is split into logical
modules or sub-controllers that communicate among them
and with the main controller using events. The use ofMVC
architecture allows separation between the application logic
and GUI. Further, control infrastructure module 408 enables
the display and handling of the GUI and application logic.
The various components and functionality of control infra
structure module 408 are explained in detail in conjunction
with FIG. 5.
Asset management module 410 ofAE 404 manages vari
ous assets fortheapplication. Examples ofassets includebut
are not limited to images, Sounds, videos, other GUI related
requirements foraplatform, and so forth. Further,asset man
agement module 410 allows developing a differentGUIs for
US 8,745,573 B2
7
different types of device screen, which includes support for
different resolutions, orientations, and parameters like key
pad only and/or with mouse Support etc. Furthermore, asset
management module 410 enables the use of different asset
formats per device platform. For example, one device plat
form can use MP3 filesandanothercan useWAV.Therefore,
assets can be used inside a generic code for development of
platform independent application. In an embodiment ofthe
invention, asset management module 410 is implemented at
pre-processing stage. As a result, the binary generated at
pre-processor only includes the required assets, and hence,
the processing overhead is reduced. The operation of asset
management module 410 is explained in detail, in conjunc
tion with FIG. 6.
Plug-in interface 412 provides interfaces betweenAE 404
and device platforms. Plug-in interfaces provide system
events, and optional interfaces like rich media Support for
developmentoftheapplications. Plug-ininterface412 isused
when platform specific functionality is required foran appli
cation. Plug-in interface 412 use plug-ins 414 to provide
interfacebetweenAE404anddeviceplatforms. Plug-ins414
are computer programs that provide platform specific func
tionality required to be implemented to add support for the
platforms. Plug-in interface 412 includes various modules
Such as system flow, system events, system properties, net
working file Support, rendering, resource loading, resource
manipulationandsoforth. Inanembodimentoftheinvention,
each of these modules has a common functionality that is
implemented in abstraction layer204anda platform specific
functionality that is implemented in plug-ins 414. In an
embodiment ofthe invention, in case certain platform func
tionality is notsupportedbyaplatform,then thefunctionality
isemulated. Moreover,AE404notifiestheapplication in case
a particular functionality cannot be supported. For example,
Videoplaybackfunctionality may notbe supported on a low
end mobile device. Exemplary functioning ofplug-in infra
structure is explained in detail in conjunction with FIG. 7.
FIG. 5 shows functional overview ofcontrol infrastructure
module 408 according to an embodiment of the invention.
Control infrastructure module 408 includes a controller506,
a logic module502,anda userinterface module504. Control
infrastructuremodule408implements Model-View-Control
ler (MVC) architecture. Control infrastructure module 408
isolatesbusiness logic from GUI considerations. Logic mod
ule 502 comprises the logic data ofthe application. The data
ofthe application can be split among different objects, col
lections and structures. Logic module 502 communicates
with controller506anduser interface module504to provide
the data for the application. In an embodiment ofthe inven
tion, logic module502 corresponds to themodel in the MVC
architecture. Userinterface module 504 providesGUI to dis
playacompleteorpartial datafrom logic module502. More
over, user interface module can display additional items, for
examplein thecase ofgames, theanimations andtransitions.
Controller 506 controls the flow ofthe application. Con
troller 506 processes and responds to events, for example a
user action. Moreover, controller506 decides various events
Such as when to show a screen, when to change or updatethe
logic module 502 and so forth. In an embodiment of the
invention, control infrastructure module 408 may comprise
multiple sub-controllers under controller 506. Each of the
Sub-controllersmayberesponsibleforasinglemoduleorpart
ofthe logic. In an embodiment ofthe invention, Sub-control
lers can dispatch events to controller 506 that acts as a state
machine. Subsequently, basedontheseevents,controller506
can start or stop Sub-controllers or modules. User interface
module 504 and controller 506 can communicate via asyn
10
15
25
30
35
40
45
50
55
60
65
8
chronous events. In another embodiment of the invention,
eventsthataredispatchedfromuserinterfacemodule504and
from the networkare handled by controller506 and the sub
controllers.Thesub-controllers can then decide toupdatethe
logic module502, movetothenextstateintheapplicationetc.
Controller 506 and the sub-controllers can also dispatch
events to the user interface module 504. For example, con
troller 506 may dispatch an event to start an animation. The
use of events between the user interface module 504 and
controller 506 provides better separation between their cor
responding functionalities. Moreover, the developer of the
application may use only logic model 502 and user interface
module504. Therefore, the developermay notprogram con
troller506.Asa result,thedesignoftheapplication iscleaner
and more flexible.
FIG. 6 shows functional overview of asset management
module 410 according to an embodiment of the invention.
The screens of different devices platforms can typically be
categorized into computers,touch screens devices, ormobile
devices with only key navigation. Further, each ofthedevice
platforms may have different Screen resolutions. Asset man
agement module 410 provides assets based on the device
platformsandscreencapabilities. Examplesofrealassets608
include but are not limited to images, Sounds, videos, and
otherGUI related requirementsforaplatform,andsoforth. In
an embodiment of the invention, different assets are split
basedon differentscreen familiesandresolutions togenerate
logicalassets604foraGUI 602 byassetmanagementmodule
410.The developeroftheapplication only uses logical assets
604. Therefore, the real assetcan be modified or tailored for
a device platform, while the logical use ofthe asset remains
the same. Further, asset management module410 provides a
mapping between logical assets 604 and real assets 608.
Therefore, two differentplatforms that sharethe same screen
family orresolutions useexactly the same logical assets 604.
As a result, the same application will look identical on both
theplatforms. However, thedevelopercancustomizethe look
fora specificdeviceplatform. Inanembodimentoftheinven
tion,thedevelopercancustomizetheGUIbasedonthedevice
platform fragmentations. Therefore, the flexibility in devel
oping the application is increased.
Asset-mapping module 606 defines which logical assets
604areusedbyeach screenfamilyorresolutioncombination.
In an embodiment ofthe invention, asset-mapping module
606 includesa setofscripts formapping logical assets 604to
real assets 608. The Scripts providedby asset-mapping mod
ule606are managed through aGUI editor. In an embodiment
ofthe invention, the scripts providedby asset-mapping mod
ule 606 are managed manually. In an embodiment of the
invention,logicalidentifiersareassociatedwith logical assets
604. Asset-mapping module 606 maps logical assets 604 to
real assets 608 based on the logical identifiers. Examples of
logical identifier include the name, location, size, or charac
teristics oflogical assets 604.
In an embodiment ofthe invention, GUI customization of
realassets 608isdoneinthepre-processingstage.As aresult,
runtime overhead forexecuting the application is less. How
ever,partsoftheGUI can also becustomizedduringruntime.
Forexample, theapplicationcanaskAE404forthe platform
resolution, family, orientation etc., and then make decisions
basedonit. Inanembodimentoftheinvention,realassets 608
are maintained in a single lossless format. For example,
images are maintained in a PNG format. Real assets 608 are
converted to platform specific format during the pre-proces
Sor stage. Therefore, no runtime overhead is encountered.
Moreover, multiple realassets 608in differentformatsforthe
same screen resolution are not required to be maintained.
US 8,745,573 B2
FIG. 7 shows exemplary functional overview of plug-in
interface 412 according to an embodiment ofthe invention.
Plug-ininterface412isusedwhenplatformspecificfunction
ality is required foran application.
Exemplary flow forreadinganumberofbytesofdata from
a web serverisillustratedin FIG. 7, to explain the function of
plug-in interface412. In an embodimentoftheinvention, the
files module is used to provide networkconnectivity. Thefile
module has two main components: an abstract functionality
702 and a plug-in platform specific functionality 704.
Abstractfunctionality 702includes various functions thatare
independentofthedeviceplatform. Forillustrationpurposes,
in case ofnetworking the functions in abstract functionality
702 include connect-serverfunction 706, readbytes function
708, and disconnect-server function 710.
As shown, connect-server function 706 interfaces with
platform specific functionality 704 to create a system socket
and attempts to make a connection. Similarly, read bytes
function 708 interfaces with platform specific functionality
704 to read bytes from the socket. The disconnect-server
function 710 disconnectsand releases thesystem socket. The
developer may use only abstract functionalities 702 ofADF
104, which are automatically translated to platform specific
functionalities 702.
FIG. 8 is a flowchart illustrating the method for platform
independent development ofan application, according to an
embodiment of the invention. At step 802, an Application
Programming Interface (API) is provided to program an
application comprising a programming code. The program
ming code can be executed on multiple platforms. In an
embodiment ofthe invention,the multiple platforms include
mobile device platforms. Examples of the application
include, but are not limited to, an online game for mobile
devices, a messaging application, a chat application and so
forth. The API is independent ofdevice platform and is pro
vided by ADF 104. Thereafter, at step 804, application envi
ronment 404 is provided to program the application. Appli
cation environment 404 provides and infrastructure that is
independent ofthe device platforms. Infrastructure includes
various utilities, data structures, tools, modules, assets and
otherresourcesormodulesrequiredfordevelopingorexecut
ing the application. Subsequently, at Step 806, an interface is
provided between application environment 404 and the
device platforms. In an embodiment of the invention, the
interface is provided by plug-in interface 412.
Embodiments of the invention are described above with
reference to block diagrams and Schematic illustrations of
methodsandsystemsaccordingtoembodimentsoftheinven
tion. Itwillbeunderstoodthateachblockofthediagramsand
combinations ofblocks in the diagrams can be implemented
by computerprogram instructions. These computer program
instructions maybe loadedonto oneormoregeneralpurpose
computers, special purpose computers, or other program
mable data processing apparatus to produce machines. Such
that the instructions which executeonthe computers orother
programmable data processing apparatus create means for
implementing the functions specified in the block orblocks.
Such computer program instructions may also be stored in a
computer-readable memory that can direct a computer or
otherprogrammable data processingapparatus to function in
a particular manner, Such that the instructions stored in the
computer-readable memory produce an article of manufac
tureincluding instruction means that implement the function
specified in theblockorblocks. Furthermore, such computer
program instructions may be made available for download
and/or downloaded over a communication network.
5
10
15
25
30
35
40
45
50
55
60
65
10
While the invention has been described in connection with
what is presently considered to be the most practical and
variousembodiments,itis to be understood thattheinvention
is not to be limited to the disclosed embodiments, but on the
contrary, is intended to cover various modifications and
equivalentarrangements included within the spiritand scope
ofthe appended claims.
This written description uses examples to disclose the
invention, including the best mode, and also to enable any
person skilled in the art to practice the invention, including
makingand usingany devices orsystemsandperformingany
incorporated methods. The patentable scope the invention is
defined in the claims, and may include other examples that
occur to those skilled in the art. Such other examples are
intended to be within the scope of the claims if they have
structuralelements thatdo notdifferfrom theliterallanguage
oftheclaims, orifthey includeequivalentstructuralelements
with insubstantial differences from the literal languages of
the claims.
We claim:
1. A method of providing an application development
framework for platform independent development of an
application, comprising:
providing an Application Programming Interface (API) of
the application development framework to program an
application, the application comprising programming
code to be executed on one or more platforms, wherein
theAPI is independent ofthe one or more platforms;
providing an application environment of the application
development framework to provide an infrastructure to
program the application, wherein the infrastructure is
independent ofthe one or more platforms; and
providing one or more interfaces ofthe application devel
opment framework between the application environ
ment and the one or more platforms, a respective inter
face comprising a plug-in interface configured to
provide platform-specific functionality for the applica
tion, wherein the plug-in interface is configured to use
plug-in software modules configured to provide plat
form-specific capabilities, whereintheplug-in interface
is configuredtotransform oneormoreabstractfunction
alities included in the application, and which are inde
pendent of a specific platform, to one or more corre
spondingplatform-specific functionalities, and wherein
the plug-in interface includes modules having common
functionalities implemented by an abstraction layer of
the application development framework and platform
specific functionalities implementedby theplug-in soft
ware modules, ifavailable, or emulation, ifthere is no
corresponding plug-in software module:
wherein the application, with the one or more platform
specific functionalitiestransformedby theplug-in inter
face, is configured for compilation to platform-specific
executable binary code configured for execution by a
specific platform.
2. The method of claim 1, wherein providing the API
comprisesprovidingoneor moreassetstoprogram the appli
cation.
3.Themethodofclaim 1,furthercomprisingprovidingone
or more modules for programming the application.
4.Themethodofclaim 1,furthercomprisingprovidingone
or more logical assets.
5. The methodofclaim 1, furthercomprisingdownloading
computer-executable instructions that, ifexecuted on a com
puter, cause the computer to implement said providing an
API, said providing an application environment, and said
providing one or more interfaces.
US 8,745,573 B2
11
6.The methodofclaim 1,furthercomprisingproviding for
download computer-executable instructions that, ifexecuted
onacomputer,causethecomputerto implementsaidprovid
ing an API, said providing an application environment, and
said providing one or more interfaces.
7. The method ofclaim 1, wherein the abstraction layeris
configured to enableseparation ofplatform-dependent code
and platform-independent code.
8. A non-transitory computer-readable medium having
stored thereon computer-executable instructions that, if
executedbyacomputingdevice,resultintheimplementation
ofoperations comprising:
providinganApplication Programming Interface (API)of
an application development framework to program an
application, the application comprising programming
code to be executed on one ormore platforms, wherein
theAPI is independent ofthe oneormoreplatforms;
providing an application environment of the application
development framework to provide an infrastructure to
program the application, wherein the infrastructure is
independent ofthe one or more platforms; and
providing one ormore interfaces oftheapplication devel
opment framework between the application environ
ment and the one or more platforms, a respective inter
face comprising a plug-in interface configured to
provide platform-specific functionality for the applica
tion, wherein the plug-in interface is configured to use
plug-in software modules configured to provide plat
form-specificcapabilities, whereintheplug-in interface
isconfiguredtotransform oneormoreabstractfunction
alities included in the application, and which are inde
pendent ofa specific platform, to one or more corre
sponding platform-specific functionalities and wherein
theplug-in interface includes modules having common
functionalities implemented by an abstraction layer of
the application development framework and platform
specificfunctionalities implementedby theplug-insoft
ware modules, ifavailable, or emulation ifthere is no
corresponding plug-in software module:
wherein the application, with the one or more platform
specificfunctionalitiestransformedby theplug-in inter
face, is configured forcompilation to platform-specific
executable binary code configured for execution by a
specific platform.
9.The non-transitorycomputer-readable medium ofclaim
8, wherein providing the API comprises providing one or
more assets to program the application.
10. The non-transitory computer-readable medium of
claim 8, wherein providingtheAPI comprisesprovidingone
or more modules forprogrammingthe application.
11. The non-transitory computer-readable medium of
claim 8, wherein theabstraction layeris configuredto enable
separation of platform-dependent code and platform-inde
pendent code.
10
15
25
30
35
40
45
50
12
12. An apparatus for implementing an application devel
opment framework comprising:
at least one computing device; and
at least one computer-readable medium coupled to the at
least one computing device and having stored thereon
computer-executable instructions that, if executed by
the at least one computing device, result in the imple
mentation ofoperations comprising:
providinganApplication Programming Interface(API) of
the application development framework to program an
application, the application comprising programming
code to be executed on one ormore platforms, wherein
theAPI is independent ofthe one or more platforms;
providing an application environment of the application
development frameworktoprovidean infrastructure to
program the application, wherein the infrastructure is
independent ofthe one or more platforms; and
providing one or more interfaces ofthe application devel
opment framework between the application environ
ment and the one or more platforms, a respective inter
face comprising a plug-in interface configured to
provideplatform-specific functionality for the applica
tion, wherein the plug-in interface is configured to use
plug-in software modules configured to provide plat
form-specific capabilities, whereintheplug-in interface
isconfiguredtotransform oneormoreabstractfunction
alities included in the application, and which are inde
pendent ofa specific platform, to one or more corre
spondingplatform-specific functionalities, and wherein
theplug-in interface includes modules having common
functionalities implemented by an abstraction layer of
the application development framework and platform
specificfunctionalitiesimplementedbytheplug-insoft
ware modules, ifavailable, or emulation, ifthere is no
corresponding plug-in software module:
wherein the application, with the one or more platform
specific functionalitiestransformedbytheplug-ininter
face, is configured forcompilation to platform-specific
executable binary code configured for execution by a
specific platform.
13. The apparatus ofclaim 12, whereinproviding theAPI
comprisesprovidingoneormoreassetstoprogram theappli
cation.
14. Theapparatus ofclaim 12, whereinprovidingtheAPI
comprisesprovidingone or more modules forprogramming
theapplication.
15. The apparatus of claim 12, wherein the abstraction
layer is configured to enable separation ofplatform-depen
dent codeandplatform-independent code.
k k k ck :k

More Related Content

PDF
Platform-independent application development framework
PDF
Translation of programming code
PDF
Translation of programming code
PPTX
Niteesh
PDF
IRJET- Cross Platform User Compatible System with Specific Application
PPT
MD-I-CH-ppt.ppt
PPTX
What is an Application programming interface(API)?
PPTX
Platform categories. emer
Platform-independent application development framework
Translation of programming code
Translation of programming code
Niteesh
IRJET- Cross Platform User Compatible System with Specific Application
MD-I-CH-ppt.ppt
What is an Application programming interface(API)?
Platform categories. emer

Similar to Platform-independent application development framework (20)

PPTX
Platform categories. emer
PDF
Code and Conquer with Globe Labs, October 27, 2012
PPTX
PLATFORM TECHNOLOGIES-1 for _094726.pptx
PPTX
MobApp development 01 application platform.pptx
PPTX
MobApp 01- Mobile Application Development Platform (1).pptx
PPTX
HE BHOPAL SCHOOL OF SOCIAL SCIENCES PROJECT REPORT On Online Examination Syst...
PPTX
Chapter 3 - MIS Applications and Relationships Presentation.pptx
PDF
Application development for mobile phones
PPTX
Mobile Application Development Unit 1.pptx
PDF
Innovation in Cross-Platform App Development.pdf
PDF
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
ODP
mobile application development
PDF
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
PDF
Advantages of Cross-Platform Development What You Need to Know.pdf
PPTX
Chapter 2-IS dept.pptxhjvcbtffffffffffffffffffffffffffff6
PPT
Trends in mobile applications
PPTX
The ultimate guide and facts on cross platform app development in 2021.
PDF
mobile application development
PDF
Top Programming Languages for Aspiring Mobile App Developers.pdf
PDF
Multiple User Interfaces Crossplatform Applications And Contextaware Interfac...
Platform categories. emer
Code and Conquer with Globe Labs, October 27, 2012
PLATFORM TECHNOLOGIES-1 for _094726.pptx
MobApp development 01 application platform.pptx
MobApp 01- Mobile Application Development Platform (1).pptx
HE BHOPAL SCHOOL OF SOCIAL SCIENCES PROJECT REPORT On Online Examination Syst...
Chapter 3 - MIS Applications and Relationships Presentation.pptx
Application development for mobile phones
Mobile Application Development Unit 1.pptx
Innovation in Cross-Platform App Development.pdf
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
mobile application development
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Advantages of Cross-Platform Development What You Need to Know.pdf
Chapter 2-IS dept.pptxhjvcbtffffffffffffffffffffffffffff6
Trends in mobile applications
The ultimate guide and facts on cross platform app development in 2021.
mobile application development
Top Programming Languages for Aspiring Mobile App Developers.pdf
Multiple User Interfaces Crossplatform Applications And Contextaware Interfac...
Ad

More from Tal Lavian Ph.D. (20)

PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Photonic line sharing for high-speed routers
PDF
Systems and methods to support sharing and exchanging in a network
PDF
Systems and methods for visual presentation and selection of IVR menu
PDF
Grid proxy architecture for network resources
PDF
Ultra low phase noise frequency synthesizer
PDF
Systems and methods for electronic communications
PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Radar target detection system for autonomous vehicles with ultra-low phase no...
PDF
Grid proxy architecture for network resources
PDF
Method and apparatus for scheduling resources on a switched underlay network
PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
Method and apparatus for using a command design pattern to access and configu...
PDF
Reliable rating system and method thereof
PDF
Time variant rating system and method thereof
PDF
Systems and methods for visual presentation and selection of ivr menu
PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Photonic line sharing for high-speed routers
Systems and methods to support sharing and exchanging in a network
Systems and methods for visual presentation and selection of IVR menu
Grid proxy architecture for network resources
Ultra low phase noise frequency synthesizer
Systems and methods for electronic communications
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Radar target detection system for autonomous vehicles with ultra-low phase no...
Grid proxy architecture for network resources
Method and apparatus for scheduling resources on a switched underlay network
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Method and apparatus for using a command design pattern to access and configu...
Reliable rating system and method thereof
Time variant rating system and method thereof
Systems and methods for visual presentation and selection of ivr menu
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Ad

Recently uploaded (20)

PDF
Dynamic Checkweighers and Automatic Weighing Machine Solutions
PDF
PPT Determiners.pdf.......................
PPTX
code of ethics.pptxdvhwbssssSAssscasascc
PPT
Hypersensitivity Namisha1111111111-WPS.ppt
DOCX
fsdffdghjjgfxfdghjvhjvgfdfcbchghgghgcbjghf
PPTX
Lecture 3b C Library _ ESP32.pptxjfjfjffkkfkfk
PPTX
Sem-8 project ppt fortvfvmat uyyjhuj.pptx
PDF
Dozuki_Solution-hardware minimalization.
PPTX
Nanokeyer nano keyekr kano ketkker nano keyer
PPTX
sdn_based_controller_for_mobile_network_traffic_management1.pptx
PPTX
Prograce_Present.....ggation_Simple.pptx
PPTX
unit1d-communitypharmacy-240815170017-d032dce8.pptx
PPTX
"Fundamentals of Digital Image Processing: A Visual Approach"
PPTX
5. MEASURE OF INTERIOR AND EXTERIOR- MATATAG CURRICULUM.pptx
PPTX
Embeded System for Artificial intelligence 2.pptx
PPTX
material for studying about lift elevators escalation
PPTX
Wireless and Mobile Backhaul Market.pptx
PPTX
PLC ANALOGUE DONE BY KISMEC KULIM TD 5 .0
PPTX
PROGRAMMING-QUARTER-2-PYTHON.pptxnsnsndn
PPTX
Operating System Processes_Scheduler OSS
Dynamic Checkweighers and Automatic Weighing Machine Solutions
PPT Determiners.pdf.......................
code of ethics.pptxdvhwbssssSAssscasascc
Hypersensitivity Namisha1111111111-WPS.ppt
fsdffdghjjgfxfdghjvhjvgfdfcbchghgghgcbjghf
Lecture 3b C Library _ ESP32.pptxjfjfjffkkfkfk
Sem-8 project ppt fortvfvmat uyyjhuj.pptx
Dozuki_Solution-hardware minimalization.
Nanokeyer nano keyekr kano ketkker nano keyer
sdn_based_controller_for_mobile_network_traffic_management1.pptx
Prograce_Present.....ggation_Simple.pptx
unit1d-communitypharmacy-240815170017-d032dce8.pptx
"Fundamentals of Digital Image Processing: A Visual Approach"
5. MEASURE OF INTERIOR AND EXTERIOR- MATATAG CURRICULUM.pptx
Embeded System for Artificial intelligence 2.pptx
material for studying about lift elevators escalation
Wireless and Mobile Backhaul Market.pptx
PLC ANALOGUE DONE BY KISMEC KULIM TD 5 .0
PROGRAMMING-QUARTER-2-PYTHON.pptxnsnsndn
Operating System Processes_Scheduler OSS

Platform-independent application development framework

  • 1. US00874.5573B2 (12) United States Patent (10) Patent No.: US 8,745,573 B2 Ben-Artzi et al. (45) Date of Patent: Jun. 3, 2014 (54) PLATFORM-INDEPENDENT APPLICATION (58) Field ofClassification Search DEVELOPMENT FRAMEWORK USPC ...................................................... 717/102, 6 Seeapplication file forcomplete search history. (75) Inventors: Guy Ben-Artzi, Palo Alto, CA (US); Yotam Shacham, Palo Alto, CA (US); (56) References Cited Yehuda Levi, Rishon LeZion (IL); Russell William Mcmahon, Woodside, U.S. PATENT DOCUMENTS CA (US); Amatzi Ben-Artzi, PaloAlto, 2002/0184610 A1* 12/2002 Chongetal. .................. 717/109 CA (US); AlexeiAlexevitch, Hertzlia 2003/0070061 A1* 4/2003 Wong etal. ........ T12/220 (IL); Alexander Glyakov, Petach Tikva 2006/0129972 A1* 6/2006 Tyburski etal. ... T17/106 (IL); Tal Lavian, Sunnyvale, CA (US) 2009/0254912 A1* 10,2009 Roundtree et al. ............ T18,102 * cited by examiner (73) Assignee: Beek Fund B.V. L.L.C., Dover, DE (US) - Primary Examiner — Li B Zhen (*) Notice: Subjectto any disclaimer,the term ofthis Assistant Examiner — Duy Khuong Nguyen patent is extended or adjusted under 35 (74) Attorney, Agent, or Firm —Novak Druce Connolly (21) Appl. No.: 12/483,598 (57) ABSTRACT (22) Filed: Jun. 12, 2009 Embodiments of the invention provide a platform-indepen dent application development framework for programming (65) Prior Publication Data an application. The framework comprises a content interface configured to provideanApplication Programming Interface US 2009/0313OO4A1 Dec. 17, 2009 (API)toprogram theapplication comprisingaprogramming O O code to be executed on one or more platforms. The API Related U.S. Application Data providedby theframework is independentoftheoneor more (60) Provisional application No. 61/132,211, filed on Jun. platforms. The framework further comprises an application 16, 2008. environment configured to provide an infrastructure that is independent ofthe one or more platforms and one or more (51) Int. Cl. plug-in interfaces configuredtoprovidean interfacebetween G06F 9/44 (2006.01) the application environment and the one or more platforms. (52) U.S. Cl. USPC ............................ 717/102; 717/106; 717/140 15 Claims, 8 Drawing Sheets Provide an Application Programming Interface (API) to program an application Comprising a programming code to be executed on one or more platforms Provide an application environment to program the application, wherein the infrastructure is independent of the one or more platformsNWWar Provide an interface between the application environment and the one or more platforms 804 806
  • 2. US 8,745,573 B2Sheet 1 of 8Jun. 3, 2014U.S. Patent
  • 3. US 8,745,573 B2Sheet 2 of8Jun. 3, 2014U.S. Patent 230Z
  • 4. US 8,745,573 B2Sheet 3 of 8Jun. 3, 2014U.S. Patent ?pOOquepuede?iL-UUJO??eid Z09)
  • 6. US 8,745,573 B2Sheet 5 of 8Jun. 3, 2014U.S. Patent
  • 7. US 8,745,573 B2Sheet 6 of 8 909909#709Z09 Jun. 3, 2014U.S. Patent
  • 9. US 8,745,573 B2Sheet 8 of 8Jun. 3, 2014U.S. Patent d'O.LS 908Z08
  • 10. US 8,745,573 B2 1. PLATFORM-INDEPENDENT APPLICATION DEVELOPMENT FRAMEWORK CROSS-REFERENCE TO RELATED APPLICATION This application draws priority from U.S. Provisional Patent Application No. 61/132,211, filed on Jun. 16, 2008, and hereby incorporated by reference herein in its entirety. FIELD OF THE INVENTION Theteachingherein generally relates to application devel opment framework and more specifically to platform inde pendent development framework forapplications. BACKGROUND OF THE INVENTION Various users across the globe communicate or perform various activities on computer and device networks. More over, the users interactwitheach otherthrough the networks, Suchas the Internet. Typically, devices likepersonal comput ersareusedbytheuserstointeractovertheInternet.Theusers can interact from various Internetwebsites orSocial network ing sites, for example, Facebook, Myspace. Hi5, and Orkut etc. Recently, the development in mobiledevicessuchas cell phones, Smartphones and PDAs, computers, laptops and the like has enabled them to be used for performing various activities on networks such as the Internet. Moreover, the mobile devices can be used for real-time interaction with otherusers onthe network. The interactionorcommunication can be in the form of chatting, playing interactive online games, browsing, shopping, music, video, banking, business and the like. The rapid pace ofinnovation in technology has generated varioustypesofdevicesandplatforms.Moreover,thenumber ofdevices is increasing rapidly. For example, there are vari ous operating systems available forthe devices Such as Win dows, Linux,Macintosh,andSymbian,etc. Moreover,alarge number of J2ME platforms are available for the mobile devices suchascellphones. Furthermore, the mobiledevices haveawiderageofcapabilities intermsofscreen size,Screen type, screen resolution, processor, and memory etc. The applications forthese devices have to be developed basedon theirplatforms. As a result, each application has to be devel opedbasedoneachplatform orportedto otherplatforms. For example, in case ofcomputer games the programming lan guages typically used are JAVA, CH, C++. Action Script, and thelike. Therefore,anapplication developedinAction Script programming language may have to be ported to other pro gramming language when not Supported by a device plat form. Typically,theprogrammingcodeofanapplication istrans lated manually from one programming language to another. However, manual translation requires specific and in-depth knowledge of the programming languages of the different operating systems. Moreover, manual translation is a very timeconsumingprocess. Furthermore,theprogramming lan guages are constantly developed orget modified. Moreover, the applications have to be developed on specific develop ment platforms compatible with the programming language used for development and the operating system ofa device. Therefore, knowledge ofspecific tools and Application Pro gramming Interface (API) for every device platform may be required to program an application. Some existing mecha nisms,suchasemulationofapplications andvirtual machines are available to Support applications on multiple devices. 10 15 25 30 35 40 45 50 55 60 65 2 In case ofvirtual machine mechanisms the programming codeoftheapplicationis separatedintoplatformindependent code and platform dependent code. Platform independent code is written in the virtual machine's coding language, which usually is a scripting language. Further, the code may be compiled to a binary that only the virtual machine itself knows how to execute. Since the code is nevercompiled to a native platform binary and must run inside the virtual machine space, thereexist runtime overheads. Moreover, the existing mechanismsgenerateapplicationprogramcodesthat are large or require heavy processing time. The problem is compounded with the continuously increasing number of device platforms and technology. Whatis neededinthe artisaframeworkthat is required for development ofapplications independent ofthe platform of the device. SUMMARY The invention provides a platform-independent applica tion development framework. The framework comprising: a content interface configured to provide an Application Pro gramming Interface (API) to program an application, the application comprising a programming code to be executed on one or moreplatforms, wherein theAPI is independent of the one or more platforms; an application environment con figured to provide an infrastructure to program the applica tion, wherein the infrastructure is independent ofthe one or more platforms; and one or more plug-in interfaces config ured to providean interfacebetween theapplicationenviron ment and the one or more platforms. The invention further provides a platform-independent application development framework. The framework com prising: acontentinterfaceconfiguredtoprovideanApplica tion Programming Interface(API)to program anapplication, the application comprising a programming code to be executed on one or more mobile device platforms, wherein the API is independent of the one or more mobile device platforms; an application environment configured to provide an infrastructure to program the application, wherein the infrastructure is independent of the one or more mobile device platforms; and one or more plug-in interfaces config ured to providean interfacebetween theapplicationenviron ment and the one or more mobile device platforms. The invention further provides an architecture for plat form-independent development ofan application, the appli cation comprisingaprogrammingcodetobeexecutedonone or more mobile device platforms, the architecture compris ing: an abstraction layer configured to: provide an Applica tion ProgrammingInterface(API)toprogramtheapplication, wherein the API is independent of the one or more mobile device platforms; provide an infrastructure to program the application, wherein the infrastructure is independent ofthe one or more mobile device platforms; and provide an inter facebetween theabstractionlayerandtheoneormoremobile device platforms. Theinvention furtherprovidesa method forplatform inde pendentdevelopment ofanapplication.The methodcompris ing: providing an Application Programming Interface (API) to program an application, the application comprising a pro gramming code to be executed on one or more platforms, wherein theAPI is independentoftheoneor moreplatforms: providing an infrastructure to program the application, wherein the infrastructure is independent ofthe one or more platforms;andprovidinganinterfacebetweentheapplication environment and the one or more platforms.
  • 11. US 8,745,573 B2 3 An article ofmanufacture forplatform independent devel opment of an application, comprising: an electronically accessible medium including instructions, that when executed by a processor, cause the processor to: provide an Application Programming Interface (API) to program an application, the application comprisingaprogramming code to be executed on oneor moreplatforms, wherein theAPI is independent ofthe one or more platforms; provide an infra structure to program the application, wherein the infrastruc tureis independent ofthe oneormoreplatforms;andprovide an interfacebetweentheapplicationenvironmentandtheone or more platforms. BRIEF DESCRIPTION OF THE DRAWINGS Having thus described the invention in general terms, ref erence will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein: FIG. 1 isa simplifiedblockdiagram ofaplatformindepen dent development framework; FIG. 2 shows functional overview of abstraction layer according to an embodiment ofthe invention; FIG. 3 shows functional overview ofpre-processor layer according to an embodiment ofthe invention; FIG. 4 shows functional overview ofa platform indepen dent development frameworkaccording toanembodimentof the invention; FIG. 5 shows functional overview ofa control infrastruc ture module according to an embodiment ofthe invention; FIG. 6 shows functional overview ofa asset management module according to an embodiment ofthe invention; and FIG. 7 shows functional overview of a plug-in interface according to an embodiment ofthe invention. FIG. 8 is a flowchart illustrating the method for platform independent development ofan application, according to an embodiment ofthe invention. DETAILED DESCRIPTION OF THE INVENTION Illustrative embodiments of the technology now will be describedmorefully hereinafterwith reference to theaccom panyingdrawings,in whichsome,butnotallembodiments of the technology are shown. Indeed, the technology may be embodied in many different forms and should not be con struedas limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout. Asapreliminary matterbeforeexploringdetails ofvarious implementations, reference is made to FIG. 1 forillustrating a simplified block diagram ofa platform independent devel opment framework. FIG. 1 discloses a platform independent frameworkthatallows a rapid platform independentapplica tion development, without the need foran application devel oper to know each platform. As shown in FIG. 1, devices 102a, 102b, 102c and 102n are connected through an appli cation development framework 104, which in turn is con nected to application contents 106a, 106b, 106c and 106n. Devices 102a-n can be, but not limited to a mobile device Suchas a cellularphone,a PDAanda Smartphone,a laptop, a personal computerandthe like. Examples ofapplication con tents 106a-n include a game, a message, a calendar, an address, a notepad, a user interface and otherapplications to be executed on devices 102a-n. Devices 102a-n may havedifferenthardwareandsoftware platforms. Examples ofsoftwareplatforms include operating systems such as Windows, Linux, Macintosh, Symbian, and 10 15 25 30 35 40 45 50 55 60 65 4 so forth. Moreover, devices 102a-n may have different hard ware such as the screen size, Screen resolution, audio and video functionality,processorsandsoforth.Therefore,devel opment of an application for each of these platforms may require application content 106a-n to be written in various programming languages and functions compatible with the platforms. Forexample,C++ programming language may be used by Windows applications, while JAVA programming languageisprimarilyusedfordevelopingwebapplets. More over, the resources required foreach platform may be differ ent. Forexample,thetypeandsizeofan imagetobedisplayed may vary based on the screen size and Screen resolution of devices 102a-n. Therefore, application contents 106a-n may be developed based on theplatform ofdevices 102a-n. Application development framework 104 provides a mechanism for developing application contents 106a-in for devices 102a-n independently across multiple device plat forms. Therefore, application contents 106a-in developed using application development framework 104 is pro grammed only onceand can be used on various platforms of devices 102a-n. In an embodiment ofthe invention, applica tion developmentframework104enablesapplicationcontent 106a-n to be developed based on platform specific require ment and platform independent requirements. In another embodiment of the invention, application development framework 104 provides cross-translation of programming languages for various device platforms. In case ofconventional developmentorporting ofapplica tions, the numberofcoding modules for n numberofappli cations and 'm numberofdevices can be n*m. Forexample, when 4 applications are developed for 10 differentplatforms ofdevices, then a total of40coding modulesforapplications have to be developed. As is evident from the above calcula tions,the numberofcoding modules increases tremendously with increase in the number ofapplications and the type of deviceplatforms. However, in caseofapplications developed through platform-independent application development framework 104, the number ofcoding modules can be n+m. Forexample,theapplication logic can be written in platform independent code by using Application Programming Inter face (API) provided by application development framework 104. Therefore, n numberofplatform independent logics is required for n number of applications. Similarly, using application development framework 104 can also program the platform specific programming code form number of devices. Therefore, m number ofplatform specific coding modules is required form numberofdevices. As a result, a totalofm+n. Forexample, when4applicationsaredeveloped for 10 different platforms of devices by using application development framework 104, then a total of14 coding mod ules for applications have to be developed. As a result, the complexity ofthe programming code and development time can be reduced. Application development framework 104 uses abstraction layerandpre-processorfunctionalitiestoenabletheprogram ming code to be developed independent ofthe device plat forms. The abstraction layer and pre-processor functional ities are describedin detail in conjunction with FIGS. 2 and3 respectively. FIG. 2 shows functional overview ofan abstraction layer 204accordingto an embodimentofthe invention. Generally, in the domain ofsoftwareprogramming, an abstraction layer enables separation of various details or functionalities of a programming code from the device platform requirements. Abstraction layer 204 in the platform-independent develop ment architecture separates platform independent code 202 fromplatformdependentcodes 206a-bofan application. For
  • 12. US 8,745,573 B2 5 example, platform independentcode202 may bethe logic of the application and platform dependentcodes 206a-b can be the programming code specific to devices 102. Therefore, a developer that works on the logic or platform engine ofthe application may not require knowledge about the device interface. Moreover, thedeveloperthat works on theapplica tion itself may not require the knowledge about the device platform. Platform independent code 202 and platform dependent codes 206a-b are developedby usingAPIprovidedby appli cation developmentframework104. Inanembodimentofthe invention, platform independent code 202 and platform dependent codes 206a-b are parts of application content 106a-n. Platform dependent code 206a-b can be developed based on the native language ofthe specific platforms. The complete code ofthe application that contains the platform independent code 202 and platform dependent code 206a-b may be compiled to generate a binary codes 208a-b for the device platforms. Therefore, the application developed con tains the complete code and any additional component or code is not required. Moreover, the processing overheard is low, because the application code is compiled into native binary code ofthe platform. In an embodiment ofthe inven tion, application development framework 104 implements abstraction layer 204 during the run-time ofthe application. Abstraction layer 204 further provides infrastructure for the development ofthe application. The infrastructure pro videdby abstraction layer 204 includes various utilities, data structures, tools, design options, and resources required to developtheapplication. Examplesofdatastructuresandutili ties include a set ofcollections like arrays and dictionaries, and examples oftools include Extensible Markup Language (XML) parsing, unicode string Support and so forth. Examples of resources include images, sounds, videos and various other assets required by the application. In an embodiment ofthe invention, abstraction layer 204 includes different modules to develop the application. Examples of modules include, butare not limited to, networking, file Sup port, rendering, resource loading, system events, system properties, and resource manipulation. Each ofthe modules provided by abstraction layer 204 include a common func tionality, and a device platform specific functionality. The device platform specific functionality is implemented in the device plug-in and is explained in detail in conjunction with FIG. 7. FIG. 3 shows functional overview ofpre-processor func tionality according to an embodiment ofthe invention. Gen erally, a pre-processor processes an input data to produce an output to be used as input to a computerprogram. In case of pre-processor manipulation, tags are embedded inside the application code. The tags instruct the compiler on the sec tions to be compiled for different platforms. Therefore, as shown in FIG. 3, application programming code comprises platform independent code 302 and that in turn comprises platform dependent codes 304a-b. The application program mingcodeiscompiledbyacompliertogeneratenativebinary codes 306a-b. Binary codes 306a-b can then be executed on the specific device platforms for which the code has been compiled. There are no layers between platform dependent codes 304a–b and platform independent code 302, therefore no runtime overhead is introduced in the execution of the programming code. Application development framework 104 implements pre processor for device platform specific compilation ofappli cation code. In an embodiment ofthe invention, pre-proces sorfunctionality isimplementedto maplogicalresourcesand the real resources based on the device platform. As a result, 10 15 25 30 35 40 45 50 55 60 65 6 thebinarycodesonly includeneeded resourcesandtherefore, the overhead for mapping is lower. Examples of resources include images, Sounds, video and so forth. Moreover, the pre-processor functionality can be used to override imple mentation ofapplication fora specific deviceinsidethesame device platform family. For example, a specific model of a mobile device ofthe Windows Mobile platform may have a different screen resolution for displaying images. Therefore, the Graphical User Interface (GUI) can be tailored for the specificdeviceplatform byusingpre-processorfunctionality. Moreover, the pre-processor is used for translation of the programming codeacross differentprogramming languages. For example, the programming code ofa game may be for a mobile phone that only Supports JAVA programming lan gllage. FIG.4showsfunctionaloverview ofplatform-independent Application Development Framework (ADF) 104 according to an embodimentofthe invention. ADF 104 comprises con tent interface 402, application environment 404, plug-in interface 412, plug-ins 414. Content interface 402provides theAPI fordeveloping the application in ADF 104. Further, content interface 402 includes application specific logic, GUI logic, various assets Such as images, Sounds, fonts, texts, coordinates etc., and other optional modules. Content interface 402 enables the developertoselectthemodules fordevelopinganapplication. The modules provided by content interface 402 are part of abstraction layer 204, and hence, they are independent from the platform and application. Examples of modules include but are not limited to, gaming module and Social network module. Application Environment(AE)404provides infrastructure to program the application. Examples of infrastructure include design options, utilities and tools that enable the creation ofapplications. AE404 is a part ofabstraction layer 204, andhence, is independent from theplatform ofdevices. AE 404 comprises a utility module406, a control infrastruc ture module 408, and an asset management module 410. Utility module406 provides multiple utilitiesand data struc tures fordevelopingapplications.Theutilitiesand data struc turesprovidedby utility module406canbeused forplatform independent application development of application logic, GUI and otherparts ofthe application. Examples ofutilities anddatastructuresprovidedbyutility module406includebut are not limitedto collections ofarrays, vector, dictionary and the like, data types, GUI data types such as point, rectangle and the like, eXtensible Markup Language (XML) Support, document object models, file Support, logging Support, ran dom number generators, serialize Support, string manipula tion, time, time formatting Support and so forth. Control infrastructure module 408 ofAE 404 controls and manages the flow ofapplication in ADF 104. Control infra structure module 408 implements a Model-View-Controller (MVC) architecture in which a controller is split into logical modules or sub-controllers that communicate among them and with the main controller using events. The use ofMVC architecture allows separation between the application logic and GUI. Further, control infrastructure module 408 enables the display and handling of the GUI and application logic. The various components and functionality of control infra structure module 408 are explained in detail in conjunction with FIG. 5. Asset management module 410 ofAE 404 manages vari ous assets fortheapplication. Examples ofassets includebut are not limited to images, Sounds, videos, other GUI related requirements foraplatform, and so forth. Further,asset man agement module 410 allows developing a differentGUIs for
  • 13. US 8,745,573 B2 7 different types of device screen, which includes support for different resolutions, orientations, and parameters like key pad only and/or with mouse Support etc. Furthermore, asset management module 410 enables the use of different asset formats per device platform. For example, one device plat form can use MP3 filesandanothercan useWAV.Therefore, assets can be used inside a generic code for development of platform independent application. In an embodiment ofthe invention, asset management module 410 is implemented at pre-processing stage. As a result, the binary generated at pre-processor only includes the required assets, and hence, the processing overhead is reduced. The operation of asset management module 410 is explained in detail, in conjunc tion with FIG. 6. Plug-in interface 412 provides interfaces betweenAE 404 and device platforms. Plug-in interfaces provide system events, and optional interfaces like rich media Support for developmentoftheapplications. Plug-ininterface412 isused when platform specific functionality is required foran appli cation. Plug-in interface 412 use plug-ins 414 to provide interfacebetweenAE404anddeviceplatforms. Plug-ins414 are computer programs that provide platform specific func tionality required to be implemented to add support for the platforms. Plug-in interface 412 includes various modules Such as system flow, system events, system properties, net working file Support, rendering, resource loading, resource manipulationandsoforth. Inanembodimentoftheinvention, each of these modules has a common functionality that is implemented in abstraction layer204anda platform specific functionality that is implemented in plug-ins 414. In an embodiment ofthe invention, in case certain platform func tionality is notsupportedbyaplatform,then thefunctionality isemulated. Moreover,AE404notifiestheapplication in case a particular functionality cannot be supported. For example, Videoplaybackfunctionality may notbe supported on a low end mobile device. Exemplary functioning ofplug-in infra structure is explained in detail in conjunction with FIG. 7. FIG. 5 shows functional overview ofcontrol infrastructure module 408 according to an embodiment of the invention. Control infrastructure module 408 includes a controller506, a logic module502,anda userinterface module504. Control infrastructuremodule408implements Model-View-Control ler (MVC) architecture. Control infrastructure module 408 isolatesbusiness logic from GUI considerations. Logic mod ule 502 comprises the logic data ofthe application. The data ofthe application can be split among different objects, col lections and structures. Logic module 502 communicates with controller506anduser interface module504to provide the data for the application. In an embodiment ofthe inven tion, logic module502 corresponds to themodel in the MVC architecture. Userinterface module 504 providesGUI to dis playacompleteorpartial datafrom logic module502. More over, user interface module can display additional items, for examplein thecase ofgames, theanimations andtransitions. Controller 506 controls the flow ofthe application. Con troller 506 processes and responds to events, for example a user action. Moreover, controller506 decides various events Such as when to show a screen, when to change or updatethe logic module 502 and so forth. In an embodiment of the invention, control infrastructure module 408 may comprise multiple sub-controllers under controller 506. Each of the Sub-controllersmayberesponsibleforasinglemoduleorpart ofthe logic. In an embodiment ofthe invention, Sub-control lers can dispatch events to controller 506 that acts as a state machine. Subsequently, basedontheseevents,controller506 can start or stop Sub-controllers or modules. User interface module 504 and controller 506 can communicate via asyn 10 15 25 30 35 40 45 50 55 60 65 8 chronous events. In another embodiment of the invention, eventsthataredispatchedfromuserinterfacemodule504and from the networkare handled by controller506 and the sub controllers.Thesub-controllers can then decide toupdatethe logic module502, movetothenextstateintheapplicationetc. Controller 506 and the sub-controllers can also dispatch events to the user interface module 504. For example, con troller 506 may dispatch an event to start an animation. The use of events between the user interface module 504 and controller 506 provides better separation between their cor responding functionalities. Moreover, the developer of the application may use only logic model 502 and user interface module504. Therefore, the developermay notprogram con troller506.Asa result,thedesignoftheapplication iscleaner and more flexible. FIG. 6 shows functional overview of asset management module 410 according to an embodiment of the invention. The screens of different devices platforms can typically be categorized into computers,touch screens devices, ormobile devices with only key navigation. Further, each ofthedevice platforms may have different Screen resolutions. Asset man agement module 410 provides assets based on the device platformsandscreencapabilities. Examplesofrealassets608 include but are not limited to images, Sounds, videos, and otherGUI related requirementsforaplatform,andsoforth. In an embodiment of the invention, different assets are split basedon differentscreen familiesandresolutions togenerate logicalassets604foraGUI 602 byassetmanagementmodule 410.The developeroftheapplication only uses logical assets 604. Therefore, the real assetcan be modified or tailored for a device platform, while the logical use ofthe asset remains the same. Further, asset management module410 provides a mapping between logical assets 604 and real assets 608. Therefore, two differentplatforms that sharethe same screen family orresolutions useexactly the same logical assets 604. As a result, the same application will look identical on both theplatforms. However, thedevelopercancustomizethe look fora specificdeviceplatform. Inanembodimentoftheinven tion,thedevelopercancustomizetheGUIbasedonthedevice platform fragmentations. Therefore, the flexibility in devel oping the application is increased. Asset-mapping module 606 defines which logical assets 604areusedbyeach screenfamilyorresolutioncombination. In an embodiment ofthe invention, asset-mapping module 606 includesa setofscripts formapping logical assets 604to real assets 608. The Scripts providedby asset-mapping mod ule606are managed through aGUI editor. In an embodiment ofthe invention, the scripts providedby asset-mapping mod ule 606 are managed manually. In an embodiment of the invention,logicalidentifiersareassociatedwith logical assets 604. Asset-mapping module 606 maps logical assets 604 to real assets 608 based on the logical identifiers. Examples of logical identifier include the name, location, size, or charac teristics oflogical assets 604. In an embodiment ofthe invention, GUI customization of realassets 608isdoneinthepre-processingstage.As aresult, runtime overhead forexecuting the application is less. How ever,partsoftheGUI can also becustomizedduringruntime. Forexample, theapplicationcanaskAE404forthe platform resolution, family, orientation etc., and then make decisions basedonit. Inanembodimentoftheinvention,realassets 608 are maintained in a single lossless format. For example, images are maintained in a PNG format. Real assets 608 are converted to platform specific format during the pre-proces Sor stage. Therefore, no runtime overhead is encountered. Moreover, multiple realassets 608in differentformatsforthe same screen resolution are not required to be maintained.
  • 14. US 8,745,573 B2 FIG. 7 shows exemplary functional overview of plug-in interface 412 according to an embodiment ofthe invention. Plug-ininterface412isusedwhenplatformspecificfunction ality is required foran application. Exemplary flow forreadinganumberofbytesofdata from a web serverisillustratedin FIG. 7, to explain the function of plug-in interface412. In an embodimentoftheinvention, the files module is used to provide networkconnectivity. Thefile module has two main components: an abstract functionality 702 and a plug-in platform specific functionality 704. Abstractfunctionality 702includes various functions thatare independentofthedeviceplatform. Forillustrationpurposes, in case ofnetworking the functions in abstract functionality 702 include connect-serverfunction 706, readbytes function 708, and disconnect-server function 710. As shown, connect-server function 706 interfaces with platform specific functionality 704 to create a system socket and attempts to make a connection. Similarly, read bytes function 708 interfaces with platform specific functionality 704 to read bytes from the socket. The disconnect-server function 710 disconnectsand releases thesystem socket. The developer may use only abstract functionalities 702 ofADF 104, which are automatically translated to platform specific functionalities 702. FIG. 8 is a flowchart illustrating the method for platform independent development ofan application, according to an embodiment of the invention. At step 802, an Application Programming Interface (API) is provided to program an application comprising a programming code. The program ming code can be executed on multiple platforms. In an embodiment ofthe invention,the multiple platforms include mobile device platforms. Examples of the application include, but are not limited to, an online game for mobile devices, a messaging application, a chat application and so forth. The API is independent ofdevice platform and is pro vided by ADF 104. Thereafter, at step 804, application envi ronment 404 is provided to program the application. Appli cation environment 404 provides and infrastructure that is independent ofthe device platforms. Infrastructure includes various utilities, data structures, tools, modules, assets and otherresourcesormodulesrequiredfordevelopingorexecut ing the application. Subsequently, at Step 806, an interface is provided between application environment 404 and the device platforms. In an embodiment of the invention, the interface is provided by plug-in interface 412. Embodiments of the invention are described above with reference to block diagrams and Schematic illustrations of methodsandsystemsaccordingtoembodimentsoftheinven tion. Itwillbeunderstoodthateachblockofthediagramsand combinations ofblocks in the diagrams can be implemented by computerprogram instructions. These computer program instructions maybe loadedonto oneormoregeneralpurpose computers, special purpose computers, or other program mable data processing apparatus to produce machines. Such that the instructions which executeonthe computers orother programmable data processing apparatus create means for implementing the functions specified in the block orblocks. Such computer program instructions may also be stored in a computer-readable memory that can direct a computer or otherprogrammable data processingapparatus to function in a particular manner, Such that the instructions stored in the computer-readable memory produce an article of manufac tureincluding instruction means that implement the function specified in theblockorblocks. Furthermore, such computer program instructions may be made available for download and/or downloaded over a communication network. 5 10 15 25 30 35 40 45 50 55 60 65 10 While the invention has been described in connection with what is presently considered to be the most practical and variousembodiments,itis to be understood thattheinvention is not to be limited to the disclosed embodiments, but on the contrary, is intended to cover various modifications and equivalentarrangements included within the spiritand scope ofthe appended claims. This written description uses examples to disclose the invention, including the best mode, and also to enable any person skilled in the art to practice the invention, including makingand usingany devices orsystemsandperformingany incorporated methods. The patentable scope the invention is defined in the claims, and may include other examples that occur to those skilled in the art. Such other examples are intended to be within the scope of the claims if they have structuralelements thatdo notdifferfrom theliterallanguage oftheclaims, orifthey includeequivalentstructuralelements with insubstantial differences from the literal languages of the claims. We claim: 1. A method of providing an application development framework for platform independent development of an application, comprising: providing an Application Programming Interface (API) of the application development framework to program an application, the application comprising programming code to be executed on one or more platforms, wherein theAPI is independent ofthe one or more platforms; providing an application environment of the application development framework to provide an infrastructure to program the application, wherein the infrastructure is independent ofthe one or more platforms; and providing one or more interfaces ofthe application devel opment framework between the application environ ment and the one or more platforms, a respective inter face comprising a plug-in interface configured to provide platform-specific functionality for the applica tion, wherein the plug-in interface is configured to use plug-in software modules configured to provide plat form-specific capabilities, whereintheplug-in interface is configuredtotransform oneormoreabstractfunction alities included in the application, and which are inde pendent of a specific platform, to one or more corre spondingplatform-specific functionalities, and wherein the plug-in interface includes modules having common functionalities implemented by an abstraction layer of the application development framework and platform specific functionalities implementedby theplug-in soft ware modules, ifavailable, or emulation, ifthere is no corresponding plug-in software module: wherein the application, with the one or more platform specific functionalitiestransformedby theplug-in inter face, is configured for compilation to platform-specific executable binary code configured for execution by a specific platform. 2. The method of claim 1, wherein providing the API comprisesprovidingoneor moreassetstoprogram the appli cation. 3.Themethodofclaim 1,furthercomprisingprovidingone or more modules for programming the application. 4.Themethodofclaim 1,furthercomprisingprovidingone or more logical assets. 5. The methodofclaim 1, furthercomprisingdownloading computer-executable instructions that, ifexecuted on a com puter, cause the computer to implement said providing an API, said providing an application environment, and said providing one or more interfaces.
  • 15. US 8,745,573 B2 11 6.The methodofclaim 1,furthercomprisingproviding for download computer-executable instructions that, ifexecuted onacomputer,causethecomputerto implementsaidprovid ing an API, said providing an application environment, and said providing one or more interfaces. 7. The method ofclaim 1, wherein the abstraction layeris configured to enableseparation ofplatform-dependent code and platform-independent code. 8. A non-transitory computer-readable medium having stored thereon computer-executable instructions that, if executedbyacomputingdevice,resultintheimplementation ofoperations comprising: providinganApplication Programming Interface (API)of an application development framework to program an application, the application comprising programming code to be executed on one ormore platforms, wherein theAPI is independent ofthe oneormoreplatforms; providing an application environment of the application development framework to provide an infrastructure to program the application, wherein the infrastructure is independent ofthe one or more platforms; and providing one ormore interfaces oftheapplication devel opment framework between the application environ ment and the one or more platforms, a respective inter face comprising a plug-in interface configured to provide platform-specific functionality for the applica tion, wherein the plug-in interface is configured to use plug-in software modules configured to provide plat form-specificcapabilities, whereintheplug-in interface isconfiguredtotransform oneormoreabstractfunction alities included in the application, and which are inde pendent ofa specific platform, to one or more corre sponding platform-specific functionalities and wherein theplug-in interface includes modules having common functionalities implemented by an abstraction layer of the application development framework and platform specificfunctionalities implementedby theplug-insoft ware modules, ifavailable, or emulation ifthere is no corresponding plug-in software module: wherein the application, with the one or more platform specificfunctionalitiestransformedby theplug-in inter face, is configured forcompilation to platform-specific executable binary code configured for execution by a specific platform. 9.The non-transitorycomputer-readable medium ofclaim 8, wherein providing the API comprises providing one or more assets to program the application. 10. The non-transitory computer-readable medium of claim 8, wherein providingtheAPI comprisesprovidingone or more modules forprogrammingthe application. 11. The non-transitory computer-readable medium of claim 8, wherein theabstraction layeris configuredto enable separation of platform-dependent code and platform-inde pendent code. 10 15 25 30 35 40 45 50 12 12. An apparatus for implementing an application devel opment framework comprising: at least one computing device; and at least one computer-readable medium coupled to the at least one computing device and having stored thereon computer-executable instructions that, if executed by the at least one computing device, result in the imple mentation ofoperations comprising: providinganApplication Programming Interface(API) of the application development framework to program an application, the application comprising programming code to be executed on one ormore platforms, wherein theAPI is independent ofthe one or more platforms; providing an application environment of the application development frameworktoprovidean infrastructure to program the application, wherein the infrastructure is independent ofthe one or more platforms; and providing one or more interfaces ofthe application devel opment framework between the application environ ment and the one or more platforms, a respective inter face comprising a plug-in interface configured to provideplatform-specific functionality for the applica tion, wherein the plug-in interface is configured to use plug-in software modules configured to provide plat form-specific capabilities, whereintheplug-in interface isconfiguredtotransform oneormoreabstractfunction alities included in the application, and which are inde pendent ofa specific platform, to one or more corre spondingplatform-specific functionalities, and wherein theplug-in interface includes modules having common functionalities implemented by an abstraction layer of the application development framework and platform specificfunctionalitiesimplementedbytheplug-insoft ware modules, ifavailable, or emulation, ifthere is no corresponding plug-in software module: wherein the application, with the one or more platform specific functionalitiestransformedbytheplug-ininter face, is configured forcompilation to platform-specific executable binary code configured for execution by a specific platform. 13. The apparatus ofclaim 12, whereinproviding theAPI comprisesprovidingoneormoreassetstoprogram theappli cation. 14. Theapparatus ofclaim 12, whereinprovidingtheAPI comprisesprovidingone or more modules forprogramming theapplication. 15. The apparatus of claim 12, wherein the abstraction layer is configured to enable separation ofplatform-depen dent codeandplatform-independent code. k k k ck :k