Object-Oriented Applications Development With NeXTstep large and medium-sized enterprise. But building Object-Oriented custom applications is proving to be very difficult. The demand for graphical user interfaces has risen Applications sharply, placing greater demands on developers. And even without the demand for friendlier appli- Development cations, MIS groups are faced with a three-to seven- year backlog of new applications to build and old With NeXTstep applications to maintain.

One response has been to port applications from Executive Summary mainframes to workstations. A related response has Rapid development and deployment of mis- been to upgrade to machines with faster processors. sion-critical custom software applications But neither downsizing nor increasing the raw are key to success in the 1990’s. This paper horsepower available to programmers has produced describes the advantages of developing those applications more rapidly or with appreciably more applications using NeXTstep, the industry’s functionality than older mainframe software. most extensive object-oriented systems soft- ware. NeXTstep’s advantages include its Why? While desktop computing has made great thorough object orientation and its inte- leaps in performance, doubling in power every two grated set of development tools. years, improvements in the way software is written Programmers can develop applications five to ten times faster since they need to write have occurred at a snail's pace. The porting of cor- less code. Benefits also include reduced learn- porate applications from mainframes to networks of ing time, improved maintainability and workstations has not remedied the problem, since reliability, code reusability, increased pro- downsizing has often meant simply using old devel- gramming flexibility, and the ability to opment tools and methods on faster workstations. manage more complex applications. For users, NeXTstep applications can be To improve productivity, programmers will have to developed and implemented more quickly. modernize their development methods and tools. NeXTstep applications have professional- Software must become more maintainable and code quality interfaces making them easier to use, more modular and reusable. But most importantly, and which integrate well with the productiv- programmers must use tools that require them to ity applications needed by users. This paper write less code. also describes the tools available to NeXT- step programmers, including NeXTstep’s Developers need a new method of writing soft- support for client-server computing and ware–and that new method is object-oriented industry standards. programming (OOP). Developers need a rich and complete set of object-oriented tools–and that set of I. Introduction: Building Mission-Critical tools is NeXTstep. Custom Applications with NeXTstep “The other workstation vendor to watch is II. NeXTstep NeXT. . . . Developers positively love it. Every NeXTstation comes with a complete NeXTstep is object-oriented system software set of development tools, and there is simply (OOSS) for workstations, designed to help organi- no better environment for building graphi- zations close the applications gap by making cal applications. . . . People who are now programmers more productive. NeXTstep using the NeXTs are nothing short of gaga improves programmer productivity in two ways. over it, and their lust is justified.” First, NeXTstep is a thoroughly object-oriented software architecture. Providing a rich set of preb- – Byte, Outlook ‘92 issue, p. 164 uilt objects for common functionality, NeXTstep Mission-critical custom applications are key to suc- allows programmers to write less code. Second, cess in the '90's for organizations of all kinds. NeXTstep provides a complete set of development Custom applications are needed by virtually every tools which have been crafted to work together.

2 NeXTstep Is Thoroughly Object-Oriented Being an object-oriented development platform, NeXTstep simplifies program development, makes Object-oriented programming is the first significant cooperation among programmers easier and main- revolution in software technology since the devel- opment of the . The entire tenance simpler, and gives the programmer a more architecture of NeXTstep is designed to support comprehensive view of a program’s architecture. object orientation. NeXTstep Provides A Complete Set of Tools Objects are the key to understanding object orienta- tion. They are self-contained chunks of code To its object-oriented programming language, containing data and associated behavior (proce- Objective-C, NeXT has added object-oriented sys- dures). Objects send messages to each other tem software, tools for developing interfaces and requesting information and services. Together, managing objects, and a complete object frame- these objects and the messages they send comprise work for adding sophisticated functionality without a complete software application. requiring programmers to write additional code. A software object represents something in the real world such as a user interface button or , a NeXTstep provides an extensive set of fundamental data entry form, a business graphic, an employee building blocks, an Application Kit of more than record, or an information browser. Objects allow one hundred objects. This Kit reduces substantially programmers to break a problem into small man- the amount of code that needs to be written. ageable components, modules of code, making it simpler for the programmer to design a logical NeXTstep’s Applications Kit supplies all of the fea- structure. This process has two main benefits: tures of a consistent user interface. NeXTstep makes all applications easier to create, enhancing • Other engineers can design additional programmer productivity. By providing complete objects that implement features and treat tools to build and modify user interfaces, NeXTstep the rest as a “black box” and allows developers to focus on their application’s • Ramp-up time is shortened when a differ- unique features and encourages and enables them to ent engineer takes over maintenance of the develop custom applications with the look and feel software of quality commercial software. And by furnishing user interface construction tools which encourage Objects can be reused. Organizations can construct consistency, NeXT makes every application easier libraries, for example, of common analysis, forms, to use. By programming in NeXTstep, it is simple and report objects which can be used across many to create applications that are not only friendly but kinds of applications. are also tailored to meet each organization’s unique Object-oriented programming helps developers requirements. manage complex applications because they only need to understand the messages that objects send With NeXTstep, programmers can reduce develop- to each other to understand how a program works. ment time significantly, a valuable productivity gain for any business that relies on a mission-criti- Sending a message to an object only requires cal custom application. requesting what needs to be done, without needing to understand how the task will actually be done. “NeXT is really making a splash in launch- Object-oriented programs hide the details from ing SBC’s [Swiss Bank Corporation] busi- everyone but the programmer of that object. Pro- ness in interest-rate derivatives. . . . Solo’s grammers focus on the architecture of the system: team wrote the application in three months, how the application is modularized into real-world which is half the time it would have taken on objects offering specific kinds of functionality and a Sun workstation, he says. ‘I’ve never how the application manages this functionality by developed something so substantive in so passing messages between objects. Developers can little time.’” operate on a higher level of abstraction and can ignore implementation details subject to revision as – Wall Street Computer Review, Volume 9, No. 1 the software matures. (1991), p. 46. 3 Recognized by the Industry faces, and interfaces which can be localized for different foreign languages Given these advantages, it is no surprise that NeXT- without additional coding. step has received the Software Publishers’ Association’s Fluegelman Award for innovative • The development environment should be software as well as Computer Language maga- well supported by the operating system. zine’s Productivity Award for interactive An object-oriented architecture should be application development environments. complemented by an optimized messaging architecture which enables efficient object-oriented applications. III. NeXTstep: A Consistent Philosophy • Custom applications, because of hooks NeXTstep is the first desktop computing operating into the operating system, should integrate system environment designed for the developer of well with commercial productivity tools. software applications. At NeXT we believe that these principles should be NeXTstep was created to enable developers to used to judge the adequacy of any development reduce development time dramatically, by making platform. Table 1 compares NeXTstep develop- common things easy to implement and difficult ment tools and their capabilities to the tools things possible and maintainable. available on another popular workstation develop- In creating NeXTstep, NeXT was guided by the fol- ment platform, Sun Microsystems. lowing principles: IV. How NeXTstep Increases Programmer • Developers for the 1990’s need an applica- Productivity tion development architecture, not a collection of poorly integrated tools that “The strongest selling point for us is the were not designed to work together. NeXTstep development environment. It • A complete development architecture allows us to develop applications in roughly must integrate programming languages, one-third the time (this is a blended figure windowing and graphics systems, user over many applications). On a NeXT, you interface toolkits and class libraries, data- are encouraged, coddled, and brought base access tools, and program quickly up what would otherwise be a diffi- management tools. cult learning curve in making good use of OOP [object-oriented programming] tech- • A development platform must provide a nique. This is possible because object ori- high level of standard functionality that all entation isn’t just a veneer on the developers can depend on, functionality programming environment. The heart and that will be common to most applications, soul of the NeXT is object-oriented. This leaving developers to write only the code allowed our developers to become OOP which is unique to their application. experts with relatively little pain. The ben- • Tools should be fully object-oriented to efits are monumental. It is inconceivable to speed development and simplify mainte- me that we would ever go back to the days nance, and all tools should use the same of functional programming.” object description and extension language – Hadar Pedhazur, Vice President, Equities that the programming language uses. Technology, Equity Derivative Products, UBS • A development environment should Securities, Inc. employ the same graphics model for screen display and hardcopy output, and Faster Application Development all applications should support multifont Programmers using NeXTstep's object-oriented text and graphics standards. development tools create software five to ten times • A development environment should faster than with traditional procedural programing encourage developers to provide high- languages. Why? Because NeXTstep programmers quality, consistent graphical user inter- write less code.

4 NeXT Sun

Tools provided by different vendors; Interface Builder manages all files, develops DevGuide only loosely coupled to C; Integrated Tools interfaces, extends class hierarchy, DevGuide doesn’t support any object- integrates with Objective-C. oriented language or toolkit.

Library of Objects for All AppKit manages events, printing, faxing, No applications framework for Core Functionality and file management. common core functionality.

Interface Builder (IB) manipulates live code, DevGuide lays out interfaces and classes, and object messaging; custom Interface Development generates static code; cannot display objects can be displayed and manipulated or manipulate custom objects. by IB.

XLIB, NeWS, , pixrects. Single Imaging Model Display PostScript. No application printing model.

Standard Multimedia Data RTF, EPS, TIFF, sound; apps can cut and No multifont text, sound, or toolkit Formats paste all of these formats. support for imaging or data exchange.

Optimized for Objective-C, can also use Optimized for C; Native C environment C++; consistent object framework across all for procedural, not object-oriented Object-Oriented Tools tools: extension language common to programming; C++ becoming available AppKit and rest of code; run-time binding but is used procedurally with allows extensible objects and apps. IB DevGuide. DevGuide creates encourages modularization of program. monolithic non-modular code.

NeXTstep provides complete dialogs in Motif, Open Look tools do not provide addition to windows and controls provided Consistent User dialogs and panels; developers create by other systems; makes it easy and natural own versions of common UI elements Interfaces to make consistent UI, hard to make (e.g., print panels). inconsistent UI.

Object-oriented system software; object Development Tools OS not designed with object-oriented architecture is built on top of Mach development or deployment in mind. Integrated With OS multithreading and messaging.

All apps can be messaged and offer services to other apps; common message Custom Apps Integrate ToolTalk messaging will be available to table architecture in all apps; apps can With Commercial Apps / some apps. All applications must know register ability to provide services with OS; protocol and architecture of other Interapplication apps can take advantage of other apps applications. Communication without knowing anything about their protocol or architecture.

Table 1: NeXTstep vs. Sun Applications Development Environments

5 Being able to use any of the more than one hundred commonly used objects supplied by the Applica- tions Kit (AppKit) allows developers to incorporate features such as spell-checking and multiple fonts without writing any additional code.

Reduced Learning Time Unlike C++, Objective-C can be learned quickly. Programmers familiar with C can learn NeXTstep’s Objective-C in a just a few hours because it is based on simple extensions to the C language. In addition, NeXT’s integrated development tools includes online documentation stored in NeXT’s Digital Librarian, and a run-time application inspector to aid mastery of the NeXT programming environ- ment. The Application Kit has many well-formed examples of effective design and efficient code which help novice NeXTstep programmers learn object-oriented programming technique. Figure 1. Reusable Code. This font panel from the Improved Maintainability and Reliability AppKit is reusable across all NeXTstep applications.

Traditional programming languages produce code ity. Experimenting with new methods of handling that is difficult to maintain. Changes to one portion certain functions in one object will not affect other of the code may have unintended consequences objects. Changes can be made while a program is which propagate throughout the application. Thus, being developed without introducing delays. maintaining software written in traditional lan- guages is often as or more difficult as creating the All objects managed by NeXT’s software manage- application was originally. ment tool, Interface Builder, can be subclassed for added functionality. Interface Builder also encour- Unlike traditional programming languages, object- ages custom objects to be developed and shared, oriented programming in Objective-C defines func- then added to the Interface Builder environment, tionality at a high level of abstraction. To use a where they can be graphically manipulated and window object, for example, the programmer only managed. Palettes of many kinds of NeXTstep needs to know what messages (“Close” or objects are commercially available from software “Resize”) to send that object–not how the window companies today. object actually works. This means that new objects can be substituted for less functional or less effi- Reusable Code cient ones without affecting the rest of the system. Object orientation protects the program from the NeXT’s object-oriented programming environment errors common in the “spaghetti code” produced by encourages the development of many small func- traditional programming techniques, where every- tional modules (objects), each of which thing is accessible by everything else. Because of accomplishes a clearly defined task. By encourag- modularity, bugs are located more quickly. And ing the development of these small functional once fixed, bugs stay fixed, because programmers objects, NeXT’s object orientation adds to the over- find and fix bugs rather than experimentally merely all reliability of development projects, since the fixing the symptoms. objects have already been proven. (See Figure 1.) Beyond modularity, reusability of code is promoted Increased Flexibility and Extensibility through subclassing and inheritance. Using sub- The ability to modify objects easily (and optimize classing, programmers can modify an object used one portion of the application without affecting by many groups without rewriting the object from other parts) creates greater programming flexibil- scratch. By creating a special subclass of an

6 Figure 2. Subclassing and Inheritance. The print panel on the right was created as a subclass of the print panel on the left, inheriting all of its features.

expense form object which is common to an entire V. NeXTstep: A Complete Object-Oriented organization, a departmental approval process that Development Solution is unique to one workgroup can be created by add- ing only a few lines of code, since all the common NeXT is the first UNIX workstation vendor to pro- attributes will be inherited from the original object. vide and bundle a rich set of object-oriented (See Figure 2.) software development tools with its computers. Unlike other UNIX workstation environments, Later, as common objects are modified and NeXT includes all the development tools–editors, updated, all applications relying on them will auto- languages, class libraries, class browsers, object matically inherit the updates, modifications, and inspectors, a , and a unified improvements. In this way, NeXTstep applications imaging model– needed to develop sophisticated, share fax and print panels that are written only once, graphical, and truly object-oriented applications. but are used by virtually all applications and which can be updated without changing the applications All of NeXTstep’s tools are designed to work themselves. Because NeXTstep encourage the cre- together to provide a complete, integrated develop- ation of extensible and reusable programs, ment solution. With NeXTstep, a development developers write fewer lines of code. team is not burdened with poorly and only partially integrated class libraries, windowing systems, and Manage Greater Complexity programming languages which are maintained by different vendors, released at different times, and By tracking the messages moving between objects, designed for different tasks. With NeXTstep, all the developers can track an application’s development tools work together–optimized and seamless. more efficiently. The development team works at a higher, more abstract level, caring less about how Interface Builder. Interface Builder is NeXTstep’s given objects work internally, concentrating instead primary tool for graphical interface development on how the program is modularized into objects and project management. Studies have shown that providing key kinds of functionality, and how as much as 90% of development time is devoted to objects communicate with each other. constructing the user interface. Interface Builder 7 Figure 3. Interface Builder. Palettes of ‘live’ objects (right) can be dragged to windows (left) to create applications.

improves programmer productivity with its com- thus giving users the ability to run the plete environment for laying out, constructing and application in the language of their choice testing user interfaces. (See Figures 3 and 4.) • A class hierarchy manager for NeXTstep Even if Interface Builder were no more than the classes and classes of objects added by most advanced interface and layout development developers, and a tool for subclassing and tool on the market, it would have justly earned its accessing class definitions breakthrough reputation on that strength alone. But • An object and palette manager, allowing Interface Builder is far more than a user interface palettes of custom objects to be manipu- tool. It provides powerful software engineering lated in the same way that NeXTstep tools to manage object-oriented software projects. Application Kit objects are displayed and Interface Builder is: manipulated

• A complete object-oriented user interface Unlike Sun, X/Motif, and Windows screen painters development, layout, prototyping, and (which manipulate little more than static bitmap testing tool representations of widgets), Interface Builder brings live software objects into an application. An object editor which manages the inter- • These live objects can be interlinked and their face between all objects in the program; behavior tested, and the entire interface can be using Interface Builder, the programmer revised in minutes. New objects can be brought into defines the protocol between objects (the Interface Builder on custom palettes and then messages they send each other) whether they are user interface objects or any other manipulated, shared, inspected, and used like any kinds of objects other NeXTstep objects. • A software management tool, managing Interface Builder involves users in software devel- all components of a software project, opment projects. Interface Builder allows users to including icons, C interface files, source test and comment on the user interface through its code modules, and sound and image files; interactive test mode. By providing painless refine- Interface Builder provides comprehensive ment of the user interface early in the development “make” facilities for program construction cycle, Interface Builder helps ensures user partici- and compilation pation and satisfaction.

• A tool that encourages modularity because Objective-C: A Rich Object-Oriented Language. of the ease with which a program can be NeXTstep’s extensive object-oriented program- split into separate modules ming tools are based on Objective-C, an extension • A localization tool which allows develop- of standard ANSI C. Objective-C encourages ers to lay out foreign language versions of developers to modularize their code, resulting in their interface and enables an application programs that are simpler to write and maintain. to support multiple language interfaces, Objective-C combines the efficiency and familiar-

8 Figure 4. Interface Builder. Interface Builder is used to manage object messaging. The “Open Window” button in the top window messages the bottom window. Messaging is represented by the black line connecting the button to the window. On the right is an inspector giving the programmer the choice of legal messages to send the window.

ity of C with the object-oriented messaging The Application Kit. The Application Kit is facilities of Smalltalk–with a only few, easily NeXT’s class library of optimized objects. It learned extensions to ANSI C. includes a set of core objects that provide the frame- work required by any application, and a powerful Unlike C++, Objective-C supports run-time bind- set of interface and support objects that provide ing, which allows the latest version of an object to advanced functionality well beyond the windowing be bound to the application at run time. Applica- toolkits found in other workstation platforms. In tions are not frozen in time when they are compiled. addition to standard interface objects such as scrol- lers, cursors, buttons, sliders, windows, and panels, Thus as objects gain new functionality, applications the Application Kit provides objects for: using these objects automatically inherit all of their new features. For example, when NeXT extended • Managing events its print panel to include faxing, all applications gained the ability to fax documents–even those • Manipulating text data and editing multi- commercial applications which had shipped one font text (including rulers and a complete spelling checker) year earlier. Through run-time binding, NeXTstep gains complete extensibility of applications. • Selecting colors

In addition, Objective-C’s persistent objects pro- • Using standard dialogs (opening and sav- ing files) vide debugging advantages over C++. In C++, objects only exist at compile time, and code is com- • Managing files piled into C. In Objective-C, objects exist at run • Displaying TIFF and EPS graphics time, allowing the developer to send messages to objects interactively in the same way that compiled • Faxing in Group III format code does. This is very useful for testing messaging • Printing in PostScript schemes and the overall behavior of an object or group of objects. • Creating browsers

9 • Incorporating voice and sound (and a VI. Developing With NeXTstep sound editor) What languages does NeXTstep support? Everything in the Application Kit is fully extensible and all of its objects can be subclassed. NeXTstep/Interface Builder’s native language is Objective-C, based on ANSI C. Unlike C++, A Unified Imaging Model. Having co-developed Objective-C is extremely easy for C programmers Display PostScript with Adobe Systems, Inc., to learn, since it adds only a small set of extensions NeXT employs PostScript for all imaging, whether to standard C. Beyond ease of learning, NeXT to screen, printer, or imagesetter. Developers need chose Objective-C because of its support for not worry about supporting two imaging models, dynamic binding. Dynamic binding allows devel- one for screen display and one for printing. Using opers to generalize programs so that they can Display PostScript as a single imaging model handle a wide variety of object types without know- ensures consistent results and allows developers to ing all the possibilities ahead of time. maintain only one set of graphics routines. NeXT works with the same Adobe Type 1 fonts that are Third parties support many other languages includ- widely available on devices ranging from desktop ing Pascal, Common Lisp, Ada, Eiffel, BASIC, printers to imagesetters. FORTRAN, and COBOL. Absoft Corporation’s object-oriented FORTRAN 77 offers access to stan- Support Tools. NeXTstep includes a range of dard UNIX tools and supports Interface Builder. additional tools: the gdb object-oriented debugger, MallocDebug (which measures an application’s use Developers can access applications written in lan- of dynamic memory), PostScript previewing tools, guages that do not support Interface Builder a choice of UNIX text editors (Edit, a mouse-based directly. Through interapplications messaging, programming editor; emacs; and vi), and AppIn- NeXTstep allows applications to be written in any spector, which allows programmers to examine language available on the NeXT platform. Custom relationships between objects. Interface Builder programs can message applica- tions written in any of these languages; to an end- Operating System Integration. The NeXTstep user, it appears as if the program and the interface development environment is well supported by are one, seamless application. NeXT’s UNIX / Mach operating system. Will existing C or C++ code have to be Mach is NeXT's operating system kernel. Com- rewritten? pletely UNIX BSD 4.3 (Berkeley) compatible, it is the same kernel recently chosen for adoption by the NeXTstep programs can utilize standard ANSI C, Open Software Foundation (OSF). Mach offers an Objective-C, and C++. Included with NeXTstep is extremely efficient communications-oriented ker- an Objective-C++ compiler. This compiler permits nel, supporting multiple processors within Objective-C and C++ to access objects written in computers and multiple threads within applications. either language; links C, Objective-C, and C++ into The choice of Mach is consistent with NeXT’s one application; and provides symbolic debugging emphasis on object-oriented development because of C, Objective-C, and C++ using NeXT's debug- Mach is very efficient for messaging the objects ger. C++ and Objective-C are fully integrated into within an application, for interapplications messag- Objective-C++. Objective-C can call C++ methods, ing, and for messaging across a network. Unlike and C++ can call Objective-C methods. other workstation programming environments, Mach and NeXTstep’s programming tools were While NeXT's own Application Kit will remain designed to provide an integrated platform for the Objective-C based, organizations with a significant development and use of object-oriented applica- investment in C++ object classes can retain their tions, optimized from the operating system on up. investment while capitalizing on NeXTstep's pow- erful, integrated environment. Much of the core In addition to full UNIX compatibility at the system code of Lotus Improv was written in C++ before level, NeXT supplies a complete set of familiar Lotus began its NeXTstep development. Thanks to UNIX command line tools, such as awk and sed, as Objective-C++, Improv was able to take advantage well as programming utilities like gprof. of Lotus' existing code base together with the added

10 productivity of NeXTstep. The result is the Are NeXTstep applications portable? generation of spreadsheets, developed first on the NeXT Computer. Properly written C, Objective-C, and C++ applica- tions which separate user interface code from core Does NeXTstep support the standards needed functionality are very portable. The porting task is in mixed computing environments? essentially similar to porting well-modularized code across other graphical user interfaces such as Standard UNIX. NeXTstep is based on industry- Windows, Motif, or the Macintosh. Applications standard Berkeley UNIX. Developers can compile ported from these environments to NeXTstep, how- and run UNIX code on a NeXT computer as easily ever, involve less work, because implementing a as on any other computer that is based on UNIX user interface in NeXTstep requires significantly 4.3BSD. NeXT plans to incorporate full POSIX less coding. compliance when BSD UNIX 4.4 is released. Can NeXTstep support client-server Communications. Every NeXT computer supports computing? Are NeXTstep applications thin coax and twisted-pair 10baseT Ethernet. scalable? NeXT's native support for TCP/IP and Sun's RPC (Remote Procedure Call) ensure that NeXTstep Through support for TCP/IP, SQL, and Sun's RPC, applications can support client/server computing. NeXTstep applications are client/server ready. NeXT supports Sun's Network File System (NFS Mach's messaging facility provides very fast inter- 4.0) as its own native file system, and its native mail process communications. Through RPC, NeXTstep system is based on industry-standard SMTP (Sim- applications can support cooperating processes on ple Mail Transfer Protocol). The third release of networked machines, from local UNIX-based serv- NeXTstep software will support Ethertalk and Nov- ers to remote Cray supercomputers. NeXTstep's ell client connectivity. messaging facilities provide an ideal mechanism for integrating easy-to-use interfaces running Through third-parties, NeXT computers can access locally with compute-intensive code running on many remote resources and tools, including AFS remote cycle-servers, all within an easy-to-main- 2.0, Wang VS, 3270 and VT100/220 emulation, tain NeXTstep application framework. DECNET, X/Motif, Banyan, X.25, SLIP, PPP, and Macintosh file system support. Insignia Solutions What are the benefits for end-users of NeXTstep provides full DOS emulation via SoftPC. applications?

As interoperability and networking services and Faster Time to Market. Organizations relying on standards from such organizations as OSF are custom applications as their competitive edge gain defined and gain market acceptance, NeXT will substantial benefit if those applications can be ensure their support within NeXTstep. developed and deployed more quickly. In reducing a new application’s time to market from a year or Database Connectivity. A variety of vendors offer longer to a few months, an investment in NeXTstep SQL databases for NeXT, including ANSI-SQL and NeXT computers pays for itself quickly–often compliant ORACLE DBMS and Sybase SQL within a month after an application has been imple- Server. NeXT's Application Kit is being extended to include a powerful set of database objects so that mented. programmers can access Sybase, Oracle, and other “NeXTstep is a phenomenally productive SQL databases from within Interface Builder. environment for proprietary applications development. We were able to develop a Data and File Standards. Native file formats sup- fully-functional, fixed-income trader’s ported by NeXT include Encapsulated PostScript workstation in less than three months. In (EPS) and TIFF for graphics, and Microsoft’s Rich other environments, it would have taken Text (RTF) format for text. The NeXT file system two, three, or even four times as long.” also reads and writes DOS files. And NeXT sup- ports JPEG compression/decompression and the – Robert M. Wilen, Vice President, SBC / OC ISO 9660 and High Sierra CD-ROM formats. Services L.P.

11 Professional-Quality Interfaces. Programmers VII. Summary: The NeXTstep Advantage can quickly create applications with friendly inter- faces that are as professional as shrink-wrapped NeXTstep programmers receive all of the benefits applications from the major commercial software of object-oriented programming: houses. • Reduced development time NeXTstep Applications Are Easier to Use. • Decreased maintenance costs NeXTstep makes it easy to create user-friendly graphical user interfaces. And unlike other UNIX • Reusability of code interface development tools, NeXTstep’s Applica- • More robust and flexible applications tion Kit and Interface Builder encourage developers to create consistent user interfaces based on a com- But NeXTstep is far more than a simple object-ori- mon framework. When users have learned one ented language or toolkit. Beyond the general NeXTstep application, they have learned the key benefits of object-oriented languages, NeXTstep elements of most applications: window and menu programmers–and only NeXTstep programmers– selection; file system navigation; font and color benefit from: selection; cutting, copying and pasting between • A complete and integrated object-oriented applications; and printing and faxing. development platform requiring program- mers to write less code Integration. Being object-oriented and living in an object-oriented environment, NeXTstep applica- • Interface Builder, which allows develop- tions are not standalone programs. All properly ers to assemble and test user interfaces and designed NeXTstep applications can cut, copy, and other application components in less time paste data from other applications, and request ser- than with traditional methods and tools vices from other applications. Any application can, • A complete user interface and applications for example, request services from Webster’s Dic- framework which includes multifont text, tionary or NeXT’s Digital Librarian, or mail printing, faxing, and file management documents to other users. More sophisticated appli- • A platform which allows completed appli- cations can access remote databases, access cations to work together mathematical models in Mathematica, or send numerical information to Lotus Improv for charting • A platform whose interface tools encour- or analysis. Any custom NeXTstep application can age consistency, which leads to reduced avail itself of the facilities of many other NeXTstep training and learning time and greater sat- isfaction for end-users applications, including the services of many com- mercially available tools. In this way, users can customize their working environment and create an integrated set of tools, where each new application adds value to all other tools present on the desktop.

12 VIII.Next Steps

Technology Decisionmakers’ Seminar For more information on how NeXTstep can be put to work in your organization, inquire about attend- ing NeXT’s one-day introduction to NeXTstep, the Technology Decisionmakers’ Seminar.

Developer Class To learn more about programming the NeXT com- puter, NeXT offers Developer Class, a week-long course in developing object-oriented applications using NeXTstep. For information on attending NeXT’s Technology Decisionmakers’ Seminar or Developer Class, call 1-800 848-NeXT.

Additional Reading Budd, Timothy, An Introduction to Object-Oriented Programming, Addison-Wesley, 1991. Cox, Brad, Object-Oriented Programming: An Evolutionary Approach, Addison-Wesley, 1991. Lozinski, Christopher, “Why I Need Objective-C,” Journal of Object-Oriented Programming, September 1991, pp. 21-28. NeXT and Open Systems Standards, NeXT Computer, Inc., 1991. NeXT Technical Documentation, Addison-Wesley, 1991. The NeXTstep Advantage, NeXT Computer, Inc., 1991. Weiner, Richard S. and Pinson, Lewis J., Objective-C: Object-Oriented Programming Techniques, Addison- Wesley, 1991.

13