`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 1
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`I
`
`The Jini™ Technology Series
`Lisa Friendly, Series Editor
`Ken Arnold, Technical Editor
`For more information see: http://java.sun.com/docs/books/jini/
`
`This series, written by those who design, implement, and document the Jini'" technology,
`shows how to use, deploy, and create Jini applications. Jini technology aims to erase the
`hardware/software distinction, to foster spontaneous networking among devices, and to
`make pervasive a service-based architecture. In doing so, the Jini architecture is r.adically
`changing the way we think about computing. Books in The Jini Technology Seriies are
`aimed at serious developers looking for accurate, insightful, thorough, and practical
`material on Jini technology.
`
`The Jini Technology Series web site contains detailed information on the Series,
`including existing and upcoming titles, updates, errata, sources, sample code, and
`other Series-related resources.
`
`Ken Arnold, Bryan O'Sullivan, Robert W. Scheifler, Jim Waldo, Ano Wollrath, The lint" Specification
`ISBN 0-201-61634-3
`
`Eric Freeman, Susaooe Hupfer, and Ken Arnold, JavaSpaces'" Principles, Patterns, and Practice
`ISBN 0-201-30955-6
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 2
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`y,
`
`!y
`
`tion
`
`The Jini™ Specification
`
`Ken i\.rnold
`Bryan O' Sullivan
`Robert W. Scheifler
`Jim \Valdo
`Ann \Vollrath
`
`J~
`........
`ADDISON--WESLEY
`An impdnt of Addison Wesley Longman, Inc.
`Reading, Massachusetts • Harlow, England • Menlo Park, California
`Berkeley, California • Don Mills, Ontario • Sydney
`Bonn • Amsterdam • Tokyo • Mexico City
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 3
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`This book is dedicated to the Jini team
`without whom this book
`would not have been necessary
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 4
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`Co1t1tents
`
`Foreword . .. . . . . .. ..... . . . ........ . . .. . ......... . . . .. ...... xvii
`
`Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
`
`PART 1
`
`Overview and Examples
`
`The Jini Architecture: An Introduction .. ........ ... ... .. 3
`1
`Overview ............. ..... . . ... ... .... .. .. . . ... . ..... . .. 3
`1.1 · Goals .. ....... .... . . . . . .. .. . ... . ... . ...... . .. .... .. 4
`Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
`1.2
`What the Jini Archittxlure Depends Upon . . .. . . . ... . .... .. 7
`1.3
`1.4
`The Value of a Proxy . .. ........... . . . ........ .. . . .. .. . 7
`1.5
`The Lookup Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
`1.5.1
`Attributes ... ........ ... .. . .. . .. . ....... .. . 10
`1.5 .2
`Membership Management . . . . . . . . . . . . . . . . . . . . 11
`1.5.3
`Lookup Groups .. . .. . . ..... . .... .. .. .. .... . . 12
`Lookup Service Compared to Naming/Directory
`1.5.4
`Services
`. . . . . . . . . . . . . . . . . . . . . . . . .. : ·. . . . . . . 13
`Conclusion .. . .... . . .. ..... .. .... . ..... . .. .. ... . .... . 14
`Notes on the Example Code .... . .. . . . . .... .. . ... . . . .... 16
`1.7.1
`Package Structure .... . .. . . . .... . .. . . ... .. .. .. 16
`2 Writing a Client . . .. ....... .... . . ........ . . .. .. . ... . .. .. 19
`2.1
`The MessageStream Interface .. . . .. .. ... .. .... ........ 19
`2.2
`The Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
`2.3
`In Conclusion . . .. . . ....... .. ..... . . . ..... . . ...... ... 27
`
`1.6
`1.7
`
`vii
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 5
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`viii
`
`3
`
`4
`
`3.3
`
`3.2
`
`Writing a Service ... . .. .... . . . . . . .. . ... . ...... .. . . . . .. .. 29
`3.1
`Good Lookup Citizenship ..... .... .. . . ......... . .. . ... 29
`3.1.1
`The Joi nManager Utility . . . . . . . . . . . . . . . . . . . . 30
`The FortuneStream Service .. ........ . . .. .. .......... 30
`The Implementation Design .... ... .. . .. . ..... 32
`3.2.l
`3.2.2
`Creating the Service. . . . . . . . . . . . . . . . . . . . . . . . . 32
`3.2.3
`The Running Service ................ . .... . .. 34
`The ChatStream Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
`3.3.1
`"Service" versus "Server" . .. . .... . . .... ..... . . 41
`3.3.2
`Creating the Service. . . . . . . . . . . .. . . . . . . . . . . . . . 41
`3.3.3
`The Chat Server . . .. .......... .. .. . . . . . ...... 43
`3.3.4
`Implementing nextinL i ne . . . . . .. . . . . . . . . . . . . . 50
`Notes on Improving ChatServerimpl ... . .. . ... 51
`3.3.5
`3.3.6
`The Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
`The Rest of This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
`
`P A R T 2
`
`The Jini Specification
`
`AR The Jini Architecture Specification ......... .. ... ....... 61
`AR.1 Introduction ...................... . . . . . . .. .. . .. . .... .... 61
`AR.1.1 Goals of the System ... ...................... . . . .. ... 61
`AR.1.2 Environmental Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
`AR.2 System Overview . . . . .. .. . . ....... .... .. ... ...... . .... .. 65
`AR.2.1 Key Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
`AR.2.1 .1 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
`AR.2.1.2 Lookup Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
`AR.2.1.3 Java Remote Method Invocation (RMI) . . . . . . . . . 66
`AR.2.1.4 Security . .... ............. .. .. .. .. . ....... 67
`AR.2.1.5 Leasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
`AR.2.1.6 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
`AR.2.1.7 Events .. ........... .. . .. .. . . . .... . . ..... . 67
`AR.2.2 Component Overview .... .... ... . ........... . . ... ·.· .. 68
`AR.2.2.1 Infrastructure ... ..... . .. .. .. .... ......... : . 69
`AR.2.2.2 Programming Model . . . . . . . . . . . . . . . . . . . . . . . . 69
`AR.2.2.3 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
`AR.2.3 Service Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
`. ........ . .... 72
`AR.2.3.1 Discovery and Lookup Protocols
`AR.2.3.2 Service Implementation . . . . . . . . . . . . . . . . . . . . . . 75
`AR.3 An Example .................. .. .. . ..... . . ... .... . . ..... 77
`AR.3.1 Registering the Printer Service . . . . . . . . . . . . . . . . . . . . . . . . . 77
`AR.3.1.1 Discovering the Lookup Service ..... .... ...... 77
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 6
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`ix
`
`AR.3.1.2 Joining the Lookup Service .. . . . ..... .. .. . .... 77
`AR.3.1.3 Optional Configuration . . .. . ...... . ...... . .. .. 78
`AR.3.1.4 Staying Alive ... .. . . .. ........ . ...... . .... . 78
`AR.3.2 Printing ...... .... . .. . . . .... .. .. .. . . ...... . . ...... . 78
`AR.3.2.1 Locate the Lookup Service ...... . .. .. .. . ... . . . 78
`AR.3.2.2 Search for Printing Services .. .. . . .......... . .. 79
`AR.3.2.3 Configuring the Printer . .. .. ......... . .. . ..... 79
`AR.3.2.4 Requesting That the Image Be Printed . ... ....... 79
`AR.3.2.5 Registering for Notification ..... . ... .. . .. .. . . . 80
`AR.3.2.6 Receiving Notification ... ....... . . . . . . ....... 80
`AR.4 For More Information ...... . ... .... . . .. . . .. . . ...... .... 81
`
`DJ The Jini Discovery and Join Specification . .. .. ...... . . 83
`DJ.1 Introduction . .......... . . .. . . : ..... ..... . . . . .. . ......... 83
`DJ.1.1 Terminology .... ....... . .... . . . . ..... . . .. . .. .. ..... 83
`DJ.1.2 Host Requirements
`. .. . . ....... . .. . ......... . . ... . .. . 84
`DJ.1.2.1 Protocol Stack Requirements for IP Networks .. ... 84
`DJ.1.3 Protocol Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
`DJ.1.4 Discovery in Brief . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
`DJ.1.4.1 Groups ......... .. . . . . ......... . . . .. .. ... . 85
`DJ.1.4.2 The Multicast Request Protocol .. .. . .. ......... . 86
`DJ.1.4.3 The Multicast Announcement Protocol . ...... . .. 87
`DJ.1.4.4 The Unicast Discovery Protocol ..... .. . .. .. ..... 88
`DJ. 1.5 Dependencies . . . .. .... . . .. . . .. . ........ . . .. . ......... 88
`DJ.2 The Discovery Protocols .. .. .. .. . . . . . . .. . .... .. .. .. .. . ... 89
`DJ.2.1 Protocol Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
`DJ.2.2 The Multicast Request Protocol
`. . ... . . ..... ... . .. .. .... 89
`DJ.2.2.1 Protocol Participants ..... .... . . ...... . . . ..... 89
`DJ .2.2.2 The Multicast Request Service .. .. ...... . ...... 90
`DJ.2.2.3 Request Packet Format ... . .. . .............. .. 91
`DJ.2.2.4 The Multicast Response Service .... .. . . . ...... 93
`DJ.2.3 Discovery Using the Multicast Request Protocol ... . .. . .... 93
`DJ.2.3.1 Steps Taken by the Discovering Entity .. .. .. .... 93
`DJ.2.3.2 Steps Taken by the Multicast Request Server . . . .. 94
`DJ.2.3.3 Handling Responses from Multiple Djinns .. . . ... 95
`DJ .2.4 The Multicast Announcement Protocol . . . . . . . . . . . . . . . . . . . 95
`DJ.2.4.1 The Multicast Announcement Service .... . .. . .. . 95
`DJ.2.4.2 The Protocol . . .. .......... . .. . . .. . .. .. . .. . . 97
`DJ.2.5 Unicast Discovery . : ..... . . . . .. .. . ...... . . . .. .. ...... 97
`DJ.2.5.1 The Protocol .... .......... .. . . .. . ...... . . .. 98
`DJ.2.5.2 Request Format ...... .... ........ .. .. . .. .. .. 99
`DJ.2.5.3 Response Format .. . ..... . . . . ........ . .. . . . 100
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 7
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`DJ.3 The Join Protocol . .. ... . . . .. . .. . . .. . .. . . ....... . .. .. . . 101
`DJ.3.1 Persistent State ........ . . . .. . . . .. .. . . . .. . . . ........ 101
`DJ.3.2 The Join Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
`DJ.3.2.1
`Initial Discovery and Registration . . . . . . . . . . . . . 102
`DJ.3.2.2 Lease Renewal and Handling of Communication
`Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
`DJ.3.2.3 Making Changes and Performing Updates . . . . . . 103
`DJ.3.2.4 Joining or Leaving a Group . . . . . . . . . . . . . . . . . . 103
`DJ.4 Network Issues ..... .. .... ...... ............. .... ...... 105
`DJ.4.1 Properties of the Underlying Transport . . . . . . . . . . . . . . . . . 105
`DJ.4.1.1 Limitations on Packet Sizes .................. 105
`DJ.4.2 Bridging Calls to the Discovery Request Service . . . . . . . . . . 105
`DJ.4.3 Limiting the Scope of Multicasts . . . . . . . . . . . . . . . . . . . . . . 106
`DJ.4.4 Using Multicast IP as the Underlying Transport . . . . . . . . . . 106
`DJ.4.5 Address and Port Mappings for TCP and Multicast UDP . . . 106
`DJ.5 LookupLocator Class .................................. 107
`DJ.5. 1 Jini Technology URL Syntax . . . . . . . . . . . . . . . . . . . . . . . . . 108
`DJ.5.2 Serialized Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
`
`DU The Jini Discovery Utilities Specification .. . ...... .... 111
`DU.1 Introduction .................. . ....... .... . . . ......... . 111
`DU. 1.1 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
`DU.2 Multicast Discovery Utility ... . .... .... . ... .. . . .. . ..... 113
`DU.2.1 The LookupDi scovery Class ............. . ........... 114
`DU.2.2 Useful Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
`DU.2.3 Changing the Set of Groups to Discover . . . . . . . . . . . . . . . . 115
`DU.2.4 The Di scove r yEvent Class . . . . . . . . . . . . . . . . . . . . . . . . . . 116
`DU.2.5 TheDiscove rylistenerlnterface . . .. . .. . .. ..... .. . .. 116
`DU.2.6 Security and Multicast Discovery . . . . . . . . . . . . . . . . . . . . . . 117
`DU.2.7 Serialized Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
`DU.3 Protocol Utilities ... .. . .... . .... . ..... . .... . . . . .. .. . . .. 119
`DU.3.1 Marshalling Multicast Requests . . . . . . . . . . . . . . . . . . . . . . . 119
`DU.3.2 Unmarshalling Multicast Requests . . . . . . . . . . . . . . . . . . . . . 120
`DU.3.3 Marshalling Multicast Announcements . . . . . . . . . . . . . . . . . 121
`DU.3.4 Unmarshalling Multicast Announcements . . . . . . . . . . . . . . . 122
`DU.3.5 Easy Access to Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
`DU.3.6 Marshalling Unicast Discovery Requests ..... .. ......... 123
`DU.3.7 Unmarshalling Unicast Discovery Requests . .. . . . . . . . . . . . 123
`DU.3.8 Marshalling Unicast Discovery Responses ..... . . .. .... .. 124
`DU.3.9 Unmarshalling Unicast Discovery Responses . . . . . . . . . . . . 124
`
`EN The
`EN.:
`
`EU Thi
`EU.
`
`LE Th
`LE
`
`LE
`
`LI
`
`R
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 8
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`xi
`
`I
`
`1
`I'
`
`EN The Jini Entry Specification ....... .. . . . . .. .. .. .. . .. .... 127
`EN.1 Entries and Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
`EN. 1.1 Operations ... . .. .. . .. .. ....... . ........ .. .. ....... 127
`EN.1.2 Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
`EN.1.3 Serializing Entry Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
`EN.1.4 UnusableEntryException ..... . .. : ........ ... .. . ... 129
`EN. 1.5 Templates and Matching .. .. .. . . .. .. . .. .. . .. . .. . .. . .. 131
`EN.1.6 Serialized Form .................................... 131
`
`EU The Jini Entry Utilities Specification . .. . ... . . .. ....... 133
`EU.1 Entry Utilities ................... ........ ..... . ....... 133
`EU.1.1 AbstractEntry ......................... .. ........ . 133
`EU.1.2 Serialized Form ..... .... ............. .. ..... . .. .. .. 134
`
`LE The Jini Distributed Leasing Specification ... . ....... 137
`LE.1 Introduc,tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
`LE.1.1 Leasing and Distributed Systems
`. .. ........ . .. . . ...... 137
`LE.1.2 Goals and Requirements . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 140
`LE.1.3 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 140
`LE.2 Basic Leasing Interfaces ............ .. ..... .... ........ 141
`LE.2.1 Characteristics of a Lease .... ........ .... . . .. ... ..... 141
`LE.2.2 Basic Operations ..... . . ....... . .. . . ........... .. ... 142
`LE.2.3 Leasing and Time ....... . ... .. .... . .. .. ....... . .... 147
`LE.2.4 Serialized Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
`LE.3 Example Supporting Classes ......... . . . ...... ...... .. 149
`LE.3.1 A Renewal Class ................ .. .. . .. . .. .... . .. . . 149
`LE.3.2 A Renewal Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
`
`EV The Jini Distributed Event Specification ..... ......... 155
`EV.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
`EV. l. 1 Distributed Events and Notifications . . . . . . . . . . . . . . . . . . . . 155
`EV.1.2 Goals and Requirements . .. . ................ ... .. .. ... 1;>6
`EV.1.3 Dependencies ...... .. ................... . .. . .. .. ... 157
`EV.2 The Basic Interfaces .... ·. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
`EV.2.1 Entities Involved ....... .. ......... .. . . ...... ... . . .. 159
`EV.2.2 Overview of the Interfaces and Classes . . . . . . . . . . . . . . . . . . 161
`EV.2.3 Details of the Interfaces and Classes . . . . . . . . . . . . . . . . . . . . 163
`EV.2.3.1 The RemoteEventL i stene·r Interface . .. ..... .. 163
`EV.2.3.2 The RemoteEvent Class .. . ...... . .... . ...... 164
`EV.2.3.3 The UnknownEventExcepti on ............... 165
`EV.2.3.4 An Example EventGenerator Interface . .... .. . 166
`EV.2.3.5 The EventRegi strati on Class .... . ... . ..... 168
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 9
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`EV.2.4 Sequence Numbers, Leasing and Transactions . . . ..... . ... 169
`EV .2.5 Serialized Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
`EV.3 Third-Party Objects . . ............... . .. . .............. 171
`EV.3.1 Store-and-Forward Agents . .................... .. .... 171
`EV.3.2 Notification Filters . . . .. .... . . .. ............ . ..... .. 173
`EV .3.2.1 Notification Multiplexing . . . . . . . . . . . . . . . . . . . 174
`EV.3.2.2 Notification Demultiplexing . . . . . . . . . . . . . . . . . 174
`EV.3.3 Notification Mailboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
`EV.3.4 Compositionality . .. .... . . ..... . . ....... . ..... .. .... 176
`EV.4 Integration with JavaBeans Components ....... . ..... . 1791
`EV.4.1 Differences with the JavaBeans Component Event Model .. 180
`EV.4.2 Converting Distributed Events to JavaBeans Events ..... .. 182
`
`~X The Jini Transaction Specification . . . . . . . . . . . . . . . . . . . . 18S
`TX.1 Introduction ... . .. .. .... . ... ... .. ....... .. ... . . ..... ... 18S
`TX.1.1 Model and Terms . . . ...... ... ... .. ....... . . . .. .. ... 186
`TX.1.2 Distributed Transactions and ACID Properties . . . . . . . . . . . 188
`TX.1.3 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
`TX.1.4 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
`TX.2 The Two-Phase Commit Protocol ......... . . ... ....... 191l
`TX.2.1 Starting a Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
`TX.2.2 Starting a Nested Transaction . . . . . . . . . . . . . . . . . . . . . . . . . 193
`TX.2.3 Joining a Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
`TX.2.4 Transaction States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
`TX.2.5 Completing a Transaction: The Client's View ....... . . .. . 197
`TX.2.6 Completing a Transaction: A Participant's View . . .. .. .... 199
`TX.2.7 Completing a Transaction: The Manager's View .. .... . ... 202
`TX.2.8 Crash Recovery . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
`TX.2.8.1 The Roll Decision . . . . . . . . . . . . . . . . . . . . . . . . . 20.S
`TX.2.9 Durability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
`TX.3 Default Transaction Semantics .. .... . ... .. .... .. . . .... 207
`TX.3.1 Transaction and Nestabl eTransacti on Interfaces .... .. 207
`TX.3.2 Transaction Factory Class . . . . . . . . . . . . . . . . . . . . . . . . . 209
`TX.3.3 ServerTransacti on and Ne stab l eServerTransacti on
`Classes ....... . .. ...... . ..... . . .. .......... . .. . .. ,210
`TX.3.4 CannotNestException Class ................ . . ...... 212
`TX.3.5 Semantics . . ..... .. ...... . ..... . .. . . . .. . . ......... 212
`TX.3.6 Serialized Forms .... . .... .. . . .... . ... .. .... . ....... 214
`
`LU The Jini Lookup Service Specification ... .. .... ....... 21'7
`LU.1 Introduction . ... .... .. . . .... .. . ... ... .. ... . . . . ..... .. .. 217
`LU. 1.1 The Lookup Service Model
`. . . . . . . . . . . . . . . . . . . . . . . . . . 217
`LU.1.2 Attributes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
`
`LU.2
`
`LS The
`LS.l
`
`LS.2
`
`LS.J
`
`LS.•
`
`JS Tl
`JS
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 10
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`i
`
`xiii
`
`LU.1.3 Dependencies .... . ... .. ... ................. .. .. .. .. 219
`LU.2 The ServiceRegistrar . ...... .. . . .. .. ..... .. . ... . .... 221
`LU.2.1 Servi ceID .... . .. . . . .. ....... .......... . .. .. .. .. .. 221
`LU.2.2 Servi ceitem .. . .. . . . .. . ............. ...... . . ...... 222
`LU.2.3 Servi ceTempl ate and Item Matching . ........... .. .... 223
`LU.2.4 Other Supporting Types .. . . . .. . . ..... ............. ... 224
`LU.2.5 Servi ceRegi s trar .. . .. ............ .. . ......... . ... 225
`LU.2.6 Servi ceRegi strati on .. . . . .. . .. ................... 229
`LU.2.7 Serialized Fotms ........ . .. . .. .. . . ................. 230
`
`LS The Jini Lookup Attribute Schema Specificatilon .. .. 233
`LS.1 Introduction . . ... . ....... . .... . ........ .. ... ....... . ... 233
`LS. 1.1 Terminology .. . . . .. . . . ... .. . ... . .. . ...... . .. . .. . . . 234
`LS.1.2 Design Issues .. . .. . ............... .. ..... . .. .. . . ... 234
`LS.1.3 Dependencies .... .. .. .. ............ . .. .. ........... 235
`LS.2 Human Access to Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . 237
`LS.2.1 Providing a Single View of an Attribute's Value . .. ..... . . 237
`LS.3 JavaBeans Components and Design Patterns .. . .. .... 239
`LS.3.1 Allowing Display and Modification of Attributes .......... 239
`LS.3.1.1 Using JavaBeans Components with Entry Classes 239
`LS.3.2 Associating JavaBeans Components with Entry Classes .... 240
`LS.3.3 Supporting Interfaces and Classes ....... . . ............ . 241
`LS.4 Generic Attribute Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
`LS.4.1
`Indicating User Modifiability . .. . . . .......... . ..... .. . 243
`LS.4.2 Basic Service Information ...... . . . ... . .. . . .. . .. . ..... 243
`LS.4.3 More Specific Information ....... . ... . . ... .. ...... . . . 245
`LS.4.4 Naming a Service ........ . .. . .. . . . .. . . .... . . . .. ... . . 246
`LS.4.5 Adding a Comment to a Service . ..... .... . . . .. : ... .. . . 246
`LS.4.6 Physical Location ... . .... . .. ... ... . .. . ..... . ....... 247
`LS.4.7 Status Information . .... . .. . .... . . ... . . .......... . ... 248
`LS.4.8 Serialized Forms . ..... ... .. .... .. . . ......... . . . .... 249
`
`JS The JavaSpaces Specification .. .......... .. . . .. ...... . .. 253
`JS.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
`JS.1.1 The JavaSpaces Application Model and Terms .. .. . .. . . : . 253
`JS. l.1.1 Distributed Persistence .. . .. .. . .. .. . .. . . ... . . 254
`JS. l.1.2 Distributed Algorithms as Flows of Objects ... . . 254
`JS.1.2 Benefits . ....... .......... ....................... . 256
`JavaSpaces Technology and Databases . . . . . . . . . . . . . . . . . . 257
`JS.1.3
`JavaSpaces System Design and Linda Systems ........... 258
`JS .1.4
`Goals and Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
`JS.1.5
`Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
`JS.1.6
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 11
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`xiv
`
`JS.2 Operations .. . . .......... . . ............. . ... .... ...... . 261
`JS.2.1 Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
`JS.2.2 net . j i ni . space. J avaSpace . . . . . . . . . . . . . . . . . . . . . . . . 262
`JS.2.2.1
`Interna 1 SpaceExcepti on ... . ..... ..... .. . 263
`JS.2.3 write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
`JS.2.4
`readifExi sts and read . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
`takeifExi sts and take . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
`JS.2.5
`JS.2.6
`snapshot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
`JS.2.7 noti fy . ......... . . . .......... . ...... . .. . ... . .. .. 266
`JS.2.8 Operation Ordering ........... . . . .... .. ........ . .... 268
`JS.2.9 Serialized Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
`JS.3 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
`JS.3.1 Operations under Transactions ............... . ........ 269
`JS.3.2 Transactions and ACID Properties ...... ............. .. 270
`JS.4 Further Reading ..................... . .. .. .... .. .... .. 273
`JS.4.1 Linda Systems . .. ...... . .. .... .... .. ..... .. ... ..... 273
`JS.4.2 The Java Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
`JS.4.3 Distributed Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
`
`DA The Jini Device Architecture Specification .. .. .... .. . 277
`DA.1 Introduction ...... ..... . . .. . . ..... . . .. ..... . .. . . .. ...... 277
`DA. 1.1 Requirements from the Jini Lookup Service . . . . . . .. . . . . . . 278
`DA.2 Basic Device Architecture Examples ........ . ....... . .. . 281
`DA.2.1 Devices with Resident Java Virtual Machines . . . . . . . . . . . . 281
`DA.2.2 Devices Using Specialized Virtual Machines . . . . . . . . . . . . . 283
`DA.2.3 Clustering Devices with a Shared Virtual Machine
`(Physical Option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
`DA.2.4 Clustering Devices with a Shared Virtual Machine
`(Network Option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
`DA.2.5 Jini Software Services over the Internet Inter-Operability
`Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
`
`PART 3
`
`Supplemental Material
`
`The Jini Technology Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
`
`Appendix A: A Note on Distributed Computing . ..... . . . 307
`A.1
`Introduction ........................................... 307
`A. 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 12
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`xv
`
`A.2 The Vision of Unified Objects . . . . . . . . . . . . . . . . . . . . . . . . . 308
`A.3 Deja Vu All Over Again .. . . ....... . . . . ......... . . . . . . 311
`A.4 Local and Distributed Computing . . . . . . . . . . . . . . . . . . . . 312
`A.4.1 Latency
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
`A.4.2 Memory Access . ...................... .. .... .. . .... 314
`A.5 Partial Failure and Concurrency . . . . . . . . . . . . . . . . . . . . . 316
`A.6 The Myth of "Quality of Service" . ..... . . . . . .. ...... . . 318
`A.7 Lessons From NFS ... .... ..... ... . .. .... .. . ..... ...... 320
`A.8 Taking the Difference Seriously . . . . . . . . . . . . . . . . . . . . . . . 322
`A.9 A Middle Ground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
`A.10 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
`A.11 Observations for this Reprinting . . . . . . . . . . . . . . . . . . . . . . 326
`
`Appendix B: The Example Code . . .. ........... .. .......... 327
`
`Index ..... .. . ...... . .. . ...... .. ......... .. . .... ..... .. . . ... . ..... 371
`
`Colophon .. ..... .. ... ... .. ...... .. . . ... . ..... .. ........... .. . ... 385
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 13
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`Foreword
`
`THE emergence of the Internet has led computing into a new e:ra. It is no longer
`
`what your computer can do that matters. Instead, your computer can have access
`to the power of everything that is connected to the network: The Network is the
`Computer™. This network of devices and services is the computing environment
`of the future.
`The Java™ programming language brought reliable object-oriented programs
`to the net. The power of the Java platform is its simplicity, which allows program-
`. mers to be fully fluent in the language. This simplicity allows debugged Java pro(cid:173)
`grams to be written in about a quarter the time it takes to write programs in C++.
`We believe that use of the Java platform is the key to the eme1rgence of a "best
`practices" discipline in software construction to give us the reliability we need in
`our software systems as they become more and more widely used.
`The Jini™ architecture is designed to bring reliability and simplicity to the
`construction of networked devices and services. The philosophy behind Jini is lan(cid:173)
`guage-based systems: a Jini system is a collection of interacting Java programs,
`and you can understand the behavior of this Jini system completely by under(cid:173)
`standing the semantics of the Java programming language and the nature of the
`network, namely that networks have limited bandwidth, inherent latency, and par(cid:173)
`tial fai 1 ure.
`Because the Jini architecture focuses on a few simple principles, we can teach
`Java language programmers the full power of the Jini technology in a few days. To
`do this, we introduce remote objects (they just throw a RemoteExcepti on), leas(cid:173)
`ing (commitments in a Jini system are of limited duration), distributed events (in
`the network events aren' t as predictable on a i;ingle machine), and the need for
`two-phase commit (because the network is a world of partial failures). This small.
`set of additional concepts allows distributed applications to be written, and we can
`illustrate this with the JavaSpaces™ service, which is also speci:fied here.
`For me, the Jini architecture represents the results of almost 20 years of yearn(cid:173)
`ing for a new substrate for distributed computing. Ever since ][ shipped the first
`
`xvii
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 14
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`FOREWORD
`
`widely used implementation of TCP/IP with the Berkeley UNIX system, I have
`wanted to raise the level of discourse on the network from the bits and bytes of
`TCP/IP to the level of objects. Objects have the enormous advantage of combining
`the data with the code, greatly improving the reliability and integrity of systems.
`For me, the Jini architecture represents the culmination of this dream.
`I would like to thank the entire Jini team for their continuing hard work and
`commitment. I would especially like to thank my longtime collaborator Mike
`Clary for helping to get the Jini project started and for directing the project; 1he
`Jini architects Jim Waldo, Ken Arnold, Bob Scheiffler, and Ann Wollrath for
`designing and implementing such a simple and elegant system; Mark Hodapp for
`bis excellent engineering management; and Samir Mitra for committing early to
`the Jini project, helping us understand how to explain it and what problems it
`would solve, and for driving the key business development that helped give Jini
`technology the momentum it has in the marketplace today. I would also like to
`thank Mark Tolliver, the head of the Consumer and Embedded Division, which
`the Jini project became part of, for his support.
`Finally, I would like to thank Scott McNealy, with me a founder of Sun
`Microsystems™, Inc., and its longtime CEO. It is his continuing support for
`breakthrough technologies such as Java and Jini that makes them possible. As
`Machiavelli noted, it is hard to introduce new ideas, and support like Scott's is
`essential to our continuing success.
`
`BILL JOY
`ASPEN, COLORADO
`APRIL, 1999
`
`THEJini :
`Networks a
`existing thi
`are therefo1
`tiple procei
`These
`changes ap
`A distribut
`change. Tt
`This b
`architectur
`following ·
`first sectio
`cal manag
`The st
`you withi1
`of them a:
`tern. As~
`can start)
`The s
`specificat:
`ture.
`The t
`defines tt
`design, a1
`
`Smart Mobile Technologies LLC, Exhibit 2002
`Page 2002 - 15
`IPR2022-00807, Apple Inc. et al. v. Smart Mobile Technologies LLC
`
`
`
`Prteface
`
`Perfection is reached, not when there is no longer anything to add,
`but when there is no longer anything to take away.
`-Antoine de Saint-Exupery
`
`THE Jini architecture is designed for deploying and using services in a netwo