16
ABSTRACT APPLICATION LANGUAGE Mobile Cross-platform Development

Mobile Application Declarative Language

Embed Size (px)

Citation preview

Page 1: Mobile Application Declarative Language

ABSTRACT APPLICATION LANGUAGE

Mobile Cross-platform Development

Page 2: Mobile Application Declarative Language

AS-IS

Platform dependent Application Lifecycle

Development

Deployment

Support

Page 3: Mobile Application Declarative Language

AS-IS Development

Implement requirements for all target platform (Android, iOS, …[, supporting different version of SDKs

Using different languages, framework, design patterns, tools, …

Page 4: Mobile Application Declarative Language

AS-IS Deployment

Using different API/applications to deploy an application

Different graphical materials

Page 5: Mobile Application Declarative Language

AS-IS Support

Create fixes and updates for all supported platforms in the same period of time

Discrepancies between applications on different platforms are growing while the app lifecycle

Page 6: Mobile Application Declarative Language

AS-IS Solutions

Hybrid app Cross-platform frameworks

Generation Tools

Rho Qt No business-logic support

PhoneGap J2ME

Page 7: Mobile Application Declarative Language

TO-BE

Abstract Language to create applications in a Declarative way

Separation of L&F from business-logic

Componentization and Graphical Design

Open API for Components creation

Automate deployment to different app stores

Virtual App Repository to improve UX

Social networking

Page 8: Mobile Application Declarative Language

TO-BE Abstract Language

Business Rules Implementation Platform

Functionality

Abstract Declaration

Business Logic

Click Me

If A < B then…

L&F Fonts, Styles,

Layouts, …

Page 9: Mobile Application Declarative Language

TO-BE Abstract Language (cont)

main: GuiContainer

address: ListView

prv: ContentProvider

address: Entity

details: GuiContainer

street: EditText

city: EditTExt

country: EditText

Page 10: Mobile Application Declarative Language

TO-BE Graphical Design

UML-like Graphic representaion

Scala representation

val address = new GuiContainer {

val street = new EditText

val city = new EditText

val country = new EditText

}

address: GuiContainer

street: EditText

city: EditTExt

country: EditText

Page 11: Mobile Application Declarative Language

TO-BE Components Open API

Scala DSL

abstract class Widget(name: String) extends Component(name) {

def importDeclaration: String

def fieldDeclaration: String

def initialization: String

def initLoader: String

def layoutTag: String

def setValue(fromRef: String): String

def getValue: String

}

Page 12: Mobile Application Declarative Language

TO-BE Business Logic Mixing

CodeGen API allows inject target-specific code into the app module:

val doActivate = new Method("doActivate") {

this <~ Import("android.os.Bundle")

this <~ Import("android.content.Intent")

override def signature = s"""$name(int)"""

override def caller = s"""$name(${this("id")})"""

override def holder =

s"""

private void $name(long id) {

final Bundle bundle = new Bundle();

bundle.putLong("${this("idField")}", id);

final Intent intent = new Intent(this, MyActivity.class);

intent.putExtras(bundle);

startActivity(intent);

}

"""

}

Page 13: Mobile Application Declarative Language

App Repository

Collects samples, applications and code snippet to share between community members.

http://adaldev.com

Page 14: Mobile Application Declarative Language

Module Editor

Allows to create and develop an application using code editor window and snippets.

http://adaldev.com/builder

Page 15: Mobile Application Declarative Language

Target Project

Generates a target project for chosen platform, browses source code, download app binary.

http://adaldev.com/target

Page 16: Mobile Application Declarative Language

Questions