Marmalade SDK is a cross-platform software development kit from Ideaworks3D Limited that contains library files, samples, documentation and tools required to develop, test and deploy applications for mobile devices.
The Marmalade SDK was formerly called Airplay SDK but was rebranded Marmalade in June 2011 with the release of version 5.0.0. The SDK started life as an internal library used to develop video games for mobile devices at Ideaworks3D before growing to become a product in its own right.
The underlying concept of the Marmalade SDK is write once, run anywhere so that a single codebase can be compiled and executed on all supported platforms rather than needing to be written in different programming languages using a different API for each platform. This is achieved by providing a C/C++ based API which acts as an abstraction layer for the core API of each platform.
Marmalade released a rapid application development system called Marmalade Quick in February 2013. Marmalade Quick is a set of high-level libraries that sit on top of the main Marmalade SDK and utilise the Lua scripting language to allow programmers to produce games and applications in a short time frame.
In order to use the Marmalade SDK a license must be purchased. There are four levels of license available which provide access to different sets of deployment platforms and levels of technical support. A license is required for each computer that the SDK is installed on.
The license levels, in order of cost, are as follows:
- Android (All license types)
- BlackBerry PlayBook (Indie and above)
- iOS (All license types)
- LG Smart TV (Professional and licensed LG developers only)
- Mac OS X Desktop (Plus and above)
- Windows Desktop (Plus and above)
- Windows Phone 8 (Indie and above)
Marmalade SDK supports deployment of applications to the following platforms. The platforms available for use depend on the license level purchased.
- Marmalade SDK >> C/C++ based development :
C/C++ based development
The main Marmalade SDK consists of two main layers.
A low level C API called Marmalade System provides an abstraction layer that allows a programmer access to device functionality such as memory management, file access, timers, networking, input methods (e.g. accelerometer, keyboard, touch screen) and sound and video output. Marmalade Studio is a C++ API that provides higher level functionality mostly focused on support for 2D (e.g. bitmap handling, fonts) and 3D graphics rendering (e.g. 3D mesh rendering, boned animation). It also includes an extensible resource management system and HTTP networking.
Marmalade SDK allows access to the graphics rendering capabilities of mobile devices either by using the OpenGL ES API directly (both OpenGL ES 1.x and 2.x are supported) or by using the functionality provided by the Marmalade Studio layer.
Marmalade Studio provides support for loading and rendering graphics resources such as bitmap images and 3D model data which would need to be implemented by the user if using OpenGL ES directly. Marmalade Studio also provides exporter plug-ins for use with Autodesk 3DS Max and Autodesk Maya to allow 3D models and animations to be used in applications.
For supporting older devices with no dedicated rendering hardware a software based rendering option is also provided, although this has now been designated a legacy module.
For output of sound effects and music the low level Marmalade System API provides functions that allow compressed audio and video formats to be played back for use as background music or introductory sequences.
Marmalade System also features a sampled sound mixer which can be used for simultaneous playback of multiple uncompressed sampled sound effects with control over pitch and volume for each sound.
- Android software development :
Android software development
The Nexus 4, part of the Google Nexus series, a line of "developer-friendly" devices.
Android software development is the process by which new applications are created for the Android operating system. Applications are usually developed in the Java programming language using the Android Software Development Kit, but other development tools are available. As of October 2012, more than 700,000 applications have been developed for Android, with over 25 billion downloads. A June 2011 research indicated that over 67% of mobile developers used the platform, at the time of publication. In Q2 2012; around 105 million units of Android smartphones were shipped which acquires a total share of 68% in overall smartphones sale till Q2 2012.
The Android software development kit (SDK) includes a comprehensive set of development tools. These includes a debugger, libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials. Currently supported development platforms include computers running Linux (any modern desktop Linux distribution), Mac OS X 10.5.8 or later, Windows XP or later; for the moment one can develop Android software on Android itself by using [AIDE - Android IDE - Java, C++] app and [Android java editor] app. The officially supported integrated development environment (IDE) is Eclipse using the Android Development Tools (ADT) Plugin, though IntelliJ IDEA IDE (all editions) fully supports Android development out of the box, and NetBeans IDE also supports Android development via a plugin. Additionally, developers may use any text editor to edit Java and XML files, then use command line tools (Java Development Kit and Apache Ant are required) to create, build and debug Android applications as well as control attached Android devices (e.g., triggering a reboot, installing software package(s) remotely).
Enhancements to Android's SDK go hand in hand with the overall Android platform development. The SDK also supports older versions of the Android platform in case developers wish to target their applications at older devices. Development tools are downloadable components, so after one has downloaded the latest version and platform, older platforms and tools can also be downloaded for compatibility testing.
Android applications are packaged in .apk format and stored under /data/app folder on the Android OS (the folder is accessible only to the root user for security reasons). APK package contains .dex files (compiled byte code files called Dalvik executables), resource files, etc.
Android Debug Bridge
The Android Debug Bridge (ADB) is a toolkit included in the Android SDK package. It consists of both client and server-side programs that communicate with one another. The ADB is typically accessed through the command-line interface.
The format for issuing commands through the ADB is typically:
adb [-d|-e|-s ]
In a security issue reported in March 2011, ADB was targeted as a vector to attempt to install a rootkit on connected phones using a "resource exhaustion attack".
Fastboot is a diagnostic protocol included with the SDK package used primarily to modify the flash filesystem via a USB connection from host computer. It requires that the device be started in a boot loader or Second Program Loader mode in which only the most basic hardware initialization is performed. After enabling the protocol on the device itself, it will accept a specific set of commands sent to it via USB using a command line. Some of most commonly used fastboot commands include:
flash - Rewrites a partition with a binary image stored on the host computer.
erase - Erases a specific partition.
reboot - Reboots the device into either the main operating system, the system recovery partition or back into its bootloader.
devices - Displays a list of all devices (with the serial number) connected to the host computer.
format - Format a specific partition. The file system of the partition must be recognized by the device.
Native development kit
Libraries written in C and other languages can be compiled to ARM, MIPS or x86 native code and installed using the Android Native Development Kit. Native classes can be called from Java code running under the Dalvik VM using the System.loadLibrary call, which is part of the standard Android Java classes.
Complete applications can be compiled and installed using traditional development tools. The ADB debugger gives a root shell under the Android Emulator which allows native ARM, MIPS or x86 code to be uploaded and executed. Native code can be compiled using GCC on a standard PC. Running native code is complicated by Android's use of a non-standard C library (libc, known as Bionic). The graphics library that Android uses to arbitrate and control access to this device is called the Skia Graphics Library (SGL), and it has been released under an open source licence. Skia has backends for both Win32 and Unix, allowing the development of cross-platform applications, and it is the graphics engine underlying the Google Chrome web browser.
Unlike Java application development based on the Eclipse IDE, the NDK is based on command-line tools and requires invoking them manually to build, deploy and debug the apps. Several third-party tools allow integrating the NDK into Eclipse and Visual Studio.
Android Open Accessory Development Kit
The Android 3.1 platform (also backported to Android 2.3.4) introduces Android Open Accessory support, which allows external USB hardware (an Android USB accessory) to interact with an Android-powered device in a special "accessory" mode. When an Android-powered device is in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates devices) and the Android-powered device acts as the USB device. Android USB accessories are specifically designed to attach to Android-powered devices and adhere to a simple protocol (Android accessory protocol) that allows them to detect Android-powered devices that support accessory mode.
App Inventor for Android
On 12 July 2010, Google announced the availability of App Inventor for Android, a Web-based visual development environment for novice programmers, based on MIT's Open Blocks Java library and providing access to Android devices' GPS, accelerometer and orientation data, phone functions, text messaging, speech-to-text conversion, contact data, persistent storage, and Web services, initially including Amazon and Twitter. "We could only have done this because Android’s architecture is so open," said the project director, MIT's Hal Abelson. Under development for over a year, the block-editing tool has been taught to non-majors in computer science at Harvard, MIT, Wellesley, Trinity College (Hartford,) and the University of San Francisco, where Professor David Wolber developed an introductory computer science course and tutorial book for non-computer science students based on App Inventor for Android.
HyperNext Android Creator
HyperNext Android Creator (HAC) is a software development system aimed at beginner programmers that can help them create their own Android apps without knowing Java and the Android SDK. It is based on HyperCard that treated software as a stack of cards with only one card being visible at any one time and so is well suited to mobile phone applications that have only one window visible at a time. HyperNext Android Creator's main programming language is simply called HyperNext and is loosely based on Hypercard's HyperTalk language. HyperNext is an interpreted English-like language and has many features that allow creation of Android applications. It supports a growing subset of the Android SDK including its own versions of the GUI control types and automatically runs its own background service so apps can continue to run and process information while in the background.
The SDL library offers also a development possibility beside Java, allowing the development with C and the simple porting of existing SDL and native C applications. By injection of a small Java shim and JNI the usage of native SDL code is possible, allowing Android ports like e.g. the Jagged Alliance 2 video game.
The Simple project
The goal of Simple is to bring an easy-to-learn-and-use language to the Android platform. Simple is a BASIC dialect for developing Android applications. It targets professional and non-professional programmers alike in that it allows programmers to quickly write Android applications that use the Android runtime components.
Similar to Microsoft Visual Basic 6, Simple programs are form definitions (which contain components) and code (which contains the program logic). The interaction between the components and the program logic happens through events triggered by the components. The program logic consists of event handlers which contain code reacting to the events.
The Simple project is not very active, the last source code update being in August 2009.
RFO Basic is an on-device interpreter which provides simple access to hardware, sensors, sound, graphics, multitouch, file system, SQLite, network sockets, FTP, HTTP, Bluetooth, HTML GUI, encryption, SMS, phone, email, text-to-speech, voice recognition, GPS, math, string functions, list functions, and other essentials. It is an open source project which can produce full-fledged Android APK files. Development of RFO Basic is active, and there is a strong online community of RFO Basic! developers.
Basic4android is a commercial product similar to Simple. It is inspired by Microsoft Visual Basic 6 and Microsoft Visual Studio. It makes android programming much simpler for regular Visual Basic programmers who find coding in Java difficult. Basic4android is very active, and there is a strong online community of Basic4android developers.m
Android APIMiner is a platform that automatically instruments the Javadoc documentation of the Android API with examples of usage, extracted from real open-source Android applications. To improve the quality of the extracted examples, APIMiner relies on an intra-procedural static slicing algorithm.
Android Developer Challenge
The Android Developer Challenge was a for the most innovative application for Android. Google offered prizes totaling 10 million US dollars, distributed between ADC I and ADC II. ADC I accepted submissions from 2 January to 14 April 2008. The 50 most promising entries, announced on 12 May 2008, each received a $25,000 award to further development. It ended in early September with the announcement of ten teams that received $275,000 each, and ten teams that received $100,000 each. ADC II was announced on 27 May 2009. The first round of the ADC II closed on 6 October 2009. The first-round winners of ADC II comprising the top 200 applications were announced on 5 November 2009. Voting for the second round also opened on the same day and ended on November 25. Google announced the top winners of ADC II on November 30, with SweetDreams, What the Doodle!? and WaveSecure being nominated the overall winners of the challenge.
There is a community of open-source enthusiasts that build and share Android-based firmware with a number of customizations and additional features, such as FLAC lossless audio support and the ability to store downloaded applications on the microSD card. This usually involves rooting the device. Rooting allows users root access to the operating system, enabling full control of the phone. In order to use custom firmwares the device's bootloader must be unlocked. Rooting alone does not allow the flashing of custom firmware. Modified firmwares allow users of older phones to use applications available only on newer releases.
Those firmware packages are updated frequently, incorporate elements of Android functionality that haven't yet been officially released within a carrier-sanctioned firmware, and tend to have fewer limitations. CyanogenMod and OMFGB are examples of such firmware.
On 24 September 2009, Google issued a cease and desist letter to the modder Cyanogen, citing issues with the re-distribution of Google's closed-source applications within the custom firmware. Even though most of Android OS is open source, phones come packaged with closed-source Google applications for functionality such as the Android Market and GPS navigation. Google has asserted that these applications can only be provided through approved distribution channels by licensed distributors. Cyanogen has complied with Google's wishes and is continuing to distribute this mod without the proprietary software. It has provided a method to back up licensed Google applications during the mod's install process and restore them when the process is complete.
Obstacles to development include the fact that Android does not use established Java standards, that is, Java SE and ME. This prevents compatibility between Java applications written for those platforms and those written for the Android platform. Android only reuses the Java language syntax and semantics, but it does not provide the full class libraries and APIs bundled with Java SE or ME. However, there are multiple tools in the market from companies such as Myriad Group and UpOnTek that provide Java ME to Android conversion services.
History ( Early Android device )
Android is created by the Open Handset Alliance which is led by Google. The early feedback on developing applications for the Android platform was mixed. Issues cited include bugs, lack of documentation, inadequate QA infrastructure, and no public issue-tracking system. (Google announced an issue tracker on 18 January 2008.) In December 2007, MergeLab mobile startup founder Adam MacBeth stated, "Functionality is not there, is poorly documented or just doesn't work... It's clearly not ready for prime time." Despite this, Android-targeted applications began to appear the week after the platform was announced. The first publicly available application was the Snake game. The Android Dev Phone is a SIM-unlocked and hardware-unlocked device that is designed for advanced developers. While developers can use regular consumer devices purchased at retail to test and use their applications, some developers may choose not to use a retail device, preferring an unlocked or no-contract device.
A preview release of the Android SDK was released on 12 November 2007. On 15 July 2008, the Android Developer Challenge Team accidentally sent an email to all entrants in the Android Developer Challenge announcing that a new release of the SDK was available in a "private" download area. The email was intended for winners of the first round of the Android Developer Challenge. The revelation that Google was supplying new SDK releases to some developers and not others (and keeping this arrangement private) led to widely reported frustration within the Android developer community at the time.
On 18 August 2008, the Android 0.9 SDK beta was released. This release provided an updated and extended API, improved development tools and an updated design for the home screen. Detailed instructions for upgrading are available to those already working with an earlier release. On 23 September 2008, the Android 1.0 SDK (Release 1) was released. According to the release notes, it included "mainly bug fixes, although some smaller features were added." It also included several API changes from the 0.9 version. Multiple versions have been released since it was developed .
- Metismo :
Metismo was a mobile middleware developer founded in August 2007 by John Chasey, Glenn Broadway, Nick Reed and Matthew Cope who previously had been employed at mobile game studio IOMO, a subsidiary of InfoSpace.
In May 2010 Metismo was named one of the winners in the wireless category at the TiEcon 2010. The TiE50 awards are presented by TiE, the organizer of TiEcon 2010 which claims to be the world’s largest conference for entrepreneurs.
In May 2011 Metismo was acquired by Software AG for an undisclosed amount.
Metismo's core product is their Java based Cross-platform middleware technology Bedrock, used to ease development of games and applications across a wide range of Java ME handsets. The Bedrock Cross-Compiler automatically converts the Java source to other programming languages including C++, C# and ActionScript. This process along with the Bedrock supplied libraries enables a title to be converted to native OS platforms such as BREW, Symbian and Windows Mobile.
Subsequently OpenGL ES support was announced in July 2008 via JSR 239 along with support for the Apple iPhone.
During 2009 a number of other platforms were announced including and HTML5 & Flash. Additional platforms continue to be added regularly with Windows Phone 7 being the most recent addition in October 2010.
- Java ME
- Palm OS
- Nintendo DS
- Sony PSP
- Windows Mobile
- Windows Phone 7
- iOS SDK :
iOS (previously iPhone OS) is a mobile operating system developed and distributed by Apple Inc. Originally unveiled in 2007 for the iPhone, it has been extended to support other Apple devices such as the iPod Touch (September 2007), iPad (January 2010) and second-generation Apple TV (September 2010). Unlike Microsoft's Windows Phone and Google's Android, Apple does not license iOS for installation on non-Apple hardware. As of June 2013, Apple's App Store contained more than 900,000 iOS applications, 375,000 of which were optimised for iPad. These apps have collectively been downloaded more than 50 billion times. It had a 21% share of the smartphone mobile operating system units shipped in the fourth quarter of 2012, behind only Google's Android. In June 2012, it accounted for 65% of mobile web data consumption (including use on both the iPod Touch and the iPad). At the half of 2012, there were 410 million devices activated. According to the special media event held by Apple on September 12, 2012, 400 million devices had been sold by June 2012.
The user interface of iOS is based on the concept of direct manipulation, using multi-touch gestures. Interface control elements consist of sliders, switches, and buttons. Interaction with the OS includes gestures such as swipe, tap, pinch, and reverse pinch, all of which have specific definitions within the context of the iOS operating system and its multi-touch interface. Internal accelerometers are used by some applications to respond to shaking the device (one common result is the undo command) or rotating it in three dimensions (one common result is switching from portrait to landscape mode.
iOS is derived from OS X, with which it shares the Darwin foundation and various application frameworks. iOS is Apple's mobile version of the OS X operating system used on Apple computers.
Major versions of iOS are released annually. The current release, iOS 6, was released in September 2012, and the next release, iOS 7, is currently available to developers as a beta version.
In iOS, there are four abstraction layers: the Core OS layer, the Core Services layer, the Media layer, and the Cocoa Touch layer. The current version of the operating system (iOS 6.1.3) dedicates 1-1.5 GB of the device's flash memory for the system partition, using roughly 800 MB of that partition (varying by model) for iOS itself.
iOS currently runs on the iPhone, iPad, iPod Touch and Apple TV.
The operating system was unveiled with the iPhone by Thiyagarajan B, January 9, 2007, and released in June of that year. At first, Apple marketing literature did not specify a separate name for the operating system, stating simply that the "iPhone runs OS X". Initially, third-party applications were not supported. Steve Jobs' reasoning was that developers could build web applications that "would behave like native apps on the iPhone". On October 17, 2007, Apple announced that a native Software Development Kit (SDK) was under development and that they planned to put it "in developers' hands in February". On March 6, 2008, Apple released the first beta, along with a new name for the operating system: "iPhone OS".
Apple had released the iPod Touch, which had most of the non-phone capabilities of the iPhone. Apple also sold more than one million iPhones during the 2007 holiday season. On January 27, 2010, Apple announced the iPad, featuring a larger screen than the iPhone and iPod Touch, and designed for web browsing, media consumption, and reading iBooks.
In June 2010, Apple rebranded iPhone OS as "iOS". The trademark "IOS" had been used by Cisco for over a decade for its operating system, IOS, used on its routers. To avoid any potential lawsuit, Apple licensed the "IOS" trademark from Cisco.
By late 2011, iOS accounted for 60% of the market share for smartphones and tablet computers. By the end of 2012, iOS accounted for 21% of the smartphone OS market and 43.6% of the tablet OS market.
Before iOS 4, multitasking was limited to a selection of the applications Apple included on the device. Users could, however "jailbreak" their device in order to unofficially multitask. Starting with iOS 4, on third-generation and newer iOS devices, multitasking is supported through seven background APIs:
Background audio - application continues to run in the background as long as it is playing audio or video content
Voice over IP - application is suspended when a phone call is not in progress
Background location - application is notified of location changes
Local notifications - application schedules local notifications to be delivered at a predetermined time
Task completion - application asks the system for extra time to complete a given task
Fast app switching - application does not execute any code and may be removed from memory at any time
In iOS 5, three new background APIs were introduced:
- Newsstand - application can download content in the background to be ready for the user
- External Accessory - application communicates with an external accessory and shares data at regular intervals
- Bluetooth Accessory - application communicates with a bluetooth accessory and shares data at regular intervals
- In iOS 7, Apple introduced a new multitasking feature, providing all apps with the ability to perform background updates. This feature prefers
- to update the user's most frequently used apps and prefers to use WiFi networks over a cellular network, without markedly reducing the device's battery life.
In iOS 4.0 to iOS 6.x, double-clicking the home button activates the application switcher. A scrollable dock-like interface appears from the bottom, moving the contents of the screen up. Choosing an icon switches to an application. To the far left are icons which function as music controls, a rotation lock, and on iOS 4.2 and above, a volume controller. Holding the icons briefly makes them "jiggle" (similarly to the homescreen) and allows the user to force quit the applications by simply tapping the red minus circle that appears at the corner of the app's icon. With the introduction of iOS 7, double clicking the home button also activates the application switcher. However, unlike previous versions it will now display screenshots of open applications on top of the icon and horizontal scrolling allows for browsing through previous apps. iOS 7 also introduces a faster way for a user to close apps by flicking the screenshot of the app upward.
Siri is an intelligent personal assistant and knowledge navigator which works as an application on supported devices. The service, directed by the user's spoken commands, can do a variety of different tasks, such as call or text someone, open an app, search the web, lookup sports information, find directions or locations, and answer general knowledge questions (e.g. "How many cups are in a gallon?"). Siri was updated in iOS 7 with a new interface, faster answers, Wikipedia, Twitter, and Bing support and the voice was changed to sound more human. Siri is currently only available on iPhone 4S, iPhone 5, fifth-generation iPod Touch, iPad Mini, third- and fourth-generation iPad.
The applications must be written and compiled specifically for iOS and the ARM architecture. The Safari web browser supports web applications as with other web browsers. Authorized third-party native applications are available for devices running iOS 2.0 and later through Apple's App Store. A Q3 2013 study found that mobile developers use iOS as a primary platform more than Android (59% vs. 49%), despite Android being a more popular platform overall.
iOS SDK 6.1 included in Xcode 4.6
On October 17, 2007, in an open letter posted to Apple's "Hot News" weblog, Steve Jobs announced that a software development kit (SDK) would be made available to third-party developers in February 2008. The SDK was released on March 6, 2008, and allows developers to make applications for the iPhone and iPod Touch, as well as test them in an "iPhone simulator". However, loading an application onto the devices is only possible after paying an iPhone Developer Program fee.
The fees to join the respective developer programs for iOS and OS X were each set at $99.00 per year. As of July 20, 2011, Apple released Xcode on its Mac App Store free to download for all OS X Lion users, instead of as a standalone download. Users can create and develop iOS and OS X applications using a free copy of Xcode; however, they cannot test their applications on a physical iOS device, or publish them to the App store, without first paying the $99.00 iPhone Developer or Mac Developer Program fee.
Since the release of Xcode 3.1, Xcode is the development environment for the iOS SDK. iPhone applications, like iOS and OS X, are written in Objective-C.
Developers are able to set any price above a set minimum for their applications to be distributed through the App Store, keeping 70% for the developer, and leaving 30% for Apple. Alternatively, they may opt to release the application for free and need not pay any costs to release or distribute the application except for the membership fee.
As iOS uses a variant of the same XNU kernel that is found in Mac OS X, the tool chain used for developing on iOS is also based on Xcode.
The SDK contents is broken down into the following sets:
- Cocoa Touch
- Multi-touch events and controls
- Accelerometer support
- View hierarchy
- Localization (i18n)
- Camera support
- audio mixing and recording
- Video playback
- Image file formats
- Core Animation
- Core Services
- Embedded SQLite database
- Core Location
- Power management
- File system
Along with the Xcode toolchain, the SDK contains the iPhone Simulator, a program used to simulate the look and feel of the iPhone on the developer's desktop. Originally called the Aspen Simulator, it was renamed with the Beta 2 release of the SDK. Note that the iPhone Simulator is not an emulator and runs code generated for an x86 target rather than ARM.
The latest SDK, iOS 6.0 SDK in Xcode 4.5, requires an Intel Mac running Mac OS X 10.7.4 "Lion" or later. Other operating systems, including Microsoft Windows and older versions of Mac OS X, are not supported.
Core Location is a software framework in iOS. It is primarily used by applications on iOS (formerly iPhone OS) 2.0 or later for detection of the device's location, and on supported devices running iOS 3.0 or later, the device's heading. On the iPod Touch and iPad (Wifi-only models), Core Location uses Skyhook Wireless's Wi-Fi-based positioning system. On the original iPhone, it uses cellular tower triangulation in addition to Wi-Fi positioning. On the iPhone 3G or newer and iPad (Wifi + Cellular models), it also uses the available GPS hardware, and the iPhone 4S uses all the aforementioned technologies with the addition of GLONASS. The actual selection of location method is abstracted from the user and developer.
Core Location also allows applications to retrieve the device's heading from the built-in magnetometer (digital compass). It not only can detect the magnetic heading and true heading (combined with the GPS), but also can get raw heading data. Heading information is only available in iOS 3.0 or later running on the iPhone 3GS or newer and all iPad models.
The framework was announced as part of the iPhone Software Roadmap event on March 6, 2008, and was made available as part of the iOS SDK.
Mobile Safari supports SVG starting with iPhone OS 2.1. The SVG support features scripting and most of the static parts of the SVG 1.1. specification. SMIL animation is not yet supported for SVG graphics. It will be delivered after the Webkit SMIL implementation is mature enough. In addition to SVG, the HTML Canvas is supported.
Since its initial release, iOS has been subject to a variety of different hacks centered around adding functionality not allowed by Apple. Prior to the 2008 debut of the native iOS App Store, the primary motive for jailbreaking was to install third-party native applications, which was not allowed by Apple at the time. Apple claimed that it will not release iOS software updates designed specifically to break these tools (other than applications that perform SIM unlocking); however, with each subsequent iOS update, previously un-patched jailbreak exploits are usually patched.
Since the arrival of Apple's native iOS App Store, and along with it third-party applications, the general motives for jailbreaking have changed. People jailbreak for many different reasons, including gaining filesystem access, installing custom device themes, and modifying the device SpringBoard. On some devices, jailbreaking also makes it possible to install alternative operating systems, such as Android and the Linux kernel. Primarily, users jailbreak their devices because of the limitations of iOS. It should be noted that depending on the method used, the effects of jailbreaking may be permanent, or can be restored to the original state.
In 2010, the Electronic Frontier Foundation (EFF) successfully convinced the U.S. Copyright Office to allow an exemption to the general prohibition on circumvention of copyright protection systems under the Digital Millennium Copyright Act (DMCA). The exemption allows jailbreaking of iPhones for the sole purpose of allowing legally obtained applications to be added to the iPhone. The exemption does not affect the contractual relations between Apple and an iPhone owner, for example, jailbreaking voiding the iPhone warranty; however, it is solely based on Apple's discretion on whether they will fix jailbroken devices in the event that they need to be repaired. At the same time, the Copyright Office exempted unlocking an iPhone from DMCA's anticircumvention prohibitions. Unlocking an iPhone allows the iPhone to be used with any wireless carrier using the same GSM or CDMA technology for which the particular phone model was designed to operate.
- jQuery Mobile :
Compatible with all major mobile platforms as well as all major desktop browsers, including iOS, Android, Blackberry, WebOS, Symbian, Windows Phone, and more.
Built on top of jQuery core so it has a minimal learning curve for people already familiar with jQuery syntax.
- Theming framework that allows creation of custom themes.
- The same underlying codebase will automatically scale to any screen
- HTML5-driven configuration for laying out pages with minimal scripting
- Ajax-powered navigation with animated page transitions that provides ability to clean URLs through pushState.
- UI widgets that are touch-optimized and platform-agnostic
A basic example
Every website using jQuery Mobile is more or less built like the following example. The first step is to link to the jQuery Mobile libraries and stylesheet (they can also be downloaded and hosted locally, but it is recommended to link to the files hosted on the jQuery CDN). In the body you can see divs with an attribute called "data-role", this attribute is what tells jQuery Mobile what is inside this div and how it should look. A div with the data-role "page" represents what the user will experience as one "website". A page normally has a "header", a "footer" and "content" (but not necessarily - any HTML is allowed within the page div). One HTML document can contain more than one "page" element thus more than one "website". This way it is only necessary to load one file including multiple pages. One page can link to another page within the same file using "#" plus its id (e.g. href="#second").
In the example below two other data- attributes are used. The "data-theme" attribute tells jqm what theme to use. The "data-add-back-btn" adds a back button to the page if set to "true".
Lets have a brief look at Data Attributes used in this example:
data-role - Specifies the role of the element, like header, content, footer etc.
data-position - specifies whether the element should be fixed, in which case it will render at the top (for header) or bottom (for footer) data-transition - specifies which transition to use when loading new pages, can be set to: slide, slideup, slidedown, pop, flip or fade data-theme - specifies which design theme to use for elements within container, can be set to: a, b, c, d, e
jQuery Mobile provides a powerful theming framework that allows developers to customize color schemes and certain CSS aspects of UI features. Developers can use the jQuery Mobile ThemeRoller application to customize these appearances and create highly branded experiences. After developing a theme in the ThemeRoller application, programmers can download a custom CSS file and include it in their project to use their custom theme.
Each theme can contain up to 26 unique color "swatches," each of which consists of a header bar, content body, and button states. Combining different swatches allows developers to create a wider range of visual effects than they would be able to with just one swatch per theme. Switching between different swatches within a theme is as simple as adding an attribute called "data-theme" to HTML elements.
The default jQuery Mobile theme comes with five different color swatches, named "a", "b", "c", "d", and "e".
There are already a handful of open source style themes that are developed and supported by third-party organizations. One such open source style theme is the Metro style theme that was developed and released by Microsoft Open Technologies, Inc. The Metro style theme is meant to mimic the UI of the Metro (design language) that Microsoft uses in its mobile operating systems.
- RhoMobile Suite :
The RhoMobile Suite (formerly known as Rhodes Framework) is an open-source framework developed by Motorola and now owned by Motorola Solutions for building native applications that can run on a variety of devices. This means that regardless of device brand, screen size, or major operating system, an application produced on the RhoMobile Suite framework should look exactly the same when accessed. It is released under the MIT license. Rhodes uses a Model-View-Controller pattern. Views are written in HTML (including HTML5). Controllers are written in Ruby.
Rhodes supports iOS, Android, Windows Mobile, Research in Motion (BlackBerry), and Windows Phone 7. Symbian support was dropped after Rhodes 1.2
Currently at least 105 applications that utilized this framework are actively available for download.
- PhoneGap :
The software underlying PhoneGap is Apache Cordova. The software was previously called just "PhoneGap", then "Apache Callback". Apache Cordova is open source software.
First developed at an iPhoneDevCamp event in San Francisco, PhoneGap went on to win the People's Choice Award at O'Reilly Media's 2009 Web 2.0 Conference and the framework has been used to develop many apps. Apple Inc. has confirmed that the framework has its approval, even with the new 4.0 developer license agreement changes. The PhoneGap framework is used by several mobile application platforms such as ViziApps, Worklight, Convertigo, and appMobi as the backbone of their mobile client development engine. Adobe officially announced the acquisition of Nitobi Software (the original developer) on October 4, 2011. Coincident with that, the PhoneGap code was contributed to the Apache Software Foundation to start a new project called Apache Cordova. The project original name, Apache Callback, was viewed as too generic. Then it also appears in Adobe Systems as Adobe PhoneGap and also as Adobe Phonegap Build.
Early versions of PhoneGap required a person making iOS apps to have an Apple computer, and a person making Windows Mobile apps to have a computer running Windows. After September 2012, the "PhoneGap Build" service allows a programmer to upload his source code to a "cloud compiler" that generates apps for every supported platform.
Design and Rationale
However, the use of web-based technologies leads many PhoneGap applications to run slower than native applications with similar functionality. Adobe Systems warns that applications built using PhoneGap may be rejected by Apple for being too slow or not feeling "native" enough (having appearance and functionality consistent with what users have come to expect on the platform).
- Aqua (user interface) :
Aqua (user interface)
Aqua is the GUI and primary visual theme of Apple Inc.'s OS X operating system. It is based around the theme of water, as its name suggests, with droplet-like elements and liberal use of translucency and reflection effects. Steve Jobs noted Aqua's glossy aesthetic: "One of the design goals was when you saw it you wanted to lick it."
The Aqua theme and user interface was first introduced at the January 2000 Macworld Conference & Expo in San Francisco. Aqua's first appearance in a commercial product was in the July 2000 release of iMovie 2.
Aqua design elements make up the appearance of most OS X applications. Its goal is to "incorporate color, depth, translucence, and complex textures into a visually appealing interface" in Mac OS X applications. Although Aqua is the entire user interface, two notable features of Aqua are gel-like buttons (such as the ones colored red, yellow, and green that control the windows), and a Dock, which facilitates the launching of and navigation between applications.
Aqua is the successor to Platinum, which was used in Mac OS 8, Mac OS 9 and Mac OS X Server 1.2.
The first version of the Aqua GUI, from Mac OS X Public Beta. It differs vastly from the GUI of Mac OS 9 with glass-like elements and a Dock, among other things, although the Apple reverted to its traditional position on the left-hand side of the menu bar for the final release of OS X 10.0.
Much of Aqua's original design resembles the translucent two-tone look of Apple's contemporary hardware. In 2003 and 2004, Apple moved to the use of brushed metal in their industrial design (such as with the aluminum Apple Cinema Displays); in Mac OS X Panther, Aqua changed accordingly, incorporating the additional brushed metal look while deemphasizing the pinstripe backgrounds and transparency effects. This somewhat inconsistent mix of interface styles has been controversial among the Mac OS X user community. Apple replaced these inconsistent window themes with the introduction of Mac OS X Leopard. Starting with Leopard, the brushed metal look has been phased out, in favor of white inactive windows and gradient grey active windows.
Mac OS X 10.2 (Jaguar)
Jaguar brought with it flatter interface elements, such as new buttons and drop-down menus, as well as reducing the transparency to tone down the pinstripes in windows and menus. These trends continued in subsequent Mac OS X releases.
The Panther version of the Aqua GUI shows several changes, most notably brushed metal.
Mac OS X 10.3 (Panther)
In Mac OS X Panther, brushed metal was fused to the heart of the Macintosh: the Finder. New buttons were made to appear sunken into their surroundings, following a general trend of more flattened interface elements in the operating system. The traditional pinstripes were replaced with a much subtler theme, most notably in the menu bar, and the use of transparency was again reduced (for example in the title bars of inactive windows). Tabs also changed; they were made flatter and the whole tab area was sunken rather than raised. Tab buttons were centered on the top border of the tab area. New icons appeared across the system, including a new flatter, glossier Finder icon and a new System Preferences icon.
Mac OS X 10.4 (Tiger)
Tiger brought more subtle changes, including the Unified titlebar scheme. Pinstripes were removed from the menu bar entirely, replaced by new glossy look. Tabs were altered to appear as normal segmented buttons. The Apple menu icon was toned down to a more matte appearance and the new Spotlight search utility was permanently bound to the very right of the menu bar in the same color and gradient of the Apple menu.
The Aqua GUI in Mac OS X Leopard. Among the changes were a gradient window style and a new Dock and menu bar.
Mac OS X 10.5 (Leopard) and Mac OS X 10.6 (Snow Leopard)
In Leopard, several changes were made to the user interface. The Dock's look became more three dimensional, with a reflective “floor” for icons to sit on and icon labels with a semi-transparent background. Active applications were no longer indicated by a black triangle, but by a glowing blue dot. The dividing line between applications and other Dock items was changed to resemble a pedestrian crossing instead of a simple line. The dock became reflective of all elements on the screen except for the mouse cursor. The file “stacks” concept was introduced: groups of files which could be stored in the Dock, and fan out when clicked.
The Dock became a black translucent with a white border and rounded corners when placed on the sides, but it retained a 2D form of its modified dividing line. The 2D form could also be applied to the default bottom Dock position with third-party utilities or by running a Terminal command to update a system configuration file.
On Macs with a Core Image–capable graphics card installed, the menu bar at the top of the screen could optionally be semi-transparent. This included all Intel Macs and PowerPC G5s, as well as some later PowerPC G4s. Graphic card upgrades were also supported. Contextual menus were slightly rounded, like the corners of windows.
The drop shadow of the active window was greatly enlarged for emphasis. Inactive windows were less prominent for greater contrast between active and inactive windows. Title bars were a darker shade of grey, and all toolbars used a darker “Unified” scheme. The Brushed metal design was dropped , replaced by a white “plastic” gradient scheme. Many windows changed to have minimal borders or none at all. Pinstripes in window backgrounds were completely removed. Sheets became semi-transparent as well as blurring the area behind them for greater legibility. Numerous icons were changed, including a set of new folder icons, a new System Preferences icon and an updated Terminal icon, and all main icons were redrawn in a high-resolution 512-by-512 size for sharper viewing in Quick Look and Cover Flow.
The default background image was changed to a purple aurora superimposed over a star field instead of the fluid abstract blue designs in prior versions of OS X.
Mac OS X 10.7 (Lion)
With Mac OS X Lion, many changes were introduced. The aqua scroll bars were traded for iOS-style ones. Push Buttons became square, similar to Mac OS 8 and 9, but still kept their Aqua look. Traffic light windows controls shrank. Many elements with a previously brighter blue, such as highlighted buttons, tabs, loading bars, and switches became less pronounced and less saturated, giving them a flatter, more consistent look. The window background became slightly brighter, round textured buttons transparent, and window corners rounded. Windows in Lion could be displayed in a "Full Screen" mode; on some applications, the window can take up the whole monitor space.
OS X 10.8 (Mountain Lion)
The user interface in OS X Mountain Lion, as far as buttons and windows are concerned, was essentially unchanged from that of Lion, except for a change in the Dock's appearance. The Dock changed to a frosted glass style, with rounded corners, a new separator, and blurred icon reflections. This was the first major change to the Dock's appearance since 10.5 Leopard.
The Aqua theme has also been embedded in applications made by Apple for use in Microsoft Windows such as iTunes, QuickTime, and the Safari web browser (although removed on Safari 4). iTunes for Windows has followed the same theme as the Mac OS X version, with the exception of the use of native Windows user interface controls and Windows-style titlebar buttons at the upper right of the player window.
The Windows version of Safari, in version 3, included a functional Aqua look and feel (including pulsing scrollbar, sheets, and other interface similarities). As of version 4, a more Windows-like theme is employed using the standard Windows user interface controls and window border. QuickTime for Windows uses the same theme as seen in older versions of QuickTime for Mac OS X, with Brushed Metal windows and Aqua buttons on top.
White and blue are two principal colors which define the Aqua style. Title bars, window backgrounds, buttons, menus and other interface elements are all found in white, and some, like scrollbars and menu items, are accented with a shade of blue. Most of the interface elements have a "glass" or "gel" effect applied to them; for instance, David Pogue described the original Aqua scrollbars as "lickable globs of Crest Berrylicious Toothpaste Gel".
Mac OS X also allows users to choose a Graphite version instead of a Blue version of the interface. When using the Graphite scheme, controls appear grey rather than blue or multicolored. For example, the title bar controls become three grey balls rather than traffic lights. This color scheme was added at the behest of developers and users who found the blue scheme to be too garish or unprofessional.
Most of the controls are available in three sizes: regular, small and mini.
Both the standard Aqua-themed pinstriped windows and the brushed metal windows appear to have the title bar buttons sunken into the window, however in versions of Mac OS X prior to 10.2, the buttons appeared to be on top of the pinstriped windows. Brushed metal windows also have more plastic-like buttons.
Toolbars are available in two types: standard or unified. Standard retains the normal Aqua title bar and simply places a row of icons below it, whilst the unified look extends the title bar downwards and places icons on top of it, as if the window has one large title bar. Sheets are dialog boxes that are modal to a specific window. When opened, they are thrust towards the user like a sheet of paper, hence the name. They are partially transparent and focus attention on the content of the sheet. The parent window's controls are disabled until the sheet is dismissed, but the user is able to continue work in other windows (including those in the same application) while the sheet is open.
The menu bar in Leopard.
Menus are backed with a slightly translucent solid gray, and when menu items are highlighted they appear blue. In application menus, which run in a single bar across the top of the screen, keyboard shortcuts appear to the right-hand side of the menu whilst the actual menu item is on the left.
Drop down menus for use in windows themselves are also available in several varieties. The standard "pop up" menu is white with a blue end cap with opposing arrows, whilst 'pull down' menus only have one downward facing arrow in the end cap. 'Pull down' menus are available in four different Aqua varieties, most of which have fallen into disuse in later Mac OS X releases.
Text boxes and fields
Text boxes are black on white text with a sunken effect border. In addition to regular square text boxes, rounded search text boxes are available . For more extensive text requirements, there is also a multi-line text field. A combined text box and pull down menu is available, which allows the user to type in a value in addition to choosing from a menu. There is also a combination textbox and picker control, which allows the user to type in a date and time or edit it with directional buttons. Mac OS X v10.4 introduced a new interface element that allows the user to drag non-editable 'tokens' to a text box, between which text can be typed. Whitespace before and after the tokens is trimmed.
Standard push buttons with rounded corners are available in two varieties: white and blue. A blue button is the default action, and will appear to "pulse" to prompt the user to carry out that action. The action of a blue button can usually also be invoked with the return key. White buttons are usually associated with all other actions.
Also available are rounded bevel buttons, designed to hold an icon; standard square buttons; glass square buttons and round buttons. In addition, circular, purple online help buttons are available which display help relative to the current task when clicked. Disclosure triangles, although technically buttons, allow views of controls to be shown and hidden to preserve space.
Checkboxes and radio buttons
In Mac OS X, empty check boxes are small, white rounded rectangles. When they are checked, they turn blue and a checkmark is present. They are essentially buttons which can be toggled on or off. Radio buttons are similar in appearance and behaviour except they are circular and contain a dot instead of a check. Radio button are classed into groups of which only one can be activated at a time.
Tables and lists
Tables and lists can be broadly categorised in three ways: A standard multi-columnar table with space to enter values or place other interface elements such as buttons; An outline view that can contain disclosure triangles to show and hide sets of data; and a Miller columns view akin to the column view in the Finder. All table views can use alternating blue and white row backgrounds.
Two main types of loading/saving progress indicator are available: a progress bar or a monochromatic spinning wheel (not the spinning pinwheel). The progress bar itself is available in two varieties: indeterminate, which simply shows diagonal blue and white stripes in animation with no measure of progress; or determinate, which shows a blue pulsing bar against a white background proportional to the percentage of a task completed. The spinning wheel indicator, also found in the Mac OS X startup screen since version 10.2, is simply a series of 12 increasingly darker grey lines arranged circularly, like the side view of a spoked wheel rotating clockwise. Many other interfaces have adopted this device, including the Firefox and Camino web browsers and many Web 2.0-influenced web sites.
Sliders are available in three types: one with tick marks and a triangular scrubber, one with a round scrubber and no tick marks and a circular slider which can be rotated. All are available horizontally or vertically. The circular slider is simply a gray dot on a white circle which can be rotated to set values.
Mac OS X has a standard control for picking colors which appears as a regular square button with a color sample in the middle. When clicked, it shows the standard Mac OS X color palette.
Tab views in Mac OS X appear to be sunken into the window, and are shaded darker and darker each time a new tab view is added inside another. The tabs appear in a row along the top of the sunken area, and are simply a series of white toggle buttons. The currently selected tab is blue. There is a similar control used to group interface elements that uses the same sunken appearance, except without tabs. Image "wells" are also available: a small, sunken container into which image files can be dropped. When the well contains an image, it can display a thumbnail representation of the file's contents.
Apple uses the Lucida Grande font as the standard system font in various sizes and weights. Some areas of the operating system such as editable text areas use another font, Helvetica by default. Mac OS X makes use of system-wide font anti-aliasing to make edges appear smoother.
- Qt (framework) :
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt is classified as a widget toolkit), and also used for developing non-GUI programs such as command-line tools and consoles for servers.
Qt uses standard C++ but makes extensive use of a special code generator (called the Meta Object Compiler, or moc) together with several macros to enrich the language. Qt can also be used in several other programming languages via language bindings. It runs on the major desktop platforms and some of the mobile platforms. It has extensive internationalization support. Non-GUI features include SQL database access, XML parsing, thread management, network support, and a unified cross-platform application programming interface (API) for file handling.
Qt is available under a commercial license, GPL v3 and LGPL v2. All editions support many compilers, including the GCC C++ compiler and the Visual Studio suite.
Qt is developed by Digia, who owns the Qt technology and trademark, and the Qt Project under open governance, involving individual developers and firms working to advance Qt. Before the launch of the Qt Project, it was produced by Nokia's Qt Development Frameworks division, which came into existence after Nokia's acquisition of the Norwegian company Trolltech, the original producer of Qt. In February 2011 Nokia announced its decision to drop Symbian technologies and base their future smartphones on Microsoft platform instead. One month later Nokia announced the sale of Qt's commercial licensing and professional services to Digia, with the immediate goal of taking Qt support to Android, iOS and Windows 8 platforms, and to continue focusing on desktop and embedded development, although Nokia was to remain the main development force behind the framework at that time.
- Qt works on the following platforms:
- Windows - Qt for Microsoft Windows XP, Vista, 7
- OS X - Qt for Apple OS X; supports applications on Cocoa
- Embedded Linux - Qt for embedded platforms: personal digital assistant, smartphone, etc.
- Wayland - Qt for Wayland display server. Qt applications can switch between graphical backends like X and Wayland at load time with the
- -platform command line option.
QNX / BlackBerry 10 - Qt for QNX and the QNX-based BlackBerry 10 platform.
- Android (Technology Preview) - Qt for Android, formerly known as Necessitas.
- iOS (Technology Preview) - Qt for iOS platforms (iPhone, iPad)
Since Nokia opened the Qt source code to the community on Gitorious various ports have been appearing. Here are some of them:
- Qt for OpenSolaris - Qt for OpenSolaris.
- Qt for Haiku - Qt for Haiku.
- Qt for OS/2 - Qt for OS/2 eCS platform.
- Qt for webOS - experimental development of Qt for webOS on Palm Pre.
- Qt for Amazon Kindle DX - experimental development of Qt for Amazon Kindle DX.
- QMir - Plugin to Qt 5 to support the Mir display server.
- Qt for AmigaOS - Qt for AmigaOS.
Windows CE, Mobile - Qt for Windows CE and Windows Mobile.
Symbian - Qt for the Symbian platform. Qt replaced Nokia's Avkon as the supported UI SDK for developing Symbian applications.
There are three editions of Qt available on each of these platforms, namely:
- GUI Framework - commercial entry level GUI edition, stripped of network and database support (formerly named "Desktop Light")
- Full Framework - complete commercial edition
- Open Source - complete Open Source edition
- Qt is available under the following copyright licenses:
- GNU LGPL 2.1 version with Qt special exception
- GNU GPL 3.0 version
- Commercial Developer License
Trolltech released Qt 4.0 on 28 June 2005 and introduced five new technologies in the framework:
- Tulip A set of template container classes.
- Interview A model - view - controller architecture for item views.
- Arthur A 2D painting framework.
- Scribe A Unicode text renderer with a public API for performing low-level text layout.
- MainWindow A modern action-based main window, toolbar, menu, and docking architecture.
Framework development of Qt 5 moved to open governance, taking place at qt-project.org. It is now possible for developers outside Nokia/Digia to submit patches and have them reviewed.
The innovation of Qt when it was first released relied on a few key concepts.
Starting with Qt 4.0 the framework was split into individual modules. With Qt 5.0 the architecture was modularized even further. Qt is now split into essential and add-on modules.
Qt Creator, a cross-platform IDE for C++ and QML
qmake, a tool that automates the generation of Makefiles for development project across different platforms
Use of native UI-rendering APIs
Qt used to emulate the native look of its intended platforms, which occasionally led to slight discrepancies where that emulation was imperfect. Recent versions of Qt use the native style APIs of the different platforms to query metrics and draw most controls, and do not suffer from such issues as much.
On some platforms (such as MeeGo and KDE) Qt is the native API.
The metaobject compiler, termed moc, is a tool that is run on the sources of a Qt program. It interprets certain macros from the C++ code as annotations, and uses them to generate added C++ code with Meta Information about the classes used in the program. This meta information is used by Qt to provide programming features not available natively in C++: the signal/slot system, introspection and asynchronous function calls.
QtScript ECMAScript interpreter
From Qt 4.3.0 onward, the scripting API, which makes use of some concepts from the earlier QSA, is integrated as a core part of Qt. With Qt 5.0 it became an add-on module for Qt 4 compatibility.
Haavard Nord and Eirik Chambe-Eng (the original developers of Qt and the CEO and President, respectively, of Trolltech) began development of "Qt" in 1991, three years before the company was incorporated as Quasar Technologies, then changed the name to Troll Tech and then to Trolltech.
The toolkit was called Qt because the letter Q looked appealing in Haavard's Emacs font, and "t" was inspired by Xt, the X toolkit.
The first two versions of Qt had only two flavors: Qt/X11 for Unix and Qt/Windows for Windows. The Windows platform was only available under a proprietary license, which meant free/open source applications written in Qt for X11 could not be ported to Windows without purchasing the proprietary edition.
At the end of 2001, Trolltech released Qt 3.0, which added support for Mac OS X. The Mac OS X support was available only in the proprietary license until June 2003, when Trolltech released Qt 3.2 with Mac OS X support available under the GPL.
In June 2005, Trolltech released Qt 4.0.
Nokia acquired Trolltech ASA on 17 June 2008 and changed the name first to Qt Software, then to Qt Development Frameworks. Since then it focused on Qt development to turn it into the main development platform for its devices, including a port to the Symbian S60 platform. Version 1.0 of the Nokia Qt SDK was released on 23 June 2010. The source code was made available over Gitorious, a community oriented git source code repository, to gather an even broader community that is not only using Qt but also helping to improve it.
- Java Platform, Micro Edition :
Java Platform, Micro Edition
Java Platform, Micro Edition, or Java ME, is a Java platform designed for embedded systems (mobile devices are one kind of such systems). Target devices range from industrial controls to mobile phones (especially feature phones) and set-top boxes. Java ME was formerly known as Java 2 Platform, Micro Edition (J2ME).
Java ME was designed by Sun Microsystems, acquired by Oracle Corporation in 2010; the platform replaced a similar technology, PersonalJava. Originally developed under the Java Community Process as JSR 68, the different flavors of Java ME have evolved in separate JSRs. Sun provides a reference implementation of the specification, but has tended not to provide free binary implementations of its Java ME runtime environment for mobile devices, rather relying on third parties to provide their own.
As of 22 December 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name phoneME. As of 2008, all Java ME platforms are currently restricted to JRE 1.3 features and use that version of the class file format (internally known as version 47.0). Should Oracle ever declare a new round of Java ME configuration versions that support the later class file formats and language features, such as those corresponding to JRE 1.5 or 1.6 (notably, generics), it will entail extra work on the part of all platform vendors to update their JREs.
Java ME devices implement a profile. The most common of these are the Mobile Information Device Profile aimed at mobile devices, such as cell phones, and the Personal Profile aimed at consumer products and embedded devices like set-top boxes and PDAs. Profiles are subsets of configurations, of which there are currently two: the Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC).
There are more than 2.1 billion Java ME enabled mobile phones and PDAs. Although it's not used on some of today's newest mobile platforms (e.g. iPhone, Windows Phone 7 and newer, BlackBerry 10, Android), it continues to be very popular in sub $200 devices such as Nokia's Series 40. It was also used on the Bada operating system and on Symbian OS along with native software. Also, there are implementations for Windows CE, Windows Mobile, Maemo, MeeGo and Android available for separate download.
Connected Limited Device Configuration
The Connected Limited Device Configuration (CLDC) contains a strict subset of the Java-class libraries, and is the minimum amount needed for a Java virtual machine to operate. CLDC is basically used for classifying myriad devices into a fixed configuration.
A configuration provides the most basic set of libraries and virtual-machine features that must be present in each implementation of a J2ME environment. When coupled with one or more profiles, the Connected Limited Device Configuration gives developers a solid Java platform for creating applications for consumer and embedded devices. The configuration is designed for devices with 160KB to 512KB total memory, which has a minimum of 160KB of ROM and 32KB of RAM available for the Java platform.
Mobile Information Device Profile
Designed for mobile phones, the Mobile Information Device Profile includes a GUI, and a data storage API, and MIDP 2.0 includes a basic 2D gaming API. Applications written for this profile are called MIDlets. Almost all new cell phones come with a MIDP implementation, and it is now the de facto standard for downloadable cell phone games. However, many cellphones can run only those MIDlets that have been approved by the carrier, especially in North America.
JSR 271: Mobile Information Device Profile 3 (Final release on 09 Dec, 2009) specified the 3rd generation Mobile Information Device Profile (MIDP3), expanding upon the functionality in all areas as well as improving interoperability across devices. A key design goal of MIDP3 is backward compatibility with MIDP2 content.
Information Module Profile
The Information Module Profile (IMP) is a profile for embedded, "headless" devices such as vending machines, industrial embedded applications, security systems, and similar devices with either simple or no display and with some limited network connectivity.
Originally introduced by Siemens Mobile and Nokia as JSR-195, IMP 1.0 is a strict subset of MIDP 1.0 except that it doesn't include user interface APIs - in other words, it doesn't include support for the Java package javax.microedition.lcdui. JSR-228, also known as IMP-NG, is IMP's next generation that is based on MIDP 2.0, leveraging MIDP 2.0's new security and networking types and APIs, and other APIs such as PushRegistry and platformRequest(), but again it doesn't include UI APIs, nor the game.
Connected Device Configuration
The Connected Device Configuration is a subset of Java SE, containing almost all the libraries that are not GUI related. It is richer than CLDC.
The Foundation Profile is a Java ME Connected Device Configuration (CDC) profile. This profile is intended to be used by devices requiring a complete implementation of the Java virtual machine up to and including the entire Java Platform, Standard Edition API. Typical implementations will use some subset of that API set depending on the additional profiles supported. This specification was developed under the Java Community Process.
Personal Basis Profile
The Personal Basis Profile extends the Foundation Profile to include lightweight GUI support in the form of an AWT subset. This is the platform that BD-J is built upon.
Sun provides a reference implementation of these configurations and profiles for MIDP and CDC. Starting with the JavaME 3.0 SDK, a NetBeans-based IDE will support them in a single IDE.
In contrast to the numerous binary implementations of the Java Platform built by Sun for servers and workstations, Sun does not provide any binaries for the platforms of Java ME targets with the exception of an MIDP 1.0 JRE (JVM) for Palm OS. Sun provides no J2ME JRE for the Microsoft Windows Mobile (Pocket PC) based devices, despite an open-letter campaign to Sun to release a rumored internal implementation of PersonalJava known by the code name "Captain America". Third party implementations like JBlend and JBed are widely used by Windows Mobile vendors like HTC and Samsung.
Operating systems targeting Java ME have been implemented by DoCoMo in the form of DoJa, and by SavaJe as SavaJe OS. The latter company was purchased by Sun in April 2007 and now forms the basis of Sun's JavaFX Mobile. The company IS2T provides a Java ME virtual machine (MicroJvm) for any RTOS and even with no RTOS (then qualified as baremetal). When baremetal, the virtual machine is the OS/RTOS: the device boots in Java.
MicroEmulator provides an open source (LGPL) implementation of an MIDP emulator. This is a Java Applet based emulator and can be embedded in web pages.
The open-source Mika VM aims to implement JavaME CDC/FP, but is not certified as such (certified implementations are required to charge royalties, which is impractical for an open-source project). Consequently devices which use this implementation are not allowed to claim JavaME CDC compatibility.
- GeneXus :
GeneXus is a Cross-Platform, knowledge representation-based, development tool, mainly oriented to enterprise-class applications for the Web applications, Microsoft Windows and smart device platforms. A developer describes an application in a high-level, mostly declarative language, from which native code is generated for multiple environments.
It includes a normalization module, which creates and maintains an optimal database structure based on the user views of the reality described in a declarative (rule-based) language.
The languages for which code can be generated include C#, COBOL, Java including Android and BlackBerry smart devices, Objective-C for Apple mobile devices, RPG, Ruby, Visual Basic, and Visual FoxPro.
Most popular DBMSs are supported, such as Microsoft SQL Server, Oracle, DB2, Informix, PostgreSQL and MySQL.
GeneXus is developed by Uruguayan company ARTech Consultores SRL.
GeneXus X Evolution 2, the current version, was released on March 15, 2012.
A solid working knowledge of productivity software and other IT tools has become a basic foundation for success in virtually any career. Beyond that, however, I don't think you can overemphasise the importance of having a good background in maths and science.....
"Every software system needs to have a simple yet powerful organizational philosophy (think of it as the software equivalent of a sound bite that describes the system's architecture)... A step in thr development process is to articulate this architectural framework, so that we might have a stable foundation upon which to evolve the system's function points. "
"All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change"
"The ultimate measurement is effectiveness, not efficiency "
"It is argued that software architecture is an effective tool to cut development cost and time and to increase the quality of a system. "Architecture-centric methods and agile approaches." Agile Processes in Software Engineering and Extreme Programming.
"Java is C++ without the guns, knives, and clubs "
"When done well, software is invisible"
"Our words are built on the objects of our experience. They have acquired their effectiveness by adapting themselves to the occurrences of our everyday world."
"I always knew that one day Smalltalk would replace Java. I just didn't know it would be called Ruby. "
"The best way to predict the future is to invent it."
"In 30 years Lisp will likely be ahead of C++/Java (but behind something else)"
"Possibly the only real object-oriented system in working order. (About Internet)"
"Simple things should be simple, complex things should be possible. "
"Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines."
"Model Driven Architecture is a style of enterprise application development and integration, based on using automated tools to build system independent models and transform them into efficient implementations. "
"The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs. "
"Software Engineering Economics is an invaluable guide to determining software costs, applying the fundamental concepts of microeconomics to software engineering, and utilizing economic analysis in software engineering decision making. "
"Ultimately, discovery and invention are both problems of classification, and classification is fundamentally a problem of finding sameness. When we classify, we seek to group things that have a common structure or exhibit a common behavior. "
"Perhaps the greatest strength of an object-oriented approach to development is that it offers a mechanism that captures a model of the real world. "
"The entire history of software engineering is that of the rise in levels of abstraction. "
"The amateur software engineer is always in search of magic, some sensational method or tool whose application promises to render software development trivial. It is the mark of the professional software engineer to know that no such panacea exist "
Core Values ?Agile And Scrum Based Architecture
Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration.....more
Core Values ?Total quality management
Total Quality Management / TQM is an integrative philosophy of management for continuously improving the quality of products and processes. TQM is based on the premise that the quality of products and .....more
Core Values ?Design that Matters
We are more than code junkies. We're a company that cares how a product works and what it says to its users. There is no reason why your custom software should be difficult to understand.....more
Core Values ?Expertise that is Second to None
With extensive software development experience, our development team is up for any challenge within the Great Plains development environment. our Research works on IEEE international papers are consider....more
Core Values ?Solutions that Deliver Results
We have a proven track record of developing and delivering solutions that have resulted in reduced costs, time savings, and increased efficiency. Our clients are very much ....more
Core Values ?Relentless Software Testing
We simply dont release anything that isnt tested well. Tell us something cant be tested under automation, and we will go prove it can be. We create tests before we write the complementary production software......more
Core Values ?Unparalled Technical Support
If a customer needs technical support for one of our products, no-one can do it better than us. Our offices are open from 9am until 9pm Monday to Friday, and soon to be 24hours. Unlike many companies, you are able to....more
Core Values ?Impressive Results
We have a reputation for process genius, fanatical testing, high quality, and software joy. Whatever your business, our methods will work well in your field. We have done work in Erp Solutions ,e-commerce, Portal Solutions,IEEE Research....more
Why Choose Us ?
The intellectual commitment of our development team is central to the leonsoft ability to achieve its mission: to develop principled, innovative thought leaders in global communities.Read More
Today's most successful enterprise applications were once nothing more than an idea in someone's head. While many of these applications are planned and budgeted from the beginning.Read More
We constantly strive to redefine the standard of excellence in everything we do. We encourage both individuals and teams to constantly strive for developing innovative technologies....Read More
If our customers are the foundation of our business, then integrity is the cornerstone. Everything we do is guided by what is right. We live by the highest ethical standards.....Read More