Chapter 34

Intranet Tools


CONTENTS

Now that you've examined some of the content and aesthetic concerns relating to intranet design, the next step is to become familiar with the various tools and resources that you and your staff will use to construct an intranet. Remember that although these tools offer powerful, enticing solutions to your design problems and challenges, you need to make careful and informed decisions when selecting the technologies that will support your intranet. Remember, the right tools and the right design plan will do wonders for your company, its productivity, and your reputation as an IS miracle worker. If you have a great intranet design but attempt to complete it with incorrect or inadequate intranet technology, you may soon be staring a pink slip straight in the face.

In this chapter, you will learn about some of the new technology that is available to make your intranet functional and efficient. You also will examine the steadfast technologies that have helped the Net emerge as the fastest growing and most powerful communications medium in history. After you finish this chapter, you should be familiar with many of the tools available to you as you build your intranet.

Choosing Your Tools

When you're evaluating your company's need for one or more of the many tools and resources available to you as intranet building blocks, you should realize that none of these languages, suites, or applications has been around very long on the intranet scene. In the development world, they're pretty much the new kids on the block, and although people may tout themselves as "Intranet Experts," "Java Gurus," or claim to have installed their first Web server on a Western Union telegraph wire, keep in mind that you're sailing in more or less uncharted waters. Webmasters, IS managers, and CIOs alike are all still learning the benefits and limitations of these new resources and are busily finding the most efficient and appropriate ways to integrate them into current and future intranet systems. Although you do need to put a good deal of thought into the design and development of your intranet, you also should feel free to explore new and creative applications for the emerging technologies and stretch the design limitations from time to time.

One thing that many people forget when they begin to develop an intranet architecture is that "intranet" does not equal "HTML." Although HTML is on many levels an integral part of a successful intranet, it is only one of a growing number of technologies that your development team will ultimately use. Nontechnical managers and end users may often ask why anything more than HTML (and the requisite HTTP server) is necessary for the successful implementation of a full-featured internal site; after all, they simply want to share information, and HTML does that just fine. You can explain that although HTML is indeed a useful tool for distributing text-based information, it isn't necessarily the answer for every information-distribution system. HTML, as a document-development language, is quite adept at simple markup and the presentation of reasonable amounts of static (unchanging) data. HTML, however, is limited in that it cannot (and was never intended to) provide any degree of interactivity whatsoever between the client and the server. The variety of tools that you will undoubtedly encounter during your research have been developed and have proliferated because of the widespread need to extend the basic capabilities of HTML to allow for data manipulation, advanced and dynamic generation of Web pages, and high-level interactivity.

You should address the following five central issues when selecting the tools and applications that you will include within the scope of your intranet:

These factors are integral aspects that you must account for both in the definition of your intranet's functionality as well as in the selection of the tools with which you will build your intranet. By thinking these issues through beforehand, you'll end up saving yourself a lot of time, energy, and frustration. You'll also end up with a much better intranet for your organization.

In the next few sections, I cover some of the key resources you need to construct your intranet, including Server-Side Includes (SSI), the Common Gateway Interface (CGI), the Application Programming Interface (API), prevailing languages used for Web development, and some of the more popular third-party tools and applications used to build corporate and organizational intranets.

Server-Side Includes (SSI)

Using Server-Side Includes (SSI), one of the easiest methods for incorporating semi-dynamic HTML creation into your intranet, is an excellent way to introduce short-term or small-scale functionality into your system. Table 34.1 illustrates the ease with which you can add SSI. SSI is a great tool-especially if you're not a programmer-because it allows you to specify, via HTML-like tags, various points within a Web page that should be generated on-the-fly (such as date/time, the inclusion of standard header/footer files, or HTTP environment variables) when a specific page is requested by the client. It's also great for "quick fixes," intended to be remedied later by full-featured CGIs, because little development time is required to implement SSI. Open your HTML file, specify the type and location of the included information, and off you go.

Table 34.1. A closer look at Server-Side Includes, HTML, and the results.

 
Low
Medium
High
Functionality
*
 
 
Technical requirements
*
 
 
Development cycle
*
 
 
Danger
*
 
 
CPU load
 
 
*

If you've ever written your own Web page or worked on a Web site, you should feel confident in using SSI after only a brief review of the steps involved. Because SSI is so simple, however, its functionality also is limited to basic, straightforward tasks, and utilizing it for anything other than the most routine, simple operations is usually beyond the scope of what SSI was intended to facilitate. This is mildly compensated by the fact that due to its inherent simplicity, you can easily update and modify your SSI tags to account for changes in your intranet's information delivery requirement.

A good example of SSI would be to include a standard header and footer file reference tag for each page of HTML on your site. If for any reason your header or footer needs to change, you have one point of contact to make a global change instead of changing every page of HTML individually.

Finally, you should note that because of the manner in which Web servers deal with SSI functionality, you experience moderate delays when serving SSI-enabled documents because the server must first read in the HTML file, find the locations within the document requiring SSI data, and then complete the client request by building the full HTML page and transmitting it back to the client. If your data-serving needs are conservative, using SSIs can be a great way to increase your intranet's value. If, however, you need to serve more than small amounts of data, you should seriously consider one of the options discussed in the following sections.

Application Programming Interface (API)

The Application Programming Interface, or API for short, is another of the primary ways to extend a Web site's (or, more specifically, a Web server's) functionality. Table 34.2 illustrates the benefits of using APIs. By loading extension code (offered by many companies such as O'Reilly, Netscape, Microsoft, and so on) onto a machine equipped with an HTTP server that has a defined API, you can extend that particular server's capacity to deal with information, requests, and so on, based entirely on what that particular API has been designed to accomplish. As powerful as standard CGI programs and much more so than SSI, APIs allow your design team to increase your intranet's capabilities significantly.

Table 34.2. A closer look at APIs.

 Low MediumHigh Very High
Functionality
 
 
*
 
Technical requirements
 
 
*
 
Development cycle
 
 
*
 
Danger
 
 
 
*
CPU load
*
 
 
 

Because APIs run in the same process as the server and are preloaded at runtime, they are faster than the CGI. Here are some popular APIs and their corresponding HTTP servers:

NSAPI (Netscape API) from Netscape
http://home.netscape.com/comprod/server_central/server_add_ons.html
ISAPI (Internet Server API) from Microsoft
http://www.microsoft.com/win32dev/apiext/isaphome.htm
WSAPI (WebSite API) from O'Reilly and Associates
http://software.ora.com/wspro/wsapi/html/

It should be noted that APIs are not for everyone. Some HTTP servers don't support any API. Generally, APIs are very server-specific. There are no current standards, so don't expect to bring API code with you if you change server platforms. Microsoft implemented the Internet Server API (ISAPI), which they hope will become the industry standard.

The benefits gained from using APIs, however, do not come without a significant cost, in this case an increased risk of having your server die as a result of inappropriate or poorly designed API code. Additionally, the level of technical know-how required to implement an API is well beyond the realm of most system administrators and most likely outside the skills held by many in-house programmers. Therefore, you probably will need to contract with an outside company or programmer to develop, test, and integrate a specific API that will address your needs and concerns.

As with CGI technology, APIs are implemented using standard programming languages such as C or C++ and as such offer a significant level of server-extension capabilities that should not be ignored. Due to the complexity involved in using APIs, however, and the fact that your intranet may be dependent on a high-priced, external source for its API development and troubleshooting, you'll want to consider carefully how strongly you want to embrace this option.

Plug-Ins

If your company currently uses (or plans to use) Netscape Communication's browser as a client for your information services, you'll be more than pleased to learn about plug-ins, a new family of software products that will enable your users to accomplish any number of tasks more easily than you ever imagined. Microsoft's Internet Explorer plans to support the Netscape Navigator Plug-In format. From playing any number of different audio formats to viewing hundreds of different formats of word processing documents, plug-ins provide for an ever-increasing array of possibilities. By virtue of how they work, a plug-in could be written to handle any file type the user could ever dream of. The HTTP server handles requests for files, and files have types. Plug-ins are just extension code that handles new or nonstandard file types.

Using Netscape Navigator as the foundation, the plug-in is installed on the client machine and resides in a directory that the browser knows to look in for plug-ins. Functioning whenever it is called upon (based on requests for a file type it has been written to handle-called MIME in Internet lingo), the plug-in software processes a given set of information and then presents it to the user in-line. This resource is fabulous whether you're considering the in-house creation of specialty software to enhance your intranet or would prefer to purchase prebuilt systems that are ready to go. A great example of this functionality is the Real Audio plug-in (http://www.realaudio.com). Netscape Navigator can't handle a Real Audio MIME type (.RAM) straight out of the box, so the user must install the Real Audio plug-in. Then, when the user requests a Real Audio clip (http://www.realaudio.com/products/server/hpeval/overview.ram), the Real Audio plug-in says, "Hey-I can handle that!" and takes over.

Additionally, as these plug-ins are built by a variety of companies all competing for market share, you will see no end (assuming no huge shifts in browser preference) for the short- to mid-term of publicly available and affordable third-party solutions for your intranet needs. For a list of plug-ins that you can use to extend the capabilities of the Netscape Navigator browser, visit

http://home.netscape.com/comprod/products/navigator/version_2.0/plugins/index.html

The Common Gateway Interface (CGI)

The Common Gateway Interface is a standard for connecting client-based forms with HTTP servers and other tools on the server side. Table 34.3 illustrates the benefits of using CGIs. Unlike standard HTML documents, which are static (unchanging) in nature and content, a CGI-compliant application is executed in real time, allowing for the dynamic generation of complete HTML files, the manipulation of data within a database, or any number of other complex tasks.

Table 34.3. A closer look at CGIs.

 
Low
Medium
High
Functionality
 
 
*
Technical requirements
 
 
*
Development cycle
 
*
 
Danger
 
 
*
CPU load
 
 
*

One of the most beneficial uses of the CGI, for example, is to create dynamic, or "on-the-fly," Web pages in response to user queries. The CGI receives the query from the client and passes it to the database engine or other specific application, which then completes the requested action. After the request has been processed, the CGI receives the answer from the server-side application and transmits the resulting data back to the client for display. This is a prime example of a CGI database-gateway.

Although CGI seems like a straightforward concept, implementing CGIs on anything more than a basic scale is often extremely difficult, due to the fact that databases, Web servers, and back-end programs often have complex and divergent needs that must be thoroughly addressed. CGIs are also difficult to debug. Additionally, enabling a CGI program on your system is equivalent to allowing a total stranger to run an application on your hardware without your supervision, which has some rather serious security ramifications if your CGIs are sloppy or are designed by inexperienced programmers not familiar with possible security issues. When and if you decide that CGIs are essential to your intranet, keep in mind the following points to create winning CGIs:

Your team can build CGIs for your intranet in a number of different ways. You can select from among C/C++, Perl, UNIX Shells, Visual Basic, FORTRAN, TCL, REXX, and others, which gives you a good deal of flexibility in your design strategy and allows you to benefit from your employees' skills in the particular languages. Keep in mind, however, that each of these tools is different from the next in complexity as well as function, so be sure to evaluate them in the context of your specific project. You would be wise to invest some time researching the specifics of the environments prior to embracing a particular language, especially considering that the platform-language combination that you choose will have an enormous impact on the quality of your intranet. (For more background on programming, see Chapter 22, "Creating a Functional Site.")

Before finalizing your system's development needs, you have to make many choices. To help you get a handle on some of them, review the following sections in relation to what you anticipate as your system's central requirements.

Text Manipulation

In recent years, if your site depended heavily on text searches and large-scale text manipulation, UNIX would have been your first (and probably only) choice. As Windows NT has expanded into a widely-embraced and versatile server platform, however, the power, speed, and graphical interface sported by Windows NT seem to have reduced the UNIX lead, except in the most demanding of environments.

Nontextual Data Handling

Another area in which the Windows platform excels is in dealing with word processing, spreadsheet, and database manipulation. Because of the built-in capacity for Windows applications to share data by virtue of OLE and DDE, writing CGI scripts for this platform provides for a comprehensive and extremely versatile information-processing system.

Database Interaction

Here's a short list of preferred tools for database connectivity-in no particular order:

C++
C
PL/SQL
Perl
Visual Basic
Java

Although a number of competing database systems run under UNIX or Windows, UNIX is the preeminent choice when you're using an extremely high-end data system such as Oracle, Sybase, or Informix because many different gateways have already been created to facilitate their connection to your system. If your data-handling needs are less than legendary, however, you'll probably find the Windows options to your liking, as you can utilize tools like Visual Basic to write interfaces to ODBC-compliant data sources-for example, Microsoft Access, SQL Server, and so on.

The Relative Power of Popular Database Options
High

Oracle
Sybase

Medium

Microsoft SQL Server
Microsoft Access
Paradox

Low

Flat file

Languages

When designing customized software for your intranet, you can utilize a number of different languages. As with any aspect of information systems design, you need to have a thorough grasp of the features each product offers as well as the relative benefits and drawbacks of implementing a particular language. In the following sections, I cover the more popular languages that are prevalent on current intranets. I also cover a few emerging technologies that will soon offer your intranet some exciting options for new and improved data-serving roles.

Content Tools

Some of the easiest and relatively simple languages to work with for intranet design (aside from HTML), content tools work as enhancements to the base functionality inherent to HTML. Generally, you use them to provide error checking for data input through forms (masks), to change various features of the browser, or to perform other easily definable tasks for which the higher-level languages are ill-suited. Working hand-in-hand with the technology underlying HTML and HTTP, content tools are essentially useless without these complementary technologies because the instructions that are created with these content tools reside within the HTML of a particular page and depend on the HTTP server to transmit them to the client.

JavaScript

JavaScript, a compact, object-based scripting language, is one of the latest and increasingly popular ways to create "smarter" HTML pages for your intranet as well as the Internet. Currently, various browser and operating system platforms support different degrees of JavaScript functionality. So, if you decide that JavaScript is the answer to your needs, be sure to find out whether your client workstations are equipped to process your JavaScript code. In general, you'll find that newer versions of Netscape Navigator (and forthcoming browsers from America Online, Microsoft, and Spry) will be ready to take on the task of enabling JavaScript on your intranet.

As a content tool, JavaScript is an excellent choice to make "dumb" Web pages into data-processing geniuses. Well, maybe not geniuses, but by combining JavaScript with standard HTML forms, you can do a good deal of preprocessing to save time, bandwidth, and frustration when your intranet goes online. Because JavaScript statements are included directly (embedded) within an HTML document and are interpreted directly from a browser (requiring no compiler or other traditional programming tools), JavaScript is fairly simple to implement and maintain. It is readable to humans, can be changed almost instantly by an administrator, and requires no supporting software other than the client's browser. One of the most valuable features of JavaScript is its ability to "sense" a user's actions (such as mouse clicks, form input [masks], or page navigation) on the client side and respond to them via a predetermined script.

You can develop a JavaScript function, for example, to verify that users have entered appropriate information within a form field, such as a telephone, Social Security number, or zip code. Without any outbound transmission from the client once the Web page has been loaded into memory, the embedded JavaScript can evaluate the user-provided text and alert the user through an alert dialog box if the input is invalid or otherwise unacceptable for processing. This capability is extremely important if you are considering a database-to-intranet connectivity plan, as you'll want to reduce processing overhead on the server as much as possible and keep bandwidth usage to a minimum so that priority traffic can get through.

You also can use JavaScript to perform certain actions (such as play an audio file, execute an applet, or communicate with a plug-in) in response to a user's actions. Depending on your intranet's needs, or perhaps to enable additional resources for the hearing or visually impaired, JavaScript's sensing capabilities may prove useful.

Resembling Java in many ways, JavaScript lacks Java's static typing and strong type checking, which can be an important consideration if your system needs to perform complex mathematical calculations. JavaScript supports most of Java's expression syntax and basic flow constructs, so if you've got some in-house talent in Java, using JavaScript shouldn't be much of a stretch for you. In contrast to the compile-time system of classes built by declarations that is employed by both Java and C++, however, JavaScript has implemented a runtime system based on a small number of data types representing numeric, Boolean, and string values, which ease development burdens significantly but decrease flexibility. JavaScript also provides a relatively straightforward instance-based object model that still provides significant capabilities despite the fact that it is quite limited in comparison to Java.

As a descendant of smaller, dynamically typed languages, such as HyperTalk and dBASE, JavaScript is accessible to a wider audience than its big-brother counterpart (Java) because of its easier syntax, specialized built-in functionality, and minimal requirements for object creation. Although not a replacement for Java as a Web development tool, JavaScript serves a complementary role by allowing script authors to include limited amounts of Java functionality, including changing the properties and performance of applets, plug-ins, or even certain aspects of the browser itself, including shape, color, and orientation. Table 34.4 outlines some of the more technical differences between Java and JavaScript. These differences are commonly questioned on Internet newsgroups.

Table 34.4. Important differences between JavaScript and Java.

JavaScriptJava
Interpreted by client (browser, plug-in, and so on) Compiled on server before client execution
Code integrated and embedded in HTMLCode is distinct but accessed through HTML
Object based code that uses built-in, extensible objects but no classes or inheritance Object applets consist of built-in, extensible
Loose typingStrong typing
Dynamic binding; object references checked at runtime Static binding; object references must exist at compile time
No access to HDNo access to HD, although the browser can run native applications

You can embed JavaScript in HTML in one of two ways, and depending on how you plan to utilize JavaScript, you should examine both possibilities. Your first option is to include JavaScript statements and functions within your HTML using the <SCRIPT> tag, using the following format:

<SCRIPT LANGUAGE="JavaScript"> Your Wonderful JavaScript Code Functions \</SCRIPT>

Call the functions from within the HTML based on browser actions such as clicking on a link and so on.

Tip
JavaScript code is case-sensitive, so be sure to keep that fact in mind when writing your code.

One of the nice things about JavaScript is that because it is embedded within the HTML document, you can examine it by viewing the document source. Most browsers support the ability to view the underlying HTML. I recommend that you view the source of the JavaScript examples offered by Netscape at

http://home.netscape.com/comprod/products/navigator/version_2.0/script/script info/index.html

This choice is ideal if you plan to develop extensive systems with a great deal of JavaScript. If, however, you are interested in more direct and targeted uses of JavaScript, your second option is to embed the JavaScript within your HTML not as <SCRIPT>-separated commands, but rather as event handlers using HTML tags. Recall that JavaScript applications are almost wholly event-driven-they respond to the actions of the person using the client browser. When you're working with a browser such as Netscape Navigator, it is prepared to recognize a series of predefined events and deal with them in various ways. An excellent example of an event is when a user clicks a button or perhaps points at a particular link on a Web page. Because the browser can recognize when each event occurs, your JavaScript application can use the browser as its virtual "eyes" and therefore respond to the event instantaneously. It accomplishes this through the use of event handlers, which are essentially scripts that are automatically executed when an event is initiated. If you're familiar with C, you should be well on your way to understanding JavaScript's event handlers, because much of JavaScript's form is modeled on C. Event handlers take the form

<TAG eventHandler="command1;command2;command3">

where TAG is an HTML tag and eventHandler is the name of a particular event handler.

Tip
Currently, you cannot print output created by JavaScript, so be sure to include a standard text-based option if you anticipate that your users will require hard copies.

If you're even basically familiar with any type of functional programming, you should have little problem picking up the fundamentals of JavaScript. Novice programmers (or dedicated users), however, shouldn't necessarily shy away from JavaScript either, as a small investment in time and effort can yield surprising results.

VBScript

A new and promising technology, the Microsoft Visual Basic Scripting Edition (VBScript) is actually a subset of the traditional MS Visual Basic language that has simplified the development of Windows-based applications in recent years. Although VBScript just recently made its appearance on the intranet development scene and has yet to become widely available, the benefits to be gained from the use of VBScript are many and are sure to cause a good deal of industry confusion and turmoil as developers decide whether to embrace VBScript or its Sun Microsystems counterpart, JavaScript. Microsoft has gone to great lengths to develop and make available an enticing alternative to JavaScript, and in the coming months the battles between Microsoft and the Sun/Netscape alliance should prove entertaining, and will hopefully result in even better products for developers as the companies vie for market dominance.

As a mainstream and powerful development language, Visual Basic had to undergo a number of nip-and-tuck procedures before making its debut as an Internet development tool. The most important of these changes is the revamping and restriction of the more security-sensitive commands and functions (those most likely to allow a hacker to injure your system), which means that although VBScript still offers powerful functionality, you can feel safe in knowing that your system will not be highly susceptible to the whims of hackers. Remember, though, no system is hacker-proof, so be sure to consider other options for securing your intranet as well, especially if you are hosting proprietary or otherwise confidential corporate data.

VBScript, the Internet-targeted flavor of Visual Basic, has been designed to provide a fully functional suite of enhancements to intranet designers, ranging from scripting and automation to the complete customization of various properties of Web browsers (initially to be incorporated into Internet Explorer 3.0).

Like JavaScript, VBScript is an interpreted language that is read into memory when the Web page containing it is transferred to the client browser. Its code is embedded directly into the HTML file. VBScript lets developers write VB code to be included directly in the file and work in conjunction with ActiveX. VBScript is included in the following manner:

<SCRIPT LANGUAGE="VBS"> Sub BtnAlert_OnClick MsgBox "I no need hall pass!!!" End Sub </SCRIPT>

When the browser reads the initial <SCRIPT> tag, it calls upon the VBScript language engine to perform a runtime compile of the VBScript code and then makes that particular piece of compiled code available to the system (assuming the client browser is VBScript-enabled; check with your system administrator or check the original documentation that came with your system).

One of the most impressive features of the forthcoming VBScript is the arrival of OLE automation to intranet design. With this capability, VBScript will be able to manipulate both the browser and other client-side applications based on predetermined events, user input, or any of a host of other variables. Additionally, VBScript will have the capacity to set both properties and methods on ActiveX controls (.OCXs) and Java applets, which will extend the overall functionality of your intranet even further.

Although VBScript is far from being an industry standard (or even a released product), it will most likely be a powerful tool that will have a tremendous impact on the intranet design process. Microsoft is (as usual) muscling its way into the Internet game, playing catch-up with Sun and Netscape. In this instance, Microsoft is offering free licensing of the VBScript source code to developers. Although there are certain drawbacks to embracing a nonstandard technology that is still in its infancy-including compatibility with existing and evolving systems, cross-platform security and portability, and so on-as Microsoft refines VBScript in response to user needs and industry trends, it will find a definitive niche in which to flourish. To examine more information on VBScript, visit Microsoft's home page at http://www.microsoft.com/intdev/vbs/.

The following table compares Visual Basic, Visual Basic for Applications, and VBScript:

Visual Basic

Ideal for large-scale distributed client/server systems.
Extremely powerful, robust, and readily scalable.

Visual Basic for Applications (VBA)

A specialized subset of Visual Basic for Office applications.
Geared toward high-end users.
Great for integration with existing systems.

VBScript

Optimized for Internet and intranet applications.
Small command set.
Extremely fast.
Low overhead.

VRML

At the first World Wide Web Conference held in Geneva, Switzerland, in the spring of 1994, Tim Berners-Lee and Dave Raggett spearheaded a focus group to discuss the future and direction of three-dimensional modeling using the Internet as a transmission medium. During these discussions, the term "Virtual Reality Modeling Language" was adopted and the technical development of VRML began shortly thereafter. Existing as a subset of the Silicon Graphics, Inc., Open Inventor ASCII File Format, which provides an excellent environment for the specification of polygons and three-dimensional landscapes, VRML has become one of the major tools for delivering interactive, three-dimensional online content, despite the fact that it is somewhat difficult to work with. Version 1.0 of the language had three simple goals that have served to speed its acceptance into the development cycle: first, as with HTML and other Net technologies, it is platform-independent; second, it is extensible; and third, it is optimized for transmission over low-bandwidth connections, which is important if you plan to transfer VRML data to more than a few workstations on your intranet.

As VRML evolves and incorporates support for high-end graphics, simple and rapid integration and interaction with data sources, and is able to optimize both its speed and memory requirements, VRML (or an equivalent tool) will become the de facto standard for presenting graphical information online. Although the technology is not quite at a level acceptable for widespread integration with functional corporate intranets, the concept of three-dimensional presentations of large data sets is one that has circulated in the academic, scientific, technical, and business worlds for many years, as humans are able to comprehend complex data sets more easily when rendered graphically. Because the technology was (until mid-1995) nonexistent, however, the concept remained just that. Now that "interactivity" is the buzz word and key feature when dealing with most online systems-and because the majority of client hardware and software now can support such tasks-many third-party utilities, applications, and design suites have been released to facilitate the development and utilization of VRML-based worlds for log analysis, database access, or any similar tasks.

If you want to consider the benefits that VRML can bring to your intranet project, visit http://www.sdsc.edu/SDSC/
Partners/vrml/examples.html
. You can read up on the technical specifications, catch up on VRML development, and see some interesting demonstrations that may help you in the design process.

Java

Of the many application languages used to build systems for the Internet or intranet, Java is perhaps the most revolutionary. An object-oriented (OO) development environment, Java enables you to create fully-functional applications that are served either across the Web via an HTTP server or locally on your client machines, which gives you added flexibility in deciding how and when people will have access to intranet resources.

The early years of Web development found a marked lack of tools to facilitate the development of interactive, multimedia-based systems. Responding to this need for high-end functionality, developers at Sun Microsystems assembled the Java language, an object-oriented, platform-independent environment that allows you to build robust, secure, high-performance intranet applications and systems. Java allows you to develop two distinct types of software. The first, referred to as an applet, is served over the Web and is distributed through the client browser. The second type of software that Java supports is stand-alone applications. Either way, the usefulness of your intranet will increase tremendously with the incorporation of Java technology.

Originally conceived as the backbone of so-called "smart" appliances and interactive TV, one of the most remarkable features of Java is its platform-independent nature, which is the key to its acceptance as an Internet/intranet standard. This means that the programs applets that you develop for your intranet using the Java language will function on any platform that has its own version of a Java interpreter (generally built in to your browser, plug-in, or third-party application). Today, Java interpreters are available for all major platforms and operating systems, so if you poke around on the Net, you'll be certain to find one quickly.

Another important feature of Java is its robust nature. Essentially, in the search for a technology that would be able to work on many platforms using many operating systems, Sun took special care to ensure that the environment was sufficiently stable so that it would avoid disastrous effects-such as crashes or lost data-when Java applets were downloaded and executed on client machines. If you want your Java tools to handle secure or sensitive information, you can be somewhat reassured by the fact that your development environment can accommodate you.

Additionally, Sun Microsystems decided hands-down to include a number of important benefits within the new environment to position Java as the unchallenged middle- to high-end development tool for your intranet. First, unlike Perl, shell scripts, or JavaScript, Java is a full-featured, object-oriented language that allows for the inheritance and reuse of code both dynamically and in a more traditional static fashion. Further, as a high-performance tool, Java supports features such as multithreading and native code usage. This capability is especially useful now that many businesses are preparing roll-outs of Windows 95 and Windows NT machines as their in-house client workstations. Finally, to ease the burden of C or C++ development, Java assumes more responsibility for the final disposition of the code itself, taking on the task of memory management and pointers, traditionally the unenvied work of pro-grammers.

The following is an example of Java source code:

//(Copyright Notice: This source code is (c) Copyright 1995-96, EarthWeb LLC.) package eweb.awt; import java.awt.*; public class Thingy extends Canvas {int mx, my; public Thingy() {mx = my = 50;} public void paint(Graphics g) {for (int i=0; i<size().width-1; i+=8) {g.drawLine( mx, my, i, 0 ); {g.drawLine( mx, my, i, size().width-1 ); {for (int i=0; i<size().height-1; i+=8) {g.drawLine( mx, my, 0, i );} g.drawLine( mx, my, size().width-1, i );} g.drawRect(0, 0, size().width-1, size().height-1);} public void Action( int x, int y ) {mx = x; my = y; repaint();} public boolean mouseDown(java.awt.Event evt, int x, int y) {Action( x, y ); return true;} public boolean mouseDrag(java.awt.Event evt, int x, int y) {Action( x, y ); return true;}}

You can license, purchase, or simply take a host of existing applications into account when you're using Java as a platform for your intranet. To get some interesting ideas about how to include Java applets within your site, visit

http://www.gamelan.com

For a good overview of the Java language and some great examples, visit

http://www.sun.com/sunsoft/Products/Developer-products/java/Workshop/index.html

Interface Tools: Perl

Unlike content tools, which offer front-end extensions to the capabilities of HTML, interface tools take on the extremely technical and demanding job of facilitating back-end tasks, such as the transmission of data from an HTML form or the execution of an application on the server side of the connection to perform specific functions, including the processing of a request for information or storing a user's address. I already covered CGI in an earlier section, but another important interface tool that you should be aware of is Perl, the Practical Extraction and Reporting Language.

Perl is a widely available, extremely useful, and fairly simple language to learn and incorporate into your intranet. It is also free, which, by the way, has never been known to hurt the appeal of a great product. An ideal choice for low- to mid-complexity projects, Perl combines many of the most desirable features that are found both in the UNIX shells and the higher-level languages such as C++.

Unlike shell scripts, Perl exists as a runtime-compiled language, which means that it exists as human-readable coding until the program is executed. It then is compiled into code that the computer can understand and performs its function. Although this is a definite performance killer, if used wisely and sparingly, Perl can increase the functionality of your site without significant drawbacks.

The most popular Perl library for writing CGIs is cgi-lib.pl by Steven Brenner. You can find it at http://www.bio.cam.ac.uk/cgi-lib/.

The following is an example of a simple Perl program:

$CRLF = "\n"; $method=$ENV{"REQUEST_METHOD"}; print "Content-type: text/plain",$CRLF,$CRLF; print "CGI/1.2 report:",$CRLF; print " ^^^^^^^^^", $CRLF; if($#ARGV eq '-1') { print "No command args"; } else { print "ARGC=",($#ARGV+1),", ARGV: "; for (@ARGV) { print; print " "; }; } print $CRLF,$CRLF; print "Environment variables:",$CRLF; print "REQUEST_METHOD: ",$method,$CRLF; print "SCRIPT_NAME: ",$ENV{"SCRIPT_NAME"},$CRLF; print "QUERY_STRING: ",$ENV{"QUERY_STRING"},$CRLF; print "PATH_INFO: ",$ENV{"PATH_INFO"},$CRLF; print "PATH_TRANSLATED: ",$ENV{"PATH_TRANSLATED"},$CRLF; if($method eq "POST") { $cfile= $ENV{"CONTENT_FILE"}; print "CONTENT_TYPE: ",$ENV{"CONTENT_TYPE"},$CRLF; print "CONTENT_FILE: ",$cfile,$CRLF; print "CONTENT_LENGTH: ",$ENV{"CONTENT_LENGTH"},$CRLF; print "---- begin content ----",$CRLF; print while <STDIN>; print $CRLF,"---- end content ----",$CRLF; } print $CRLF,"end of report",$CRLF;

Originally developed for UNIX-based systems, Perl has been ported to work on a variety of popular operating systems, including DOS, OS/2, Macintosh, and Windows NT, so virtually any server you have installed should take advantage of some form of Perl when and if you decide to embrace it.

Prewritten TCP/IP Applications

If you decide that designing all your own applications from the bottom up is not the best avenue for your intranet, you should consider evaluating some of the many intranet-enhancing tools that you can purchase and integrate into the rest of your system, and utilize your computer's TCP/IP stack rather than your browser package. Software companies have spent a great deal of time creating well-planned, useful, and affordable solutions to many of your needs, including real-time collaboration (audio, graphics, and text), messaging, file sharing, and data processing. But before you delve into what could be many weeks of research, here are some pointers that will make your job quite a bit easier.

PCN, shown in Figure 34.1, is a TCP/IP-based client that allows users to obtain and access news and information that is broadcast from a PointCast Server. Their PointCast-I Server, which retails for less than $1,000 per server CPU, resides on a company's internal network and can facilitate the transmission of corporate stock data, human resources reports, production updates-virtually any text or graphical information that you choose to deliver. One of the greatest benefits of PCN is that you don't need to familiarize yourself with a new and confusing language because the text-based portion of the system relies on HTML for its format and even provides a number of built-in forms to facilitate the creation of online content. Unlike standard HTTP servers that are not optimized for the large-scale transmission of information, however, PCN has been designed especially to reduce traffic across the network, and you'll enjoy fantastic benefits if your company has Internet firewalls included in your network. Currently only available for the Windows NT platform (supporting up to 500 clients with a 75MHz 32MB NT server), PointCast plans on expanding their coverage to include other popular systems, including UNIX and Macintosh. For more information on PCN, visit http://www.pointcast.com.

Figure 34.1: The PCN interface.

Marketed as a "real-time audio and data collaboration tool specifically designed for the Internet," CoolTalk, shown in Figure 34.2, allows your employees to work together and become more productive-without having to pick up the telephone or visit a remote company site. CoolTalk provides full-duplex audio-conferencing capabilities, which means that, like a telephone, both participants can speak and be heard simultaneously-a fantastic improvement over the earlier, half-duplex applications that have made their rounds on the Net. What's more, CoolTalk functions as a virtual answering machine for TCP/IP-based audio messages, allowing your employees to recall messages received during meetings, lunch breaks, or even the night before. Functioning over a 14.4 or 28.8Kbps connection, CoolTalk also supports a chat tool for text-based conferences, a whiteboard collaboration tool that allows users to draw images and transmit them to their associates, and many other features to improve your organization's communications. For more information on CoolTalk, visit http://www.netscape.com.

Figure 34.2: CoolTalk.

Wayfarer QuickServer

If you decide that your intranet will require more than the basic data sharing that is easily accomplished with HTTP services but would instead like to make available full-featured applications to client machines across the Net with real-time data delivery, you should take a serious look at QuickServer from Wayfarer. The QuickServer product from Wayfarer brings true client/server real-time computing to the World Wide Web. As a development tool that provides important primitives for developing the client and server sides of any application, QuickServer manages connections, access control, and encryption while providing a reliable low-bandwidth connection across the Internet or your intranet. The product allows programmers to handle only basic issues when developing networked applications and allows infor-mation to be sent in a form called a Wayfarer Value Object, which can be customized by the developer. QuickServer supports clients written in Java, C++, and Visual Basic. Wayfarer promises more cross-platform and language support in the near future. You can embed any application developed in Java and Visual Basic in the Netscape browser as a Java applet or plug-in, respectively, and the user can operate the client as part of an HTML document. Figure 34.3 shows one example.

Figure 34.3 : Stock Watcher was developed in Visual Basic and is being displayed in the Netscape browser as a plug-in. This application utilizes Wayfarer's client/server development technologies.

The performance of the server is excellent, and the optimized communication between the client and server is very efficient. A modest Windows NT server can support 1,500 simultaneous connections. This product will grow in popularity and will likely become the basis for many internal corporate and mass market products. For more information about Wayfarer tech-nology, visit http://www.wayfarer.com/. Be sure to check out http://www.wayfarer.com/demonstration/index.htm for an excellent demonstration of the system's power.

Although I've described only a few of the many TCP/IP-based third-party applications that you can utilize when constructing your intranet, this chapter should give you not only a good understanding of the currently available offerings, but also should give you a good base with which to begin construction of full-featured, company-ready intranets to enable your organization to reach new levels of productivity and profit.

Summary

In this chapter, you looked at a number of different tools and technologies that will enable you-if used properly-to build an effective, powerful, and well-received intranet for your company or organization. From the server-enabling options of Server-Side Includes (SSI), Application Programming Interface (API), and the Common Gateway Interface (CGI) to the many languages that facilitate intranet-based software development, the environment in which both Internet and intranet systems evolve has never seemed brighter. Far from the sterile, text-based world that online, Internet-based, and in-house systems used to exemplify, these high-tech features will allow you to build "smarter" and more appealing systems that will help your company to maximize the potential of today's intranet applications.

Remember, as important as it is to have a fantastic intranet architecture on paper, without the right tools and support, the system is doomed to fail. Be sure to consider thoughtfully the needs of your users (and designers) prior to the construction of your intranet, and then select from the many and varied options that are emerging nonstop in the development world. With some careful planning, a lot of hard work, and a little bit of luck, your intranet will be an incredible resource that your colleagues will embrace as the backbone of modern office communication.