Today is the last part of a three-part series examining the key languages and technologies that under pin iOS Application Development.
In the previous post we had a look at the history of Objective-C and how Brad Cox and Tim Love combined the object-oriented ideas of Smalltalk with the structure and syntax of C. In today’s post, we will look at how, from these humble beginnings, Objective-C has risen in popularity, how it was adopted by Apple in its rise to dominance and how it is now central to application development on the iOS platform.
First released in 1987, the GNU Compiler Collection (GCC) is a compiler system produced by the GNU Project that takes source code in a number of different languages (including C) and compiles it to machine code. By the late 1980’s GCC was already being adopted as the standard compiler for most modern Unix Operating Systems but at the time, did not support Objective-C.
In 1985, Steve Jobs left Apple Inc. and started a new company. The company, NeXT Inc., licensed Objective-C from StepStone in 1988 (StepStone was formally named Productivity Products International and was the company Brad Cox and Tim Love founded to pursue development of Objective-C – see the previous post) and soon set about extending GCC to support Objective-C, simultaneously developing two sets of class libraries that they called AppKit and FoundationKit. These would form the seed of a new Unix-like, object-oriented, multi-tasking operating system for their new range of workstations. This new Operating System was called NeXTSTEP.
The Evolution of an Operating System
For the next five years, Jobs and NeXT Inc. continued to refine their operating system. A collaboration in 1993 with Sun Microsystems resulted in some major restructuring with much of the software that specifically depended on NeXT hardware being stripped away along with significant re-organisation to separate the core operating system (also called the Mach Kernel), the compilers, the display system and the NeXTSTEP Objective-C Libraries.
In September 1994, this collaboration bore fruit with the publication of the first draft of the OpenStep API. Later that same year, NeXT Inc. released an OpenStep API compliant version of their NeXTSTEP Operating System which they re-branded as OPENSTEP. This new operating system supported both the NeXT hardware platforms (using the Mach Kernel) but also Sun SPARC Systems.
A Return to Apple
OPENSTEP, with Objective-C at its core, remained the primary operating system for NeXT workstations until December 1996 when Apple Computer announced its intention to buy NeXT Inc. (which it subsequently did for around $429 million in cash). The main motivation of the acquisition was to acquire OPENSTEP and use it as the foundation to replace the ageing Apple Computer Mac OS Operating System.
Following on from the acquisition, 1997 saw Jobs rejoined Apple Computers as a consultant and later that year assumed the role of interim CEO. The next three years saw the NeXTSTEP Operating System and it’s Mach Kernel ported to the PowerPC hardware architecture and the production of a software development toolkit (later renamed Cocoa) which allowed developers to produce applications for the new platform.
Two years later, in March 1999, the first version of Mac OS X Server 1.0 was published and two years after that, in March 2001, came the first consumer version; Mac OS X 10.0. The new operating systems retained much of the processor independent capabilities that had been developed as part of NeXT Inc.’s collaboration with Sun Microsystems and many of the user interfaces features from NeXTSTEP were also retained.
The next six years saw almost yearly releases of Mac OS X. In August 2006 at their annual World Wide Developer Conference (WWDC), Apple announced version 2.0 of the Objective-C language. This revision added more modern programming language features such as garbage collection (a mechanism to automatically release and recover memory that is not longer being used – we’ll talk more about this elsewhere in this blog), additional syntax and language features as well as support for larger accessing larger amounts of memory via 64-bit address support.
Mobile Computing Redefined
The following year, in January 2007 at the Macworld Conference and Expo, Apple also unveiled it’s new mobile device, the iPhone, which it released in June later that year.
Initially Apple did little to separate the operating system from the hardware platform simply stating that the “iPhone ran OS X” but in October that year Apple changed tack announcing that they would be making a Software Development Kit (SDK) available for the iPhone to allow third-party developers to design and build applications for the new device. The first version of the SDK was released in March 2008 along with a new name for the operating system; iPhone OS.
Written in a combination of C, Objective-C and C++ (a third programming language we’ve not looked at yet that also provides object-oriented extensions to C albeit in a different fashion), the iPhone OS (re-branded iOS in 2010), was derived from OS X and shared a common core with the desktop version of the operating system.
The User Interface of the new operating system was also revolutionary. For almost the first time in a consumer device it provided users with direct control of objects within the user interface and allowed users to use multi-touch gestures such as swipe, pinch and tap to interact with the device as they had never done before.
In April 2010, Apple continued to evolve its products with the release of the iPad. This was a device that managed to define a whole new market for mobile computing and again had iOS at its core. Providing the same multi-touch user interface as on the iPhone combined with a significantly larger screen this new device single-handedly kick-started the now multimillion dollar tablet computing market, one in which it still reins supreme.
As subsequent generations of iPhone and iPad devices have been released each with new and improved hardware capabilities, iOS has continued to evolve to make use of them. Features such as multimedia and instant messaging, video calling, mapping, turn-by-turn navigation, voice control and a whole load more have all been added and are now available to you as an iOS Application Developer. With all these features providing so many possibilities there has never been a more exciting time to learn Objective-C and iOS Application Development and we hope you will stay us on this blog as we start to explore this exciting and wondrous ecosystem.