Launching a technology into stardom begins with an enormous creative effort. The combined technical and marketing forces pouring out of Java tool vendors is as impressive as the fires fueling the giant first stage of a Saturn rocket. But the first stage burns out quickly, followed by a less flashy, more sustained effort. With 75 percent of developers programming database applications, Java IDEs must tap this fuel to reach a long-lasting orbit.
Powersoft's high-end RAD tools, PowerBuilder and Optima++, have won numerous awards serving the needs of database application developers. So it's no surprise that their first Java development tool, PowerJ, goes far beyond first generation Java IDEs to provide a visual, practical, database-oriented Java development environment. This article reviews a surprisingly polished public beta of PowerJ, available for download at http://www.powersoft.com/.
Internet Database Connectivity Architecture
Powersoft based PowerJ on the Optima++ development environment, but there are some key differences due to the nature of Java and the Internet. Java's built-in security features for untrusted applets restrict you from directly accessing files, non-Java programs or remote computers other than the Web server providing the Java applet. These requirements run directly against the vast majority of database software products. Database vendors and Java IDE vendors are rapidly adapting to address this dilemma. This may render some of the current workarounds unnecessary.
Since an untrusted Java applet cannot directly access files on its own computer, or any other non-Web server machine, data access must go through the Web server's computer. DBMS APIs are, for now, almost exclusively in non-Java languages, so the applet must communicate in Java to a Java application running on the Web server. Since Java applications can use non-Java languages, they can make calls to DBMS APIs written in C, C++, etc. Java's built-in multi-threading simplifies the task of vendors writing Java applications to service concurrent database connections from multiple Java applet clients.
All of the above untrusted applet restrictions are lifted if you write a Java application or deploy for one of the rare browsers (e.g., HotJava) that runs trusted applets. Since time to market is critical for Java IDE vendors, their focus is serving the needs of untrusted applets. In time, the Java database market will grow and you will see additional tools optimized for applications and trusted applets.
Maintainability is another key driving force to Java database architectures. Because there is no one or few vendors dominating the market for Java database products, vendors must rely on the interoperability of various pieces to the Java database application puzzle. Making sure front ends, middleware and back ends all work together in a marketplace driven by extremely rapid product changes is a challenge solvable only by frequent patches and controlled updating procedures. You can simplify your maintenance hurdles by limiting the amount of software that runs on client computers. The trade-off is performance.
A typical CPU running in a server or client has a performance of about 100-500 MIPs. Clearly, 100-client CPUs have more combined power than a single 10 CPU server. By placing nearly all of the processing on the server, you are potentially wasting client resources and creating a bottleneck on the server. Consider the anticipated client and server(s) processing power balance as a factor in your overall architecture. The wide range of transmission speeds is also a major performance factor. A T1 connection can move 100 times the data of a 14.4 modem. However, the latency of the Internet and lowered performance expectations of Internet users can simplify your performance tuning decisions.
PowerJ - Multiple Option Threat
In football, the triple-option threat is a potent offense. Five receivers in a run-and-shoot can be undefendable. PowerJ has nine options for database connectivity: jdbcConnect, JDBC-ODBC bridge, standard JDBC drivers, ActiveX, JavaBeans, NetImpact Dynamo, CGI, ISAPI and NSAPI. Fully exploring all these options could fill a book, so I will highlight the major points. PowerJ RAD = JDBC
If you prefer the no-code, RAD goal in database applications, you will want to use PowerJ's data aware controls and database dialog wizard. These all rely on PowerJ's JDBC options. JDBC (Java DataBase Connectivity) is a standard incorporated into Sun's JDK 1.1 based on prior work by Sun, Intersolv, the ODBC standard and its precursors. As a standard, it comes with significant advantages and disadvantages. Standards tradeoff performance and bugginess for portability and accessibility. If a proprietary solution exists and you feel comfortable with the vendor, that may be the best solution. If not, an open standard may be more viable.
PowerJ includes a proprietary solution, jdbcConnect, for direct access to Sybase SQL Server, Replication Server and Sybase IQ. Direct Sybase SQL Anywhere support is not available yet, but is a high priority. Through additional layers and gateways, you can communicate with other DBMS's. jdbcConnect is a java application that runs on your Web server and supports a number of UNIX and Win32 operating systems. jdbcConnect does not support the JDK 1.1, but PowerJ includes classes that work with JDK 1.02 that you activate via a switch. This works fine as long as you don't have an application that must support both jdbcConnect and a JDK 1.1-based driver. One other noteworthy point is jdbcConnect's extensive support for high security database connections.
PowerJ provides direct support for standard JDBC drivers. All-Java drivers exist for CA-Ingres, DB2, Informix, InterBase, Microsoft SQL Server, mSQL, Oracle, Postgres95, Progress and SAS. There is a notable lack of non-ODBC drivers for the Jet Engine, Borland Database Engine and FoxPro engines. For more information on JDBC driver availability, see
Alternatively, you can use the JDBC-ODBC bridge downloadable from JavaSoft. PowerJ supports JDBC-ODBC version 1.21, which means JDK 1.1, the Sun Java Virtual Machine (JVM), no debugging, no applets and client-side ODBC drivers. This means you will have to contend with ODBC driver configuration, possibly database client code, OS compatibility and version control on your clients. ODBC drivers are still exclusively non-Java code, so Java applications must use native methods (i.e., no untrusted applets). JVMs in Netscape, Microsoft and Asymetrix implement native methods differently from Sun. The JDBC-ODBC bridge has versions for Sun and Asymetrix's JVM, but not Microsoft's. Sun hasn't been as aggressive in supporting a debugging JVM, so debugging in PowerJ requires the Microsoft JVM. Given the rapid change in the Internet industry, one can hope these restrictions will rapidly disappear.
One final note: Until standard browsers support JDK 1.1, all JDBC solutions will require client downloading of JDBC classes increasing the initial time to load your JDBC-based application.
ActiveX and Java Beans
PowerJ supports both ActiveX and JavaBeans APIs for Java components. It comes with 22 Java Beans components including all the components for database applications, and seven ActiveX controls. Through third party ActiveX and Java Bean components, you can add additional database functionality. Since Java Beans are so new, you may have difficulty purchasing database-related Java Beans except for those included in Java database IDEs like PowerJ. While ActiveX controls are plentiful, database-oriented ones are not. This is due in large part to confusing signals from Microsoft (e.g., ODBC, OLE DB, OCX, RDO, ADC, ADO, DAO, etc.) At this point, you may have better success writing or subclassing your own Java Beans and/or ActiveX controls.
Since ActiveX controls reside on the Web page, not in the Java program, PowerJ generates VBScript glue code to communicate between your Java program and the ActiveX control. This will probably restrict Java applet/ActiveX solutions to Microsoft's Internet Explorer.
RADJava provides a component-based development environment
with support for JavaBeans, ActiveX and CORBA
Server-Side Java with NetImpact Dynamo, ISAPI, NSAPI and CGI
Most of this article discusses client-side Java, but PowerJ also supports Java applications running on your Web server, also known as Java servlets. PowerJ's target wizard creates the initial framework of code to start the development of your servlet. PowerJ abstracts many of the differences between CGI, NSAPI and ISAPI to simplify your portability efforts. ISAPI and NSAPI are Microsoft's and Netscape's high performance replacements for the CGI interface to Web servers. If you use one of these two APIs, you must take care to write thread-safe Java code. PowerJ provides useful documentation and a number of sample projects employing threads and servlets.
Data Entry Application Support
First generation Java tools require considerable manual effort to develop data entry forms. PowerJ surpasses these products with its data aware controls, data viewers and variety of editing tools.
PowerJ's form design interface has a tabbed array including six data-aware JavaBean controls (edit box, label, combo box, list box, radio button and check box). The list box can also handle sophisticated bound lookup table tasks. Three common components PowerJ omits are grids, masked edit boxes and record navigators. As vendors of Java Bean components sprout, you can expect many more database controls for your PowerJ applications.
PowerJ also has three additional controls to set up database connections, cursor definitions and cursor navigation. It was nice to see a full set of navigation methods that overcame the JDBC's deficiencies in this area. While PowerJ doesn't display live data in the data aware controls at design time, it does provide a useful facility to test basic connection and cursor definition. Especially nice is the visual SQL editor to help you define the cursor and the test grid to view the resultant data. You also can use the cursor component to run stored procedures. The database components include an auto-commit transaction setting, but surprisingly there is no transaction isolation level setting. In the current beta, PowerJ requires a little bit of code (via bound SQL parameters) to set up master-detail views.
You have several options to edit the properties and events of a control. A tabbed dialog window helps novices find the right property. Experienced users may prefer the Visual Basic-like property editor window. For visual layout properties, PowerJ provides a number of alignment tools, but there is no control tab order tool. There is also a class browser, an object browser and project file viewer. Finally, PowerJ's target viewer lets you set options like debug vs. release build and JVM and interpreter choices from Sun and Microsoft. If you prefer to work with code, you can edit PowerJ's edited code, but it is not a two way editing tool.
Powersoft must be targeting this beta strictly at corporate developers with huge bandwidth. The download of PowerJ was 20 MB and that did not include JDBC-ODBC, NetImpact Dynamo or SQLAnywhere. That would have brought the total to around 40 MB. Before using Java, all the talk of thin clients, NCs and Java led me to believe a Java IDE would be a slimming experience from the typical 100+ MB non-Internet database tools. I was wrong.
Installing applications built with PowerJ is uncertain at this time since PowerJ (as reviewed here) is still in beta and you have so many options for database connectivity and DBMS engines. You have the potential to create PowerJ applications with the thinnest of clients and minimal configuration. You can also create the most complicated multi-tier applications filled with gateways, barely shipping protocol bridges and client-side software driving you straight to the client/server funny farm.
PowerJ revolutionizes enterprise application
development for the Internet. Build and deploy customized applications on the client, the server and the middle tier
The documentation, sample applications and tutorials were unusually good for a beta product and better than the shipping version of one of their chief competitors, Visual Café Pro. However, there are still a number of places where the Help button or F1 does nothing.
Wizards are a common teaching method in RAD development tools. A data entry form wizard was not present in this reviewed beta, but should be included by the time you read this. This form wizard will handle both simple data views and master-detail views.
One exception to their otherwise good documentation is their initial tutorial to drag and drop programming. I found it difficult to understand why I was clicking and typing in so many different places, only to produce a short line or two of code. With further practice and additional reading, I was able to almost understand the point to their drag and drop programming interface, but I think it needs more work. Powersoft designed this to help developers learn Java, but it is far from the intuitive interface of Visual Café's interaction wizard.
Previous sections detailed PowerJ's integration with a variety of standards like JDBC, ActiveX, JavaBeans, ISAPI, etc. Powersoft built its reputation on multi-vendor support and large-scale development features. It shows with a 1.0 product's support for version control using PVCS, RCS, Source Integrity, Visual SourceSafe as well as Powersoft's own ObjectCycle. If that's not enough, PowerJ also includes instructions on how to set up PowerJ for generic source control systems.
Another example of Powersoft's vision is the realization that Microsoft's FrontPage is an important Web-site development tool. You can configure PowerJ to use FrontPage as the HTML editor. Front Page recognizes PowerJ's control files. You can start your Web site in either FrontPage or PowerJ by following the simple directions in PowerJ's documentation.
Developers using modern LAN-based database application development environments expect certain features rarely found in Internet tools. For example, PowerJ has no report writer. There is no bundled tool like Crystal Reports nor an advanced integrated tool like the one in Borland IntraBuilder. For some reason, developers often forget that getting information out of a database is the reason businesses are willing to pay so much for fancy data entry modules.
There also are no tools for creating and modifying databases, database rules, security, etc. While a GUI like Visual dBASE has, which supports multiple DBMSs would be great, even a command line interface to SQL would be acceptable. Database dictionary integration like PowerBuilder's or Visual FoxPro's would also be welcome. For now, you can expect to replicate business rules in client-side code as well as in the DBMS.
Powersoft is planning to ship PowerJ in Q2 1997. There will probably be several versions similar in price to the desktop, professional and enterprise version categories of other development tools. This is not to say that PowerJ is another me-too product. PowerJ's wealth of connectivity options, RAD database components and complex application support makes it a leader in the crowded Java marketplace.