3. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Cross platform development tools
One codebase; target
multiple platforms
Many existing tools on the
market
4. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
“Cross platform tools
do not work. Writing
native code is the only
way.”
5. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Commonly encountered issues
Large installer size
Excessive memory use
Low performance
Limited API access
6. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
ANOTHER COMMON SENTIMENT
8. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Source code
targeting a
specific
platform
Tool
Source / byte
code and
interpreter or
VM for iOS
Source / byte
code and
interpreter or
VM for Android
Runtime /
Virtual
machine
(Java, JavaScript,
Lua, Ruby, C#, ..)
A common cross platform tool
BROWSER
“virtual machine”
9. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Operating system
Language interpreter / runtime
APIs and libraries Application code
A common cross platform tool
Architecture
10. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
A common cross platform tool
Architecture
Operating system
Language interpreter / runtime
APIs and libraries Application code Makes application
installers bigger
Increases memory
usage
Reduces runtime
performance
Applications can only
access selected
parts of the native API
= INCREASED BATTERY USAGE
11. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
(Source: http://docs.xamarin.com/Android/Guides/Advanced_Topics/Architecture)
14. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Another popular architecture
Source
Code in
HTML, CSS,
JavaScript
Tool
C code
That opens a
Browser and
Displays the
program
Java code
That opens a
Browser and
Displays the
program
Android
SDK
iOS
SDK
“embed a web browser”
BROWSER
15. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Commonly encountered issues
Large installer size
Excessive memory use
Low performance
Limited API access
16. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
The C/C++ approach
C++
application
code
Tool
C++ class
library
SWIFT
BROWSER
17. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
C++ / bytecode combination
C++ code
23. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Programming language conversion
(Source code)
Small Installers Optimal memory use
No API access limitationsNative performance
24. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Comparison: A “hello world” application
First approach (virtual machine / interpreter)
Appcelerator: 8MB installer
Xamarin / Mono (Unity): 4MB installer
The “embed a web browser” approach:
Phonegap / Cordova: ~300KB installer
The “source code conversion” approach:
96KB installer
25. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Programming Language
Translator
26. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
2D / 3D GAMES
MOBILE APPLICATIONS
BUSINESS SYSTEMS
WEBSITES / WEB APPLICATIONS
BACKEND SERVERS
DESKTOP TOOLS / UTILITIES
AUTOMATED QUALITY ASSURANCE
27. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
class Main : LayerWidget
{
public void initialize() {
base.initialize();
add(LabelWidget.instance().set_text(“Hello World”));
}
}
Eqela
Compiler
LayerWidget
LabelWidget
Main.java
LayerWidget.java
LabelWidget.java
Android
SDK
A sample Eqela application
Main.eq
28. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
class Main : LayerWidget
{
public void initialize() {
base.initialize();
add(LabelWidget.instance().set_text(“Hello World”));
}
}
package mk.test;
public class Main extends eq.gui.LayerWidget
{
@Override
public void initialize() {
super.initialize();
((eq.gui.ContainerWidget)this).add(((eq.gui.Widget)eq.widget.LabelWidge
t.eq_widget_LabelWidget_instance().set_text(eq.api.StringStatic.eq_api_
StringStatic_for_strptr("Hello world"))));
}
public Main() {
}
}
(EQELA)
(JAVA)
29. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
class AndroidHTTPGet
{
public static bool execute(String url) {
embed “java” {{{
org.apache.http.client.methods.HttpUriRequest hur =
new org.apache.http.client.methods.HttpGet(url.to_strptr());
android.net.http.AndroidHttpClient hc =
android.net.http.AndroidHttpClient.newInstance(“testing”);
org.apache.http.HttpResponse resp = hc.execute(hur);
if(resp == null) {
return(false);
}
}}}
return(true);
}
}
→ All platform specific features / APIs
are accessible
Embedding other languages
30. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
SpriteKit
Sprite Engine R3D
→ NO TECHNOLOGY LOCK-IN
31. Copyright (c) 2014 Eqela Pte Ltd. All Rights reserved.
Thank you
markku.kero@jobandesther.com
www.eqela.com