`R. Surati
`12/01/2022
`
`Mac OS X Technology Overview
`
`General
`
`2009-08-14
`
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`Page 1
`Petitioner Apple Inc., Ex. 1069
`
`
`
`OpenCL and Xserve are trademarks of Apple
`Inc.
`Java is a registered trademark of Oracle and/or
`its affiliates
`Adobe, Acrobat, and PostScript are trademarks
`or registered trademarks of Adobe Systems
`Incorporated in the U.S. and/or other countries.
`IOS is a trademark or registered trademark of
`Cisco in the U.S. and other countries and is used
`under license.
`Intel and Intel Core are registered trademarks
`of Intel Corportation or its subsidiaries in the
`United States and other countries.
`OpenGL is a registered trademark of Silicon
`Graphics, Inc.
`PowerPC and and the PowerPC logo are
`trademarks of International Business Machines
`Corporation, used under license therefrom.
`UNIX is a registered trademark of The Open
`Group
`Simultaneously published in the United States
`and Canada.
`Even though Apple has reviewed this document,
`APPLE MAKES NO WARRANTY OR REPRESENTATION,
`EITHER EXPRESS OR IMPLIED, WITH RESPECT TO
`THIS DOCUMENT, ITS QUALITY, ACCURACY,
`MERCHANTABILITY, OR FITNESS FOR A PARTICULAR
`PURPOSE. AS A RESULT, THIS DOCUMENT IS
`PROVIDED “AS IS,” AND YOU, THE READER, ARE
`ASSUMING THE ENTIRE RISK AS TO ITS QUALITY
`AND ACCURACY.
`IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT,
`INDIRECT, SPECIAL, INCIDENTAL, OR
`CONSEQUENTIAL DAMAGES RESULTING FROM ANY
`DEFECT OR INACCURACY IN THIS DOCUMENT, even
`if advised of the possibility of such damages.
`THE WARRANTY AND REMEDIES SET FORTH ABOVE
`ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL
`OR WRITTEN, EXPRESS OR IMPLIED. No Apple
`dealer, agent, or employee is authorized to make
`any modification, extension, or addition to this
`warranty.
`Some states do not allow the exclusion or limitation
`of implied warranties or liability for incidental or
`consequential damages, so the above limitation or
`exclusion may not apply to you. This warranty gives
`you specific legal rights, and you may also have
`other rights which vary from state to state.
`
`Apple Inc.
`© 2004, 2009 Apple Inc.
`All rights reserved.
`
`No part of this publication may be reproduced,
`stored in a retrieval system, or transmitted, in
`any form or by any means, mechanical,
`electronic, photocopying, recording, or
`otherwise, without prior written permission of
`Apple Inc., with the following exceptions: Any
`person is hereby authorized to store
`documentation on a single computer for
`personal use only and to print copies of
`documentation for personal use provided that
`the documentation contains Apple’s copyright
`notice.
`The Apple logo is a trademark of Apple Inc.
`Use of the “keyboard” Apple logo
`(Option-Shift-K) for commercial purposes
`without the prior written consent of Apple may
`constitute trademark infringement and unfair
`competition in violation of federal and state
`laws.
`No licenses, express or implied, are granted
`with respect to any of the technology described
`in this document. Apple retains all intellectual
`property rights associated with the technology
`described in this document. This document is
`intended to assist application developers to
`develop applications only for Apple-labeled
`computers.
`Every effort has been made to ensure that the
`information in this document is accurate. Apple
`is not responsible for typographical errors.
`Apple Inc.
`1 Infinite Loop
`Cupertino, CA 95014
`408-996-1010
`
`.Mac is a registered service mark of Apple Inc.
`iDisk is a registered service mark of Apple Inc.
`Apple, the Apple logo, AirPort, AirPort Extreme,
`AppleScript, AppleShare, AppleTalk, Aqua,
`Bonjour, Carbon, Cocoa, ColorSync, Dashcode,
`eMac, Exposé, Final Cut, Final Cut Pro, Finder,
`FireWire, iBook, iCal, iChat, Instruments, iTunes,
`Keychain, Mac, Mac OS, Macintosh, Objective-C,
`Pages, Quartz, QuickDraw, QuickTime, Rosetta,
`Safari, Sherlock, Spaces, Spotlight, Tiger, Time
`Machine, TrueType, Velocity Engine,
`WebObjects, Xcode, and Xgrid are trademarks
`of Apple Inc., registered in the United States
`and other countries.
`
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`Page i
`
`
`
`Contents
`
`Introduction
`
`Introduction to Mac OS X Technology Overview 13
`
`Who Should Read This Document 13
`Organization of This Document 13
`Getting the Xcode Tools 14
`Reporting Bugs 14
`See Also 15
`Developer Documentation 15
`Information on BSD 15
`Darwin and Open Source Development 16
`Other Information on the Web 16
`
`Chapter 1
`
`Mac OS X System Overview 17
`
`A Layered Approach 17
`The Advantage of Layers 18
`Developer Tools 19
`
`Chapter 2
`
`Darwin and Core Technologies 21
`
`Kernel and Drivers 21
`Mach 21
`64-Bit Kernel 22
`Device-Driver Support 22
`File-System Support 23
`Network Support 24
`BSD 28
`Caching API 29
`Scripting Support 29
`Threading Support 29
`X11 30
`Security 30
`Core Technologies 30
`Blocks 31
`Grand Central Dispatch 31
`OpenCL 32
`Core Foundation 32
`IPC and Notification Mechanisms 33
`Software Development Support 36
`Binary File Architecture 36
`Language Support 40
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`3
`
`
`
`CONTENTS
`
`Chapter 3
`
`Graphics and Multimedia Technologies 43
`
`Drawing Technologies 43
`Quartz 43
`Cocoa Drawing 45
`OpenGL 46
`Core Animation 46
`Core Image 47
`Image Kit 48
`QuickDraw 48
`Text and Fonts 48
`Cocoa Text 49
`Core Text 49
`Apple Type Services 49
`Apple Type Services for Unicode Imaging 50
`Multilingual Text Engine 50
`Audio Technologies 50
`Core Audio 50
`OpenAL 51
`Video Technologies 51
`QuickTime Kit 52
`Core Video 52
`DVD Playback 52
`QuickTime 53
`Color Management 54
`Printing 54
`Accelerating Your Multimedia Operations 55
`
`Chapter 4
`
`Application Technologies 57
`
`Application Environments 57
`Cocoa 57
`Carbon 58
`Java 59
`WebObjects 59
`BSD and X11 60
`Application Technologies 60
`Address Book Framework 60
`Automator Framework 61
`Bonjour 61
`Calendar Store Framework 61
`Core Data Framework 62
`Disc Recording Framework 62
`Help Support 63
`Human Interface Toolbox 63
`Identity Services 64
`
`4
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`
`
`CONTENTS
`
`Instant Message Framework 64
`Image Capture Services 64
`Ink Services 65
`Input Method Kit Framework 65
`Keychain Services 65
`Latent Semantic Mapping Services 66
`Launch Services 66
`Open Directory 66
`PDF Kit Framework 66
`Publication Subscription Framework 67
`Search Kit Framework 67
`Security Services 67
`Speech Technologies 68
`SQLite Library 68
`Sync Services Framework 69
`WebKit Framework 69
`Time Machine Support 70
`Web Service Access 70
`XML Parsing Libraries 70
`
`Chapter 5
`
`User Experience 71
`
`Technologies 71
`Aqua 71
`Quick Look 71
`Resolution-Independent User Interface 72
`Spotlight 72
`Bundles and Packages 73
`Code Signing 73
`Internationalization and Localization 74
`Software Configuration 74
`Fast User Switching 75
`Spaces 75
`Accessibility 75
`AppleScript 76
`System Applications 76
`The Finder 76
`The Dock 77
`Dashboard 77
`Automator 77
`Time Machine 78
`
`Chapter 6
`
`Software Development Overview 79
`
`Applications 79
`Frameworks 79
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`5
`
`
`
`CONTENTS
`
`Plug-ins 80
`Address Book Action Plug-Ins 80
`Application Plug-Ins 80
`Automator Plug-Ins 81
`Contextual Menu Plug-Ins 81
`Core Audio Plug-Ins 81
`Image Units 81
`Input Method Components 82
`Interface Builder Plug-Ins 82
`Metadata Importers 82
`QuickTime Components 83
`Safari Plug-ins 83
`Dashboard Widgets 83
`Agent Applications 84
`Screen Savers 84
`Slideshows 84
`Programmatic Screen Savers 85
`Services 85
`Preference Panes 85
`Web Content 86
`Dynamic Websites 86
`SOAP and XML-RPC 86
`Sherlock Channels 87
`Mail Stationery 87
`Command-Line Tools 87
`Launch Items, Startup Items, and Daemons 88
`Scripts 88
`Scripting Additions for AppleScript 89
`Kernel Extensions 90
`Device Drivers 90
`
`Chapter 7
`
`Choosing Technologies to Match Your Design Goals 93
`
`High Performance 93
`Easy to Use 95
`Attractive Appearance 96
`Reliability 97
`Adaptability 98
`Interoperability 99
`Mobility 100
`
`Chapter 8
`
`Porting Tips 103
`
`64-Bit Considerations 103
`Windows Considerations 104
`Carbon Considerations 105
`
`6
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`
`
`CONTENTS
`
`Migrating From Mac OS 9 105
`Use the Carbon Event Manager 106
`Use the HIToolbox 106
`Use Nib Files 107
`
`Appendix A
`
`Command Line Primer 109
`
`Basic Shell Concepts 109
`Getting Information 109
`Specifying Files and Directories 110
`Accessing Files on Volumes 110
`Flow Control 111
`Frequently Used Commands 112
`Environment Variables 113
`Running Programs 114
`
`Appendix B
`
`Mac OS X Frameworks 115
`
`System Frameworks 115
`Accelerate Framework 121
`Application Services Framework 121
`Automator Framework 122
`Carbon Framework 122
`Core Services Framework 123
`IMCore Framework 124
`Quartz Framework 124
`WebKit Framework 125
`Xcode Frameworks 125
`System Libraries 126
`
`Appendix C
`
`Mac OS X Developer Tools 127
`
`Applications 127
`Xcode 127
`Interface Builder 133
`Dashcode 134
`Instruments 135
`Quartz Composer 136
`Audio Applications 136
`Graphics Applications 137
`Java 138
`Performance Applications 139
`Utility Applications 140
`Command-Line Tools 143
`Compiler, Linker, and Source Code Tools 144
`Debugging and Tuning Tools 146
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`7
`
`
`
`CONTENTS
`
`Documentation and Help Tools 149
`Localization Tools 150
`Version Control Tools 150
`Packaging Tools 152
`Scripting Tools 153
`Java Tools 156
`Kernel Extension Tools 157
`I/O Kit Driver Tools 158
`
`Glossary 159
`
`Document Revision History 171
`
`Index 173
`
`8
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`
`
`Figures and Tables
`
`Chapter 1
`
`Mac OS X System Overview 17
`
`Figure 1-1
`
`Layers of Mac OS X 17
`
`Chapter 2
`
`Darwin and Core Technologies 21
`
`Table 2-1
`Table 2-2
`Table 2-3
`Table 2-4
`
`Supported local volume formats 23
`Supported network file-sharing protocols 24
`Network protocols
`25
`Network technology support
`
`26
`
`Chapter 3
`
`Graphics and Multimedia Technologies 43
`
`Figure 3-1
`Table 3-1
`Table 3-2
`Table 3-3
`
`Quartz Compositor and the rendering APIs in Mac OS X 45
`Quartz technical specifications
`44
`Partial list of formats supported by QuickTime 53
`Features of the Mac OS X printing system 55
`
`Chapter 5
`
`User Experience 71
`
`Figure 5-1
`
`Automator main window 78
`
`Chapter 6
`
`Software Development Overview 79
`
`Table 6-1
`
`Scripting language summary 89
`
`Chapter 7
`
`Choosing Technologies to Match Your Design Goals 93
`
`Table 7-1
`Table 7-2
`Table 7-3
`Table 7-4
`Table 7-5
`Table 7-6
`Table 7-7
`
`Technologies for improving performance 93
`Technologies for achieving ease of use 95
`Technologies for achieving an attractive appearance 96
`Technologies for achieving reliability 98
`Technologies for achieving adaptability 98
`Technologies for achieving interoperability 99
`Technologies for achieving mobility 100
`
`Chapter 8
`
`Porting Tips 103
`
`Table 8-1
`Table 8-2
`
`Required replacements for Carbon 105
`Recommended replacements for Carbon 106
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`9
`
`
`
`FIGURES AND TABLES
`
`Appendix A
`
`Command Line Primer 109
`
`Table A-1
`Table A-2
`Table A-3
`Table A-4
`
`Getting a list of built-in commands 109
`Special path characters and their meaning 110
`Input and output sources for programs 111
`Frequently used commands and programs 112
`
`Appendix B
`
`Mac OS X Frameworks 115
`
`Table B-1
`Table B-2
`Table B-3
`Table B-4
`Table B-5
`Table B-6
`Table B-7
`Table B-8
`Table B-9
`Table B-10
`
`System frameworks 115
`Subframeworks of the Accelerate framework 121
`Subframeworks of the Application Services framework 122
`Subframeworks of the Automator framework 122
`Subframeworks of the Carbon framework 123
`Subframeworks of the Core Services framework 124
`Subframeworks of the IMCore framework 124
`Subframeworks of the Quartz framework 125
`Subframeworks of the WebKit framework 125
`Xcode frameworks 125
`
`Appendix C
`
`Mac OS X Developer Tools 127
`
`Figure C-1
`Figure C-2
`Figure C-3
`Figure C-4
`Figure C-5
`Figure C-6
`Figure C-7
`Figure C-8
`Figure C-9
`Table C-1
`Table C-2
`Table C-3
`Table C-4
`Table C-5
`Table C-6
`Table C-7
`Table C-8
`Table C-9
`Table C-10
`Table C-11
`Table C-12
`Table C-13
`Table C-14
`
`Xcode application 129
`Xcode documentation window 131
`Interface Builder 3.0 133
`Dashcode canvas 134
`The Instruments application interface 135
`Quartz Composer editor window 136
`AU Lab mixer and palettes 137
`iSync Plug-in Maker application 142
`PackageMaker application 143
`Graphics applications 138
`Java applications 138
`Performance applications 139
`CHUD applications 139
`Utility applications 140
`Compilers, linkers, and build tools 144
`Tools for creating and updating libraries 145
`Code utilities 145
`General debugging tools 146
`Memory debugging and tuning tools 147
`Tools for examining code 147
`Performance tools 148
`Instruction trace tools 149
`Documentation and help tools 149
`
`10
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`
`
`FIGURES AND TABLES
`
`Table C-15
`Table C-16
`Table C-17
`Table C-18
`Table C-19
`Table C-20
`Table C-21
`Table C-22
`Table C-23
`Table C-24
`Table C-25
`Table C-26
`Table C-27
`Table C-28
`Table C-29
`Table C-30
`
`Localization tools 150
`Subversion tools 150
`RCS tools 151
`CVS tools 151
`Comparison tools 152
`Packaging tools 152
`Script interpreters and compilers 153
`Script language converters 154
`Perl tools 154
`Parsers and lexical analyzers 155
`Scripting documentation tools 155
`Java tools 156
`Java utilities 156
`JAR file tools 157
`Kernel extension tools 157
`Driver tools 158
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`11
`
`
`
`FIGURES AND TABLES
`
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`12
`
`
`
`INTRODUCTION
`
`Introduction to Mac OS X Technology
`Overview
`
`Mac OS X is a modern operating system that combines a stable core with advanced technologies to help
`you deliver world-class products. The technologies in Mac OS X help you do everything from manage your
`data to display high-resolution graphics and multimedia content, all while delivering the consistency and
`ease of use that are hallmarks of the Macintosh experience. Knowing how to use these technologies can help
`streamline your own development process, while providing you access to key Mac OS X features.
`
`Who Should Read This Document
`
`Mac OS X Technology Overview is an essential guide for anyone looking to develop software for Mac OS X. It
`provides an overview of the technologies and tools that have an impact on the development process and
`provides links to relevant documents and other sources of information. You should use this document to do
`the following:
`
` ■
`
` ■
`
` ■ Orient yourself to the Mac OS X platform.
`Learn about Mac OS X software technologies, why you might want to use them, and when.
`Learn about the development opportunities for the platform.
` ■ Get tips and guidelines on how to move to Mac OS X from other platforms.
`Find key documents relating to the technologies you are interested in.
`
` ■
`
`This document does not provide information about user-level system features or about features that have
`no impact on the software development process.
`
`New developers should find this document useful for getting familiar with Mac OS X. Experienced developers
`can use it as a road map for exploring specific technologies and development techniques.
`
`Organization of This Document
`
`This document has the following chapters and appendixes:
`
` ■
`
` ■
`
` ■
`
`“Mac OS X System Overview” (page 17) provides background information for understanding the
`terminology and basic development environment of Mac OS X. It also provides a high-level overview of
`the Mac OS X system architecture.
`“Darwin and Core Technologies” (page 21) describes the technologies that comprise the Darwin
`environment along with other key technologies that are used throughout the system.
`“Graphics and Multimedia Technologies” (page 43) describes the graphics foundations of the system,
`including the technologies you use for drawing to the screen and for creating audio and video content.
`
`Who Should Read This Document
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`13
`
`
`
`INTRODUCTION
`Introduction to Mac OS X Technology Overview
`
`“Application Technologies” (page 57) describes the development environments (like Carbon and Cocoa)
`and individual technologies (like Address Book) that you use to create your applications.
`“User Experience” (page 71) describes the technologies that your application should use to provide the
`best user experience for the platform. This chapter also describes some of the system technologies with
`which your software interacts to create that experience.
`“Software Development Overview” (page 79) describes the types of software you can create for Mac OS
`X and when you might use each type.
`“Choosing Technologies to Match Your Design Goals” (page 93) provides tips and guidance to help you
`choose the technologies that best support the design goals of your application.
`“Porting Tips” (page 103) provides starter advice for developers who are porting applications from Mac
`OS 9, Windows, and UNIX platforms.
`“Command Line Primer” (page 109) provides an introduction to the command-line interface for developers
`who have never used it before.
`“Mac OS X Frameworks” (page 115) describes the frameworks you can use to develop your software. Use
`this list to find specific technologies or to find when a given framework was introduced to Mac OS X.
`“Mac OS X Developer Tools” (page 127) provides an overview of the available applications and
`command-line tools you can use to create software for Mac OS X.
`
`Getting the Xcode Tools
`
`Apple provides a comprehensive suite of developer tools for creating Mac OS X software. The Xcode Tools
`include applications to help you design, create, debug, and optimize your software. This tools suite also
`includes header files, sample code, and documentation for Apple technologies. You can download the Xcode
`Tools from the members area of the Apple Developer Connection (ADC) website (http://connect.apple.com/).
`Registration is required but free.
`
`For additional information about the tools available for working with Mac OS X and its technologies, see
`“Mac OS X Developer Tools” (page 127).
`
`Reporting Bugs
`
`If you encounter bugs in Apple software or documentation, you are encouraged to report them to Apple.
`You can also file enhancement requests to indicate features you would like to see in future revisions of a
`product or document. To file bugs or enhancement requests, go to the Bug Reporting page of the ADC
`website, which is at the following URL:
`
`http://developer.apple.com/bugreporter/
`
`You must have a valid ADC login name and password to file bugs. You can obtain a login name for free by
`following the instructions found on the Bug Reporting page.
`
`14
`
`Getting the Xcode Tools
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`■
`■
`■
`■
`■
`■
`■
`■
`
`
`INTRODUCTION
`Introduction to Mac OS X Technology Overview
`
`See Also
`
`This document does not provide in-depth information on any one technology. However, it does point to
`relevant documents in the ADC Reference Library. References of the form “<title> in <category>
`Documentation” refer to documents in specific sections of the reference library.
`
`For information about new features introduced in different versions of Mac OS X, see What's New In Mac OS
`X.
`
`The following sections list additional sources of information about Mac OS X and its technologies.
`
`Developer Documentation
`
`When you install Xcode, the installer places the tools you need for development as well as sample code and
`developer documentation on your local hard drive. The default installation directory for Xcode is /Developer
`but in Mac OS X v10.5 and later you can specify a custom installation directory if desired. (This document
`uses the term <Xcode> to represent the root directory of your Xcode installation.) The Installer application
`puts developer documentation into the following locations:
`
`General documentation. Most documentation and sample code is installed in the
`<Xcode>/Documentation/DocSets directory. All documents are available in HTML format, which you
`can view from any web browser. To view the documentation, open the Xcode IDE and choose Help >
`Show Documentation Window.
`Additional sample code. Some additional sample programs are installed in <Xcode>/Examples. These
`samples demonstrate different tasks involving Mac OS X technologies.
`
`You can also get the latest documentation, release notes, Tech Notes, technical Q&As, and sample code from
`the ADC Reference Library (http://developer.apple.com/referencelibrary). All documents are available in HTML
`and most are also available in PDF format.
`
`Information on BSD
`
`Many developers who are new to Mac OS X are also new to BSD, an essential part of the operating system’s
`kernel environment. BSD (for Berkeley Software Distribution) is based on UNIX. Several excellent books on
`BSD and UNIX are available in bookstores.
`
`You can also use the World Wide Web as a resource for information on BSD. Several organizations maintain
`websites with manuals, FAQs, and other sources of information on the subject. For information about related
`projects, see:
`
` ■
`
` ■
`
` ■
`
` ■
`
`Apple’s Open Source page (http://developer.apple.com/opensource/)
`The FreeBSD project (http://www.freebsd.org)
`The NetBSD project (http://www.netbsd.org)
`The OpenBSD project (http://www.openbsd.org)
`
`For more references, see the bibliography in Kernel Programming Guide.
`
`See Also
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`15
`
`■
`■
`
`
`INTRODUCTION
`Introduction to Mac OS X Technology Overview
`
`Darwin and Open Source Development
`
`Apple is the first major computer company to make open source development a key part of its ongoing
`operating system strategy. Apple has released the source code to virtually all of the components of Darwin
`to the developer community and continues to update the Darwin code base to include improvements as
`well as security updates, bug fixes, and other important changes.
`
`Darwin consists of the Mac OS X kernel environment, BSD libraries, and BSD command environment. For
`more information about Darwin and what it contains, see “Kernel and Drivers” (page 21). For detailed
`information about the kernel environment, see Kernel Programming Guide.
`
`Information about the Darwin open source efforts is available at http://developer.apple.com/darwin/ and at
`http://www.macosforge.org/.
`
`Other Information on the Web
`
`Apple maintains several websites where developers can go for general and technical information about Mac
`OS X.
`
`The Apple Macintosh products site (http://www.apple.com/mac) provides general information about
`Macintosh hardware and software.
`The Apple product information site (http://www.apple.com/macosx) provides information about Mac
`OS X.
`The ADC Reference Library (http://developer.apple.com/referencelibrary) features the same documentation
`that is installed with the developer tools. It also includes new and regularly updated documents as well
`as legacy documentation.
`The Apple Care Knowledge Base (http://www.apple.com/support/) contains technical articles, tutorials,
`FAQs, and other information.
`
`16
`
`See Also
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`■
`■
`■
`■
`
`
`CHAPTER 1
`
`Mac OS X System Overview
`
`This chapter provides a high-level introduction to Mac OS X, describing its overall architecture and development
`tools support. The goal of this chapter is to orient you to the Mac OS X operating system and to give you a
`reference point from which to explore the available tools and technologies described throughout this
`document. Developers who are already familiar with the Mac OS X system architecture and technologies
`may want to skip this chapter.
`
`Note: For a listing of commonly used Mac OS X terms, see “Glossary” (page 159).
`
`A Layered Approach
`
`The implementation of Mac OS X can be viewed as a set of layers. At the lower layers of the system are the
`fundamental services on which all software relies. Subsequent layers contain more sophisticated services
`and technologies that build on (or complement) the layers below. Figure 1-1 provides a graphical view of
`this layered approach, highlighting a few of the key technologies found in each layer of Mac OS X.
`
`Figure 1-1
`
`Layers of Mac OS X
`
`IL _JL
`
`Aqua
`
`User Experience
`_JL
`Dashboard
`Spotlight
`Application Frameworks
`Carbon
`l[
`l[
`
`_JL J
`) I
`
`Accessibility
`
`Java
`
`[,
`
`Cocoa
`
`[,
`Core Animation
`l[
`(
`
`OpenGL
`
`[
`
`Graphics and Media
`Core Image
`Core Video
`H
`Quartz
`
`l[
`
`l[
`
`Darwin
`
`QuickTime
`H
`Core Audio
`
`) I
`l
`l
`
`The bottom layer consists of the core environment layer, of which Darwin is the most significant component.
`Darwin is the name given to the FreeBSD environment that comprises the heart of Mac OS X. FreeBSD is a
`variant of the Berkeley Software Distribution UNIX environment, which provides a secure and stable foundation
`for building software. Included in this layer are the kernel environment, device drivers, security support,
`interprocess communication support, and low-level commands and services used by all programs on the
`system. Besides Darwin, this layer contains several core services and technologies, many of which are simply
`higher-level wrappers for the data types and functions in the Darwin layer. Among the available core services
`
`A Layered Approach
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`17
`
`
`
`CHAPTER 1
`Mac OS X System Overview
`
`are those for doing collection management, data formatting, memory management, string manipulation,
`process management, XML parsing, stream-based I/O, and low-level network communication. For details
`about the technologies in this layer, see “Darwin and Core Technologies” (page 21).
`
`The Graphics and Media layer implements specialized services for playing audio and video and for rendering
`2D and 3D graphics. One of the key technologies in this layer is Quartz, which provides the main rendering
`environment and window management support for Mac OS X applications. QuickTime is Apple’s technology
`for displaying video, audio, virtual reality, and other multimedia-related information. Apple’s core technologies,
`including Core Image, Core Video, Core Animation, and Core Audio, provide advanced behavior for different
`types of media. OpenGL is an implementation of the industry-standard application programming interface
`(API) for rendering graphics and is used both as a standalone technology and as an underlying technology
`for accelerating all graphics operations. For details about the technologies in this layer, see “Graphics and
`Multimedia Technologies” (page 43).
`
`The Application Frameworks layer embodies the technologies for building applications. At the heart of this
`layer are the basic environments used to develop applications: Cocoa, Carbon, Java, and others. Each
`environment is designed to provide a level of familiarity to certain types of developers. For example, Cocoa
`and Java provide object-oriented environments using the Objective-C and Java languages while Carbon
`provides a C-based environment. This layer also contains numerous supporting technologies, such as Core
`Data, Address Book, Image Services, Keychain Services, Launch Services, HTML rendering, and many others.
`These technologies provide advanced user features and can be used to shorten your overall development
`cycle. For details about the technologies in this layer, see “Application Technologies” (page 57).
`
`The User Experience layer identifies the methodologies, technologies, and applications that make Mac OS X
`software unique. Apple provides countless technologies to implement the overall user experience. Many of
`these technologies simply work, but some require interactions with the software you create. Understanding
`what interactions are expected of your software can help you integrate it more smoothly into the Mac OS X
`ecosystem. For details about the technologies in this layer, see “User Experience” (page 71).
`
`The Advantage of Layers
`
`The nice thing about the Mac OS X layered design is that writing software in one layer does not preclude
`you from using technologies in other layers. Mac OS X technologies were built to interoperate with each
`other whenever possible. In cases where a given technology is unsuitable, you can always use a different
`technology that is suitable. For example, Cocoa applications can freely use Carbon frameworks and BSD
`function calls. Similarly, Carbon applications can use Objective-C based frameworks in addition to other
`object-oriented and C-based frameworks. Of course, in the case of Carbon, you might have to set up some
`Cocoa-specific structures before creating any Cocoa objects, but doing so is relatively trivial.
`
`Although you may feel more comfortable sticking with your chosen development environment, there are
`advantages to straying outside of that environment. You might find that technologies in other layers offer
`better performance or more flexibility. For example, using the POSIX interfaces in the Darwin layer might
`make it easier to port your application to other platforms that conform to the POSIX specification. Having
`access to technologies in other layers gives you options in your development process. You can pick and
`choose the technologies that best suit your development needs.
`
`18
`
`The Advantage of Layers
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`
`
`CHAPTER 1
`Mac OS X System Overview
`
`Developer Tools
`
`Mac OS X provides you with a full suite of free developer tools to prototype, compile, debug, and optimize
`your applications. At the heart of Apple’s developer tools solution is Xcode, Apple’s integrated development
`environment. You use Xcode to organize and edit your source files, compile and debug your code, view
`documentation, and build all manner of software products.
`
`In addition to the Xcode application, Mac OS X also provides you with a wide selection of open source tools,
`such as the GNU Compiler Collection (GCC), which you use to build Mach-O programs, the native binary
`format of Mac OS X. If you are used to building programs from the command line, all of the familiar tools are
`there for you to use, including makefiles, the gdb debugger, analysis tools, performance tools, source-code
`management tools, and many other code utilities.
`
`Mac OS X also provides many other tools to make the development process easier:
`
` ■
`
` ■
`
` ■
`
`Interface Builder lets you design your application’s user interface graphically and save those designs as
`resource files that you can load into your program at runtime.
`Instruments is a powerful performance analysis and debugging tool that lets you peer into your code
`as it’s running and gather important metrics about what it is doing.
`Shark is an advanced statistical analysis tool that turns your code inside out to help you find any
`performance bottlenecks.
`PackageMaker helps you build distributable packages for delivering your software to customers.
`Mac OS X includes several OpenGL tools to help you analyze the execution patterns and performance
`of your OpenGL rendering calls.
` ■ Mac OS X supports various scripting languages, including Perl, Python, Ruby, and others.
` ■ Mac OS X includes tools for creating and working with Java programs.
`
`Installing the developer tools also installs the header files and development directories you need to develop
`software. For information on how to get the developer tools, see “Getting the Xcode Tools” (page 14). For
`more information about the tools themselves, see “Mac OS X Developer Tools” (page 127).
`
`Developer Tools
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`19
`
`■
`■
`
`
`CHAPTER 1
`Mac OS X System Overview
`
`Developer Tools
`2009-08-14 | © 2004, 2009 Apple Inc. All Rights Reserved.
`IPR2022-00031 / IPR2022-00032 / IPR2022-00033 / PGR2022-00006
`
`20
`
`
`
`CHAPTER 2
`
`Darwin and Core Technologies
`
`This chapter summarizes the fundamental system technologies and facilities that are a