Swift on Android

Total Page:16

File Type:pdf, Size:1020Kb

Swift on Android Swift on Android Eric Wing blurrrsdk.com try! Swift Tokyo 2017 Need to be quick… Android dev is a large topic for the uninitiated • (Obligatory) Why Swift on Android? • A native language that is cross-platform (like C & C++) • I’ll assume everybody here already here already sees the value • Note: I put extra things in my slides that, I won’t have time to talk about, but are to help you in the future when you refer back to the talk. Yes, the real Apple Swift My Background: Worn lots of hats • Prove to you I actually know what I’m talking about • Not just an Android dev • Also a seasoned Mac/iOS dev (and other platforms too) • I will act as your bridge between worlds • I look at this holistically from the vantage point of computer history & fundamentals Globalstar: Satellites & Rockets • Global communication system based on constellation of satellites and ground stations • Launch satellites into space with rockets! • (Not relevant for this talk, but I’m told it sounds cool) From Cross-platform to Native Cocoa • Cross-platform, Scientific Visualization • End of the Unix Wars => Microsoft Windows domination • Mac OS X: A Unix with a user-friendly UI • Meld cross-platform OpenGL sci-viz with native Cocoa UI for best experience Open Source Projects • Got involved in some open source projects • Usually related to improving Apple platform support LuaCocoa • Wrote world’s first full-featured bridge between Lua & Cocoa • Obj-C runtime + libffi + Mac OS X 10.5 BridgeSupport • Complete API coverage including C APIs • Dual mode: Obj-C garbage collection & traditional • PowerPC/Intel, 32-bit/64-bit Universal Binaries Beginning iPhone Games Development Commercial Game Engines Corona SDK Platino (Lua) (JavaScript) • Primary platforms: iOS & Android • Also: Mac & Windows First “proper” Swift/Android app https://youtu.be/7fVC0245Io8 https://youtu.be/w6FY_qSi8yY Ouroboros: Eternal cycle of life & death What’s old is new again • Nothing in this talk is “new” • Simply re-applying old concepts in different ways • Compilers / Native code • C / Application Binary Interface (ABI) • Unix / Linux / Android • Recognizing this may make this topic easier to understand C interoperability • C is the most portable language • Every platform has a C compiler (even the web with Emscripten) • The C ABI is stable and everything is built on it • Most languages have a way to talk to C • Swift provides one of the easiest & most direct ways • Decades of pre-existing software • A lot still useful today Language vs. Libraries • Helpful to not confuse the two Swift “standard” libraries • Swift C library • AppKit / UIKit • Darwin • libdispatch • swiftCore • Core Graphics • GlibC • Foundation • Core Audio • Bionic Minimal Many Language vs. Libraries • Using Swift on Android (or other platforms) doesn’t mean using Cocoa Native • Swift C • libdispatch • UIKit iOS • swiftCore library • Foundation • Core Audio App • Darwin • Swift C Native • Android SDK • swiftCore library Android App • OpenSL ES • Bionic Cross-platform • SDL • swiftCore Game • OpenAL App Development vs. Server Development (i.e. Extra things that Swift on Linux devs don’t do) • Binaries must run on end-users native machines • All dependencies must be bundled with app or provided by the OS • Should not require installers or users to pre-install additional things • And never root access! • Apps have resources that must be bundled • e.g. images, sounds, data sets • Ideal: Third-party libraries can also be in binary form (requires stable ABI) We need to build real user-facing (Android) apps (Mostly) Okay Wrong Wrong Android NDK (Native Development Kit) • All Android apps must be written using the Android SDK which is in Java • Android NDK (Native Development Kit) allows you to create dynamic libraries using native code • All GUI APIs (and almost everything else) are exclusive to the Android SDK, i.e. Java only • Your Android app must use Java’s loadLibrary to load the dynamic libraries, and then communicate using JNI Swift & the Android NDK • NDK intended for C & C++, but Swift works too • Swift itself is written in C++ (which has consequences we’ll get too) • Your Swift programs are compiled to native code • So your programs live on the NDK side • Thus you must use the Android NDK The Android NDK “Really Does Suck” • John Carmack - “Half-baked”, “Really does suck” • Second class citizen on Android • IDE and build systems not well integrated • Almost no Android libraries are provided in the NDK • Lots of things are broken, slow to get fixed, if ever • Word on the street (few years ago): Only 2 full-time Google engineers + a few part time • Consistent with number of Google employees on NDK mailing list • No slight intended on those 2 engineers. Valiant effort. Google treats them as the black sheep. • Google: Among the richest, powerful companies in the world with #1 dominance in mobile, and this is the best effort Google chooses to put in Bionic (Android’s C standard library) • Android does not use glibc (unlike “real” Linux) • Wrote their own called “Bionic” • Doesn’t care about POSIX compliance • Doesn’t even care about ANSI compliance • 8 years into Android, still terrible Lua 5.2 (2013) builds with Turbo C 1.0 (1990) for MS- DOS without modification https://youtu.be/-jvLY5pUwic Lua 5.2 (2013) builds with Turbo C 1.0 (1990) for MS- DOS without modification https://youtu.be/-jvLY5pUwic Android NDK (r11c) fails to compile Lua Insights into Bionic https://mail-index.netbsd.org/tech-userlevel/2012/07/25/msg006571.html Terrible performance bug for strlcpy • Wrote a test program to run Test262 suite on JavaScriptCore • Runs through 11,000+ files • Used strlcpy • Mac, iOS so fast that I didn’t think about it • Android took: 9000 ms • Switch to strncpy + manual NULL term: 14 ms • Maybe I should be impressed they provide this function at all? Android SDK/Java isn’t that much better • Get a list of files (‘ls’) in a directory of an APK is well known to have a serious performance bug • Get list 11,000+ files: I killed the process after 3 hours of waiting Android file system and the .apk • Files that ship with your app are inside the “.apk” (think .zip) • Can’t use standard C file family (fopen, fread) • Needs a “God” object from the Java Android Activity or Context class • AAsset* AAssetManager_open(AAssetManager *mgr, const char *filename, int mode); • Existing cross-platform (ANSI) C/C++ libraries won’t work without modification • Places outside the .apk can use C file family • “Internal Storage”, but may not have much storage space • “External Storage”, but may not exist or have correct access permissions Dynamic Library System wonky too • System.loadLibrary doesn’t automatically load dependencies • Load must be manually done & in the correct order • Will silently ignore if a library by the same name is already loaded • Never use soname versioning and never use symlinks • (Android further tightened the soname rules in 6.0 and 7.0) • (Lots of other gotchas I’m omitting for time) Fight Club • What is the First Rule of Library Programming? • You do not use C++ • What is the Second Rule of Library Programming? • ? Swift & C++ (and how it affects you) • Swift is implemented in C++ and uses the C++ standard library • Swift has runtime dependencies that use C++ and the C++ standard library • Swift’s standard libraries are implemented in C++ and use the C++ standard library • Thus C++ issues are propagated forward to you (inherited) Android NDK and C++ • Android NDK provides 5 different C++ standard libraries you have to choose from • libstdc++, gabi++, stlport, gnustl, libc++ • All are incompatible with each other • NDK API level doesn't help either • C++ standard library does not guarantee a stable ABI so every NDK update potentially breaks • If you dynamically link • You must bundle with your app because Android does not ship one with the OS • In contrast Apple, ships system wide and tries to keep the ABI stable/backwards compatible Android NDK and C++ • In the real world… • People build binaries of libraries and share them • People don’t upgrade NDKs at the same time and versions get mixed • People use multiple libraries, all built under different NDK versions • So the final application must include a copy all these different C++ library versions • But Android doesn’t name versions differently • So files overwrite each other • And bad things can happen • In contrast, Microsoft Visual Studio at least has the sense to put the version number in the file name (e.g. msvcp140.dll) Android NDK and C++ • So we should statically link, right? Android NDK and C++ • So we should statically link, right? Android NDK and C++ • So we should statically link, right? • Android documentation warnings: Android NDK and C++ • So Lose, Lose • Thanks (for nothing) Google • In practice, I personally found static linking to work better Fight Club • What is the Second Rule of Library Programming? • You do not use C++ • Unfortunately, Swift uses a ton of it, so we must pay • Static linking possible, but altering the Swift build system is sooooo hard :( Let’s build Swift for Android: Dependency hell • Android comes with almost no libraries for the NDK, so we must build all Swift dependencies • Remember: we build user-facing apps • All dependencies must be bundled with app (or statically linked) libICU (used by swiftCore): Let’s talk about the “(Mostly)” (Mostly) Okay libICU: “DLL hell” problem • Android manufacturers or Android itself may use libICU internally • If it is used, when we load our library, the attempt silently fails and we call into the internal one
Recommended publications
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Symbolic Systems (GOFAI)................................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Statistical & Machine Learning...........................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]
  • SPLLIFT — Statically Analyzing Software Product Lines in Minutes Instead of Years
    SPLLIFT — Statically Analyzing Software Product Lines in Minutes Instead of Years Eric Bodden1 Tarsis´ Toledoˆ 3 Marcio´ Ribeiro3;4 Claus Brabrand2 Paulo Borba3 Mira Mezini1 1 EC SPRIDE, Technische Universitat¨ Darmstadt, Darmstadt, Germany 2 IT University of Copenhagen, Copenhagen, Denmark 3 Federal University of Pernambuco, Recife, Brazil 4 Federal University of Alagoas, Maceio,´ Brazil [email protected], ftwt, [email protected], [email protected], [email protected], [email protected] Abstract A software product line (SPL) encodes a potentially large variety v o i d main () { of software products as variants of some common code base. Up i n t x = secret(); i n t y = 0; until now, re-using traditional static analyses for SPLs was virtu- # i f d e f F ally intractable, as it required programmers to generate and analyze x = 0; all products individually. In this work, however, we show how an # e n d i f important class of existing inter-procedural static analyses can be # i f d e f G transparently lifted to SPLs. Without requiring programmers to y = foo (x); LIFT # e n d i f v o i d main () { change a single line of code, our approach SPL automatically i n t x = secret(); converts any analysis formulated for traditional programs within the print (y); } i n t y = 0; popular IFDS framework for inter-procedural, finite, distributive, y = foo (x); subset problems to an SPL-aware analysis formulated in the IDE i n t foo ( i n t p) { print (y); framework, a well-known extension to IFDS.
    [Show full text]
  • Eric Franklin Enslen
    Eric Franklin Enslen email:[email protected]!403 Terra Drive phone:!(302) 827-ERIC (827-3742)!Newark, DE website:! www.cis.udel.edu/~enslen!19702 Education: Bachelor of Science in Computer and Information Sciences University of Delaware, Newark, DE!May 2011 Major GPA: 3.847/4.0 Academic Experience: CIS Study Abroad, London, UK!Summer 2008 Visited research labs at University College London, King"s College, and Brunel University, as well as IBM"s Hursley Park, and studied Software Testing and Tools for the Software Life Cycle Relevant Courses: Computer Ethics, Digital Intellectual Property, Computer Graphics, and Computational Photography Academic Honors: Alumni Enrichment Award, University of Delaware Alumni Association, Newark, DE!May 2009 Travel fund to present a first-author paper at the the 6th Working Conference on Mining Software Repositories (MSR), collocated with the 2009 International Conference on Software Engineering (ICSE) Hatem M. Khalil Memorial Award, College of Arts and Sciences, University of Delaware, Newark, DE!May 2009 Awarded to a CIS major in recognition of outstanding achievement in software engineering, selected by CIS faculty Deanʼs List, University of Delaware, Newark, DE!Fall 2007, Spring 2008, Fall 2008 and Fall 2009 Research Experience: Undergraduate Research, University of Delaware, Newark, DE!January 2009 - Present Developing, implementing, evaluating and documenting an algorithm to split Java identifiers into their component words in order to improve natural-language-based software maintenance tools. Co-advisors: Lori Pollock, K. Vijay-Shanker Research Publications: Eric Enslen, Emily Hill, Lori Pollock, K. Vijay-Shanker. “Mining Source Code to Automatically Split Identifiers for Software Analysis.” 6th Working Conference on Mining Software Repositories, May 2009.
    [Show full text]
  • Immediate Mode GUI – Theory and Example
    Immediate Mode GUI – Theory and Example Adam Sawicki http://asawicki.info What is GUI? Graphical User Interface (GUI) aka Head-Up Display (HUD) • Displays information • Handles interaction • Mouse, touch, keyboard, other controllers… 2 Implementation 1. Default system controls • (Used in desktop apps) • Pure system API: WinAPI • C++ library: Qt, wxWidgets, … • Another programming language: C#, Java, … 3 Implementation 1. Default system controls 2. Custom rendering • (Used in games, graphics apps) • Library: Scaleform, Dear ImGui, … • Your own implementation 4 Architecture Object-oriented – seems to be the most natural architecture for GUI • Class hierarchy for types of controls • Design patterns, e.g. composite • Fields: Position, Size, … • Methods: Show, Hide, Enable, Disable, … 5 Architecture Object-oriented – seems to be the most natural architecture for GUI 6 Example 7 Some thoughts • Actual objects also form a hierarchy • Every control is positioned relative to its parent • Similar to how games represent scene • High-level approach found in game engines – hiearchy of objects 8 Immediate mode GUI – idea • On low level (DirectX, OpenGL, Vulkan), rendering is stateless – „immediate mode” • Sequence of draw calls repeated every frame • SetShader • SetTexture • DrawTriangles • SetTexture • DrawTriangles • … • What if… we could render GUI this way? 9 Dear ImGui • https://github.com/ocornut/imgui • C++ library • Bindings to many languages available • License: MIT • Author: Omar Cornut (game developer) • Suited for real-time rendering •
    [Show full text]
  • Eric A. Solla QUIKLOOK 3 SOFTWARE New Program Features
    Seventh Annual QUIKLOOK Users Group Meeting August 14 & 15, 2013 Presented by: Eric A. Solla QUIKLOOK 3 SOFTWARE New Program Features Software Engineer Eric A. Solla QUIKLOOK II Software Windows Quiklook Configure Home Page Test Replay Acquire Monitor QUIKLOOK 3 Software Windows Multiple Use Quiklook Single Use Home Page Test Replay Acquire QUIKLOOK 3 Software Acquisition Screen QUIKLOOK 3 Software TEDS – Transducer Electronic Data Sheet IEEE Standard - IEEE P1451.4/2.0 • All Sensors will have a TEDS Chip • TEDS Chip may contain all - none of the configuration data. • When sensor is present Channel Values and Units Appear • Sensor Description is Shown • Green – All sensor data is on chip no further configuration is necessary • Red – Some configuration data is missing. Configuration should be reviewed • Black – Configuration has been reviewed • Dark Gray Box – Channel Inactive • Light Gray Box - Channel Active • Red Box – Channel is Over Ranging • Channel Name Shows for Active Channels • Channels without Sensors will Not be Acquired and will be Turned Off QUIKLOOK 3 Software Acquisition Screen QUIKLOOK 3 Software Battery Status • Run Time to Empty • Battery Status: • Voltage • Current • Charge • Capacity • Temperature QUIKLOOK 3 Software Acquisition Screen QUIKLOOK 3 Software Excitation Check • Each Channel has independent Excitation • Shorting out one channel will not effect the others • Only Channels with Excitation are Checked • Board Temperatures are shown • Excitation Voltage • Excitation Current QUIKLOOK 3 Software Acquisition Screen
    [Show full text]
  • IT Acronyms.Docx
    List of computing and IT abbreviations /.—Slashdot 1GL—First-Generation Programming Language 1NF—First Normal Form 10B2—10BASE-2 10B5—10BASE-5 10B-F—10BASE-F 10B-FB—10BASE-FB 10B-FL—10BASE-FL 10B-FP—10BASE-FP 10B-T—10BASE-T 100B-FX—100BASE-FX 100B-T—100BASE-T 100B-TX—100BASE-TX 100BVG—100BASE-VG 286—Intel 80286 processor 2B1Q—2 Binary 1 Quaternary 2GL—Second-Generation Programming Language 2NF—Second Normal Form 3GL—Third-Generation Programming Language 3NF—Third Normal Form 386—Intel 80386 processor 1 486—Intel 80486 processor 4B5BLF—4 Byte 5 Byte Local Fiber 4GL—Fourth-Generation Programming Language 4NF—Fourth Normal Form 5GL—Fifth-Generation Programming Language 5NF—Fifth Normal Form 6NF—Sixth Normal Form 8B10BLF—8 Byte 10 Byte Local Fiber A AAT—Average Access Time AA—Anti-Aliasing AAA—Authentication Authorization, Accounting AABB—Axis Aligned Bounding Box AAC—Advanced Audio Coding AAL—ATM Adaptation Layer AALC—ATM Adaptation Layer Connection AARP—AppleTalk Address Resolution Protocol ABCL—Actor-Based Concurrent Language ABI—Application Binary Interface ABM—Asynchronous Balanced Mode ABR—Area Border Router ABR—Auto Baud-Rate detection ABR—Available Bitrate 2 ABR—Average Bitrate AC—Acoustic Coupler AC—Alternating Current ACD—Automatic Call Distributor ACE—Advanced Computing Environment ACF NCP—Advanced Communications Function—Network Control Program ACID—Atomicity Consistency Isolation Durability ACK—ACKnowledgement ACK—Amsterdam Compiler Kit ACL—Access Control List ACL—Active Current
    [Show full text]
  • Visual Studio 2010 Tools for Sharepoint Development
    Visual Studio 2010 for SharePoint Open XML and Content Controls COLUMNS Toolbox Visual Studio 2010 Tools for User Interfaces, Podcasts, Object-Relational Mappings SharePoint Development and More Steve Fox page 44 Scott Mitchell page 9 CLR Inside Out Profi ling the .NET Garbage- Collected Heap Subramanian Ramaswamy & Vance Morrison page 13 Event Tracing Event Tracing for Windows Basic Instincts Collection and Array Initializers in Visual Basic 2010 Generating Documents from SharePoint Using Open XML Adrian Spotty Bowles page 20 Content Controls Data Points Eric White page 52 Data Validation with Silverlight 3 and the DataForm John Papa page 30 Cutting Edge Data Binding in ASP.NET AJAX 4.0 Dino Esposito page 36 Patterns in Practice Functional Programming Core Instrumentation Events in Windows 7, Part 2 for Everyday .NET Developers MSDN Magazine Dr. Insung Park & Alex Bendetov page 60 Jeremy Miller page 68 Service Station Building RESTful Clients THIS MONTH at msdn.microsoft.com/magazine: Jon Flanders page 76 CONTRACT-FIRST WEB SERVICES: Schema-Based Development Foundations with Windows Communication Foundation Routers in the Service Bus Christian Weyer & Buddihke de Silva Juval Lowy page 82 TEST RUN: Partial Anitrandom String Testing Concurrent Affairs James McCaffrey Four Ways to Use the Concurrency TEAM SYSTEM: Customizing Work Items Runtime in Your C++ Projects Rick Molloy page 90 OCTOBER Brian A. Randell USABILITY IN PRACTICE: Getting Inside Your Users’ Heads 2009 Charles B. Kreitzberg & Ambrose Little Vol 24 No 10 Vol OCTOBER 2009 VOL 24 NO 10 OCTOBER 2009 VOLUME 24 NUMBER 10 LUCINDA ROWLEY Director EDITORIAL: [email protected] HOWARD DIERKING Editor-in-Chief WEB SITE MICHAEL RICHTER Webmaster CONTRIBUTING EDITORS Don Box, Keith Brown, Dino Esposito, Juval Lowy, Dr.
    [Show full text]
  • Unicon's Opengl 2D and Integrated 2D/3D Graphics Implementation A
    Unicon's OpenGL 2D and Integrated 2D/3D Graphics Implementation A Thesis Presented in Partial Fulfillment of the Requirements for the Degree of Master of Science with a Major in Computer Science in the College of Graduate Studies University of Idaho by Kevin Z. Young Major Professor: Clinton Jeffery, Ph.D. Committee Members: Terence Soule, Ph.D.; Robert Heckendorn, Ph.D. Department Administrator: Terence Soule, Ph.D. August, 2020 ii Authorization to Submit Thesis This thesis of Kevin Z. Young, submitted for the degree of Master of Science with a Major in Computer Science and titled \Unicon's OpenGL 2D and Integrated 2D/3D Graphics Implementation," has been reviewed in final form. Permission, as indicated by the signatures and dates below is now granted to submit final copies for the College of Graduate Studies for approval. Advisor: Clinton Jeffery, Ph.D. Date Committee Mem- bers: Terence Soule, Ph.D. Date Robert Heckendorn, Ph.D. Date Department Chair: Terence Soule, Ph.D. Date iii Abstract Writing an OpenGL implementation for Unicon's 2D facilities introduces an oppor- tunity to create an integrated 2D/3D graphics mode that is intuitive to the end user. The implementation must be backwards-compatible with existing Unicon 2D graphics programs. The completion of the project will result in the release of the OpenGL im- plementation in public beta. Evaluation of this implementation shows it be qualitatively and quantitatively robust. iv Acknowledgments I would like to acknowledge my parents for giving me to opportunity to pursue higher education. I would also like to acknowledge my major professor, Dr.
    [Show full text]
  • CARPET and FLOOR COVERING Space
    . \ PAGE TWENTY THURSDAY, JULY 10, 1969 Daily Net Press ^ A . - ' i iWanrliPiitfr lEtti^mns Ifpralii For The Week Ended The Weather 2ime 28, U W the use of trainees at that Fair, continued warm and school. humid tonight and tomorrow. Town Gets $8^769 Grant Low tonilght about 6S. High to­ Other budget reductions made Yarnott'Kehl Dohkin Chides Democrats 15,459 necessary by the lower grant morrow in the 80s. For Teacher Aides Plan ManeheUer— A City o f Vittage Charm are: $3,000 to $1,600 for admin­ Oh Case Mt. Study Issue 'Manciiester''has beei;.^ granted At that time, the assumption istration; $1,600 to $600 for Miss Evannle Elizab^rth Kehl /'V teachers’ released time to work VOL. NO. 239 TWENTY-TWO PAGES HIANCHEOTER,' CONN., FRIDAY, JULY 11, 1969 (Cteastfled AdrertUiig on Page 11) $8,769 by the State Deipartmerit was that a grant of $26,000-36,- and Rudolph Martin Yamott, Manchester’s Republican ICE TEN CENTS with trainees; $875 to $263 for tion " is exactly for that, a of Education under the Educa­ 000 would be forthcoming. Be­ bo^ of Bolton, were united in town chairman today oha'rged fusibility study, and for noth­ cause of the reduced grant. clerical help; and $1,130 to $146 tion Professions Development m&riage Saturday, May 31, at ing else.” Cone said several changes have fqr supplies and equipment. that Democratic Statd Rep. N. St. Maurice’s Chtu*ch, Bolton. On Tuesday, Boggini, who Act to work with Manchester had to be made In plans. In­ Cone said MCC would probab­ Charles Boggini and the legis­ was on record for spending the CJommunlty College in training stead of the 10 aides originally ly conduct a threer-week orienta­ The bride is the daughter of lature’s State Development Wrong Sentence teacher aides to cope with the tion period for trainees, who Mr.
    [Show full text]
  • Comparative Studies of 10 Programming Languages Within 10 Diverse Criteria
    Department of Computer Science and Software Engineering Comparative Studies of 10 Programming Languages within 10 Diverse Criteria Jiang Li Sleiman Rabah Concordia University Concordia University Montreal, Quebec, Concordia Montreal, Quebec, Concordia [email protected] [email protected] Mingzhi Liu Yuanwei Lai Concordia University Concordia University Montreal, Quebec, Concordia Montreal, Quebec, Concordia [email protected] [email protected] COMP 6411 - A Comparative studies of programming languages 1/139 Sleiman Rabah, Jiang Li, Mingzhi Liu, Yuanwei Lai This page was intentionally left blank COMP 6411 - A Comparative studies of programming languages 2/139 Sleiman Rabah, Jiang Li, Mingzhi Liu, Yuanwei Lai Abstract There are many programming languages in the world today.Each language has their advantage and disavantage. In this paper, we will discuss ten programming languages: C++, C#, Java, Groovy, JavaScript, PHP, Schalar, Scheme, Haskell and AspectJ. We summarize and compare these ten languages on ten different criterion. For example, Default more secure programming practices, Web applications development, OO-based abstraction and etc. At the end, we will give our conclusion that which languages are suitable and which are not for using in some cases. We will also provide evidence and our analysis on why some language are better than other or have advantages over the other on some criterion. 1 Introduction Since there are hundreds of programming languages existing nowadays, it is impossible and inefficient
    [Show full text]
  • Multi-Platform User Interface Construction – a Challenge for Software Engineering-In-The-Small
    Multi-platform User Interface Construction – A Challenge for Software Engineering-in-the-Small Judith Bishop Department of Computer Science University of Pretoria Pretoria 0002 South Africa [email protected] ABSTRACT The popular view of software engineering focuses on managing 1. INTRODUCTION teams of people to produce large systems. This paper addresses a 1.1 Software engineering different angle of software engineering, that of development for Software engineering as a discipline is perceived as tackling re-use and portability. We consider how an essential part of computing in-the-large. It elevates tools and techniques from the most software products – the user interface – can be successfully level of a craft, to where they can be efficiently and reproducibly engineered so that it can be portable across multiple platforms harnessed for the successful completion of large projects. and on multiple devices. Our research has identified the structure of the problem domain, and we have filled in some of Thirty years ago in 1975, Fred Brooks introduced us to the the answers. We investigate promising solutions from the mythical man month of software development [Brooks 1975] model-driven frameworks of the 1990s, to modern XML-based and followed this with the “no silver bullet” paper, in which he specification notations (Views, XUL, XIML, XAML), multi- talked about software engineering as being a process of building platform toolkits (Qt and Gtk), and our new work, Mirrors software with “specifications, assembly of components, and which pioneers reflective libraries. The methodology on which scaffolding” [Brooks 1987]. Boehm, too, found in 1976 that Views and Mirrors is based enables existing GUI libraries to be software engineering was, encouragingly, concentrating on the transported to new operating systems.
    [Show full text]
  • Copyrighted Material
    Index abld build 36 AVRecorder 270 with C 40 abld freeze 226 IDE 32 abort() 74, 400, 402 MFC 214 abstract base class 46 Base Class Library (BCL) Mutex 388–391 active objects 31, 94–99, 237 C classes 53, 79, 85, 87 381 battery 10, 14, 43 C Wrappers 339–340 Active Template Library Bazaar 392–393 CActive 95, 97 (ATL) 134 BCL. See Base Class Library CActiveScheduler Adapter pattern 384 Binary Runtime Environment Add() 95–96 Alerts API 166 for Wireless Start() 141 AllFiles 130, 349, 355 (BREW) 253–254 CAknAppUi 155 Alloc() 64 Blackberry 11, 17–18 calendar 186, 251 ALLOC panic 45–46, 399 bld.inf 35, 36, 38, callbacks 147, 324, 381 AllocL() 64 115–116, 186, camera 165, 185, 253 All-Tcb 117 211, 292, 293, 316 Cancel() 98 Android 11, 12, 17–18, bldmake 36, 211 capabilities 228, 348–355 244–253, Bluetooth 127, 138 Android 369–371 369–371 Boost 107, 197 trusted applications ANSI C++ standardCOPYRIGHTED 386 BREW. See Binary MATERIAL Runtime 362–363 APIs 68–71, 103–131 Environment for untrusted applications applications, portable Wireless 363–364 375–396 CAPABILITY 37, 355 ARM RealView Compilation capitalization guidelines Tools (RVCT) 34, C 21, 28, 40, 103–131, 50–51 112 214 Carbide.c++ 32, 38, 72, ATL See Active Template C++ 21, 28, 31, 50, 59, 147, 211, 214, Library 61–66, 103–131, 368–369 auto_ptr 85, 143, 144 CArray 58 391–392 abstract base class 46 CArrayFixFlat 58 412 INDEX CArrayFixSeg 58 Common Language Runtime DLL. See dynamic link CArrayVarSeg 58 (CLR) 236 library CArrayXSeg 58 compilers 34, 39–40, Document Object Model catch 72 318–322 (DOM) 184 CBase 53, 54, 82, Component Object Model DOM.
    [Show full text]