• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Code and Conquer with Globe Labs, October 27, 2012
 

Code and Conquer with Globe Labs, October 27, 2012

on

  • 622 views

The slideshow presentation that was given at the joint event with Globe Labs of Globe Telecom, Inc. in October 2012

The slideshow presentation that was given at the joint event with Globe Labs of Globe Telecom, Inc. in October 2012

Statistics

Views

Total Views
622
Views on SlideShare
620
Embed Views
2

Actions

Likes
0
Downloads
4
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Code and Conquer with Globe Labs, October 27, 2012 Code and Conquer with Globe Labs, October 27, 2012 Presentation Transcript

    • Globe Corporate Showroom October 27, 2012Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Major mobile platformsCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Major platforms (mobile + desktop)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Mobile platform market shares (IDC)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Mobile platform market shares (2015)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Technical things that must be considered ● Programming language ● APIs and libraries ● Different versions of the operating system ● User interface design ● User interface implementation ● Development toolsCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Programming languageCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Programming language Apple iOS Apple iOS 17% Objective C 17% Objective C Windows Phone 20% C# Windows Phone 20% C# Android Android 44% Java 44% Java BlackBerry BlackBerry 13% C/C++ 13% C/C++Copyright (c) 2012 Job and Esther Technologies, Inc.
    • “NATIVE” vs “NON-NATIVE” “NATIVE” is something that does not need an interpreterThe primary language of any platform is “NATIVE” to the platform. All other languages on that platform are “NON- NATIVE”.Copyright (c) 2012 Job and Esther Technologies, Inc.
    • APIs and libraries Android iOS Windows Phone User interface Android API Cocoa Touch / UIKit Silverlight framework Graphical rendering Immediate Immediate Retained model Networking API Standard Java Standard Posix / .NET CFNetwork Memory management Garbage collection Reference counting / Garbage collection manual Library format .jar .a / .so .dll Web browser WebKit WebKit Internet Explorer componentCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Example: Connecting a socket IOS / Objective C CFSocketRef socket = CFSocketCreate(NULL, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketConnectCallBack, (CFSocketCallBack)ConnectCallBack, &CTX); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_len = sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = INADDR_ANY; CFDataRef connectAddr = CFDataCreate(NULL, (unsigned char *)&addr, sizeof(addr)); CFSocketConnectToAddress(socket, connectAddr, −1); ANDROID / JAVA WINDOWS PHONE / C# try { IPEndPoint endpoint = InetAddress serverAddr = new IPEndPoint(ipAddress, PORT); InetAddress.getByName(serverIpAddress); Socket socket = Socket socket = new Socket(serverAddr, new Socket(AddressFamily.InterNetwork, serverPort); SocketType.Stream, } ProtocolType.Tcp); catch (UnknownHostException e1) { } catch (IOException e1) { }Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Different versions of the operating system (As of June 2012; source Chitika)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • User interface design Windows Phone Android iOSCopyright (c) 2012 Job and Esther Technologies, Inc.
    • User interface implementation XAML (Windows Phone) Layout (Android) Storyboard (iOS) <phone:PhoneApplicationPage <?xml version="1.0" <?xml version="1.0" x:Class="eqela.samples.squar encoding="utf-8"?> encoding="UTF-8" e.MainPage" <LinearLayout standalone="no"?> xmlns="http://schemas.micros xmlns:android="http://sche <document oft.com/winfx/2006/xaml/prese mas.android.com/apk/res/a type="com.apple.InterfaceBu ntation" xmlns:x="http://schemas.micro ndroid" ilder3.CocoaTouch.Storyboa soft.com/winfx/2006/xaml" android:layout_width="fill_p rd.XIB" version="2.0" xmlns:phone="clr- arent" toolsVersion="2837" namespace:Microsoft.Phone.C android:layout_height="fill_p systemVersion="12A269" ontrols;assembly=Microsoft.Ph arent" targetRuntime="iOS.CocoaT one" xmlns:shell="clr- android:orientation="vertical ouch" namespace:Microsoft.Phone.S " ><TextView propertyAccessControl="non hell;assembly=Microsoft.Phon android:id="@+id/text" e" useAutolayout="YES" e" android:layout_width="wrap initialViewController="4"> xmlns:d="http://schemas.micro _content" <dependencies> soft.com/expression/blend/200 8" android:layout_height="wra <plugIn xmlns:mc="http://schemas.ope p_content" identifier="com.apple.Interfac nxmlformats.org/markup- android:text="Hello, I am a eBuilder.IBCocoaTouchPlugi compatibility/2006" TextView" /><Button n" version="1921"/> android:id="@+id/button" </dependencies>Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Development tools Microsoft Visual Studio – Windows Phone Eclipse - Android Apple Xcode - iOSCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Bottom lineWhile targeting only the most popularmobile platforms, you will need to workwith 10-20 different operating system platforms/versions, at least 3-4 different programming languages, each with different API libraries.Copyright (c) 2012 Job and Esther Technologies, Inc.
    • How to make this work?Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The usual solution (#1) ● Only work with one operating system “I will only make applications for Android” ● ● “I am an iOS DEVELOPER!” ● The upside: Easy to do. You only need to learn one language and ● API, and write your program using the matching tools. ● The downside: ● You limit the potential of your application (you cannot reach all users). ● Your future is tied to the target platform. (Eg. If Apple removes your app from the AppStore, its over)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • How to expand? : PORTING ● Wikipedia: “Porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one on which it was originally designed.” ● Wikipedia: “Software is portable when the cost of porting it to a new platform is less than the cost of writing it from scratch.” ● → Traditional native applications (Android apps, iOS apps, etc.) are not portable.Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The usual solution (#2) ● Make several versions of your program, one for each platform ● Write the same program multiple times; first in Java, then Objective- C, then C# (often called “porting”) ● The upside: ● You will not limit the potential of your application, as you can now reach all your users. ● The downside: ● Massive amount of work in rewriting the same program over and over again. Very expensive if done professionally. Also not very rewarding for a programmer (doing the same work repeatedly). ● You end up with multiple codebases of the same program. Very tedious to maintain and develop further.Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The third way: CROSS PLATFORM DEVELOPMENTCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Cross platform development ● Producing portable applications for multiple platforms using a single codebase ● Write a program only once, but use it on several platforms ● Depending on the cross platform development method, the applications may be native (not requiring interpretation) or non-native (interpreted in some manner) ● Especially the non-native approach has issues in performance, memory use and application size, which has caused many to abandon even the idea of cross platform development.Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The Eqela video http://www.youtube.com/watch?v=WcWf7SXGBv0Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Our solution: EQELA ● Eqela reads source code written in the Eqela programming language / API, and translates it to various other languages, targeting different APIs / platformsCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Eqela is .. (#1) A modern, object oriented programming language ● Powerful, object oriented, easy to use, efficient to program ● Designed to fit the needs of the different target platforms ● Part of the C syntax family ● Instantly familiar to anyone with experience in C, C++, Java, C#, JavaScriptCopyright (c) 2012 Job and Esther Technologies, Inc.
    • A sample program● A cross-platform graphical “Hello world” application: class Main : LayerWidget { public void initialize() { base.initialize(); add(LabelWidget.instance().set_text(“Hello World”)); } }● Works exactly the same way on all supported operating systems / devicesCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Eqela is .. (#2) An advanced compiler / programming language translator ● Converts a source programming language (Eqela) to other programming languages (Java, C#, C, JavaScript, ..) ● Generates project files / directory structures to be used by the development tools of the various target platforms ● Pulls in libraries to link with the applicationCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Eqela is .. (#3) A cross platform development API ● A cross-platform API that works across programming languages ● All common functionalities, such as file I/O, networking, threading, data structures, .. ● Same API on any language and operating systemCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Eqela is .. (#4) A cross platform graphical user interface (GUI) API ● A rich set of user interface components and controls ● The controls are available and the GUI works across all platforms ● Mobile devices ● Desktop ● Web / HTML5 ● Develop your own controlsCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Some GUI componentsCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Automatic scaling of user interfacesCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Eqela is .. (#5) A development tool / environmentCopyright (c) 2012 Job and Esther Technologies, Inc.
    • How it works Eqela C iOS iOS Libraries source SDK application code Java Eqela Android Android Eqela source Source SDK application Compiler code Code Javascript Run in code browserCopyright (c) 2012 Job and Esther Technologies, Inc.
    • How it works : Sample application class Main : LayerWidget { public void initialize() { base.initialize(); add(LabelWidget.instance().set_text(“Hello World”)); } } Main.java, Android Eqela Main.eq LayerWidget.java, Compiler SDK LabelWidget.java LayerWidget, Android LabelWidget applicationCopyright (c) 2012 Job and Esther Technologies, Inc.
    • 100% native Only native code → “100% native” No virtual machine added No interpreter added Main.java, Android Eqela Main.eq LayerWidget.java, Compiler SDK LabelWidget.java LayerWidget, Android LabelWidget applicationCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Main.eq → Main.java class Main : LayerWidget { (EQELA) 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() { } } (JAVA)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Also type code in the native language 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 from Eqela codeCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Is this the only way to do cross platform development?Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Cross platform development approach (#1)The “scripted” approach Unmodified iOS iOS Source code SDK application + Interpreter / Virtual machine For iOS Source code Competing Android In a scripting Development application language tool Unmodified Source code (JavaScript, + Lua, Ruby, ..) Interpreter / Android Virtual machine SDK For Android Run in browser (Adobe Air / Flex, Appcelerator, Mono / Unity, Corona, RhoMobile, ..)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The “scripted approach” architecture APIs and libraries Application code Language interpreter / runtime Operating system (Adobe Air / Flex, Appcelerator, Mono / Unity, Corona, RhoMobile, ..)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The “scripted approach” architecture Increases memory APIs and libraries Application code Makes application usage Installers much bigger Language interpreter / runtime Applications can only Reduces runtime Operating system Access selected Performance Parts of the native API Due to this approach being very popular, many consider cross platform development to be slow, high in memory use, and producing bigger installers. This is wrong.Copyright (c) 2012 Job and Esther Technologies, Inc.
    • The Mono / Android architecture (Source: http://docs.xamarin.com/Android/Guides/Advanced_Topics/Architecture)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Unity (includes Mono) on Android C++ codeCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Cross platform development approach (#2)The “MoSync” approach Runtime / iOS C++ class Proprietary Virtual application Library / header bytecode machine Files Android The GNU C application Compiler (GCC) Secondary Compiler C++ source (MoSync) code Windows Phone application Very similar to the “scripted” approach, Run in only somewhat more complicated browser (MoSync)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Cross platform development approach (#3)The “C++” approach iOS Cross application Plaftorm Class library In the specific language (Usually C++) BlackBerry Playbook SDK / application Source code compiler In a specific Language (Usually C++) Android application Windows + Truly native (100%) Run in Phone + High performance browser application - Limited platform support (not really cross platform) (Marmalade, Qt, WxWidgets)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Cross platform development approach (#4)The “embed a web browser” approach Run in C source code browser Libraries That opens a Browser and Displays the program iOS iOS SDK application Source Code in HTML, CSS, “Compiler” JavaScript Android Android SDK application Java source code That opens a Browser and- Very poor performance Displays the- Suitable for only “web-style” apps program- Limited access to platform APIs+ Easy way to convert existing websites to“native apps” (PhoneGap)Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Cross platform development approach (#5)The “source code conversion” approach Libraries C iOS iOS source SDK application code Java Android Android Source source Compiler SDK application Code code + Truly native (100%) on any platform Javascript Run in + High performance code browser + Optimized memory use + Small installer size + Unrestricted API accessCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Comparison : “Hello world” application ● The “scripted” approach: ● Appcelerator Titanium: 8MB ● Mono: 4MB ● The “embed a web browser” approach: ● PhoneGap: ~300KB ● The “source code conversion” approach ● Eqela: 96KBCopyright (c) 2012 Job and Esther Technologies, Inc.
    • How to learn more about Eqela?Copyright (c) 2012 Job and Esther Technologies, Inc.
    • Sign up and learn more details ● Free registration at http://www.eqela.com/register ● Browse through the documentation, tutorials, sample programs and technical informationCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Try it out for yourself ● Once registered, try Eqela programming at http://www.eqela.com/try ● Make short programs and compile to different platforms ● Get familiar to the language and see Eqela in actionCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Get one ● Choose any of the supported platforms where you wish for your application to work ● Install the Eqela compiler on your computer; no internet connection required ● Place your order at http://www.eqela.com/buyCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Supported platforms PLATFORM TOOLS AVAILABLE EQELA LIVE SUBSCRIPTION Microsoft Windows Yes Yes Mac OS X Yes Yes Linux Yes Yes Igellle Yes Yes Android Yes Yes HTML5 / JavaScript Yes Yes Apple iOS Yes BlackBerry / Java Yes BlackBerry / QNX Yes Windows CE Yes Windows Mobile Yes Windows Phone Yes Symbian OS Yes Meego / Jolla Coming soon Firefox OS Coming soonCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Licensing cost USD150 / platform / programmer / yearCopyright (c) 2012 Job and Esther Technologies, Inc.
    • Thank youCopyright (c) 2012 Job and Esther Technologies, Inc.