This is the original announcement, and follow up comments, of the XX Framework posted to TheServerSide.com in 2006. I am posting this for archival
purposes and it is interested to see some of the comments received back
then. I don’t see the post available online so I don’t feel too bad
about cut and pasting XX Framework 1.0 Released – XML-Centric Java App Framework
Posted by: David Moskowitz dave@infoblazer.com on February 20, 2006 The XX framework is a configurable, XML-centric implementation of the MVC development paradigm that incorporates simple and commonly used patterns of development. The framework promotes a use case oriented development approach. A key goal of the framework project is to generate fully functioning web applications that use an open J2EE/XML/XSL approach that can easily be modified and enhanced. The framework currently includes full automation functionality, where HTML form fields can be mapped directly to database fields for display or update without additional coding. XML files are used for configuration and XSL is used for display. Open source tools such as Hibernate and Castor are also utilized. Some benefits of the framework are: reply Message #201355 Go to top Comparing with OpenXava I think that your framework has some things in common with OpenXava. How do you can compare XXFramework with OpenXava? Thanks reply Message #201361 Go to top More XML??? That’s why I use www.mentaframework.org – a MVC Framework without xml. This is REALLY simple! reply Message #201363 Go to top More XML??? some people hate XML (as you) some people hate annotations. I don’t hate annotations, The important in a framework is not if uses XML or annotation, but if is it simple and powerful at same time. Hi David, What persistence engine uses XXFramework? Hibernate, CMP2, EJB3 Thanks reply Message #201374 Go to top Why? Congratulations with the 1.0 version of your project. A question, why should I choose to use this framework while there’s already a plethora of mvc frameworks around? What is the killer feature of your framwork that we have been missing out on in tapestry/jsf/spring mvc/webwork ? reply Message #201385 Go to top Thanks for all the comments so far The most obvious question, which I certainly expected (and thanks for asking) is, why another (MVC) framework? The quick answer is, I didn’t like anything that I found out there. The XX Framework is the culmination of my approach to Java development for the past 7 years or so. Much of the approach has changed in that time, from a completely XML focused, service oriented approach to more of a combined XML service/Object oriented approach. On many occasions (usually for new projects) I would examine the emerging frameworks. None of them ever clicked with me and seemed to involve too much configuration and coding for what I needed to get done. My philosophy is to code something only once and (,more recently anyway,) configure it with XML. I’ve been doing XSL as the display component of my apps for some time, so the framework was heavily built around XML. I eventually was able to accomplish more and more of this, and generalize all the application CRUD into XML configuration. Regarding some similarities with existing frameworks, I was told recently that XX is similar, in goals at least, to Ruby on Rails. I am not very familiar with that project and much prefer Java anyway. But my goal is to have something in Java that is as quick and dirty as Ruby , Perl, or PHP, but with the sophistication of a Java solution. Java projects shouldn’t take months or years to implement. I believe that Struts and Tapestry are very a similar type of framework, but XX is built around XSL transformation of XML for all the display. XX seems much simpler, but of course I built it. Not begin an expert in other frameworks, I’d greatly welcome any comments regarding similarities, etc. Regarding the killer feature, I am extremely happy with the CRUD automation component (that doesn’t sound right). Anyway, using the XML foundation, I am able to map an HTML field, via its hierarchical XML field name, to the Hibernate component and persist or read the information. I am really not aware of another framework that does this. I was most inspired by Ironspeed’s application generator for .net, but I felt that involved too much custom programming, to implement anything significant. XX involves customization, but it is done in the XML/XSL layer, which I feel more comfortable with, being more open, text based, and modifiable. In the future, I would like to do complete app generation, as much of the apps I’ve built have shown great similarities, and since the similarities are in the XML/XSL, this should be easy to generate. There may very well be something that does exactly what XX does and better. As Holmes said, “there is nothing new under the sun. It has all been done before”. Or at least someone said that. Anyway, XX has been successful in building the apps I needed to build and I would hold them up in functionality , maintainability, and development speed to what I’ve seen in Struts or others. I am sure the other frameworks do some things much better, but we are comparing a one man effort with mature, team, sponsored projects. I would love to get some people who see things as I do on board with the project and build something really usable. Thanks so much for taking the time to comment. David Moskowitz reply Message #201387 Go to top More XML??? In general, I prefer a declarative (XML, XSL) to a procedural approach and the more I can move things in this direction , the more successfull I fee I am. I’ll check out the framework you recommend. Thanks David Moskowitz reply Message #201388 Go to top Persistence Engine I love XML as well. Thanks for the comment. reply Message #201389 Go to top CRUD automation Thanks for extensive reply. CRUD automation/generation is indeed something that would be very useful. At least it will silence the rails-fanboys for a while:-) I know about one more project trying to accomplish this, it’s called Trails (there’s bene posting on that tool online). Maybe you can take a look at it for inspiration? Cheers Hans reply Message #201399 Go to top Why CRUD automation reply Message #201402 Go to top Why CRUD automation From my point of view, as long as relational databases are the best thing going (and I think they still are), I am going to need to do relational CRUD. Object Oriented mapping tools, like Hibernate, certainly make this nicer. Dave reply Message #201403 Go to top crud is important And for tons of apps (yes, even enterprise apps), CRUD is a large component. That said – I’m not as stressed about it as I used to be, because I always use a generic crud action or managed bean (depending on whether I am using struts or JSF). If you have a generic crud class that does your main CRUD stuff, but also supports lookups and foreign key relationships (lists), then normally it is just a matter of laying out your new page. (and of course ensuring you have hibernate properly configured). I do of course allow the presentation tier to use the same POJO that hibernate is persisting. Doesn’t everybody do this??? reply Message #201404 Go to top crud is important The XX presentation tier is base on XSL transformation of the hibernate POJO’s, represented as XML. Does that make sense? How are you presenting your POJO’s? Dave reply Message #201405 Go to top crud is important I have the [pipe dream|hope] that eventually the JSF editors will be as powerful in a wysiwyg sense as the VS.NET editor. I had a quick scan through your intro – does the CRUD support relationships? (i.e. can it generate the many to many and many to one parts of the presentation?) reply Message #201407 Go to top More XML??? XML is good for representing hierarquical data, and if you don’t have do edit it manually or it’s contents. I friend of mine used XML for representating 3D starships in his games and it worked pretty well. But when you start “programming” in XML, is became very ugly. You cannot compile XML, you will only know if there is an error when you run the application (ok, you have the DTD, but it is not so precise as the Java compiler). You need to learn another “language”, because each web framework has it own xml implementation, in many cases, this implementation is very complex. You cannot debug a XML file. It’s not so easy to represent certains objects in XML. XML complicates the learning. When I started to study MVC and web frameworks, the use of XML was very confusing. Aynway, we have opinions and opinions… This is my opinion. reply Message #201408 Go to top crud is important I can’t speak much about JFS, since I have been using XSL for presentation for a long time now. I think what tapestry does in this respects is pretty nice, but I feel the XX approach of a more standards based XSL layer is nice as well. By judiciously using CSS, which I admittedly am only beginning to do, the XSL layer becomes much more straight forward. Dave reply Message #201409 Go to top More XML??? Tools like XML Spy make it much easier to work with XML, and do
debuggin as well. Dave reply Message #201412 Go to top More XML??? Alternatives like… programming in Java? reply Message #201414 Go to top More XML??? That is why I like Hibernate, which maps from Java business objects to database. The XX framework maps from HTML forms to Java business objects, then tells hibernate what to do with the BO’s. I guess I wouldn’t mind creating a fully functioning Java app without writing any Java. Dave reply Message #201415 Go to top More XML??? Wow… that was a realy unhappy example. MS Word is a end-user product,
not a framework. It’s totaly different. reply Message #201417 Go to top More XML??? Java code is great. The XX framework is written in Java. I will check
out the framework you recommend (but I need to run upstairs and watch
24 now). Different tastes I guess. Thanks for the comments and will check out Mentawai. Dave reply Message #201419 Go to top More XML??? Document resultDocument = DocumentHelper.createDocument(); Can you debug on XML? No. Can you use Eclipse refactoring tools on XML? So.. I’m sorry pal, I go for http://www.mentaframework.org ! reply Message #201422 Go to top More XML??? Well, I prefer XDoclet and Annotations rather than XML when using Hibernate… reply Message #201425 Go to top More XML??? Sorry, I am not really sure the point you are trying to make. The code you quote is from one of my Hello World examples, in this case, to illustrate a simple XML/XSL transformation. I am using the simplest method possible to generate a full XML document, without using any helper classes that might confuse things. The document in this case just represents some hierarchical data that could come from a DB. In reality, I probably wouldn’t want to print hello world to the
screen. If I did, I certainly wouldn’t need an XML transformation to do
it. probably several more variations as well, all without the Java code you quote. Dave reply Message #201431 Go to top crud is important Depends. We’ve got a framework based on Struts, Spring, and Hibernate. The create, update, and delete portions of the CRUD are done via some code we have that extends the Spring Hibernate template. I’ve added a “Read” via a particular convention that allows it to be reusable without any coding of the methods. So, by using Xdoclet for mapping our POJOs, we get free CRUD ops by
simply implementing a DAO interface that: reply Message #201441 Go to top like a part of Jdon Framework http://jdon.dev.java.net/ reply Message #201458 Go to top mmm…. do I smell something burning? So, we have another MVC framework, however, I have the distinct feeling that at least hardware vendors will be salivating when they hear that applications are being built using this framework. Congratulations though, I know how fulfilling it is to write something that feels ‘just right’ for one’s use. I bet it was an extremely good learning experience too. Keep up the good work and dont let anyone discourage you. reply Message #201490 Go to top Slow Morning reply Message #201494 Go to top mmm…. do I smell something burning? I think you are very perceptive, regarding performance penalties of an abstracted approach like Hibernate or an XSL approach like my framework. There is always the option to back out and write more customized routines where and when necessary. I haven’t really had a problem with this yet. I also believe in “avoiding premature optimization”, so I’d rather come up with what I feel is an elegant solution first, then optimize. I’ve tried enable XML caching, and I believ Hibernate has some caching as well, but I haven’t benchmarked it yet. With regards to XM/XSL, I’ve done a lot with this in the past using a Microsoft platform, and have found the performance of their parser excellent, but I still prefer Java to .net overall. I am waiting for Java technology to catch up in this respect. Dave reply Message #201517 Go to top Comparing with OpenXava OpenXava definitely seems similar to some of the ideas I had for future phases of XX, namely gui generation. I am not there yet, so right now, XX is just at the point of CRUD based around a custom built XSL based view. Thanks for pointing this one out. Dave reply Message #201580 Go to top Why CRUD automation reply Message #201581 Go to top Why CRUD automation Dave reply Message #201697 Go to top XML is the best compiled language. reply Message #201862 Go to top integration with birt report framework In case you take challenge I’m ready to help you with that. My e-mail: vladperl at hotmail.com Sincerely, reply Message #201975 Go to top integration with birt report framework Thanks Dave reply Message #201976 Go to top Thanks, again, for all the feedback I definitely would like to look at some of the alternatives mentioned, as comparison or to get some good ideas from. In what I’ve seen, I definitely think the XX approach is valid, useful, and different enough from what is out there to be viable. One recurring objection I hear is that many are fed up with XML configuration overkill. That is valid. However, at this moment I prefer XML configuration to code based configuration, which I think is less maintainable. I would rather use standardized XML, then some sort of new or existing 3 or 4GL language that people would need to learn how to apply. Even so, I will, and have, tried to avoid XML and file overload. I think in the future, I would like to move XX more towards automatic generation of applications, but keeping an open, standards based foundation, that (hopefully) will be easy to modify. I welcome everyone to continue providing feedback on the http://www.xxframework.org support forums. Thank You David Moskowitz |
