Thursday, September 25, 1997

CPS-615 Assignment 2

 David Figatner


Assignment Instructions:  For this assignment, one needs to review some of the materials on Java for problem solving in general or for Scientific and Engineering Computations (SEC) in particular.

There are a number of issues you need to keep in mind while carrying out this review:

     Take into account your background and applications of interest (you may refer back to your
     answers for assignment 1) and see whether Java and related available resources would
     adequately address the needs of your application.
     Consider other relevant works to your interests and whether any may have used Java for
     visualization or simulations or perhaps both.
     If Java would not be a suitable language to use for tackling, say, your problem then explain
     the reason(s) behind that.
     Provide as much technical details as you can.
     Narrow your review to certain aspects or issues and always opt for thoroughness and depth.
     If possible, provide links to any references you may use in your review.

Complete assignment and parallel computing links: http://osprey4.npac.syr.edu:7777/cps615-fall97/index.html

EXAMINED DEPARTMENT
Legal Document Databases (e.g., WestLaw and Lexis-Nexis)
CURRENT STATE OF SOFTWARE AND LANGUAGES
Currently there are two widespread legal databases in use: WestLaw and Lexis-Nexis.  Both of these databases are probably written in C or C++ at the server end and the user interface end (there was no technical information available at their web page).  The user interface for both of these programs has been greatly upgraded during the last two years.  Originally, the client end of the database was accessed through a DOS-like text window, with text commands needed to traverse and search the database.  The text commands have been replaced with a windows interface which hides most of the text commands.  The output has also been upgraded with links between cases, and the ability to cite-check has been built right into both programs (cite-checking is the ability to search for other cases which directly overturn, or support the current case.  This is a very important feature because a lawyer does not want to hinger her entire case on the findings of another case which has been overturned by a higher, or the same court).

Currently, Lexis-Nexis is moving part of its resources onto the Web in a new website called Xchange.  There is not much information on it (because it has not opened yet), but it might use Java/HTML tools to access Lexis-Nexis database information.  If this is true, then this would be large step towards integrating the web for legal research and communication.  I will be curious to see which way they take this technology in the upcoming weeks.

 Click here for Java information:    
USE OF JAVA AT SERVER SITE FOR SEARCH AND RECORD KEEPING
Large databases are used in legal research to search, retrieve and set up databases.  Other databases are used to keep track of the large use of these databases for billing purposes.  (The use of a legal database is extremely expensive.  A search which retrieves 150 documents might cost a law firm as much as $50.  Also, each line that is downloaded from the text of the search can cost the law firm sometimes 10 cents per line -- there is usually over a 1000 lines in a single document.  Therefore, billing is as important to the legal database companies as the actual search engines.)

Because Java is as of now not a true compiled language, Java cannot achieve the same speed in searches and retrievals as a native compiled language such as C or C++.  At the server side of a legal database, user interface is less important and actual speed is more important.  The faster the server can search, the more searches it can accomplish and therefore the more billing hours the company can collect.  Because these legal database companies are out to make money, at the present time there would be no advantage to changing over to a database format written in Java.

Currently, there are a lot of companies working on classes to allow Java to access and work with existing database technologies.  There has been a push for Java to release a standardized SQL-type server, and even some JDBC (like ODBC for windows) drivers released to try and do some of the work of windows-based programs (e.g., a company working on a Java class library with these ideas in mind).
 

USE OF JAVA AT CLIENT SITE FOR USER-INTERFACE
Java has been applauded for its new apporach to user interfaces.  Java's ability to place an applet on any internet browser has allowed software developers to create user interfaces which are device independent at relatively low costs.  There are now spinning and smoking movies on every web page (regretably usually used only for advertisements -- I wish they'd load a bit faster and initialize faster; on my PC, a Java applet completely freezes the computer while it's being initialized), and some use of Java as a user interface to access inputted data.

For all of these improvements in Java technology, the advantage to moving from a C/C++ windows client user-interface to a Java user-interface are small for legal databases.   For the most part, law firms and judges use standard PCs to do their legal research.  No workstations and very few macintoshes (although there are watered down versions of all the client software for macs) are used.  Therefore, Java being platform independent is not useful to a client site.  Furthermore, most users of legal database do not want to have to run their searches through browser -- especially with the internet browsers 4.0's problems with crashing.  A stable, fast and clean interface is needed, and through the use of a C/C++ windows environment (like is used in the creation of browsers, word processors, spreadsheets, etc.) a good interface is created which can access the database and return results in real time.

One advantage of Java is that it is more secure than C/C++; there is less of a chance of a crash (because there are no memory pointers which is the cause of most C/C++ GPFs and crashes).  While these are definite advantages for most application, a well written C/C++ code with solid, well-tested code can overcome these problems.  Java does not seem to be as crash-proof as it is made out to be (e.g., Saleh's attempted demonstration of his Java program on Tuesday, September 23, 1997).  Java is still a very young language, and it would not be wise for a legal database company to risk its database just yet with access through a java applet.

Besides speed, Java is also not as stable as a language such as C/C++ which has been around for a longer time.  The new Java 1.1 changes many things in the old Java.  Java has not reached the point where the class libraries have reached a stable state.  While C/C++ class libraries are changing (e.g., MFC has been improved -- or at least changed -- a number of times, and new visual libraries are always being created), the current visual class libraries work well and have been proven to work well.

OBJECT ORIENTED ADVANTAGE OF JAVA
Object oriented languages such as Java makes programming user-interfaces and even database servers much easier.  Modelling problems with the use of objects is more natural to humans, and although it sometimes results in programs which are a bit slower (mostly because of virtual overheads), the code re-use and ease of programming far outweigh any speed reductions.  Java would have a clear advantage over traditional C because of this.  But, C++ has been around for some time now and has all the advantages of an object oriented language.  C++ also has the added advantage of already having classes written for it (if the legal databases are in fact written in C++) which can be reused in the creation of new products.
NOTES
As you can probably tell by reading this page, I am an avid believer in windows C++.  I commercially programmed in windows C++ for a year before coming to Syracuse and I still do some outside consulting work in Ithaca.  I firmly believe that C++ is still superior to Java in its capabilities and ease of use.  While that is what I believe, I cannot fail to see the movement of technology from single machines and servers, to the world wide web.  As of now, C++ does support some limited interactions with the web (through the use of winsockets and other internet connections), but C++ cannot be run directly through a browser (although Microsoft has introduced some enhancements to HTML which allow specially designed C++ classes to be called and run from a browser).  Without classes designed to connect to the web, C++ will be at a disadvantage in coming years.

For legal databases, the future is as of yet unclear.  Because Java is still in its infancy, it is hard to predict how Java will evolve in the upcoming years.  It might be true that five years from now, all legal database user-interfaces will be run as a Java applet in a desktop dominated by the world wide web.  Or perhaps, Java will become only what it is now -- a way to put fancy graphics and spinning buttons on a web page.  It is too early to predict the future of Java, but for the relatively near future, C++ will probably dominate the legal database server and client products.