Hans, Thank you for the long detailed response. It helped confirm my gut feeling that JSTL will make it easier both for junior and experienced web developers.
By the way, I believe I found a typo in your article about SQL at http://www.onjava.com/pub/a/onjava/2002/09/11/jstl2.html?page=3 You use Config.set(application, Config.SQL_DATASOURCE, ds); It should be Config.SQL_DATA_SOURCE Again, thank you for your thoughtful response. Regards, Dror On Thu, Oct 31, 2002 at 12:15:08PM -0800, Hans Bergsten wrote: > Dror Matalon wrote: > > Hans, > > > > I just read the article which is very interesting for people that want > > to use libraries to develop JSTL style tags. > > > > In reading the article, I realized that I had a nagging question > > about JSTL, tag libraries, etc vs JSP. > > Before I answer, let's just clarify what "JSTL vs JSP" means. JSTL is > defined as a tag library that can be implemented (by anyone, but > typically by container implementors) using the standard JSP API for > custom tag libraries. So there's really no "JSTL vs JSP"; using JSTL > _is_ using JSP, just as using the standard <jsp:useBean>, scriptlets, > etc. means using JSP. > > The only difference between JSTL and any other tag library is that JSTL > is defined by a spec, and therefore more likely to be supported by all > containers (eventually) without having to install it. This also means > that a container vendor can choice to support it by generating highly > optimized code when converting a JSP page to a servlet, e.g. generate > a regular Java if statement instead of calls to the tag handler for > <c:if>. > > With this in mind, I therefore assume that you really wonder about > "using custom tag libraries, such as JSTL, vs using Java code in > scriptlets" based on your comments below. That's a fair question (even > though it's been asked and answered many times on this list and > elsewhere ;-) > > > To quote from your article some code: > > > > ---------------------------------------- > > <table> > > <xmp:forEachDay var="curr"> > > <c:set var="bg" value="white" /> > > <xmp:ifSunday> > > <c:set var="bg" value="red" /> > > </xmp:ifSunday> > > <tr bgcolor="<c:out value="${bg}" />"> > > <td> > > <fmt:formatDate value="${curr.time}" > > pattern="EE dd, MMM yyyy" /> > > </td> > > </tr> > > </xmp:forEachDay> > > </table> > > ---------------------------------------- > > > > > > Is JSTL clearly easier than JSP? I'll admit that I'm biased. As > > someone who know Java this looks more complicated than doing the > > same or similar things with JSP. But rather than use anecdotal > > evidence one way or another I'd be intrested in more systematic > > research on this. > > The best way I can answer this question is to show how this > example can be written with Java code in scriptlets instead: > > <% > Calendar calendar = new GregorianCalendar(); > calendar.set(Calendar.DAY_OF_MONTH, 1); > int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); > int thisMonth = calendar.get(Calendar.MONTH); > int currMonth = thisMonth; > int currDay = calendar.get(Calendar.DAY_OF_MONTH); > SimpleDateFormat dateFormat = new SimpleDateFormat("EE dd, MM yyy"); > %> > <table> > <% > while (currMonth == thisMonth && currDay <= lastDay) { > String bg = "white"; > if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { > bg = "red"; > } > %> > <tr bgcolor="<%= bg %>"> > <td> > <%= dateFormat.format(calendar.getTime()) %> > </td> > </tr> > <% > calendar.set(Calendar.DAY_OF_MONTH, > calendar.get(Calendar.DAY_OF_MONTH) + 1); > currMonth = calendar.get(Calendar.MONTH); > currDay = calendar.get(Calendar.DAY_OF_MONTH); > } > %> > </table> > > Which version looks looks easier to you? The, of course, answer > depends on your background. In both versions, it's clearly > "programming"; the primary difference is syntax, but there are also > a few other important differences: > 1) Code size > The scripting version is double the size of the JSTL version > (30 lines vs 14 lines) > 2) Knowledge requirements > For the scripting version I need to know about the Calendar and > how to set and get its values, and the SimpleDateFormat class. > For the JSTL version, I need to know about the custom tags, > their attributes, and the properties of the exposed data I can > access using the EL. > 3) Syntax error handling > With the scripting version, if I make a syntax error, I get cryptic > javac error messages (e.g. "'catch' without 'try'") with line > numbers that refer to the generated servlet source code. > With the JSTL version, I (mostly) get error messages that identify > the custom action and attribute names with line numbers that refer > to the JSP page source. > 4) Development tools > If I put the Java code (custom actions, beans) in standard class > files, I can develop the code with a regular Java IDE or syntax > aware text editor (e.g. emacs), and debug it using standard Java > debuggers. > If I put the Java code in the JSP pages, I need special tools that > understands both Java and JSP syntax. > > So, even if you really know Java, I think the above shows that using > JSTL and other custom actions still have advantages. And if you're > new to Java and primarily want to get some dynamic web pages working, > there's no doubt that using custom actions and JSTL saves you from a > lot of headaches ;-) > > As a side note I can say that, even though I've been a programmer for > more than 20 years, the last 5 or so in Java, it took me a lot longer > to write the Java scriptlet version than the JSTL version, and I made a > number of silly mistakes along the way (resulting in syntax errors and > even infinite loops). > > > Do you know of any focus groups or other research to compare how > > long/hard it is to get people up to speed with JSTL/Tags vs standard > > JSP. How about vs ASP, PHP and other competing technologies? > > It's not exactly what you ask about, but there's a project starting > up at the URL below to compare different web application development > frameworks: > > <http://www.waferproject.org/index.html> > > The last time I looked, they hadn't got very far, but you may want to > join them and help out. > > > On a similar note, there's been a recent presentation made comparing > > these different technologies by a yahoo engineer explaining why, at > > least for some projects, they're migrating to PHP. > > http://public.yahoo.com/~radwin/talks/yahoo-phpcon2002.htm > > > > The only reasons they mention against Java/JSP is that native thread > > support on FreeBSD is not available yet. > > Right, I saw that. It's not really related to this issue, though. > > > Thanks for the article and any responses, > > You're welcome. > > Hans > -- > Hans Bergsten [EMAIL PROTECTED] > Gefion Software http://www.gefionsoftware.com > JavaServer Pages http://TheJSPBook.com > > =========================================================================== > To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff > JSP-INTEREST". > For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST > DIGEST". > Some relevant FAQs on JSP/Servlets can be found at: > > http://archives.java.sun.com/jsp-interest.html > http://java.sun.com/products/jsp/faq.html > http://www.esperanto.org.nz/jsp/jspfaq.jsp > http://www.jguru.com/faq/index.jsp > http://www.jspinsider.com -- Dror Matalon Zapatec Inc 1700 MLK Way Berkeley, CA 94709 http://www.zapatec.com =========================================================================== To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST". For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST". Some relevant FAQs on JSP/Servlets can be found at: http://archives.java.sun.com/jsp-interest.html http://java.sun.com/products/jsp/faq.html http://www.esperanto.org.nz/jsp/jspfaq.jsp http://www.jguru.com/faq/index.jsp http://www.jspinsider.com