>It seems to me that the motivation for using Java was 2-fold.
>(1) The programmer knows Java.
>(2) The programmer believes that user-interface tools are
>uniquely available in Java.
The reason why I use Java is my belief that Java is well-suited for
being used as a glue, which connects together several software
systems.
Given
a) the availability of many open source components
b) object-oriented design
c) platform independence
Java has few competitors (Microsoft .NET perhaps) in providing a
framework, into which other systems with special functionality can be
integrated.
Maxima is a system with special functionality. IMHO it would be
inadequate to re-code the whole system into LISP just because one
component of the system is written in LISP. It's simply inefficient
economically.
>(2) The programmer believes that user-interface tools are
>uniquely available in Java.
The question is not whether it is possible to have GUI in non-Java
apps, the question concerns the amount of effort.
1) Before I decided to use Java I looked at open-source GUI packages
for C++, like wxWindows. The effort associated with building,
configuring them and asking why dozens of problems occur is not
comparable with the effort in creating a GUI in Java.
2) There are ways to automate the generation of GUIs in Java, like
SwixML (http://www.swixml.org/). I extended SwixML by writing a couple
of wrapper classes around my data so that it is possible to
automatically create a simple GUI for any object, which complies to
certain interface (any JavaBean).
This may be possible in other programming languages as well. The
question is - were they developed for such things?
Java is a general purpose language, languages like LISP and Prolog
definitively not. They are well suited for some specific tasks, which
can't be solved efficiently by general purpose programming languages.
They are not suited for things like GUI, server, simple calculations,
advanced data I/O etc. They have their small niche and inside this
niche they can be used properly.
So, I want to use general-purpose languages where general-purpose
languages are appropriate, and specific-purpose languages where
specific-purpose languages are appropriate.
3) One never knows beforehand, what features make sense in a product.
A small application, which stores its data in a flat file may require
a database in a couple of years (a typical evolution of many corporate
information systems). What if I want to use my application with a
multiple-tier architecture?
If it's written in Java, I can use JBoss or one of the many other open
source servers. I have no idea, how much effort is associated with
converting a LISP system into a multitier app.
4) Think about it from the economist's (not the technician's) point of
view:
*) best use of available resources (knowledge + already finished code)
- learning LISP would incur additional costs, which are very high (if
one includes the opportunity costs)
*) amount of potential developers - there are certainly more Java
gurus out there than there are LISP gurus
*) larger market share due to platform independence
Regards
dap