
|
New software products for developing data-oriented business applications for the Internet have been appearing more and more frequently during the last year or two. However, the Internet/database tools that I have seen up until now have been either too clumsy, too simplistic, or too programming intensive. I have been waiting for an all-in-one package designed for the Internet from the ground up. I want rapid application development features to get a project off the ground quickly and a programming language powerful enough to tackle just about any complex task. It looks like the wait may be over.
SilverStream is a new product from a new company, also named SilverStream. Many members of the SilverStream team came from Powersoft (the inventors of PowerBuilder) and other successful ventures, and itıs clear that the team knows what itıs doing. One of the most impressive things about SilverStream is how complete the product is, considering that the company was founded only about a year ago. With SilverStream, you can develop an application that can be run from the leading Web browsers and can connect to the major database servers. SilverStream manages most of the complexities for you. For example, to keep the browser from being flooded with data from a large query, SilverStream passes the browser just a few rows at a time, while the Web server continues to prefetch rows in the background so it can pass them to the browser quickly as the user scrolls to them. Thoughtful features like this appear throughout the product.
SilverStream does most of its work using Java. It converts your forms and other components to Java, and you can write as much additional Java code as you want, although you donıt necessarily have to write any.
Having said these nice things about SilverStream, I should warn you not to get too ambitious. Web application development poses many serious challenges; among them, keeping the user interface simple and getting good performance. You could attempt to take a large-scale client/server application and rewrite it for the Web using SilverStream, but chances are youıd encounter too many frustrations. Furthermore, as a version 1.0 product, SilverStream has its share of shortcomings (such as the lack of a report writer) and rough edges.
SilverStream consists of two main programs, SilverStream Server and SilverStream Designer, plus a few other programs Iıll mention as we go along. The SilverStream Server is a Web server, and like any Web server, it can deliver Web pages to a browser. But SilverStream Server is more powerful than a typical Web server because it also provides the many other services that are available to a SilverStream application in a three-tiered architecture style, such as database access. People can run your SilverStream application and navigate your entire Web site by pointing their browsers to your SilverStream Serverıs Internet address. SilverStream Server runs on Windows NT 4.0 or Windows 95. (Other platforms are promised for the near future.) Windows NT Server is the most reasonable home for it, and thatıs where I installed it for this review.
The SilverStream Designer is the development tool that you will use to develop applications. Most of this review is about how you use the Designer to design Web pages, design forms that display and edit data, and write Java programs. The people who run your application donıt need and typically wonıt have SilverStream Designer. All they need is a Web browser.
SilverStream Designer canıt run by itself. Like the browsers that run your application, the Designer must be connected to the SilverStream Server at all times. SilverStream Designer runs on Windows NT or Windows 95; I tested it on both operating systems. For my NT testing, I ran the Designer on the same computer that was running the SilverStream Server. For my Windows 95 testing, I connected my SilverStream Designer to the NT-based SilverStream Server by providing the serverıs TCP/IP address to the Designer during installation.
SilverStream can connect to the following database servers using ODBC or JDBC: Microsoft SQL Server 6.5, Oracle 7.1 or higher, Sybase SQL Anywhere 5.5, and Sybase System 11. For this review I used SQL Anywhere, a special version of which is included with SilverStream. The SilverStream package includes a special version of Sybase SQL Anywhere 5.5, which is capable of connecting only to SilverStream. SilverStream stores your entire application in the database instead of as individual disk files.
A full-featured SilverStream application requires a browser that supports the very latest Java features (in particular, JDK 1.1). Microsoft Internet Explorer 4.0 and the latest patches for Netscape Navigator 4.x, both newly released, provide the necessary support.
You can run a SilverStream application in three modes: in a browser using Java, in a browser using HTML without Java, and in SilverClient. To reach a wide audience with the greatest functionality, choose the browser-with-Java approach. You might reach more people with an HTML-only application, but you will sacrifice speed and functionality. SilverClient is a browser substitute distributed with SilverStream. It runs SilverStream applications faster than third-party browsers do and would be a good choice for an internal company application.
A SilverStream application comprises six types of components: tables, forms, views, the object store, pages, and agents. You design all these components in the SilverStream Designer, although you can also design a few of them using external tools. For example, you can create tables using your DBMSıs interactive SQL (or any database administration tool), and you can design pages using any Web page-authoring product.
There is a SilverStream "designer" for each type of component. For example, there is a Form Designer for designing forms, and a Page Designer for designing HTML pages.
Figure 1 shows a completed SilverStream application running in a browser. Within "The Video Store" page there is an "Order Entry Form"; within the form there is a view (the scrolling list of line items). The form and the view are displaying data from several related tables.
Tables are regular database tables. You can create tables and add fields to tables with the Table Designer. SilverStream lets you enhance table definitions in several ways beyond what a standard SQL DBMS supports: You can add special properties, such as a default label, to apply to each field when you place it on a form. You can specify the relationships among tables and choose whether or not to implement the relations as DBMS-managed foreign keys. (SilverStream will use the relationships automatically when you design a multitable form or view.) You can flag fields for high-speed, full-text searching. And you can set up a table for "versioning" so that SilverStream automatically records any changes a user makes to the table in a separate "version table."
SilverStream does not provide direct support for stored procedures or dynamic SQL. You can write your own Java code to implement such features, but by doing so you must bypass the SilverStream Serverıs database connections.
Forms are, as in most products, the primary means by which your application interfaces with users. You can design data bound forms, such as a customer information form or an order entry form. Or you can design forms without data, such as a dialog box asking the user how to proceed. A data bound form must be based on a table from the database, but you can also bring in fields or subforms from other related tables. A wizard helps you design a new data bound form. You can add many types of controls to a form, including data fields, buttons, check boxes, pictures, and tab panels. By placing an "HTML edit field" on a form, you can display HTML documents to users and even let users modify HTML documents and store them as BLOBs in the database. You can also attach help in the form of HTML pages to any form or control.
Every control on a form (and the form itself) has a set of events to which you can attach programming. For example, a button has a "clicked" event, where you could write a program to scroll to the next data record or post changes to the database. A data field has events such as "ValueChanged" and "ValidationFailed" for programming that monitors the data entry process. If youıve used any of the modern visual development tools, SilverStreamıs event-driven programming model will be familiar to you.
Views are not the same as DBMS views. (From SilverStreamıs perspective, a DBMS view would look the same as a table.) A SilverStream view is a matrix-style display of your data that you can place in a page or form. An especially nice feature of views is that they can display one-to-many relationships. (In fact, they can display one-to-many-to-many to any depth.) Clicking a button on a master-table row expands rows of related child-table rows below it. You can add calculations such as column summations to a view. Initially, a view is read-only, but by changing a few properties and adding a few lines of Java code you can make it updatable.
The Object Store is a place for storing externally developed components that you are integrating into your application ı in particular JavaBeans components.
Pages are standard HTML Web pages. A typical SilverStream application will consist of one or more pages with forms embedded in them or opened from them. Figure 1 shows a page with a form within it. The SilverStream Page Designer is a Web page designer, although you can also use a third-party designer such as Microsoft FrontPage.
Agents are Java objects that you design and program to carry out background services for your application. Whereas forms, views, and pages run in the applicationıs front end ı that is, in the browser ı agents run in the SilverStream Server. You can program an agent to do just about anything, such as executing a complex database management task or responding to and generating email. You wonıt require agents for many simple applications, but theyıre great for more ambitious projects.
SilverStream is written in Java; it converts your forms and views into Java for execution, and you can add Java code to your forms and agents.
You donıt need to know Java in order to get some very attractive Web applications up and running with SilverStream. Even programming a button on a form doesnıt require learning Java. A wizard called "Simple Actions" takes you through the process of defining a buttonıs actions and writes the Java for you, which you can then view and edit.
You can write Java code for events on forms, form controls, and agents. SilverStream provides a rich supply of events, objects, and methods (functions); with programming you can accomplish almost anything.
SilverStream is not a Java compiler. Instead, it relies on the Java compiler of your choice. No need to run out and buy a Java compiler, though. Symantec Cafıs Java compiler (not the complete Cafı product) is included with the SilverStream package. You might, however, want to run out and buy a Java book. The SilverStream documentation assumes that you already know Java, and except for a few examples, it does not try to teach you the language or serve as a Java reference manual.
I worked through the tutorial booklet that comes with the product and then developed a simple video store application. The product worked as advertised in all the ways that I tested it. I was very pleased with its ease of use and the scope of its capabilities. Whenever I ran into a problem, I was usually able to solve it quickly. If I couldnıt, I called the SilverStream technical support line, which answered promptly and had ready solutions. I donıt expect to be so lucky always. This is a big product capable of building big applications. I have no doubt that there are serious time-consuming problems lurking out there in my future.
The tutorial offers an excellent introduction to SilverStream. Working through the entire tutorial took more than 12 hours, which is not surprising for a product of this magnitude. The tutorial booklet could use another round of editing because there are a few steps missing, although most are easy to figure out. The final page leaves you hanging with a Java routine that doesnıt compile cleanly.
I ran into a few limitations that could be worked around if I were to add some extra programming:
SilverStream ran rather sluggishly, both in the designer and in the running application. The designer wasnıt so slow as to be irritating, but it was noticeably slower than the client/server tools to which I am accustomed. I was using 90 MHz Pentiums. Most full-time SilverStream developers will probably want machines that run 200 MHz or faster.
When I ran my application, the order entry form took 40 seconds to open the first time and 25 seconds to reopen thereafter. It seems that reopening should be much faster than that because most of the initial delay is caused by the downloading of Java classes. The SilverStream representatives agreed that the Java classes are getting downloaded every time the form reopens, even though thatıs needless extra work. They blamed the browser and suggested some workarounds to speed things up.
SilverStream packs an awful lot into a version 1.0 product. Plan to face a learning curve and a fair share of challenges, but probably not as many as you would with most other products. SilverStream combines the right mix of RAD tools, Java programmability, Web management, and database savvy for my needs. Where SilverStream has shortcomings, I expect to see improvements in future releases. Meanwhile, itıs off to a great start.
