Thinking in Java, 2nd Edition, Release 11 To be published by Prentice-Hall mid-June, 2000 Bruce Eckel, President, MindView, Inc Planet PDF brings you the Portable Document Format (PDF) version of Thinking in Java (2nd Edition) Planet PDF is the premier PDF-related site on the web There is news, software, white papers, interviews, product reviews, Web links, code samples, a forum, and regular articles by many of the most prominent and respected PDF experts in the world Visit our sites for more detail: http://www.planetpdf.com/ http://www.codecuts.com/ http://www.pdfforum.com/ http://www.pdfstore.com/ Thinking in Java Second Edition Bruce Eckel President, MindView, Inc Comments from readers: Much better than any other Java book I’ve seen Make that “by an order of magnitude” very complete, with excellent right-to-the-point examples and intelligent, not dumbed-down, explanations In contrast to many other Java books I found it to be unusually mature, consistent, intellectually honest, well-written and precise IMHO, an ideal book for studying Java Anatoly Vorobey, Technion University, Haifa, Israel One of the absolutely best programming tutorials I’ve seen for any language Joakim Ziegler, FIX sysop Thank you for your wonderful, wonderful book on Java Dr Gavin Pillay, Registrar, King Edward VIII Hospital, South Africa Thank you again for your awesome book I was really floundering (being a non-C programmer), but your book has brought me up to speed as fast as I could read it It’s really cool to be able to understand the underlying principles and concepts from the start, rather than having to try to build that conceptual model through trial and error Hopefully I will be able to attend your seminar in the not-too-distant future Randall R Hawley, Automation Technician, Eli Lilly & Co The best computer book writing I have seen Tom Holland This is one of the best books I’ve read about a programming language… The best book ever written on Java Ravindra Pai, Oracle Corporation, SUNOS product line This is the best book on Java that I have ever found! You have done a great job Your depth is amazing I will be purchasing the book when it is published I have been learning Java since October 96 I have read a few books, and consider yours a “MUST READ.” These past few months we have been focused on a product written entirely in Java Your book has helped solidify topics I was shaky on and has expanded my knowledge base I have even used some of your explanations as information in interviewing contractors to help our team I have found how much Java knowledge they have by asking them about things I have learned from reading your book (e.g., the difference between arrays and Vectors) Your book is great! Steve Wilkinson, Senior Staff Specialist, MCI Telecommunications Great book Best book on Java I have seen so far Jeff Sinclair, Software Engineer, Kestral Computing Thank you for Thinking in Java It’s time someone went beyond mere language description to a thoughtful, penetrating analytic tutorial that doesn’t kowtow to The Manufacturers I’ve read almost all the others— only yours and Patrick Winston’s have found a place in my heart I’m already recommending it to customers Thanks again Richard Brooks, Java Consultant, Sun Professional Services, Dallas Other books cover the WHAT of Java (describing the syntax and the libraries) or the HOW of Java (practical programming examples) Thinking in Java is the only book I know that explains the WHY of Java; why it was designed the way it was, why it works the way it does, why it sometimes doesn’t work, why it’s better than C++, why it’s not Although it also does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book Robert S Stephenson Thanks for writing a great book The more I read it the better I like it My students like it, too Chuck Iverson I just want to commend you for your work on Thinking in Java It is people like you that dignify the future of the Internet and I just want to thank you for your effort It is very much appreciated Patrick Barrell, Network Officer Mamco, QAF Mfg Inc Most of the Java books out there are fine for a start, and most just have beginning stuff and a lot of the same examples Yours is by far the best advanced thinking book I’ve seen Please publish it soon! I also bought Thinking in C++ just because I was so impressed with Thinking in Java George Laframboise, LightWorx Technology Consulting, Inc I wrote to you earlier about my favorable impressions regarding your Thinking in C++ (a book that stands prominently on my shelf here at work) And today I’ve been able to delve into Java with your e-book in my virtual hand, and I must say (in my best Chevy Chase from Modern Problems) “I like it!” Very informative and explanatory, without reading like a dry textbook You cover the most important yet the least covered concepts of Java development: the whys Sean Brady Your examples are clear and easy to understand You took care of many important details of Java that can’t be found easily in the weak Java documentation And you don’t waste the reader’s time with the basic facts a programmer already knows Kai Engert, Innovative Software, Germany I’m a great fan of your Thinking in C++ and have recommended it to associates As I go through the electronic version of your Java book, I’m finding that you’ve retained the same high level of writing Thank you! Peter R Neuwald VERY well-written Java book I think you’ve done a GREAT job on it As the leader of a Chicago-area Java special interest group, I’ve favorably mentioned your book and Web site several times at our recent meetings I would like to use Thinking in Java as the basis for a part of each monthly SIG meeting, in which we review and discuss each chapter in succession Mark Ertes I really appreciate your work and your book is good I recommend it here to our users and Ph.D students Hugues Leroy // Irisa-Inria Rennes France, Head of Scientific Computing and Industrial Tranfert OK, I’ve only read about 40 pages of Thinking in Java, but I’ve already found it to be the most clearly written and presented programming book I’ve come across and I’m a writer, myself, so I am probably a little critical I have Thinking in C++ on order and can’t wait to crack it—I’m fairly new to programming and am hitting learning curves head-on everywhere So this is just a quick note to say thanks for your excellent work I had begun to burn a little low on enthusiasm from slogging through the mucky, murky prose of most computer books—even ones that came with glowing recommendations I feel a whole lot better now Glenn Becker, Educational Theatre Association Thank you for making your wonderful book available I have found it immensely useful in finally understanding what I experienced as confusing in Java and C++ Reading your book has been very satisfying Felix Bizaoui, Twin Oaks Industries, Louisa, Va I must congratulate you on an excellent book I decided to have a look at Thinking in Java based on my experience with Thinking in C++, and I was not disappointed Jaco van der Merwe, Software Specialist, DataFusion Systems Ltd, Stellenbosch, South Africa This has to be one of the best Java books I’ve seen E.F Pritchard, Senior Software Engineer, Cambridge Animation Systems Ltd., United Kingdom Your book makes all the other Java books I’ve read or flipped through seem doubly useless and insulting Brett g Porter, Senior Programmer, Art & Logic I have been reading your book for a week or two and compared to the books I have read earlier on Java, your book seems to have given me a great start I have recommended this book to a lot of my friends and they have rated it excellent Please accept my congratulations for coming out with an excellent book Rama Krishna Bhupathi, Software Engineer, TCSI Corporation, San Jose Just wanted to say what a “brilliant” piece of work your book is I’ve been using it as a major reference for in-house Java work I find that the table of contents is just right for quickly locating the section that is required It’s also nice to see a book that is not just a rehash of the API nor treats the programmer like a dummy Grant Sayer, Java Components Group Leader, Ceedata Systems Pty Ltd, Australia Wow! A readable, in-depth Java book There are a lot of poor (and admittedly a couple of good) Java books out there, but from what I’ve seen yours is definitely one of the best John Root, Web Developer, Department of Social Security, London I’ve *just* started Thinking in Java I expect it to be very good because I really liked Thinking in C++ (which I read as an experienced C++ programmer, trying to stay ahead of the curve) I’m somewhat less experienced in Java, but expect to be very satisfied You are a wonderful author Kevin K Lewis, Technologist, ObjectSpace, Inc I think it’s a great book I learned all I know about Java from this book Thank you for making it available for free over the Internet If you wouldn’t have I’d know nothing about Java at all But the best thing is that your book isn’t a commercial brochure for Java It also shows the bad sides of Java YOU have done a great job here Frederik Fix, Belgium I have been hooked to your books all the time A couple of years ago, when I wanted to start with C++, it was C++ Inside & Out which took me around the fascinating world of C++ It helped me in getting better opportunities in life Now, in pursuit of more knowledge and when I wanted to learn Java, I bumped into Thinking in Java—no doubts in my mind as to whether I need some other book Just fantastic It is more like rediscovering myself as I get along with the book It is just a month since I started with Java, and heartfelt thanks to you, I am understanding it better now Anand Kumar S., Software Engineer, Computervision, India Your book stands out as an excellent general introduction Peter Robinson, University of Cambridge Computer Laboratory It’s by far the best material I have come across to help me learn Java and I just want you to know how lucky I feel to have found it THANKS! Chuck Peterson, Product Leader, Internet Product Line, IVIS International The book is great It’s the third book on Java I’ve started and I’m about two-thirds of the way through it now I plan to finish this one I found out about it because it is used in some internal classes at Lucent Technologies and a friend told me the book was on the Net Good work Jerry Nowlin, MTS, Lucent Technologies Of the six or so Java books I’ve accumulated to date, your Thinking in Java is by far the best and clearest Michael Van Waas, Ph.D., President, TMR Associates I just want to say thanks for Thinking in Java What a wonderful book you’ve made here! Not to mention downloadable for free! As a student I find your books invaluable (I have a copy of C++ Inside Out, another great book about C++), because they not only teach me the how-to, but also the whys, which are of course very important in building a strong foundation in languages such as C++ or Java I have quite a lot of friends here who love programming just as I do, and I’ve told them about your books They think it’s great! Thanks again! By the way, I’m Indonesian and I live in Java Ray Frederick Djajadinata, Student at Trisakti University, Jakarta The mere fact that you have made this work free over the Net puts me into shock I thought I’d let you know how much I appreciate and respect what you’re doing Shane LeBouthillier, Computer Engineering student, University of Alberta, Canada I have to tell you how much I look forward to reading your monthly column As a newbie to the world of object oriented programming, I appreciate the time and thoughtfulness that you give to even the most elementary topic I have downloaded your book, but you can bet that I will purchase the hard copy when it is published Thanks for all of your help Dan Cashmer, B C Ziegler & Co Just want to congratulate you on a job well done First I stumbled upon the PDF version of Thinking in Java Even before I finished reading it, I ran to the store and found Thinking in C++ Now, I have been in the computer business for over eight years, as a consultant, software engineer, teacher/trainer, and recently as self-employed, so I’d like to think that I have seen enough (not “have seen it all,” mind you, but enough) However, these books cause my girlfriend to call me a ”geek.” Not that I have anything against the concept—it is just that I thought this phase was well beyond me But I find myself truly enjoying both books, like no other computer book I have touched or bought so far Excellent writing style, very nice introduction of every new topic, and lots of wisdom in the books Well done Simon Goland, simonsez@smartt.com, Simon Says Consulting, Inc I must say that your Thinking in Java is great! That is exactly the kind of documentation I was looking for Especially the sections about good and poor software design using Java Dirk Duehr, Lexikon Verlag, Bertelsmann AG, Germany Thank you for writing two great books (Thinking in C++, Thinking in Java) You have helped me immensely in my progression to object oriented programming Donald Lawson, DCL Enterprises Thank you for taking the time to write a really helpful book on Java If teaching makes you understand something, by now you must be pretty pleased with yourself Dominic Turner, GEAC Support It’s the best Java book I have ever read—and I read some Jean-Yves MENGANT, Chief Software Architect NAT-SYSTEM, Paris, France Thinking in Java gives the best coverage and explanation Very easy to read, and I mean the code fragments as well Ron Chan, Ph.D., Expert Choice, Inc., Pittsburgh PA Your book is great I have read lots of programming books and your book still adds insights to programming in my mind Ningjian Wang, Information System Engineer, The Vanguard Group Thinking in Java is an excellent and readable book I recommend it to all my students Dr Paul Gorman, Department of Computer Science, University of Otago, Dunedin, New Zealand You make it possible for the proverbial free lunch to exist, not just a soup kitchen type of lunch but a gourmet delight for those who appreciate good software and books about it Jose Suriol, Scylax Corporation Thanks for the opportunity of watching this book grow into a masterpiece! IT IS THE BEST book on the subject that I’ve read or browsed Jeff Lapchinsky, Programmer, Net Results Technologies Your book is concise, accessible and a joy to read Keith Ritchie, Java Research & Development Team, KL Group Inc It truly is the best book I’ve read on Java! Daniel Eng The best book I have seen on Java! Rich Hoffarth, Senior Architect, West Group Thank you for a wonderful book I’m having a lot of fun going through the chapters Fred Trimble, Actium Corporation You have mastered the art of slowly and successfully making us grasp the details You make learning VERY easy and satisfying Thank you for a truly wonderful tutorial Rajesh Rau, Software Consultant Thinking in Java rocks the free world! Miko O’Sullivan, President, Idocs Inc About Thinking in C++: Best Book! Winner of the 1995 Software Development Magazine Jolt Award! “This book is a tremendous achievement You owe it to yourself to have a copy on your shelf The chapter on iostreams is the most comprehensive and understandable treatment of that subject I’ve seen to date.” Al Stevens Contributing Editor, Doctor Dobbs Journal “Eckel’s book is the only one to so clearly explain how to rethink program construction for object orientation That the book is also an excellent tutorial on the ins and outs of C++ is an added bonus.” Andrew Binstock Editor, Unix Review “Bruce continues to amaze me with his insight into C++, and Thinking in C++ is his best collection of ideas yet If you want clear answers to difficult questions about C++, buy this outstanding book.” Gary Entsminger Author, The Tao of Objects “Thinking in C++ patiently and methodically explores the issues of when and how to use inlines, references, operator overloading, inheritance, and dynamic objects, as well as advanced topics such as the proper use of templates, exceptions and multiple inheritance The entire effort is woven in a fabric that includes Eckel’s own philosophy of object and program design A must for every C++ developer’s bookshelf, Thinking in C++ is the one C++ book you must have if you’re doing serious development with C++.” Richard Hale Shaw Contributing Editor, PC Magazine 1052; indexOf( ) · 576, 681; lexicographic vs alphabetic sorting · 436; methods · 1056; operator + · 454; Operator + · 153; operator + and += overloading · 277; toString( ) · 272, 452 StringBuffer · 582; methods · 1058 StringBufferInputStream · 582 StringReader · 590, 597 StringSelection · 792 StringTokenizer · 642 StringWriter · 590 struts, in BoxLayout · 717 stub, RMI · 978 style of creating classes · 262 subobject · 278, 288 substitutability, in OOP · 31 substitution: principle · 42 subtraction · 137 super · 280; and finalize( ) · 335; and inner classes · 385 super keyword · 278 super.clone( ) · 1021, 1025, 1041 superclass · 278 suspend( ) · 860, 864; and deadlocks · 873; deprecation in Java · 875 Swing · 689 Swing component examples · 734 Swing components, using HTML with · 779 Swing event model · 722, 794 switch keyword · 183 synchronized · 59, 848; and inheritance · 858; and wait( ) & notify( ) · 866; containers · 514; deciding what methods to synchronize · 858; efficiency · 853; method, and blocking · 860; static · 848; synchronized block · 852 system clipboard · 790 system specification · 75 System.arraycopy( ) · 429 System.err · 538, 602 System.gc( ) · 213 System.in · 597, 602 System.out · 602 System.out.println( ) · 458 System.runFinalization( ) · 213 T tabbed dialog · 755 table · 784 table-driven code, and anonymous inner classes · 502 TCP, Transmission Control Protocol · 923 TCP/IP, and RMI · 977 template: in C++ · 455 termination vs resumption, exception handling · 536 ternary operator · 151 testing: automated · 89; Extreme Programming (XP) · 88; unit testing · 277 testing techniques · 381 this keyword · 203 Thread · 825, 827; and JavaBeans · 854; and Runnable · 891; blocked · 859; combined with main class · 834; daemon threads · 840; dead · 859; deadlock · 872; deciding what methods to synchronize · 858; destroy( ) · 877; drawbacks · 899; getPriority( ) · 878; I/O and threads, blocking · 860; interrupt( ) · 873; isDaemon( ) · 840; new Thread · 859; notify( ) · 860; notifyAll( ) · 860; order of execution of threads · 831; priority · 877; properly suspending & resuming · 874; resume( ) · 860, 864; resume( ) , deprecation in Java · 875; resume( ), and deadlocks · 873; run( ) · 829; Runnable · 859; Runnable interface · 836; setDaemon( ) · 840; setPriority( ) · 878; sharing limited resources · 842; sleep( ) · 846, 860, 862; start( ) · 830; states · 859; stop( ) , deprecation in Java · 873; stop( ), and deadlocks · 873; stopping · 873; suspend( ) · 860, 864; suspend( ) , deprecation in Java · 875; suspend( ), and deadlocks · 873; synchronized method and blocking · 860; thread group · 882; thread group, default priority · 882; threads and efficiency · 828; wait( ) · 860, 866; when they can be suspended · 847; when to use threads · 899; yield( ) · 860 throw keyword · 534 Throwable · 547; base class for Exception · 543 throwing an exception · 533 time-critical code sections · 1065 toArray( ) · 511 token · 639 Tokenizing · 639 1115 Tomcat, standard servlet container · 960 tool tips · 740 TooManyListenersException · 796, 814 toString( ) · 272, 452, 458, 500 training · 93; and mentoring · 95, 96 training seminars provided by Bruce Eckel · 23 Transferable · 792 transient keyword · 624 translation unit · 245 Transmission Control Protocol (TCP) · 923 tree · 781 TreeMap · 476, 510, 642 TreeSet · 473, 506 true · 143 try · 286, 554; try block in exceptions · 535 two’s complement, signed · 151 type: base · 39; data type equivalence to class · 33; derived · 39; finding exact type of a base reference · 662; parameterized type · 455; primitive · 105; primitive data types and use with operators · 159; type checking and arrays · 408; type safety in Java · 154; type-safe downcast in run-time type identification · 665; weak typing · 45 TYPE field, for primitive class literals · 665 type safe sets of constants · 361 type-conscious ArrayList · 454 updates of the book · 22 URL · 925 use case · 76; iteration · 84; scope · 84 User Datagram Protocol (UDP) · 923 user interface · 78; and threads, for responsiveness · 831; responsive, with threading · 826 V value: preventing change at run-time · 294 value, HTML keyword · 839 variable: defining a variable · 174; initialization of method variables · 220; variable argument lists (unknown quantity and type of arguments) · 235 vector: of change · 86 Vector · 505, 519, 521 vector of change · 397 versioning, serialization · 630 versions of Java · 22 visibility, package visibility, (friendly) · 368 visual: programming · 800 Visual Basic, Microsoft · 800 visual programming environments · 690 W U UDP, User Datagram Protocol · 923 UML · 81; indicating composition · 37; Unified Modeling Language · 35, 1093 unary: minus (-) · 139; operator · 146; operators · 139; plus (+) · 139 unbind( ) · 978 unicast · 814; unicast events · 796 UnicastRemoteObject · 974 Unicode · 590 Unified Modeling Language (UML) · 35, 1093 unit testing · 277 unmodifiable, making a Collection or Map unmodifiable · 513 unsupported methods, in the Java containers · 516 UnsupportedOperationException · 516 upcasting · 47, 291, 312, 660; and interface · 353; inner classes and upcasting · 368 1116 wait( ) · 860, 866 Waldrop, M Mitchell · 1095 weak: weakly typed language · 45 WeakHashMap · 498 WeakReference · 495 Web: displaying a Web page from within an applet · 923; placing an applet inside a Web page · 695; safety, and applet restrictions · 692 web of objects · 614, 1020 West, BorderLayout · 713 while · 172 widening conversion · 155 wild-card · 73 WindowAdapter · 704 windowClosing( ) · 704, 771 windowed applications · 700 Windows Explorer, running Java programs from · 705 wrapper, dealing with the immutability of primitive wrapper classes · 1047 write( ) · 581 writeBytes( ) · 600 writeChars( ) · 600 writeDouble( ) · 600 writeExternal( ) · 620 writeObject( ) · 614; with Serializable · 627 Writer · 581, 589, 590, 869, 913 X Y yield( ) · 860 Z zero extension · 147 ZipEntry · 610 ZipInputStream · 606 ZipOutputStream · 606 XOR · 146 XP, Extreme Programming · 88 1117 Check www.BruceEckel.com for in-depth details and the date and location of the next Hands-On Java Seminar • Based on this book • Taught by Bruce Eckel • Personal attention from Bruce Eckel and his seminar assistants • Includes in-class programming exercises • Intermediate/Advanced seminars also offered • Hundreds have already enjoyed this seminar— see the Web site for their testimonials 1118 Bruce Eckel’s Hands-On Java Seminar Multimedia CD It’s like coming to the seminar! Available at www.BruceEckel.com ! The Hands-On Java Seminar captured on a Multimedia CD! ! Overhead slides and synchronized audio voice narration for all the lectures Just play it to see and hear the lectures! ! Created and narrated by Bruce Eckel ! Based on the material in this book ! Demo lecture available at www.BruceEckel.com 1119 End-User License Agreement for Microsoft Software IMPORTANT-READ CAREFULLY: This Microsoft End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation for the Microsoft software product included in this package, which includes computer software and may include associated media, printed materials, and "online" or electronic documentation ("SOFTWARE PRODUCT") The SOFTWARE PRODUCT also includes any updates and supplements to the original SOFTWARE PRODUCT provided to you by Microsoft By installing, copying, downloading, accessing or otherwise using the SOFTWARE PRODUCT, you agree to be bound by the terms of this EULA If you not agree to the terms of this EULA, not install, copy, or otherwise use the SOFTWARE PRODUCT SOFTWARE PRODUCT LICENSE The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties The SOFTWARE PRODUCT is licensed, not sold GRANT OF LICENSE This EULA grants you the following rights: 1.1 License Grant Microsoft grants to you as an individual, a personal nonexclusive license to make and use copies of the SOFTWARE PRODUCT for the sole purposes of evaluating and learning how to use the SOFTWARE PRODUCT, as may be instructed in accompanying publications or documentation You may install the software on an unlimited number of computers provided that you are the only individual using the SOFTWARE PRODUCT 1.2 Academic Use You must be a "Qualified Educational User" to use the SOFTWARE PRODUCT in the manner described in this section To determine whether you are a Qualified Educational User, please contact the Microsoft Sales Information Center/One Microsoft Way/Redmond, WA 98052-6399 or the Microsoft subsidiary serving your country If you are a Qualified Educational User, you may either: (i) exercise the rights granted in Section 1.1, OR (ii) if you intend to use the SOFTWARE PRODUCT solely for instructional purposes in connection with a class or other educational program, this EULA grants you the following alternative license models: (A) Per Computer Model For every valid license you have acquired for the SOFTWARE PRODUCT, you may install a single copy of the SOFTWARE PRODUCT on a single computer for access and use by an unlimited number of 1120 student end users at your educational institution, provided that all such end users comply with all other terms of this EULA, OR (B) Per License Model If you have multiple licenses for the SOFTWARE PRODUCT, then at any time you may have as many copies of the SOFTWARE PRODUCT in use as you have licenses, provided that such use is limited to student or faculty end users at your educational institution and provided that all such end users comply with all other terms of this EULA For purposes of this subsection, the SOFTWARE PRODUCT is "in use" on a computer when it is loaded into the temporary memory (i.e., RAM) or installed into the permanent memory (e.g., hard disk, CD ROM, or other storage device) of that computer, except that a copy installed on a network server for the sole purpose of distribution to other computers is not "in use" If the anticipated number of users of the SOFTWARE PRODUCT will exceed the number of applicable licenses, then you must have a reasonable mechanism or process in place to ensure that the number of persons using the SOFTWARE PRODUCT concurrently does not exceed the number of licenses DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS • Limitations on Reverse Engineering, Decompilation, and Disassembly You may not reverse engineer, decompile, or disassemble the SOFTWARE PRODUCT, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation • Separation of Components The SOFTWARE PRODUCT is licensed as a single product Its component parts may not be separated for use on more than one computer • Rental You may not rent, lease or lend the SOFTWARE PRODUCT • Trademarks This EULA does not grant you any rights in connection with any trademarks or service marks of Microsoft • Software Transfer The initial user of the SOFTWARE PRODUCT may make a one-time permanent transfer of this EULA and SOFTWARE PRODUCT only directly to an end user This transfer must include all of the SOFTWARE PRODUCT (including all component parts, the media and printed materials, any upgrades, this EULA, and, if applicable, the Certificate of Authenticity) Such transfer may not be by way of consignment or any other indirect transfer The transferee of such one-time transfer must agree to comply with the terms of this EULA, including the obligation not to further transfer this EULA and SOFTWARE PRODUCT • No Support Microsoft shall have no obligation to provide any product support for the SOFTWARE PRODUCT • Termination Without prejudice to any other rights, Microsoft may terminate this EULA if you fail to comply with the terms and conditions of this EULA In 1121 such event, you must destroy all copies of the SOFTWARE PRODUCT and all of its component parts COPYRIGHT All title and intellectual property rights in and to the SOFTWARE PRODUCT (including but not limited to any images, photographs, animations, video, audio, music, text, and "applets" incorporated into the SOFTWARE PRODUCT), the accompanying printed materials, and any copies of the SOFTWARE PRODUCT are owned by Microsoft or its suppliers All title and intellectual property rights in and to the content which may be accessed through use of the SOFTWARE PRODUCT is the property of the respective content owner and may be protected by applicable copyright or other intellectual property laws and treaties This EULA grants you no rights to use such content All rights not expressly granted are reserved by Microsoft BACKUP COPY After installation of one copy of the SOFTWARE PRODUCT pursuant to this EULA, you may keep the original media on which the SOFTWARE PRODUCT was provided by Microsoft solely for backup or archival purposes If the original media is required to use the SOFTWARE PRODUCT on the COMPUTER, you may make one copy of the SOFTWARE PRODUCT solely for backup or archival purposes Except as expressly provided in this EULA, you may not otherwise make copies of the SOFTWARE PRODUCT or the printed materials accompanying the SOFTWARE PRODUCT U.S GOVERNMENT RESTRICTED RIGHTS The SOFTWARE PRODUCT and documentation are provided with RESTRICTED RIGHTS Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 or subparagraphs (c)(1) and (2) of the Commercial Computer Software-Restricted Rights at 48 CFR 52.227-19, as applicable Manufacturer is Microsoft Corporation/One Microsoft Way/Redmond, WA 98052-6399 EXPORT RESTRICTIONS You agree that you will not export or re-export the SOFTWARE PRODUCT, any part thereof, or any process or service that is the direct product of the SOFTWARE PRODUCT (the foregoing collectively referred to as the "Restricted Components"), to any country, person, entity or end user subject to U.S export restrictions You specifically agree not to export or reexport any of the Restricted Components (i) to any country to which the U.S has embargoed or restricted the export of goods or services, which currently include, but are not necessarily limited to Cuba, Iran, Iraq, Libya, North Korea, Sudan and Syria, or to any national of any such country, wherever located, who intends to transmit or transport the Restricted Components back to such country; (ii) to any end-user who you know or have reason to know will utilize the Restricted Components in the design, development or production of nuclear, chemical or biological weapons; or (iii) to any end-user who has been 1122 prohibited from participating in U.S export transactions by any federal agency of the U.S government You warrant and represent that neither the BXA nor any other U.S federal agency has suspended, revoked, or denied your export privileges NOTE ON JAVA SUPPORT THE SOFTWARE PRODUCT MAY CONTAIN SUPPORT FOR PROGRAMS WRITTEN IN JAVA JAVA TECHNOLOGY IS NOT FAULT TOLERANT AND IS NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE OR RESALE AS ON-LINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF JAVA TECHNOLOGY COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE MISCELLANEOUS If you acquired this product in the United States, this EULA is governed by the laws of the State of Washington If you acquired this product in Canada, this EULA is governed by the laws of the Province of Ontario, Canada Each of the parties hereto irrevocably attorns to the jurisdiction of the courts of the Province of Ontario and further agrees to commence any litigation which may arise hereunder in the courts located in the Judicial District of York, Province of Ontario If this product was acquired outside the United States, then local law may apply Should you have any questions concerning this EULA, or if you desire to contact Microsoft for any reason, please contact Microsoft, or write: Microsoft Sales Information Center/One Microsoft Way/Redmond, WA 98052-6399 LIMITED WARRANTY LIMITED WARRANTY Microsoft warrants that (a) the SOFTWARE PRODUCT will perform substantially in accordance with the accompanying written materials for a period of ninety (90) days from the date of receipt, and (b) any Support Services provided by Microsoft shall be substantially as described in applicable written materials provided to you by Microsoft, and Microsoft support engineers will make commercially reasonable efforts to solve any problem To the extent allowed by applicable law, implied warranties on the SOFTWARE PRODUCT, if any, are limited to ninety (90) days Some states/jurisdictions 1123 not allow limitations on duration of an implied warranty, so the above limitation may not apply to you CUSTOMER REMEDIES Microsoft's and its suppliers' entire liability and your exclusive remedy shall be, at Microsoft's option, either (a) return of the price paid, if any, or (b) repair or replacement of the SOFTWARE PRODUCT that does not meet Microsoft's Limited Warranty and that is returned to Microsoft with a copy of your receipt This Limited Warranty is void if failure of the SOFTWARE PRODUCT has resulted from accident, abuse, or misapplication Any replacement SOFTWARE PRODUCT will be warranted for the remainder of the original warranty period or thirty (30) days, whichever is longer Outside the United States, neither these remedies nor any product support services offered by Microsoft are available without proof of purchase from an authorized international source NO OTHER WARRANTIES TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT, WITH REGARD TO THE SOFTWARE PRODUCT, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES THIS LIMITED WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS YOU MAY HAVE OTHERS, WHICH VARY FROM STATE/JURISDICTION TO STATE/JURISDICTION LIMITATION OF LIABILITY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL MICROSOFT OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE PRODUCT OR THE FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF MICROSOFT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES IN ANY CASE, MICROSOFT'S ENTIRE LIABILITY UNDER ANY PROVISION OF THIS EULA SHALL BE LIMITED TO THE GREATER OF THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE PRODUCT OR U.S.$5.00; PROVIDED, HOWEVER, IF YOU HAVE ENTERED INTO A MICROSOFT SUPPORT SERVICES AGREEMENT, MICROSOFT'S ENTIRE LIABILITY REGARDING SUPPORT SERVICES SHALL BE GOVERNED BY THE TERMS OF THAT AGREEMENT BECAUSE SOME STATES/JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY, THE ABOVE LIMITATION MAY NOT APPLY TO YOU 0495 Part No 64358 1124 LICENSE AGREEMENT FOR MindView, Inc.'s Thinking in C: Foundations for Java & C++ CD ROM by Chuck Allison This CD is provided together with the book "Thinking in Java, 2nd edition." READ THIS AGREEMENT BEFORE USING THIS "Thinking in C: Foundations for C++ & Java" (Hereafter called "CD") BY USING THE CD YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT, IMMEDIATELY RETURN THE UNUSED CD FOR A FULL REFUND OF MONIES PAID, IF ANY ©2000 MindView, Inc All rights reserved Printed in the U.S SOFTWARE REQUIREMENTS The purpose of this CD is to provide the Content, not the associated software necessary to view the Content The Content of this CD is in HTML for viewing with Microsoft Internet Explorer or newer, and uses Microsoft Sound Codecs available in Microsoft's Windows Media Player for Windows It is your responsibility to correctly install the appropriate Microsoft software for your system The text, images, and other media included on this CD ("Content") and their compilation are licensed to you subject to the terms and conditions of this Agreement by MindView, Inc., having a place of business at 5343 Valle Vista, La Mesa, CA 91941 Your rights to use other programs and materials included on the CD are also governed by separate agreements distributed with those programs and materials on the CD (the "Other Agreements") In the event of any inconsistency between this Agreement and the Other Agreements, this Agreement shall govern By using this CD, you agree to be bound by the terms and conditions of this Agreement MindView, Inc owns title to the Content and to all intellectual property rights therein, except insofar as it contains materials that are proprietary to third-party suppliers All rights in the Content except those expressly granted to you in this Agreement are reserved to MindView, Inc and such suppliers as their respective interests may appear LIMITED LICENSE MindView, Inc grants you a limited, nonexclusive, nontransferable license to use the Content on a single dedicated computer (excluding network servers) This Agreement and your rights hereunder shall automatically terminate if you fail to comply with any provisions of this Agreement or any of the Other Agreements Upon such termination, you agree to destroy the CD and all copies of the CD, whether lawful or not, that are in your possession or under your control ADDITIONAL RESTRICTIONS a You shall not (and shall not permit other persons or entities to) directly or indirectly, by electronic or other means, reproduce (except for archival purposes as permitted by law), publish, distribute, rent, lease, sell, sublicense, assign, or otherwise transfer the Content or any part thereof b You shall not (and shall not permit other persons or entities to) use the Content or any part thereof for any commercial purpose or merge, modify, create derivative works of, or translate the Content c You shall not (and shall not permit other persons or entities to) obscure MindView's or its suppliers copyright, trademark, or other proprietary notices or legends from any portion of the Content or any related materials PERMISSIONS a Except as noted in the Contents of the CD, you must treat this software just like a book However, you may copy it onto a computer to be used and you may make archival copies of the software for the sole purpose of backing up the software and protecting your investment from loss By saying, "just like a book," MindView, Inc means, for example, that this software may be used by any number of people and may be freely moved from one computer location to another, so long as there is no possibility of its being used at one location or on one computer while it is being used at another Just as a book cannot be read by two different people in two different places at the same time, neither can the software be used by two different people in two different places at the same time b You may show or demonstrate the un-modified Content in a live presentation, live seminar, or live performance as long as you attribute all material of the Content to MindView, Inc c Other permissions and grants of rights for use of the CD must be obtained directly from MindView, Inc at http://www.MindView.net (Bulk copies of the CD may also be purchased at this site.) DISCLAIMER OF WARRANTY The Content and CD are provided "AS IS" without warranty of any kind, either express or implied, including, without limitation, any warranty of merchantability and fitness for a particular purpose The entire risk as to the results and performance of the CD and Content is assumed by you MindView, Inc and its suppliers assume no responsibility for defects in the CD, the accuracy of the Content, or omissions in the CD or the Content MindView, Inc and its suppliers not warrant, guarantee, or make any representations regarding the use, or the results of the use, of the product in terms of correctness, accuracy, reliability, currentness, or otherwise, or that the Content will meet your needs, or that operation of the CD will be uninterrupted or error-free, or that any defects in the CD or Content will be corrected MindView, Inc and its suppliers shall not be liable for any loss, damages, or costs arising from the use of the CD or the interpretation of the Content Some states not allow exclusion or limitation of implied warranties or limitation of liability for incidental or consequential damages, so all of the above limitations or exclusions may not apply to you In no event shall MindView, Inc or its suppliers' total liability to you for all damages, losses, and causes of action (whether in contract, tort, or otherwise) exceed the amount paid by you for the CD MindView, Inc., and Prentice-Hall, Inc specifically disclaim the implied warrantees of merchantability and fitness for a particular purpose No oral or written information or advice given by MindView, Inc., Prentice-Hall, Inc., their dealers, distributors, agents or employees shall create a warrantee You may have other rights, which vary from state to state Neither MindView, Inc., Bruce Eckel, Chuck Allison, Prentice-Hall, nor anyone else who has been involved in the creation, production or delivery of the product shall be liable for any direct, indirect, consequential, or incidental damages (including damages for loss of business profits, business interruption, loss of business information, and the like) arising out of the use of or inability to use the product even if MindView, Inc., has been advised of the possibility of such damages Because some states not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you This CD is provided as a supplement to the book "Thinking in Java 2nd edition." The sole responsibility of Prentice-Hall will be to provide a replacement CD in the event that the one that came with the book is defective This replacement warrantee shall be in effect for a period of sixty days from the purchase date MindView, Inc does not bear any additional responsibility for the CD NO TECHNICAL SUPPORT IS PROVIDED WITH THIS CD ROM The following are trademarks of their respective companies in the U.S and may be protected as trademarks in other countries: Sun and the Sun Logo, 1127 Sun Microsystems, Java, all Java-based names and logos and the Java Coffee Cup are trademarks of Sun Microsystems; Internet Explorer, the Windows Media Player, DOS, Windows 95, and Windows NT are trademarks of Microsoft Thinking in C: Foundations for Java & C++ Multimedia Seminar-on-CD ROM ©2000 MindView, Inc All rights reserved WARNING: BEFORE OPENING THE DISC PACKAGE, CAREFULLY READ THE TERMS AND CONDITIONS OF THE LICENSE AGREEMENT & WARANTEE LIMITATION ON THE PREVIOUS PAGES The CD ROM packaged with this book is a multimedia seminar consisting of synchronized slides and audio lectures The goal of this seminar is to introduce you to the aspects of C that are necessary for you to move on to C++ or Java, leaving out the unpleasant parts that C programmers must deal with on a day-to-day basis but that the C++ and Java languages steer you away from The CD also contains this book in HTML form along with the source code for the book This CD ROM will work with Windows (with a sound system) However, you must: Install the most recent version of Microsoft’s Internet Explorer Because of the features provided on the CD, it will NOT work with Netscape Navigator The Internet Explorer software for Windows 9X/NT is included on the CD Install Microsoft’s Windows Media Player The Media Player software for Windows 9X/NT is included on the CD You can also go to http://www.microsoft.com/windows/mediaplayer and follow the instructions or links there to download and install the Media Player for your particular platform At this point you should be able to play the lectures on the CD Using the Internet Explorer Web browser, open the file Install.html that you’ll find on the CD This will introduce you to the CD and provide further instructions about the use of the CD 1129 ... First I stumbled upon the PDF version of Thinking in Java Even before I finished reading it, I ran to the store and found Thinking in C++ Now, I have been in the computer business for over eight years,... does a good job of teaching the what and how of the language, Thinking in Java is definitely the thinking person’s choice in a Java book Robert S Stephenson Thanks for writing a great book The more... writing two great books (Thinking in C++, Thinking in Java) You have helped me immensely in my progression to object oriented programming Donald Lawson, DCL Enterprises Thank you for taking the