`
`APPL-1018 / Page 1 of 10
`Apple v. Uniloc
`
`
`
`—*
`Bentley 3 Scdyawlck's New Surfing Alurltllll
`
`U1
`
`
`
`J J
`
`j
`
`J,
`
`50mm
`
`” J MOISFOA’IHE
`
`M/;j P_A_’____0f£5$/0NAI
`
`V6.
`
`icbuggmg;
`
`:e and
`it L0
`
`:h as
`
`
`
`
`
`EH
`
`MJ0 VII JJUMJ—
`IJJJJJJJJJJ ii
`_
`.
`
`
`
`
`.7
`334111133135qu
`' Drag--and--Drop Ior J35
`. ,.lysine the Win32 Debug API
`
`J
`
`'
`
`
`
`APPL-1018 l Page 2 of 10
`
`APPL-1018 / Page 2 of 10
`
`
`
`to be.
`
`like it used to
`
`like it used to b
`
`Jsed to be.
`
`t used to be.
`
`
`
`
`
`APPL—1018 I Page 3 of 10
`
`APPL-1018 / Page 3 of 10
`
`
`
`D
`
`r 0
`
`0
`
`9
`
`WHHM
`S wasfor rat
`
`Farm/aw!
`
`J
`
`0
`
`U
`
`R
`
`N
`
`A
`
`L
`
`graham/arr
`
`NCSA SYMERA
`by I’m [‘YI'HIIZQUH (uni/meet] Kin-I'm
`.\’ll.\:\ Syntera is a distributed—tthlett and cluster-management system with applitation support libraries
`built on Microsoft's Distributed Component Object Model (DtIUM). Our authors examine fitment. then
`t'om'ett a stand-alone Windows program into a Svtnera application that uses distributed resotirees.
`
`A CORBA BEAN FRAMEWORK
`by Ik/i't‘cl Hort/ding
`David premtts a framework based on the JavaBeans Standard that provides a layer of abstraction over
`(It )ltllA— and. in particular, the CORBA Dynamic Invocation Interface f I )II 1— to encapsulate its
`complexity and facilitate visual rapid application development.
`
`THE MICO CORBA-COMPLIANT SYSTEM
`by Arno I’m/er
`Mltll > is .t freeh atailable CORBA implementation that supports lllL—to-CH mapping. Dynamic
`Invocation Interface (DH), IIOP as native protocol, nested method invocations, and more.
`
`CREATING ELECTRONIC MARKETS
`by Ming Fan, fan Sru/luerl. and Andrew B. “"ht‘rtx/nn
`Our authors describe a \\-'eh-hased Financial Bundle Trading System that lets you access financial
`markets using Java applets embedded in web browsers.
`
`20
`
`34
`
`44
`
`52
`
`60
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`—
`
`.
`
`
`.
`
`THE GEE GENERAL EXCEPTION-HANDLING LIBRARY
`by Hrme lll. Big/{1'
`(Elil: is a general exceptitiii-handling and t‘ontract-prognttntning facility for (I prognnntnet's. With GEF,
`
`its sped-.11 control macros. and other support functions, you can separate the main purpose of a
`function frotn its exceptittn-ltandling. contract-\'alidation. and resouree-reclamation code,
`
`
`WINDOWS CE DEVICE DRIVER DEVELOPMENT, PART II
`lug/runes l'.
`ll"’ils0n.
`
`
`In the second installment of this two-part article, Jim identifies the basic skills you need to develop
`\I'indon's' (3F, device drivers, and implements a driver for an onboard peripheral device.
`
`;'
`
`5'?
`
`3
`
`.
`
`51' ’
`
`
`‘
`_ _
`1"" :11: eimcrket
`lgtmdle trading Sfit‘dOrderf .'
`‘
`1
`
`FILE FORMATS & AUTOMOTIVE DATA ACQUISITION
`84
`by Lee It. cupp
`
`When it ct tines to automotive data acquisition. the files generated while a vehicle is being tested
`are as different and varied as the vehicles themselves. Lee presents a tool that enables viewing.
`
`filtering, or analysis of this disparate data.
`
`THE WIDL SPECIFICATION
`92 l
`' ‘13,
`by Liam .llmrsun
`t
`p03” I
`The \V'eb interface Delinttion Language l\\‘ll)l.t is an XML file format for describing
`
`'
`programmatic interfaces to the \V-‘eh liot'ron'intt from the UlllL'L'l community’s ORB ideas, WIDL
`destrihes an abstract interface to a "Service" existing on the Web.
`Moxmufn
`
`Dr. Dobb’sjournal, November 1998
`
`
`
`
`
`
`
`
`-
`
`‘
`
`RMI
`
`,fi‘
`‘
`read-«rt ,‘
`
`APPL—1018 I Page 4 of 10
`
`APPL-1018 / Page 4 of 10
`
`
`
`ENTS
`
`NOVEMBER 1998
`VOLUME 23, ISSUE 11
`
`PROGRAMMER’STOOLCHEST
`
`EXAMINING THE WIN32 DEBUG API
`by Fritz Lowrey
`The Win32 Debug API is a set of functions that provides a number of useful tools
`for both the debugger and the debugged. Since these functions are supported by
`the operating system, it doesn’t matter whether the program being debugged has
`been compiled or optimized in Debug or Release mode, nor does it make any
`difference what language or tool you opt to use.
`
`98
`
`BUILDING SOLID CODE
`by Wes Faler
`The company Wes works for has refined its development process to produce well-
`structured, clean source code. Wes presents this process, along with notes on the
`tools they use.
`
`l06
`
`COLUMNS
`
`PROGRAMMING PARADIGMS
`by Michael Swaine
`Michael examines Jini, Sun‘s system architecture for distributed computing. Jini
`embodies a model for how devices and software connect on a network and how
`distributed systems can operate.
`
`H3
`
`CPROGRAMMING
`by Al Stet/ens
`Al updates a C++ class template libraIy that implements undo operations of
`interactive programs. The library assumes that the user modifies a document class
`object and might want to undo those modifications in reverse order.
`
`”9
`
`JAVA Q&A
`byjason W. Purdy
`Jason examines the drag-and-drop (DnD) capabilities of both JavaSoft’s Java
`Foundation Classes (IFC) and Microsoft’s Windows Foundation Classes (WFC).
`
`I27
`
`ALGORITHM ALLEY
`byjon Bentley and Robert Sedgewic/e
`Jon and Robert describe a new algorithm for sorting strings that combines the best
`of quicksort and radix sort.
`
`I33
`
`DR. ECCO’S OMNII-IEURIST CORNER
`by Dennis E. Shasha
`Dr. Ecco and Liane use “directed evolution” to cure the ills that all some.
`
`I40
`
`PROGRAMMER’S BOOKSHELF
`by Gregory V. Wilson
`Greg examines a bevy of books this month, including Web Site Usability: A
`Designer’s Guide, Information Architecturefor the World Wide Web, Oflicial
`Guide to Programming with CGIpm, jesse Liberty‘s Clouds to Code, Advanced
`Programming Language Design, and Practical Software Configuration
`Management.
`
`I43
`
`D"- Dobb’sjournal, November 1998
`
`
`
`
`RESOURCE CENTER
`As a service to our readers, source code (and related
`files, back-referenced articles, and relevant links
`are available electronically at http://www ddi com/.
`Individual articles can be purchased electronically
`as ZIP files, also at http://wwwddi com/. Source
`code is also available via anonymous F1? from
`ftpddi com (199.125 85.76), the DD] Forum on
`CompuServe (type GO DDJ), and DD] Online (650—
`358-8857, 14 4 kbps, 8-N-1). Letters to the editor
`and article proposals/submissions should be
`mailed or faxed to the DD] office or sent
`electronically to editors@ddj com Author guidelines
`are available at http://www ddicomfl Send inquiries
`or requests to Dr. Dobb’sjournal, 411 Borel Ave,
`San Mateo, CA 94402 For subscription questions
`(including change of address), call 800-456-1215
`(US. and Canada); other countries, call 303-678-
`0439 or fax 303-661-1885 E-mail subscription
`questions to ddi@neodata com or write to Dr. Dobb’s
`journal, R0. Box 56188, Boulder, CO 80322-6188
`
`zing tested
`viewing,
`
`
`FORUM
`
`EDITORIAL
`byjonalban Eric/(son
`
`LETTERS
`by you
`
`NEWS & VIEWS
`by the DD] staff
`
`OF INTEREST
`by Eugene Eric Kiln
`
`SWAINE’S FLAMES
`by Michael Swaiire
`
`
`NEXT MONTH
`
`In December, we’ll be examining the latest
`in cryptography and computer security.
`
`APPL—1018 I Page 5 of 10
`
`APPL-1018 / Page 5 of 10
`
`
`
` pROGRAMMING PARADIGMS
`
`
`
`Sun Dreams of Jini
`
`Michael Swoine
`
`her
`
`
`
`llhough next month I expect to be
`all over the paradigmatic map with
`my annual stocking stuffers u )Iumn.
`this month I‘m focusing on :1 single
`paradigm.
`It’s Sun’s Jini, a new system architec—
`ture for distributed computing and im—
`proved device connection. I think that’s
`an accurate description, but it certainly
`doesn’t do jini justice. Jim is so revolu-
`tionary a technology that it has appeared
`on the cover of Wired magazine. Oh, sor-
`ry. I forgot to turn on my cynicism filter.
`And I do need to hold my cynicism in
`abeyance, even though Jini is a Sun tech-
`nology and starts with the letter j and is
`therefore fated to be hyped to the heav—
`ens. Because technologically speaking, Jini
`is clearly important, clever, impressive, and
`worthy of serious attention.
`Of course technological merit is seldom
`the deciding factor in the success or fail—
`ure of technologies in certain strata of soft—
`ware development...
`
`The Vision
`Jini is part of a four-year research project
`carried on at Bill Joy’s Sun Aspen Small-
`works R&D lab in the Rockies. Java was
`also a part of that project, but only a part.
`The release of information on Jini this sum-
`mer is the sound of the other shoe drop-
`ping. Jini expands on the Write Once, Run
`Anywhere concept of Java and articulates
`a more ambitious and more complete vi-
`sion for the future of computing. One el-
`ement of that vision is a radical simplifica—
`tion of the way hardware is connected and
`configured. In the Jini model, every de—
`Vice— computer, disk drive, telephone,
`Camera, or coffeepot— has just two cords
`coming out the back— one for power and
`another for the network. (Or just one: The
`network cord might be replaced by a wire—
`
`Mz‘clmc'l L'r editor—(II—lmgujhr DD] He can
`be Con/arm! a! mswainc@su.'uinc.com.
`
`Dr. Dobb ’s journal, November 1998
`
`less link.) You plug it in, it announces it—
`self to the network, and it’s all connected
`and configured and jumpered and regis-
`tered and immediately usable.
`Sounds nifty, but talk is cheap and
`hardware is expensive. Wouldn’t such a
`scheme require all new hardware? Yes,
`although it would be possible for the
`smarts that let the device be a player in
`a Jini system to reside on another de—
`vice. In this way, old devices could join
`a Jini system.
`Another element of the vision is a mod-
`
`el for distributed computing. It’s also an
`ambitious model—in a way. In the Jini
`model, anything can be a service, avail-
`able to clients on the network. A service
`
`might be the printing capability of a print—
`er somewhere on the network, or a math
`routine, or a search engine, or a slice of
`processing power of a mainframe made
`available to underpowered PCs doing
`heavy but decomposable computations.
`In another sense, the Jim model is very
`modest. The core software is 48 KB of
`
`binaries. And it is intended to run on top
`of any OS (although currently has been
`implemented only for Solaris and NT).
`On the less modest hand, while living
`in apparent harmony with any operating
`system,
`it quietly usurps all the interest-
`ing networking functions. And it attempts
`to promote the network to a level of im-
`portance and control currently occupied
`by the operating system. In this respect,
`Jini is clearly another Sun attempt to do
`a technological end run around Microsoft’s
`hegemony.
`Maybe we could call it Sun’s version of
`“Embrace and extend.” Anyway, that’s the
`vision. Oh, and Joy’s boys want you to be
`able to walk up to any device, not just
`any computer but any device connected
`to a Jini system, and have all of the sys—
`tem’s services as available to you as they
`would be if you were sitting in front of
`your own PC; and they want all this to be
`
`so automatic and transparent to the user
`that it is in effect a network dialtone.
`Sure, why not. All this sounds like net-
`work heaven, but is there any reason to
`believe that Sun has the keys to the king-
`dom? That’s the 64-euro question, of
`course. I’ll just spell out some of the de-
`tails of the Jini model and you can decide
`that for yourself.
`
`Joining .Iini
`Jini embodies a model for how devices and
`software connect on a network and how
`
`distributed systems can operate. Sun de-
`scribes the technology underlying this mod—
`el in terms of two areas of software—the
`infrastmcture that defines the connections,
`and the distributed programming model.
`In addition to these, there is the con-
`cept of a network service, a concept that
`runs throughout the entire Jini model.
`A service is, according to Sun’s Jini Ar-
`chitecture Overview white paper (http://
`java.sun.com/products/jini/whitepapers/
`architectureoverview.pdf), “an entity that
`can be used by a person, a program, or
`another service.” It can be “a computa-
`tion, storage, a communication channel
`to another user, a software filter, a hard-
`ware device, or another user.”
`The infrastructure consists of two com—
`
`ponents that, between them, make it pos—
`sible for devices to be hot—plugged into
`the network, manage the process of de—
`vices identifying themselves to the network
`and vice-versa, and allow clients to access
`services anywhere on the network. These
`are “Discovery and Join” (that’s one com—
`ponent with two names) and “Lookup”
`(also referred to as “Boot and Join" and
`“Install"). Discovery and Join is the mech-
`anism by which a device or application
`identifies itself to the network. When a
`
`Jim-enabled device is plugged into a Jini—
`enabled network, the device broadcasts
`a small Discovery packet to the net. This
`512-byte packet contains sufficient
`
`113
`
`ll
`
`vATlONAL Ml u
`
`7200.
`
`Syslcmsv Inc.
`
`
`
`
`
`
`
`APPL—1018 I Page 6 of 10
`
`APPL-1018 / Page 6 of 10
`
`
`
`
`
`information to allow the net to start a di—
`
`alog with the device, which it does, on en—
`countering the packet on a known port,
`by sending the device a packet that de—
`scribes the networ‘k’s characteristics. (The
`device doesn’t need to know anything
`about the network in advance.) That’s Dis—
`covery. Now the device can Join the net—
`work, which it does by sending a more
`comprehensive message back, containing
`all its own characteristics (I print in color,
`I respond to the following voice corn—
`mands, I chop small vegetables). This mes—
`sage can contain more than just device
`characteristics: it can also include code or
`
`code pointers, as for example a printer
`driver, an interface to a printer driver, or
`a help wizard. The medium of communi—
`cation here is a Java interface. Jim is per—
`fectly willing to work with C code at some
`levels, but here it’s built firmly on Java.
`
`Lookup is the component that does
`what I have loosely attributed to the net
`in previous paragraphs. It is a small bul-
`letin board for the net, dynamically stor—
`ing pointers to services, and also code or
`pointers to code provided by services.
`Clients for these services talk to Lookup
`to get, for example, the driver for a print—
`er downloaded when needed. Lookup is
`the main point of contact between the sys—
`tem and its users. What it does is to ruap
`Java interfaces that identify offered func—
`tionality to a set of objects that provide
`that functionality (that is, that service).
`A twist on this Lookup capability is Peer
`Lookup, in which a client can masquer—
`ade as a Lookup if no Lookup is avail—
`able. The client itself then engages in the
`Discovery and Join conversation with the
`service providers, who register with the
`client just as if it were a Lookup.
`
`tu
`
`:I-y
`
`IF"c...v
`
`Beyond Java
`The distributed programming mode]In
`lini brings three lLLIIt‘tt 1101,th to the Pie
`lute—leasing. distributed transactiom
`and distributed cements In leasing. an ob
`ject negotiates for the use of a service to,
`a period of time. This is the basis {(er
`among other things, the system s dis,
`tributed garrgb106 collection. Leases can be
`exclusive or nonexclusive, nonexclusivE
`leases allowing for simultaneous resourcc
`sharing. Java APIs provide the basic dis.
`tributed transaction capability, called "two-
`phase commit.” This allows an object [0
`fire up a transaction manager. Every 0|).
`ject that will take part in the transaction
`has to register with the transaction man-
`ager, and it runs the transaction, holding
`up objects or causing them to backtrack
`or move ahead as needed to ensure that
`the steps of the transaction are properly
`synchronized. Jini also provides for dis—
`tributed events. Specifically, an object can
`allow other objects to register an interest
`in an event that resides in the first object,
`and provide notification to them of the
`occurrence of the event.
`
`Underlying all communication bet“ een
`services in Jim is Java Remote Method In»
`vocation (RMI). Although it might seem
`more like part of the programming mod—
`el, it is regarded as part of the infrastruc»
`tttre. Wherever it falls in the architecture
`of Jim,
`its role is to allow complete ob—
`jects, including code, to be passed among
`objects over the network.
`tol—
`Network services is an open— €11Cl€(
`lection of services that bear somewhat the
`
`same relationship to the infrastructure and
`distributed programming model as a upli-
`cations do to an operating system, run—
`ning on top of these lower—level elements.
`The most important of these is Jzna-
`Spaces, a model for facilitating distr'but—
`ed programming. The JavaSpaces model
`is drawn from work by David Gelernter
`that simplifies the challenge of distr'but-
`ing tasks among multiple processors. Cel-
`ernter’s project, named Linda, creates a
`shared memory space called a TupleS we
`where results of a computer’s processes
`or the processes themselves are stored
`and can be accessed by multiple Cl’Us.
`Contents of a TupleSpace are tagged with
`self— descriptive tags, and effectively push-
`pinned to a bulletin board.
`
`
`
`Jtnt Is Not a Dictatorship
`Jim Waldo, author of the [iitiAicbitct/ttre
`Overview wltite paper characterizes a lifll
`system as a l'eeiduttion. Members of a led-
`eration are peers and are assumed to agree
`on certain basic issues. Trust,
`identifica—
`tion, policy, things like that.
`“A Jini federation should not be [l]( tuyllf
`of as sets of clients and servers, or users
`(continued onpagc {/7}
`
`Dr. Dobb’sfom‘tzal, November N98
`
`Paradigms Past: The End of the Brotherhood
`Doug Carlston was a computer back-
`
`
`
`bund added educational and productiv—
`ity software titles, ultimately becoming
`an educational software company that
`also did games.
`Recently, though, Broderbund has
`been losing money, and this summer it
`agreed to be acquired by The Learning
`Company. But it would be a mistake to
`connect Broderbund's fall with the hack-
`er ethic it still, to some extent, embod—
`ies. Broderbund was the only one of the
`early game companies to survive into
`the late ‘905, and it was the gentlest, most
`generous of those companies. As the
`other game companies ran into hard
`times, they got tougher, refusing to share
`ideas and technology with competitors,
`giving less credit to the actual game de—
`velopers, negotiating stingier deals. But
`although Broderbund changed. too, it
`kept some of that spirit. And as the oth—
`er companies failed. Broderbund pros—
`pered—until quite recently.
`If Broderbund has remained a differ-
`
`er in college in the 19703. and even
`when he started his law practice he
`continued to play with computers. When
`Radio Shack introduced its TRS—80, he
`bought one immediately and stayed
`glued to it all weekend.
`So did others, including the author of
`this column, but something actually came
`of Doug Carlston’s Trashed weekend. He
`wrote a game called Galactic Saga, and
`with his brothers Gary and Don started
`a company that became a leader in a half—
`billion dollar segment of the software in—
`dustry-—- Broderbund (Swedish for broth—
`erhood).
`It wasn’t immediate. This was early
`1980, before Windows, before DOS, be-
`fore the IBM PC, and the brothers were
`down to $24 before Doug took to the
`road, selling copies of Galactic Saga out
`of his car to early computer stores. The
`big breakthrough, though, came when
`a Japanese entrepreneur sold Doug some
`microcomputer versions of popular
`video arcade games.
`It‘s not clear that there wasn't some
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`114
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`ent kind of company, it is probably be—
`cause, like Microsoft, it has been led for
`nearly 20 years by one person. Early in-
`dications are that Doug Carlston will re-
`main in charge of the operation and
`there won’t be many jobs lost. And a
`consolidation that will give the combined
`companies 40 percent of the educational
`software market can‘t exactly be bad
`news for either company. That‘s all true,
`but it‘s also true that one of the pioneer
`software companies is no more. We
`should mark its passing.
`Thanks to Steven Levy’s book HtIc/e-
`ers for refreshing my memory about
`Broderbund’s early days.
`
`infringement of copyright, but the com-
`puter game industry was free and fast-
`moving in the early ’805, and nobody
`cared. Among Broderbund and Sierra
`On-Line and Sirius, the main game com—
`panies of the early 805, there was much
`sharing of technology, much flouting of
`the usual rules of business, much spirit
`of brotherhood.
`
`It has been called the hacker ethic.
`
`Broderbund was built on it, and did well.
`
`In recent years, its stars included Rand
`
`and Robyn Miller, with their intensely
`—M.S.
`popular game Myst. Gradually, Broder—
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`APPL—1018 I Page 7 of 10
`
`APPL-1018 / Page 7 of 10
`
`
`
`tion of companies that all buy into Bill Joy’s
`dream. Hardware companies will have to
`rework their equipment, and software com-
`panies will have to rework their minds if
`they are to buy into this thing.
`But some companies have, to one ex—
`tent or another, bought into the Jini vi-
`sion, including Canon, Computer Asso-
`ciates, Epson, Ericsson, FedEx, Mitsubishi,
`Novell, Oki, Salomon Brothers, Seagate,
`Siemens, and Toshiba. Sun says that the
`source code will be open as in the Mozil—
`la model and that they will enforce com-
`patibility in some way, probably through
`an authorized label for Sun— certified com—
`
`chance of coming to reality. Microsoft
`isn’t about to endorse it, can in fact be
`counted on to embrace it about the same
`way they embraced Java. And other
`companies are being asked, at minimum,
`to make an investment in an unproven
`technology, and at max, to rethink their
`entire business and software develop-
`ment models.
`
`Against that imposing challenge, there
`is this small thought: Something like this is
`going to happen someday. Why not now?
`And why not from the guy who has been
`thinking about it for all his adult life, Mr.
`“The network is the computer” himself? It’s
`Bill Joy’s dream. And it might come true.
`
`I (
`
`What it Means
`This is a powerful vision, but it doesn’t add
`up to a product that Sun can sell
`in
`shrinkwrapped form to consumers with a
`marketing blitz featuring Larry Hagman and
`Barbara Eden. Jim is really an appeal to the
`industry to join Sun in forming a federa-
`
`(a)
`Java VM‘
`RMI'
`Java security model‘
`Discovery and Join
`Lookup
`Distributed security
`
`(b)
`Java APIs*
`JavaBeans‘
`Leasing
`Two-phase commit
`Events
`
`(C)
`JNDI'
`Enterprise Beans‘
`JTS’
`JavaSpaces
`Two-phase commit manager
`Other services
`
`Table 1:flm' java z'nfra- infl‘astmcture.
`(av/int infrastructure; (b) jim'
`programming model; (6)]1'111' services.
`(“java-supplied elements).
`
`Dr. Dobb’s journal, November 1998
`
`am/innerIfi‘onr page / M")
`and prt rgntrrrs. or even prr rgrxrnrs and fries,”
`Waldo says. Instead, you should think of it
`as an open—ended, dynamically changing
`collection of independent services that can
`be arrrrposed together to perform a task.
`Sen'it'cs conrrrrunicute with one anoth—
`er via a service protocol, which is a Java
`interface. There can be any number of
`such protocols; they are, like the services,
`an open—ended collection.
`Security in Jirri follows a provider/access
`control list model. The principal is whomev—
`61' or whatever the service is accessed for—
`ultimately it will probably be some user
`somewhere, but the immediate principal
`may be another object. The access control
`list is associated with and controlled by the
`object that implements the service. In short,
`die owner of the service gets to decide who
`does what with it when. Jini is designed to
`be decoupleable, so that it is possible to
`implement parts of the system and still get
`many of its benefits. I haven’t dug deeply
`enough to know what parts and what ben—
`efits, but the idea is to allow legacy code
`to play a (perhaps limited) role in a Jini
`federation with only minor modification.
`That legacy code would probably be C
`code. Jini itself is built on Java, though,
`and Java underlies all the components of
`Jim. When you lump in that Java infra-
`irrfrastnrcture, those components look like
`Table 1.
`
`KenonlcControlsLtd.Calgary,Canada Ph:403-258-6200. Fx:403-25Hzo1. amallflnbgeryokeyeom
`
`
`patible commercial products.
`It would be easy to dismiss the Jim
`DDJ
`effort as a dream that has very little
`
`Serious Copy Protection and
`
`Software Licensing with No
`
`Hardware Key or Disk Key
`
`Distribute your software via Internet,
`CD or floppy with full security.
`
`CrypKey provides solid copy protection with a
`broad range of features to control all aspects of
`your product's operation. You can offer free,
`automatic one—time trials, turn demos into full multi-
`user network versions, or sell specific options by
`phone, fax or email. Sell usage by time, runs,
`features - the control is all there - easy to implement,
`and even easier to support.
`
`CrypKey also offers choices - integrate our SDK
`into your software, or use CrypKey instant to
`protect your compiled exe in 5 minutes; no coding.
`
`Try it free from our website to see why we're
`rated #1 by professional programmers who seek
`the best combination of security. features, ease
`of use. reliability & price.
`
`100% Satisfaction Guaranteed!
`
`http://www.crypkey.com 4 .
`
`
`
`APPL—1018 I Page 8 of 10
`
`APPL-1018 / Page 8 of 10
`
`
`
`N. MANCHESTER, INDIANA 46962
`
`00-981505
`
`APPL-1018 / Page 9 of 10
`
`
`
`
`
`
`
`APPL-1018 / Page 10 of 10
`
`