Blogging Roller

Dave Johnson on open web technologies, social software and software development


Deployment on OC4J.

I gave up on the Oracle OC4J docs. They keep on pointing to something called dcmctl that I didn't get in the OC4J download. The appendix says that dcmctl lives in $ORACLE_HOME/dcm/bin/dcmctl and I am not in the mood to download Oracle right now. So, I pointed my browser at the Orion website and found some more reasonable docs. OC4J is just an OEM version of Orion.

I dumped Roller in OC4J/home/roller and then added the following to OC4J/home/config/server.xml:

   <application name="roller" path="../roller" />
this to OC4J/home/config/application.xml:
   <web-module id="roller" path="../../home/roller" />
and this to OC4J/home/config/http-web-site.xml:
   <web-app application="default" name="roller" root="/roller" />
Now I'm getting a string of error messages that indicate that OC4J is attempting to deploy Roller. Good.

Tags: Roller

Starting OC4J.

After 20 minutes reading the docs and rocking Leo with my foot, I still couldn't figure out how to start OC4J but Leo did fall asleep. I made a guess, tried typing java -jar oc4j.jar, and that worked. After searching the config files, I figured out that the Servlet Engine was running on port 8888 and I verified that with my browser. Now, Let's see if the docs can be any help in deploying Roller.
Tags: Roller

Getting started with OC4J.

Now that story-time is over, the big boys are tucked in, Leo is napping, and Andi is out for a glass of wine the fun can begin.

No docs were included in the 24MB OC4J download, so I hit the Oracle OTN site and found the Oracle9iAS Containers for J2EE User's Guide. Chapter 2 is what I want. I think I want to run just a single instance, but the docs make that sounds a little naughty - "this undermines the enterprise management provided by the Enterprise Manager." Whatever. Uh oh, Leo is awake and he is not happy about his cold.

Tags: Roller

Oracle OC4J 9.0.3.

Tonight's fun activity is going to be installing Roller on the Oracle OC4J 9.0.3 J2EE appserver and at the same time caring for a sniffly nosed 4 month old. I just finished downloading the 24,266,496 byte OC4J zip file.
Tags: Roller

The Cabin.

I thank my parents and my sister for an awesome childhood - where life was simple and dreams were boundless. [<a href= "http://www.raibledesigns.com/page/rd/20021016#the_cabin">Matt Raible, The Cabin]
Excellent story Matt, and those pictures are wonderful.

Tags: General

Blogs complicate things.

The reason blogs complicate things is that each one adds at least one more identity to the author's roster, which is always complicated to begin with. And most of us know very little about each other to begin with as well. [<a href= "http://doc.weblogs.com/2002/10/15#rockRoll">Doc Searls]
Tags: Blogging

Oracle releases TopLink upgrade, road map.

However, Oracle9i AS users get the new version of TopLink free while users of the other vendors' products must pay $7,000 per processor. [<a href= "http://www.infoworld.com/articles/hn/xml/02/10/15/021015hntoplink.xml">InfoWorld]. Oracle assures us that TopLink will continue to support other databases and app servers. Why the hell doesn't the InfoWorld article have a link to <a href= "http://otn.oracle.com/products/ias/toplink/content.html"> TopLink?
Tags: Java

1993.

<a href= "http://www.russellbeattie.com/notebook/index.jsp?date=20021015#002353"> What was I doing in 1993? That the year that my short stint as an independent GIS consultant came to an end. In December 1992, my wife Andi and I returned from our year and a half in <a href= "http://www.uwimona.edu.jm/">Jamaica where I had been working as a GRASS GIS consultant. We moved to my hometown Chapel Hill, NC and I was hoping that I could continue working there as an independent consultant.

Before I left Jamaica, I landed a contract with the <a href= "http://www.opengis.org/"> Open GIS Foundation and the <a href= "http://www.cedr.berkeley.edu/">Univ. of California Berkeley to develop a X-Windows based raster editor for GRASS. I wanted to find more work like that, but I just didn't have the contacts needed to continue consulting on my own. By July 1993, I had accepted a great job with the GIS group at NYNEX Science and Technology (now part of Verizon) in White Plains, NY.

After writing this up, I was browsing the pages for Berkeley's REGIS program and learned some sad news. The kind person who I worked for at Berkeley and who offered me a job there back in 1993, Kenn Gardels, passed away in 1999 at the age of 44.

Tags: general

inluminent.com.

Mr. Inluminent certainly has a winning approach to the "is my blog hot or not" competition. I learned from my referrer logs that he <a href= "http://www.inluminent.com/weblog/archives/theorem_as_software_price_goes_up_quality_goes_down.php#000213"> enjoyed the sexy image that accompanied my <a href= "http://www.rollerweblogger.org/page/roller/20021010#dave_on_software"> Dave on Software post.
Tags: General

RSS broken for way too long.

There was a double-escaping problem in Roller's RSS feed that prevented all links and lots of other HTML from working in AmphetaDesk, Aggie, and probably other aggregators as well. For some odd reason, Radio handled it fine so I never noticed the problem. The problem is fixed now on this site, and in the upcoming Roller 0.9.6 release.
Tags: Roller

Leo

As usual, the best photo was one taken by my Dad, with his superior camera and his superior composition skills. He has captured the essence of our four month old boy Leo. <img class="photo" src="http://www.rollerweblogger.org/resources/roller/essence-of-leo.jpg" hspace="5" vspace="5" align="left" alt="baby boy Leo at 4 months old" /> I don't mean to brag, but at this point in time I'm sure that Leo is the best baby in the world. He has been sleeping though the night for almost a month now, sometimes going out for 8 hours at a time. He is happy and laughing almost all of the time. And best of all, he is as healthy and fat as can be (100th percentile for weight!).

Tags: family

Monday quickies

Once I do some work with the mountain of digital photos I have taken recently, I'll have a little time to work on Roller tonight. But, before that here are some quickies:

Lance has added support to Roller for <a href= "http://www.devarticles.com/content.php?articleId=90&page=1"> Mitchell Harper's JavaScript-based WYSIWYG editor. It works only on IE,but it is still cool. Now Roller supports three editors: Ekit, the Harper special, and the plain old text box.

I think I read that <a href= "http://www.raibledesigns.com/page/rd">Matt added sort-by column to the Roller user table that appears on the new Roller 0.9.6 front page, but I can't find that email right now. That will make it easier to browse the blogs at FreeRoller.

There are a lot of cool blogs at FreeRoller that I have not noticed before. For example, <a href= "http://www.freeroller.net/page/cbeust">Cedric Beust's weblog and Ara Abrahamian's <a href= "http://roller.anthonyeden.com/page/ara_e">MemoryDump. Ara has some interesting ideas about an <a href= "http://roller.anthonyeden.com/page/ara_e/20021014">n-way metadata bus for Java persistence scenario. Cool idea.  He says MiddleGen may support this some day. Wow, I need to take another look at MiddleGen.

Tags: General

OFBiz-EE and the "generic object" approach

Scott from Atlassian wrote to tell me that OFBiz-EE can be used in all four of the persistence scenarios that I discussed yesterday. He wrote:

You have your JavaBeans already, you then need to create an entitymodel.xml file to represent your entities (which will then CRUD the relevant database tables), and you can use the API to store your changes to the database. However, the storing is not automatic - you would have to write the code yourself. [Scott from Atlassian]

But if you have to write the storage code yourself, can you really say that OFBiz-EE supports this scenario? I don't think so. OFBiz-EE takes a very different approach, not a bad approach, but a different approach.

I think OFBiz EE needs its own scenario - the generic-object scenario. I don't think it truly fits into any of the four scenarios that I listed. It does not really do anything to support the JavaBeans model (no introspection, no JavaBeans generation) and it does not do any code generation (except for the DDL, right?). So here is the new generic-object scenario that I have just added to the comparison to accomodate OFBiz-EE:

Generic-object: Start with a meta-data description of your desired database schema, generate DDL to create your database, and use a persistence API to store and retrieve generic data objects, with values stored as a hash of name-value pairs, to and from your database.
Tags: Java

XORM - for GPL apps only.

<a href= "http://www.russellbeattie.com/notebook/index.jsp?date=20021014#104120">Russell pointed out XORM, another Java persistence framework that sounds interesting. However, you cannot use XORM if you do not license your application under the GPL. That is a BIG limitation.
XORM beta 2 is an open source, "extensible object-relational mapping layer for Java applications. It provides interface-based persistence to RDBMSs using the Java Data Objects (JDO) API while allowing developers to focus on the object model, not the physical layer." XOTRM is published under the GPL.[from Cafe au Lait by way of Russell]
Tags: Java

Career Redux

The September 2002 issue of the Communications of the ACM has a very interesting article on career development by Peter J. Denning. Denning covers the ladder of competence and the different ways that people at these different levels work and the ways that they learn. He bases this in part on Hubert Dreyfus's AI writings from the 1960s and 1970s. Great stuff. Denning also has some insightful things to say about what he calls the self-directed and community-directed styles of career development. Well worth a read.
Tags: General

Java Persistence Frameworks, again

... and that is just a few of the recent posts ...

The topic of Java persistence frameworks just keeps on trucking through the Java blogs.  I think that the reason the topic keeps coming up is that there is no clear concensus on the "right way" to do persistence. I certainly don't know the right way. But anyway...

I'd like to understand the available tools a little better, so I've started looking at the tools mentioned in the above posts.  I found the feature comparison on the Cayenne project's Wiki to be helpful and I also found a very nice set of Java persistence framework development scenarios on the Hibernate website.  The Hibernate folks have outlined four development scenerios for using a Java persistence framework: top-down, bottom-up, middle-out, and meet-in-the-middle.  Here is my generalized description of these four scenarios, plus a fifth "generic-object" approach that I have added to accomodate OFBiz-EE:

Top-down: Start with an existing JavaBeans object model, develop a mapping that maps those objects to tables in your database, generate DDL to create your database, and then use a persistance API to persist those objects to that database.

Bottom-up: Start with an existing database schema, describe your database schema using using XML or some other meta-data representation, generate your JavaBeans object model, optionally add business logic to those objects, and use a persistence API to store and retrieve your objects.

Middle-out: Start with a meta-data description of your object model, generate your JavaBeans object model, generate DDL to create your dataBase, and use a persistence API to store and retrieve your objects.

Meet-in-the-middle: Start with an existing database schema and an existing JavaBeans object model, develop a mapping to map between the two, and use a persistence API to store and retrieve your objects.

Generic-object: Start with a meta-data description of your desired database schema, generate DDL to create your database, and use a persistence API to store and retrieve generic data objects, with values stored as a hash of name-value pairs, to and from your database.


I think the Hibernate guys have really nailed it.  Every tool I have seen supports one or more of these scenarios.  So I decided to use these scenarios as a way to compare the available Java persistence frameworks.  I started to build a table to compare the scenarios supported by the various persistence frameworks and some other factors that I think are important interesting (thanks ceperez): support for the JDO API, support for ODMG API, development activity, and database support.  

Here is the first cut of my comparson table, I will be trying to complete it over the next couple of days:

<table cellpadding="0" cellspacing="0" border="1" padding="2px" style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;"> <td valign="middle" style="background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">
<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" align="left" height="30">Abra

<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">Castor
JDO
<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">Cayenne <td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255);"><a href="http://jakarta.apache.org/commons/sandbox/sql/" style="font-weight: bold;">Commons
SQL
<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">Hiber
-nate
<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">Jakarta
OJB
<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">OFBiz
EE
<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">Jakarta
Torque

<td valign="middle" style="text-align: center; background-color: rgb(204, 204, 255); font-weight: bold;" bgcolor="#ccccff" height="30">TJDO <td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">Top-down <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">Bottom-up <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">N
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">Middle-out <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">Meet-in-middle <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">N <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">N
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
Generic-object






Y


<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">JDO API
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">soon <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">N
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="font-weight: bold; background-color: rgb(238, 238, 238);">ODMG3 API
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">subset
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">N
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">N
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">Y
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">Y
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">N
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">N
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">License <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">BSD <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">BSD <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">BSD
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">APL
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">LGPL
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">APL
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">BSD <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">APL <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">APL
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">Last release <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">0.9.6
Sept
2002
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">0.9.4.1
November
2002
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">1.0a3
Sept
2002
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">1.1.4-b
Oct
2002
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">2.0-b2
July
2002 <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">2.0-b
Sept
2002
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">SF Activity
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">19.4% <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">-
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">98.3%
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">- <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">99.9%
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">- <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">98.9% <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">- <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">95.3%
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">SF Downloads <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">7
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">-
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">2698
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">-
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">775
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">- <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">86869
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">- <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">278
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">Developers <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">3
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">3
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">3
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">11
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">17
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">11 (1)
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">10 (2)
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">7
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">MySQL <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">PostgreSQL <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">HSQL <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">Oracle <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">SQL Server <td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="font-weight: bold; background-color: rgb(255, 255, 255);">DB2 <td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">Y
<td valign="middle" style="text-align: center; background-color: rgb(255, 255, 255);">
<td valign="middle" style="background-color: rgb(238, 238, 238); font-weight: bold;">Sybase
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="text-align: center; background-color: rgb(238, 238, 238);">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">Y
<td valign="middle" style="background-color: rgb(238, 238, 238); text-align: center;">

Footnotes:
  1. There are 11 developers on OFBiz, not sure how many really work on the Entity Engine
  2. There are 10 developers on Turbine, not sure how many really work on Torque
Other notes:
  • I took JGrinder and JRF out of he mix because they seem to be a little too intrusive.  They force your to make your persistent objects extend framework objects and they don't seem to offer any tools to help you generate DDL or persistent objects.
  • I'm going to limit myself to open source frameworks for the time being, but I'd also like to consider Oracle's TopLink, CocoBase, Oracle's BC4J, and the commercial JDO implementations.  
  • I'm also going to ignore EJB CMP for now.
  • Blank cells still need to be filled in and hints are appreciated
  • A dash "-" indicates "not applicable.
By the way, Roller uses the bottom-up approach.  Roller uses Castor, but not the Castor Source Generator.  Instead, Roller uses XDoclet to generate the persistent data objects, Struts form beans, and the Castor Mapping file all from the same source meta-data.  The Castor/XDoclet combo is not perfect, but I still don't know that moving to a new framework would be an improvement.  We might just be exchanging one set of idiosyncracies for another set.

Tags: Java

It's tricky?

I think my <a href= "http://www.rollerweblogger.org/page/roller/20021012#blogging_is_difficult"> Blogging is Difficult post was a little corny, overdone, and maybe gave people the wrong impressions. Writing things for my weblog is not difficult like some painful chore that I dread to do each day. It is quite the opposite. I enjoy it and sometimes I have to hold myself back.

What makes blogging difficult is that sometimes I write things that I later feel to be stupid and embarrasing. I think I'm being little too sensitive and self-conscious about this. My readers probably don't even notice the things that I consider to be stupid and embarrassing.

Another thing that makes blogging difficult is mixing the professional and the personal. Part of the reason that I write a weblog is professional. I want to improve my communication skills and I want to build a reputation as a software architect and developer. Again, I think I'm being too sensitive. I don't worry about the effect on my professional image of wearing shorts & berkenstocks, taking breaks for disc golf, and cranking up the Clash at work. So why should I care about having some fun on my weblog? As long as I don't mention my employer by name and I speak about work only in vague generalities, I'm fine - right?

I'll stop the meta-blogging/navel-gazing now and return you to my normal disjointed ramblings. That is what I promised and that is what I will deliver.

Tags: General

It worked

and I'm back from work. I'm taking a break before going out to dinner with the little guys. Andi is taking the littlest guy out with her friends.

I'm reading the Java weblogs and finding that the topic of persistece frameworks is up again. I think it is interesting that Rebelutionary writes about <a href= "http://radio.weblogs.com/0107789/2002/10/12.html#a968"> OFBiz and it's generic data objects at about the same time that Russell is writing about what seems like the polar opposite of that: having to repeat field names in DDL, SQL, DAO classes, EJB mappings, form beans, and JSPs.

Tags: Java

Off to work.

I've got to go into work today to wrap up a demo I've been working on and to help a sales engineer prepare for an important demo next week. I like it when a little bit of work can have a big impact - assuming of course that everything works. In this case, that is a big assumption.
Tags: General

Blogging is difficult

Blogging Roller made blogging easy for me
I'd just blog about Roller and related stuff

I hoped I that eventually, I would find my way to other voices
But blogging is difficult: I've got rules in the back of my mind
Don't blog about politics and start argumemts
Don't blog about family and day-to-day life, that'll bore people
Don't blog about work, because your employer may be reading
Censor yourself!

The bloggers that I enjoy reading are the ones that break these rules
I can't enjoy blogging unless I start breaking some of these rules

Tags: Blogging

« Previous page of month (Oct 2002) | Main | Next page of month (Oct 2002) »