I come from a CGI/Perl background myself, but now do most of my work in
Servlets and JSP. From my company's and our customer's standpoint, I can give you a little insight into why Java as oppposed to CGI and ASP.
1. Security. One customer I worked for has been forbidden by their security folks from using CGI. Is this valid? I never really did the research. But even if it's not a valid concern, it's a common enough perception that it affects the decisions a customer makes when choosing the language for a web app project.
2. Many people (myself included) despise IIS. Or even if they don't dislike IIS, there are many factors which may preclude the use of IIS, or maybe the customer just requires the use of a server that isn't IIS. In these cases, you are not going to be too helpful if all you know is ASP and VBScript. Often a customer prefers that he is not tied to any specific web server, and using Java is a solution.
3. Java is usually a better choice for large web applications. The web-based portion of a large application is often only a relatively small part of the overall app. There is often much more behind-the-scenes logic that Java is particularly well suited for. One project I worked required accessing data from an Oracle database and a Netscape LDAP server, processing user input and producing a pdf output. Could ASP or CGI/Perl have done this (even if we weren't required to use the IPlanet web server)? Possibly, but it was pretty easy to do in Java.
4. Programming resources. On a large project, a team of programmers is involved. A properly engineered OO project may be easily divided up amongst a team of developers, decreasing development time. I only know a little bit about ASP, but for the most part ASP and CGI/Perl are not very OO. I could go on about the benefits of OOP (Object Oriented Programming), but suffice it to say that it is a very good, very desirable thing. Further OOP is something most pros are familiar with, and their are many commonly used tools to help with OO design (UML is required by many companies). There is also code re-use to think about. Like any OO Language, Java lends itself to code re-use (the ability to re-use previously written code).
5. Prestige/Ego/Arrogance, whatever you want to call it. There is a bias against VB by many software engineer types. Why is this? By best guess, using my own academic and work experience, is that it's partially due to the fact of how languages are taught in the universites. For example, my school has a Computer Science (CS) department, and an Information Systems Management (IFSM) department. Both are taught programming to some degree. The CS department focuses heavily on theory and mathematical/scientific applications of programming. IFSM concentrates on using computers to solve business problems. There is no opportunity in the CS department to learn VB. By contrast, the IFSM department offers classes in application programming (which in IFSM speak means programming
Word, Excel, and Access using VB for apps) using VB, as well as a GUI class using VB. As a consequence of most IFSM students not having much of a grasp of theory, the CS types don't consider them "real" programmers, and to carry it a little further, therefore VB is not a "real" language. These perceptions often remain with the students once they graduate and proceed into industry. I'm not saying it's right, or that I agree with it (I'll keep my opinion to myself :P ), but it is a perception.
That was long and rambling wasn't it. Hope it answered some of your questions, or at least gave you something to think about.
Jay Menard
[This message has been edited by Jason Menard (edited January 29, 2001).]