Related link: http://java.sun.com/products/jsp/
I’ve been working (again) on taking a project from HTML to JSP, and doing so reminds me (once again) how completely horrible JSP is.
JSP has this nice impulse to take Java code out of HTML pages and put it into JavaBeans or other Java classes, where it belongs, so the HTML author doesn’t need to know Java. Great, that’s great. Unfortunately, the “not Java” that is included in the HTML page is completely alien to (most) HTML authors, that it might as well just be Java for all they know or care. So I have to put <exec:iterator condition=”<%= shopBean.validate() %>”> right here, or nothing on the page will work? Yeah, okay. How do I test that again?
The result of this is simple and stupid: once again my UI engineers will be taking perfectly good HTML written in Dreamweaver and tearing it apart, throwing out some of it and rewriting other parts of it, just to make it work with the JSP they’re writing. Once they’re done, the HTML author will have absolutely no clue what the page does any more, and will have no desire or ability to edit it. When we insist that no really we need this redesigned, we’ll spend twice as long doing it (doubling our costs, negative ROI, bad technology choice, yadda yadda yadda) since the HTML author will need that long to write in sample data and then have the JSP author tear it out again.
This is completely stupid. It’s as if your compiler tore up your source code every time you compiled, and you had to go back and reverse engineer your source again in order to change the binary. Stupid! JSP is only an effective solution when the JSP author is also the HTML author.
I want something different. (Yeah, yeah, I know. HTML templating languages are one of the most over-implemented pieces of code ever. Every single Web design shop, tools vendor, large Web site operator, and two-bit commentator like me has their own stupid solution to the problem. I’m tilting at windmills. I’m wasting my breath. Whatever. The reason there have been so many solutions, and there continue to be so many solutions, is because the problem is still completely broken. It wastes my time and the time of the people I work with and I still want it to be better.) I want something that lets HTML people write and keep their source code in their favorite tools, adding dummy data and seeing how it looks, and lets them add hooks for the Java coders in a way they’ll easily understand.
This general problem — separating markup from other kinds of document information — was handled very well by Cascading Style Sheets (CSS), which separate document markup from stylistic presentation information by linking the HTML document to an external style document. CSS did this by adding very minimal changes to HTML itself — namely the “class” and “id” tag attributes — and putting almost everything in the stylesheet.
I think what’s needed instead of stupid JSP is exactly the same type of solution for separating code and HTML. Give me a “code” attribute that I can add to any HTML tag, and overload the “id” attribute. Have the value of the code attribute be an opaque string referring to a codesheet, linked to the HTML document by a a ‘<link type=”text/ccs” rel=”codesheet” href=”code.ccs”>’ tag. Have the codesheet use a CSS-style rules specification for indicating which Java (or whatever) class should consume tags with that code or id attribute. Then tell the HTMLer to add the “code” and “id” attributes to the right place in their existing documents, and they’re done.
What’s important about this is everything it doesn’t try to do:
- It doesn’t try to handle class or method namespace collisions in the HTML document — no need for clumsy and confusing XML prefixes. (Instead, namespaces are managed in the codesheet, centrally named for the whole site.)
- It doesn’t try to let the JSP taglib author create whatever kind of tag they want, confusing the hell out of the HTML author and the HTML author’s tools. (Instead, the tagset is defined by the HTML standard the HTMLer already knows.)
- It doesn’t require the HTML author to have a JSP environment in order to author their pages. (Instead, they can put in sample, dummy data to see how the page will look when the code is running, and the Java coder can discard that data on the code side.)
- It doesn’t bind the HTML document to any programming language or paradigm. (Instead, it keeps the author to HTML, and lets the codesheet swap out implementations without changing the HTML.)
- It doesn’t require the HTML author to learn anything new in order to move from a static site to a dynamic site. (Instead, they can use their familiarity with CSS to understand the transition.)
I know I’m glossing over a lot, but I think this is the right model. Has someone already done this? I’d love to see it, if so, that I might boot JSP out the window as it so richly deserves.



Tapestry Does this
That's how tapestry does things.
Tapestry Does this
Tapestry gets close, and I certainly like it better than JSP, but it's not the same as what I want. Thanks for the reference, though. -Marc
Junky article
I really do not understand why you publish this
kind of junky article. He should learn how to use JSP properly first
Junky article
Junky, why? I am a JSP (Struts/JSTL/Taglibs) developer and have been for quite a few years now. In working as a consultant and within a couple different corporations I have come across various (and sometimes over engineered) frameworks that aren't easily understood or manageable when coordinating between HTML developers and the framework developers.
He has a point in the relationship and working model between the two. Scriplets, home-grown taglibs and XSL/XML may seem convenient, easily understandable and employable to a programmer (software engineer), but it sure does bewilder and hinder production amongst the HTML developers and designers who sometimes have a heavy hand in the day-to-day building of web-based UI applications.
ASP.NET?
ASP.NET comes close with their "code-behind" approach. Each ASPX (an ASP.NET page) can inherit from a code-behind page, and the code has access to any DOM element in the XHTML document in the ASPX file. It uses a very tag-lib-like approach by allowing the user to create custom "server controls" for embedding complex display logic into your own XML namespaces.
Zope TAL?
Zope's Template Attribute Language (http://www.zope.org/Wikis/DevSite/Projects/ZPT/TAL) may come close.
Zope TAL?
That is close! It's still language/toolkit dependent, which is too bad, but there are some good ideas in there. Thanks for the pointer, I didn't know anything about this. -Marc
XMLC
What about Enhydra's XMLC (http://xmlc.enhydra.org)? By adding ID attribute in HTML, every element can be converted to Java classes.
XMLC
What about Enhydra's XMLC (http://xmlc.enhydra.org)? By adding ID attribute in HTML, every element can be converted to Java classes.
XMLC
Excellent! That's really close. Thanks very much for the link. It wold probably be pretty easy to graft a codesheet-like document into the backend that would be exactly or almost exactly what I want.
My only complaint on first glance is that XMLC seems to overload the "class" attribute, which might cause a conflict between a style and a code backend. I haven't thought this through yet -- maybe that works perfectly well.
Thanks again for the reference.
Zope TAL?
TAL is open source, and not integrated too deeply into Zope (as far as I know the TAL code is well seperated into it's own product) -- so it would be tricky but not too hard to port it to other languages such as Java. Of course, you could not support the 'python:' syntax, but then if you want proper seperation of logic from interface you don't want to support that feature anyways.
It would be kind of nifty if several different web application frameworks all supported the same template language. Then if you need to port a portion of an application from one framework to the other you could just copy the template portion straight across without any modification.
As a Zope user who writes HTML by hand, and who used to write a lot of DTML (Zope's older templating language which is quite similar to JSP), it's a lot nicer writting TAL. When you are just viewing straight HTML text and trying to imagine how it will look in a browser, it's a lot easier to visualize the TAL code than it is the DTML code.
use simple HTML conventions
I like postprocess the web page with a stylesheet that recognises the parts which should be dynamic and inserts whatever the app server needs to liven it up.
The stysheet matches on certain ordinary HTML items that are convenient to create in dreamweaver or whatever. For example, any named table is replaced with a dynamic table and its rows become templates for the generated rows.
Admittedly, its sometimes difficult to pick up enough information in the static page to liven it up. And its difficult to make this approach completely general. Buts it can be pleasant to use.
The key is to use HTML names/ids just as a convention between the page author and the logic author and not be tempted to provide more general data navigation/selection within the page (as you say).
- Arnold
Its not a completely general approach perhaps,
Quixote
Your comment about "tilting at windmills" reminded me of Quixote (http://www.mems-exchange.org/software/quixote/ ) . I have been a Zope user for a while, but Quixote does have its points after you've been struggling with DTML for a while. TAL/ZPT is supposed to make that pain a lot less, but I haven't had a chance to get into it so far.
What I would like the Quixote team to do is to sort of implement what you have talked about in your article. I would like to see a way of embedding PTL into regular HTML.
Please do give it a look.
-LninYo
Many choices to make.
OK first, I have my doubts about you when you say you get "perfectly good HTML written in Dreamweaver", but that's not really the point here. Your answer is simple, its XSL. Now that is only half the answer, you will have to pick some product that will translate your XSL into final page, and I would recommend starting by checking out Caucho's XTP Pages on its Resin servlet container. If anything XTP stands out because the pages don't have to be well-formed XML/XHTML to use the benefits of XSL.
Another option would be JSTL. I've been using it recently and find it removes 95% or more of java code from JSP. However, its syntax is still not quite down to the HTML level. What was this:
Hello
is now:
Better? yes. Perfect? no. Usable? If your HTML designers have half a clue, yes.
glad you spoke up
sorry, accidental submit
While I don't believe JSP is all bad and plan to integrate it into my own products soon, I believe it opens the door for problems, and should be used with care.
I'm very glad Sun delivered Java back-end first, with mature specs for servlets and beans preceding something more cosmetic like JSP. Look at what happened simultaneously with ASP: bad design, massive inefficiencies, poor security, and program logic spread all over a website. By catering to the quick and dirty crowd, Microsoft created what might have been the ultimate software maintenance nightmare. They are busy rectifying the mess with their own component architecture, but the Java crowd should learn something from those early mistakes. I don't know what Sun was smoking when they suggested servlet functionality would be replaced with JSP, but long live servlets.
Do yourself a favor and design your application first, code JSP last.
Zope TAL?
You write:
---begin---
It would be kind of nifty if several different web application frameworks all supported the same template language. Then if you need to port a portion of an application from one framework to the other you could just copy the template portion straight across without any modification.
---end---
Yes, this is part of what I was looking for -- this is a benefit of decoupling the HTML document from the templating language. Unfortunately, this would make codesheets hostile to the economic interests of commercial systems (since it reduces switching costs). It seems like it would benefit, though, tools like Zope -- the Zope authors could argue that their system is the easiest to use in starting a project; and if for some reason you outgrow Zope, you have a transition path to a larger system (as long as it also supports codesheets).
Tapestry Does this
You'd better use it for your next project, and implement or suggest some enhancements then ;-)
Your description of what you wanted was quite 'broad brush', but Tapestry does sound quite close.
Tom
Many choices to make.
In Tapestry (sf.net/projects/tapestry) the HTML designer sees:
Sample J. User
Which will show up in their WSIWYG tools just fine...
Tom
jsp
I wonder what the author thinks of XSLT ? :-)
IMHO, when the suggestion is made to migrate HTML to an XML->XSLT combination, the same arguments apply, multiplied by a factor of 10.
agree!!!
thank you for your spoken
Something similar to what you are asking for exists
To begin with, I have mixed emotions about what you are describing. As the author of a book on Struts, I have a lot of experience using JSP and various tag libraries. I like its power and flexibility and the way I can integrate everything with my back-end Java code.
That being said, I've worked on projects with beginning JSP/Java developers that came from an html/scripting background. Many times JSP is very frustrating for them to learn. Just understanding error messages is really hard if you can't read a stack trace or understand the calling sequences.
I believe a version of what you are asking for exists in the latest version of Cold Fusion MX. It comes with its integration with Apache Axis.
Here's how it works:
The Developer builds web services and exposes methods as web service end-points using Axis. Web services replace beans.
The front-end developer then creates scripting variables and "maps" them to web service parameters similar to the way you are describing mapping variables to bean parameters.
When the front end developer invokes the web service calls, the variables are populated with the results of the web service call.
This works pretty well and really simplifies things. The front-end developers use Cold Fusion MX - which is a GREAT tool for them - and the back end developers use Java and expose methods as web service calls using Axis.
A similar proposal, related to TAL
See http://lists.zope.org/pipermail/zpt/2002-May/003303.html
for a thread about a proposed CSS-like extension to Zope Page Templates. There hasn't been much action since then, but I still plan to build it when I have time.
Most Over Implemented
Actually, frameworks that convert Java objects to database tables and back again are the most over implemented.
HTML authors?????
Gee, maybe you guys in the state have money to burn, but up here in Canada, the person who writes the JSP/HTML/Struts or what have UI code is also able to write EJB's, Java Beans, business delegates, LDAP clients and SQL queries.
You'd never get a job up here if all you knew was HTML (nor should you!!).
What I'm trying to say is that instead of whining because using JSP makes HTML unreadable to your "HTML" authors, hire real programers who know what their doing.
We love JSP up here, especially when used with Struts, and we've never run across your problems...
Dynamator does this
Take a look at Dynamator (http://dynamator.sourceforge.net). HTML stays completely pure. Programmers create a file that specifies how to transform HTML into a server page or program. This is simpler than it sounds, and lets programmers use the language of their choice (JSP or Java or XSL or PHP or whatever).
canada must be a little behind
The one-man-band was the way things were done stateside about 6 years ago, but the distribution of labor is intelligent and inevitable. There are plenty of people working today with a knowledge limited to HTML. Many are called graphic designers or editors, and they serve an invaluable function: putting a human face on the products of tech-weens. Somebody like that might've even helped to catch the misspelling in your post.
Not just JSP
Every web scripting language has this problem. JSP, ASP, ColdFusion, PHP, etc. They all suffer from this. Ranting about JSP doesn't make it a bad technology any more than ColdFusion is or ASP is. It is a cost of integrating dynamic content with a more rapid development cycle than a pure code solution.
Impossible division of labour
I must agree with the poster from Canada. Web technologies are such that it is almost impossible to get people designing web pages who only know html. They will at least need to know a scripitng language especially javascript. It they have to know that then its not so hard to learn the jsp tags. If its pure html then it can't be much more of a brochure site for which one doesn't need the power of jsp.
The point on testing the look and feel is valid though. JSP is streak ahead of any other technology out there for seperating the presentation from the code. ASP sucks badly and my brief experience with .net indicates that it is impossible to use ASP.net without being a programmer.
Zope TAL?
You write:
---begin---
Yes, this is part of what I was looking for -- this is a benefit of decoupling the HTML document from the templating language.
---end---
This is how WebObjects does templating/components (and Tapestry, since it's based on WebObjects concepts).
Suppose you have a WebObjects component (WOComponent) called Example. You'll have an Example.java file for the Example class, and an Example.wo directory containing two files: Example.html and Example.wod.
The .html file defines the presentation of the component, and can contain WEBOBJECT tags for including other dynamic elements or subcomponents. The WEBOBJECT tags will have a name="..." attribute whose value will match a block in the .wod file.
The .wod file contains the bindings between the LoginForm.html file and the LoginForm.java class. (The .java file isn't kept in the .wo folder, typically in the same folder as the .wo is in)
Example.html file:
This is a string.
Example.wod file:
foo: WOString {
value = myString;
}
Example.java file:
public class Example extends WOComponent {
public Example(WOContext c) { super(c); }
public String myString() { return "thing"; }
}
The result of rendering that component is:
"This thing is a string."
This is obviously a simple example that hardly shows the power of what WOComponents can do, but shows you how the "code" is out of the HTML, so to speak.
What is interesting about ZPT/TAL (I have been learning Zope recently so I'm getting familiar with it) is it doesn't use is own tag names but instead these attributes on common HTML tags...
like:
This dummy text is a string.
I like that because it can be loaded into Dreamweaver and will show something representative of what the end result will be, unlike loading the .html file of a .wo component. Dreamweaver doesn't know about WEBOBJECT tags.
However, your idea (and Evan Simpson's on the ZPT list pointed to earlier) about using CSS files is truly excellent. It gives the best of the WO and ZPT worlds: It can use standard HTML tags instead of domain-specific tags (ie: WEBOBJECT), and puts the code in a different file than the HTML, the weakness of ZPT/TAL.
I think WO and Zope would benefit from this addition to their respective templating systems.
And JSP... throw it out the door already! The concept sucked when it was called ASP, and using Java instead of VBScript was never going to make it any better. :(
Jim Roepcke
Why not XML/XSLT?
Why not just give the designers an XML doc and tell them to transform it to HTML? They can easily test the transformations with the tool of their choice.
Apache::HTML::ClassParser
paul lucas's Apache::HTML::ClassParser (perl) does something along these lines: http://homepage.mac.com/pauljlucas/software/html_tree/man/Apache_HTML_ClassParser.txt
he credits erik ostrom for the idea.
Re: Why not XML/XSLT?
XSLT is even harder than JSP for page designer. There's not tool like dreamweaver that will allow you to visually design an html page by using xml and xslt.
Still looking for a perfect solution...
I have used both JSP and XSLT to create web applications. Neither approach allows me to completely separate the business logic from the presentation layer.
JSP can easily be abused because it is too easy to embed Java code directly in the Java page. One has to design the app very carefully and make sure the developers are very discipline to avoid the problem. Even if we manage to avoid littering the JSP with Java code, I found it hard to properly troubleshoot JSP. Also, the tags mixed in HTML are hard to read.
Using XSLT to generate HTML makes it mandatory to have programmers to write and maintain the presentation layer. The problem is - most developers either do not care to, or are not capable of making the web app look pretty, which in these days is very important. XSLT is best used for automating business processes - to transform business documents from one form to another to integrate diverse systems.
In an ideal world, presentation layer should be done by graphic/web designers. However, I still haven't find a good framework / technology that will allow web designers to use their favorite tool to create AND maintain dynamic websites. Can someone who has used Tea or JApple in a real world share their experience?
p.s. Don't know if it's a Canada thing - the web projects that I have done or seen, none of them have web designers doing the front end. The developers generally create everything - HTML, Javascript, Java, and SQL.
Re: Why not XML/XSLT?
Actually there are plenty of tools like that. eg.
http://www.exln.com/products/stylusstudio/whatsnew.shtml
http://www.geocities.com/zmin_1998/features.htm
http://www.trl.ibm.com/projects/freedom/xslbydemo_e.htm
It is also possible to create XSLT from HTML (in much the same was as XMLC works). The problem is getting page designers to mark up the semantically significant parts of the page. An example of this approach is wh2fo ( http://wh2fo.sourceforge.net/ ) which creates xsl-t stylesheets to generate xsl-fo from the html you can save from word2k, and a separate xml 'data' document. Obviously you can switch the data document and generate different documents with the same style.
I know there are issues with XSLT (I wrote the code for a large commercial site which used it to present the same content on the web, wap, digital tv; perfomance at the time sucked bad in comparison to JSP) but it makes you think about what the /content/ is you're /styling/. I'll admit its not as easy as JSP, but as Dave Pawson said in his XSL-FO book, research has shown that there are cost benefits as soon as you move beyond serving your content on more than one medium.
What's Missing?
I'd be interested to know what you find missing from Tapestry; not much from reading your blog.
What you are calling a "code", Tapestry accomplishes with the jwcid attribute (Java Web Component Id).
Instead of a "codesheet", Tapestry has a page specification (or, in the upcoming 2.4 release, implicit components and bindings).
In terms of your last two bulletpoints ... I don't think the HTML guys can ever work in a total vacuum. Surely, just the process of marking some tags with a code (or jwcid) attribute already binds them to a particular paradigm. What's important is that the two sides (HTML and Java) can work effectively without interfering with each other, even if they are physically separted (it's often the case that HTML comes from one set of contractors and Java from another, in large scale projects).
Last bullet point overlaps the previous; just to know what to mark is going to require an understanding of some paradigm. And, again, what's important is working without interference, rather than working in a vacuum.
Tapestry templates looks like HTML and, in fact, are standard (X)HTML ... with additional attributes on some tags (the jwcid attribute that identifies a tag as a placeholder for a component).
Tapestry templates are designed to preview properly in WYSIWYG editor, for example:
User Name
... is a Tapestry component (using the new 2.4 syntax). When previewing, you see the sample text "User Name" ... in production, you see a dynamically generated value (typically taken from a business object).
These changes to the HTML are not so onerous for the HTML guys; they can see something is special with this tag (the jwcid, the [[ ... ]] syntax in the tag) and know not to mess with it, or to grab a Java developer to work with it. You can intuit a lot just from what's there, even without a Java guy looking over your shoulder.
In fact, I've been pleasantly surprised to find that the HTML developers take to Tapestry style development faster than the Java developers, perhaps because they have so much less to unlearn.
I know of several groups and consulting organizations that work exclusively in Tapestry, just because it supports the HTML/Java split so well.
please....
shouldn't htmlers learn a little more anyway?? i did, i'm better for it!
RE: canada must be a little behind
The only Companies I've encountered Stateside that do it the way you just mentioned are either huge (having an IT staff well over 10 :) ) or are Consultancies. Visit any small/medium business and you will still find that those who develop the Intra/Internet sites are 'one-man'bands'.
What about XForms
If you want separation between data and presentation markup, you should look at XForms. While not really supported on today's clients, there are Java and Javascript implementations as well as server side implementations available. It may not be exactly what you want, but it does provide the separation you're looking for.
This is what I love about PHP
This is why I don't recommend Java for web development, and just use PHP. With many template implementations out there for PHP, it's simple to have someone use dreamweaver and just put little {MY_VAR} where the data goes!
~ Busting up Gorts since 2002 - gortbusters.org ~
Much Ado About Nothing
This debate about JSP and other templating technologies seems to be getting out of hand. What is the percentage of template code versus static HTML in any template for a visually complex page? 5 percent? 3 percent? Let graphic artists draw their pages with tools that generate HTML. Let programmers insert templating code in the generated HTML. Programmers can hack that, can't they? Artists need not see not only JSP tags but even HTML tags. Programmers, on the other hand, should be able to read HTML.
Following this practice in my own work hasn't let me down yet. An artist sends me HTML files and I go over them and insert templating code turning pages into templates. I am not even going to mention what teplating technology I use because it is entirely irrelevant. My artist sure couldn't care less.
To make this process work, avoid any logic more complex than iteration in your templates, or you will have too much work to do adding template code to an artist's HTML. But that's kind of common knowledge now, isn't it?
Happy programming, fellows!
Paul Yunusov
even for small guys
I agree that very small IT departments can't always split these functions and I'll admit my view may be somewhat skewed because I've worked for larger enterprises. However, a business with more than 10 computer people isn't necesarily "huge", and it often isn't the computer people who determine the view layer in the first place. Higher level stakeholders are starting to view their web presence as a strategic asset, and people in marketing or public relations roles are contributing an increasing amount of content, particularly the overall look and feel of a site. More graphic design work is being outsourced, too. The trend is going undeniably in these directions, even for small businesses. In short, there is a healthy demand for separation of the view layer from the underlying logic, evidenced by the many posts to this article, the many alternatives suggested, and the question of JSP itself.
Sorry for the poke at Canada; I wasn't being serious. You should see how far behind people are where I live (the *deep* south).
Your weblogs suck big time
Hey, who said the HTMLs generated by Dreamweaver is perfect. If you say so, you are the ultimate idiot and ultimate sucker in this Universe.
Ever heard of XSLT translations dumbass?
Your Java developers have their code expose an XML result, and your design people write an XSLT translation that operates on the XML. No need for the Java people to tear apart HTML, the design people have dummy data to test with, voila. Just means that your design people need to learn how to do XSLT, but I'm sure their feeble little minds will cope with that much easier than learning Java. Perhaps even your pathetic intelligence will be able to grasp it with a few years' worth of coaching
Ever heard of XSLT translations dumbass?
The idea here is to make less work for people, not more work. The proposal I suggested, I think, reduces the amount of work for both the developers and the designers, whereas your proposal increases work for both of them.
And by the way, I'm willing to say that a technology or a group is stupid in my weblogs if that's what I think, but at least I sign my name to my opinions. Are you so unsure of your opinions and thoughts that you can't even bear to sign your name to them?
-Marc Hedlund
I agree.
I totally agree. I'm using JSP on my current project and I can't wait until I'm finished so that I can write my own templating engine.
I don't get why everybody is so set on using either EJB or JSP & Struts.
Just look at JSP. For an example let's say you have a UserBean that represents a User in your database. Say the UserBean has three properties...
id
name
organization
Well, if the programmer decides that he wants to rename 'organization' to 'company' you'd better get out the JSP and start editing. Way to go guys! Great division of M, V, and C.
Struts isn't exactly a killer app either. Oh, but it's soooo user extensible. Yeah, great. If I want to write all of the functionality I need I'll start from scratch.
Ryan
XMLC rules
I used XMLC on two projects. Since then, I used JSP + Struts. There is no comparison.
XMLC could use some helper methods. So, I created a simple library of static methods to further simplify development. Binding HTML pages to the middle-tier is "a joke" -- it's trivial.
JSP/Struts advocates are dolts who don't understand that what you choose NOT to model is every bit as important as what you choose to model. Ever hear of Occam's Razor? The Gordian Knot? The KISS Principle? "MVC" and "OO" are not Holy Grails, you goddamn losers. TCO is the goal. Maintainability is the path. Lost sight of that? No wonder your startup can't turn a profit.
What's worse than working on a JSP-based project is interviewing for projects at money-hemorraghing startups bent on using these pathetic technologies. Out of the few jobs out there, most involve JSP/Struts. So, I have to suffer interminably through questions from "knowledgeable idiots" about "why is MVC/Struts so good?"
You've probably noticed I'm getting sick of this industry. We're a bunch of hamsters running on a Habittrail (tm). The only company with good design sense is Oracle (declare-->generate). Everyone else deserves to go bankrupt.
Ever heard of XSLT translations dumbass?
Yeah, I heard of them. But, with XMLC, HTML/graphic artists need not learn XSLT.
Why should they learn something they don't have to? Stick that in your feeble mind.
Loser.
Ever heard of XSLT translations dumbass?
They should learn it because it's going to be increasingly harder to find a job without knowing it.
If they are designing newspapers or brochures, tehy don't necessarily need to know data transformations, but guess what? They are writing web pages that access and display data.
If someone can make a pretty webpage but cannot handle XML, s/he should go back to doing nice static graphic design, and leave web design to people who can think with both sides of their brain.
use simple HTML conventions
Try Cold Fusion much simpler and more powerful than most app servers to write web apps.
Much Ado About Nothing
I agree, use something like coldfusion or php jsp sucks big time
JSP
I have created several web applications using MX and ASP. Then my company decided to go to JSP. I can honestly say that it is 10 times more difficult to develop in JSP and Java. Worse than that, every time I finish a project the local Java expert tells me the code generated by MX is terrible. It works but mixes Java in with the HTML so is not acceptable. So now I get to learn how to create Java beans and separate the html from the code, however looking at the comments here I am in for another disappointment. This also means my favorite tool, MX, is about useless for helping me generate code.
The one thing I notice is that there are too many different "solutions" being bantered about. It is clear that the industry is experiencing growing pains and is currently very fragmented. It will take some time for the winning technologies to finally emerge and in the mean time we all just do the best we can.
The original post is correct, there is no solution. There is none in sight. Oracle and the open systems people will continue to fight it out with MS. Some smaller companies will come up with solutions to niche problems and then be bought out by these guys. A kind of standard will evolve. However, my guess is that these two camps are going to be with us for a long time and developers are stuck with lots of pain for the foreseeable future.
JSP
You're a bunch of mindless idiots for talking this absolute nonesense.. You need to spend more time learning rather than talkin'!!!
ever tried UIX?
Hey!
Take a look at Oracle's UIX.
Makes is quite easy to write test date and exchange it with a production data provider later.
Rocko
Dreamweaver/Struts
I understand this situation well. Being a developer (and a former designer), I want our designer to be able to maintain all content, meta tags, layouts, etc without my input. I resolved most of this issue by extending Dreamweaver itself. I created some images that look like text boxes, radio buttons, list menus, etc. I made some custom images that represent various struts tags. I then added these to the Dreamweaver MX 3rd party xml tags, along with the images, and passed the bundle on to our designer and anyone else who needs it.
Its working out great! It looks just like standard html and our designer has no trouble maintaining it in Dreamweaver.
JSP - Try PERL and html!!!
I tried dreamweaver, FrontPage, Java (takes 10 times longer do do anything - and heaven forbid you should rename a directory - all the objects get lost!). Now, I just layout the page in FrontPage (yes, that's right - because it's easier to use than Dreamweaver for quick layout - not publishing, just layout), and I use PhotoShop for great text and graphics. Then, whereever there's data needed, I just use variable names like $Name, $Address, etc. to display database fields. You can then copy the HTML code directly into a perl function like ShowAddrList, put 1 line of perl code in front of it( print "Content-type:text/html\n\n";), and it displays the page (as layed out in frontpage, along with all the data from the database!).
I can slap together an html/perl database screen in 10 minutes with perl/html and MySQL, and it works 100% of the time, AND I have the full power of the perl language to use right along with my HTML. Also, there's no overhead (waiting for Dreamweaver to calculate things and "edit" your SQL and screw it up). Also, I don't have to worry about the "next greatest thing", since they're usually over complicated (java), bloated and unreliable (Dreamweaver), and FTP moved my tiny coded files in seconds to the server (no "Publishing" required).
Get back to basics. Use one tool for HTML layout, and then use a programming language to crank out the functionality.
Signed,
Happy, successful consultant with several dynamic, database driven web sites currently in use by businesses making money with them.
You guys obviously don't really know how to develop with JSP and Struts!
I have been developing with Struts based JSPs for nearly three years and I love it! Struts puts an extensible framework around JSPs that .Net is only trying to provide. At my consulting/contracting company we have developed several custom tags for controlling security at the presentation layer as well as class structures for handling security on the data layer.
Talk about a heavy learning curve, please point me towards any web tool set or framework that doesn't have a steep learning curve and I will show you something that is so simple it can not handle the needs of a large enterprise or large application, is not scalable and the developed components are largely not reusable.
JSPs are scalable and if you work it right very reusable and performance is great.
I am all for the authors suggestion to extend the HTML standards and HTML tools to handle code and action hooks, but until that happens I will stick with Struts and JSPs.
What's Missing?
For appeasing yet another bullet point, Tapestry lets you put in dummy nested HTML tags and dummy values so one can see good previews in their editor or browser, without invoking any actual code. Any editor's color syntax support will not be broken either.
Imagine:
Jane
Doe
Bubba
Williams
... where FetchAndIteratateOverARecordset is replaced with Tapestry syntax that references off-page code that retrieves a Recordset and iterates over it. When processed, all of the content under the table tag will BE REPLACED by rows containing actual database values. Beforehand, the dummy rows allow cross-product previewing, so the HTML author can tweak the visuals.
Dreamweaver/Struts
If you have dreamweaver you should try coldfusion and make a fair compairision. Once you do you will never go back
JSP - Try PERL and html!!!
I agree, get back to basics, my tool of choice would be CFMX instead of perl, which is also a fine language, The goal is to get the job done, not code forever
You guys obviously don't really know how to develop with JSP and Struts!
It not that we don't know how to do it, it just so time consuming, when you compare it to scripting languages, My best of both words would be CFMX front end and JAVA back end, as CFMX is written in JAVA.
Why do you make it harder than it has to be
JSP
You make our point for us, You are right, we need to learn more, but my company wants a product, so I guess I'll spend 6 months learning about some new thing or just write the product in the language I already know, If company is happy and customers are happy and I'm happy then what is the problem. Keep it simple Stupid.
JSP
You make our point for us, You are right, we need to learn more, but my company wants a product, so I guess I'll spend 6 months learning about some new thing or just write the product in the language I already know, If company is happy and customers are happy and I'm happy then what is the problem. Keep it simple Stupid.
Dreamweaver/Struts
How about making your dreamweaver extension available under a GNU Public License. Would love to have access to it, rather than recreating the wheel. Thanks!
JSPs blows large chunks
A very succinct and accurate summation of why JSPs suck. JSPs are a horrible technology for HTML content developers for all of the reasons stated. Worse still is that JSP can blow chunks in the hands of a skilled programmer who is not web-application savvy. JSP does NOT lead you in the right direction but rather begs for abuse.
Now having said all that JSP is an excellent technology in the hands of a developer skilled in web application development. A proper set of tags (Struts or JSTL) increases the efficacy of JSPs by an order of magnitude.
Truly excellent applications can be developed using JSP technology. So how to we fix this impedence match between content developers and programmers?
The answer is to provide a standard IDE based technology that blends JSP tags with HTML in a GUI design tool. A purely visual tool for content developers with an interface for plug-in components that software developers can easily write. A tool that has an integrated validation and navigation model and something resembling an event model.
Such a tool would take Java web development to another level and produce a standard technology for web development versus what we have new: a combination zoo, garbage dump and three-ring circus.
You guys obviously don't really know how to develop with JSP and Struts!
You are missing the point. It's not that Struts and JSPs are not great technology for those who know how to use them; it's that content developers are left out of the equation.
BTW, Java Server Faces promises to deliver on the requirements of the fantasy tool described in my previous post. If Eclipse and Oracle and even the interminably slow to react and wholly sloppy product developers at Borland can get in the act, JSF will rock the web development world.
JSP - Try PERL and html!!!
Yes! Try it! It will make you appreciate JSP!
PERL must die. It is the most horrible language ever. You know how painful regular expressions are? Well, in PERL, the whole stinkin' language is like that! It's utter garbage. I'd rather try to read Java bytecode than PERL any day.
Tool-arond, learn-around, or change the process?
Why is a slightly steeper learning curve (a few more weeks, or a couple of more classes) not acceptable?
Concepts of iteration and variables should be easy to pickup. Granted, they're not exactly fundamental to layout and design, however "walking" over a dataset should be intuitive enough to one who is determining how this dataset is going to be rendered. Especially for those who know JavaScript.
We want to do so much more than what HTML alone would allow, yet we only ever want to stick with HTML syntax. Is that fair?
XMLC has a nice way of resolving this issue. But I get the impression that people here think graphic designers are too "dumb" to understand (a view I don't share) any programming language, so even JavaScript (which can get quite complex is non-trivial web apps) is a no go.
Then the only other option is to have a tool that parses HTML and injects additional HTML into it, rather than generate HTML entirely. This way, the HTML writer is spared from looking at the template code. They can leave in hook (an "insert generated block here") tags, and the tool place the generated code where desired.
Here, the programmer will need to know a bit of HTML, since the generated bits will be done by a programmer. Nor will this method really help with complicated generated UIs unless the process is recursive (HTML doc references generated section which references HTML doc which itself has generated blocks, and so on).
This differs from JSP in the sense that an HTML designer needs nothing but a web browser and whatever tool of their choice to do their work. They'll see a lot of empty "blocks" on their screen, to be filled with generated components developed by programmer/Web designer teams.
They can pass off the HTML for entire pages or HTML "widgets" boilerplate HTML to the developer who will then fill in the "blanks" with server-side Java and client-side JavaScript.
The problem is being framed as a case of the development tools not being supportive of the actual development processes that take place when designing web applications. We may not only need to change technologies, but the actual workflow of the intermediate artifacts as well. Above, rather than have an HTML designer fill-in bits of a JSP developed by a programmer, the designer passes off a skeleton HTML page to a developer who adds life to it.
I notice that with XSLT and JSP, it is assumed that the Web designer needs to deal with some non-HTML intermediate representation of data/content and some technology to access and use this content in an HTML page.
I suppose these technologies aimed at only sparing the Web Designer from the pain of fetching data, and not from the means of accessing and iterating over the data for rendering.
Just my 2 cents...
Good Point! I feel your pain!
I developed www.chumsnet.com completely by myself, and I must say that it is a real pain even for someone like me who have been using JSP/Struts for 3 years. I have developed some real work in PHP and ASP.NET as well. JSP is the hardest to work with when it comes to the HTML side of things.
I love MVC/Struts, and the beautiful OO paradymed Java, and the huge API that comes with it. But, the HTML slows me down a lot. I use NetBeans because its free and it has nice Visual Studio/JBuilder alike GUI. However, neither Dreamweaver or Frontpage can handle the Struts tags. So, I have to do visual work by hand coding and then run the thing for Tomcat to generate the results. I have no problem developing complicated and challenging solutions, but when it comes to the GUI part, I feel so annoyed!
Enough about my story. I think for a technology to be successful, it needs to be user(developers in this case) friendly. I like the proposed solution of having an IDE to take care of the visual side of things. But it still restricts HTML designer somewhat. So, I propose the PHP path. A php page with forms can be completely HTML. The PHP module simply assigns request scope parameters( in JSP linguo ) with the same name as the form element name. I think this is the cleanest approach.
Of course, this won't solve dynamic things like tags, and the like. But, this might be the only thing an HTML designer needs to learn. And it is quite intuitive.
Good Point! I feel your pain!
Pardon for my previous hasty posting. There seems to be some extensions for tools like Dreamweaver. However, there is none in the Linux platform.
And I must clarify that I mentioned the PHP path not to bash JSP, but to suggest JSP/JAVA authorities to follow the clean cut approach PHP has taken. Frankly speaking, PHP is no match for JSP for complicated, and scalable solutions. Anyone knows how this can be reflected?
www.witsol.com
you should use
microsoft .net
XForms || XMLC
Two years and a half after the article was released we still suffering JSPs, JSFs and all that horrible stuff.
I can't understand why people is so blind. Will people ever realize JSPs are intrinsically a broken technology -as was ASPs when Java people tried to mimic them- and can't be fixed? Would they ever move to a technology designed to solve the UI cleanly?
Besides the momentum AJAX (AJAX @ Wikipedia) is gaining nowadays it still doesn't address the fundamental problem. The problem is addressed by XForms XForms - The Next Generation of Web Forms but currently 2005/06/12 there isn't any browser that natively supports it (Mozilla suite is almost there btw Mozilla XForms)
If you can't use XForms because you need to be on the Internet you should consider XMLC; it still being the only clean separation between user interface and presentation logic and it works like a charm.
Regards.
Ignacio.
Hmm...
Just as
Electrical Engineering spawned Electronic Eng.
Electronic Eng. spawned Computer Engineering
Computer Eng. spawned Software Eng.
Software Eng is spawning information Engineering.
Information Eng will spawn something like Solutions Engineering? or whatever it may be called. Solutions Engineering will spawn Intelligence Engineering.
And on, and on.
Ultimately, it's still all simple machine code.
However, Java is stuck in an OO computer science theory paradigm. Yes, it's very structured, but in what way? A knight in shining armour doesn't usually dance very well to disco music in a nightclub. [Yes, I know he'll get all the chicks, and all the attention.]
Perl for example is great for text processing, because the regexps are so closely built in. PHP is handy for web work. You can use PHP to do text processing... but who does? You could use C++, but why? Life's too short.
ASP, an old leaky bucket of a thing was and is surprisingly successful, because you can develop so fast. But that's speed (of development) over structure.
I wish we had a tool that was
=-=-=-=-=-=-=-=-=-=-=-=-
1. Simple to use
2. Ultra Fast to Develop in
3. Structured for information processing
4. Structured for your mental paradigm
5. Structured for software engineering
6. Fast in terms of execution
7. Intuitive
8. Free if possible
9. Simple to learn
In fairness, ASM is a hell of a lot easier to learn than Java. What return do we get from making programming more complicated?
Does structure necessitate complexity?
Not in my opinion, it doesn't.
Quite often, the more complicated the structure, the simpler the interface needs to be. 3-mile island being the historical case in point.
I guess it wont happen for a while. I'm investigating Python and Ruby right now, and I'm encouraged. I'm waiting for Parrot/Perl 6 as a possible saviour. - A distributable bytecode interpreter on which you can slap any language you like. Yum!!
In the meantime, I wrote to the chap in question in Sun, and asked him to create a language that relates to Java in the way that vb.net (or even asp.net)relates to C# or .net platform in general. He hasn't answered yet, sadly.
Electrical Engineering spawned Electronic Eng.
Electronic Eng. spawned Computer Engineering
Computer Eng. spawned Software Eng.
Software Eng is spawning information Engineering.
Information Eng will spawn something like Solutions Engineering? or whatever it may be called. Solutions Engineering will spawn Intelligence Engineering.
And on, and on.
Ultimately, it's still all simple machine code.
However, Java is stuck in an OO computer science theory paradigm. Yes, it's very structured, but in what way? A knight in shining armour doesn't usually dance very well to disco music in a nightclub. [Yes, I know he'll get all the chicks, and all the attention.]
Perl for example is great for text processing, because the regexps are so closely built in. PHP is handy for web work. You can use PHP to do text processing... but who does? You could use C++, but why? Life's too short.
ASP, an old leaky bucket of a thing was and is surprisingly successful, because you can develop so fast. But that's speed (of development) over structure.
I wish we had a tool that was
=-=-=-=-=-=-=-=-=-=-=-=-
1. Simple to use
2. Ultra Fast to Develop in
3. Structured for information processing
4. Structured for your mental paradigm
5. Structured for software engineering
6. Fast in terms of execution
7. Intuitive
8. Free if possible
9. Simple to learn
10. Handles Arrays, Matrices, Sorting like a grown-up
In fairness, ASM is a hell of a lot easier to learn than Java. What return do we get from making programming more complicated?
Does structure necessitate complexity?
Not in my opinion, it doesn't. I mean, OO is great, but can't anyone think of anything better?
Quite often, the more complicated the structure, the simpler the interface needs to be, while keeping the modularity, etc. 3-mile island being the historical case in point. "Too much detail"
I guess it wont happen for a while. I'm investigating Python and Ruby right now.
In the meantime, I wrote to the chap in question in Sun, and asked him to create a language that relates to Java in the way that vb.net (or even asp.net)relates to C# or .net platform in general. He hasn't answered yet, sadly.