Posts Tagged “Web development”

I ran into the need to change a project I am working on from keeping a ton of java objects in the air due to real-time calculations and performance.  Didn’t need (or want) full database that would need to be maintained by a database group.

Every time the application was restarted, the entire thing would be reloaded based on other sources (other databases of data — all different db’s, data and transformation needed).  The transformation requires each base source to have different set of transformations and calculations performed on them.  Also since the sources have different real-time intervals there needed to be different levels or transformation going on.

Of course if I was a dba, I would be saying this should all be done in some huge db iron and storing it into some jumbo sized tables and all could be done with scripts, triggers, etc.  But I am not a dba, I like my logic in code, not a database.  That is just who I am.  I love Java and like to see what my code is doing to the data and db are used to store and get things for me, period.   Just wasn’t going down that road.  We can agree to disagree or not.

Ruled out in like 5 seconds that the use of flat files to store the calculated data would just not work.  I had to have the ability to retrieve the data fast (wanted hash maps or trees in memory, but that quickly ran out of steam due to quantity of data).  I also wanted to keep everything in the single app (single deployed war) at the end of the day.  Makes support easier in the long run.  One point to look at instead of 12!

So I came up with a list of what I wanted:

    1. Needed to be quick.
    2. Needed to be embeddable (not an Oracle, MySQL or anything like that) / memory friendly.
    3. Needed to deploy when the web application deployed (all self contained).
    4. Needed it to be support by ORM (Apache Cayenne) since already using in the project for other db work.
    5. Needed to be open source.
    6. Needed to be temporary, last only while web app was up and running and throw everything away when app restarted.

      I had narrowed my list down to three choices I was entertaining (your experience might be different):

      They probably would all get the job down.  But I tried to narrow it down by my criteria by doing a little reading (Google + reviews + blogs + groups complaining about stuff + did I like what I saw):

      1. Started reading, it appeared H2, then Derby (latest) and then HSQLDB was the speed arrangement. (YMMV)
      2. More reading… All would meet the need, but H2 had some really nice instant up and running features that I liked. (IMO)
      3. Same as #2, they all would meet the need more or less.  Just different feature set, but once again H2 was drawing my attention. (IMO)
      4. All had native support in Cayenne since I am using 3.0 (H2 was not supported prior to 3.0, but that didn’t matter since I am using 3.0).
      5. All met this need and would of been fine.
      6. All met this need in some fashion and would of been fine as well.

      So it really came down to how easy “did it appear” for me to get this started, embedded and actually working, using it in actual live code all in the same day.  For me it had to be H2.

      There were quite a few reasons other than meeting my 6 requirements above.  I also liked that it had an active change log which every month appeared to have forward progress and making the project better.  Open source projects are either constantly evolving and or dead.  Get worried when a project hasn’t had commits or quite a bit of progress in months, 6 months, last year, etc.  Code is never perfect, it can always be better.  Don’t leave it there to just die.

      I have to admit that venturing down the H2 path in the first day of use has turned out to be a great choice.

      Love the embedded console you get by including 1 (one, yes one) jar in your project which you were going to do anyways since that is the only lib required.  Edit your apps web.xml and bang.  That is supporting your dev project front and back.  I can see it will come in handy trouble shooting the application both during development and even possibly productional since we are talking ever changing live data.

      Integrated really quickly with Cayenne.  I have cayenne actually building the schema from its own XML each and every time the app starts up.  Talk about reuse and single place for describing the model.  ORM creates the model, creates the Java classes and now builds me my schema in my temp db.  That is a win, win, win situation folks.  No SQL monkey business, period!

      With a little more code (I mean little) I have it dropping everything (entire schema) and db temp files when it shuts down (all through a single listener config in the web.xml).  I love when things are simple and just work.   Kudos to Thomas for creating such a great db that works right out of the gate.  Simplest Java library I think I have ever used.

      I plan to write up some of the things I find interesting in the coming month or two (along with some other Wicket and Cayenne stuff I have mocked up, but not typed into here).   Here are some of those ideas I have already worked through turned out beautifully (eluded to above)!

      • DB embedded in app config.
      • Cayenne used to build H2 schema.
      • Purge db on shutdown.
      • Performance / usage.

      It should be noted that H2 is developed by Thomas Mueller who was the creator of HSQLDB (H2 can be seen as HSQLDB2, just better and it even said that it could merge back into HSQLDB)… anyhow.

      H2 +1 in my book.

      Tags: , , , , , , ,

      Comments No Comments »

      The Apache Wicket team is proud to present the second release candidate of Apache Wicket 1.4. This is the first Wicket version with java 1.5 as minimum requirement.

      1.4 is really starting to shape up and since the whole generic movement in the project has settled since M3 days, I am going to have to jump from 1.3 to 1.4 big brother.

      Wicket is the only way!

      Tags: , , , , , ,

      Comments No Comments »

      The best web dev tool there is reaches 1.3.0 Final.

      They have really made some great progress lately and for those of you not using Firefox 3.1 yet, you can go get this now.

      Firebug 1.3.0 Final Released

      If you are using Firefox 3.1 you will still need to go get the 1.4 alpha (or soon to be beta).

      Firebug Release Directory

      Thank you again Firebug team!

      Tags: , , , ,

      Comments 1 Comment »

      The Wicket team has officially released 1.3 RC2. Things are really shaping up and it sounds like RC3 should be final hopefully.

      With the exception of the example “look” update, the API is frozen and stability is exception. I would expect final release coming by the end of the year (purely my guess).

      You can go check out the details at: Wicket 1.3.0 RC2 Details

      You can get your download at one of the Apache Download Mirrors: http://www.apache.org/dyn/closer.cgi/wicket/1.3.0-rc2

      Tags: , , , ,

      Comments No Comments »

      The Wicket team has officially released 1.3 RC1.  I personally have been 1.3 beta / source tree for months and have to say that it has been stable even during this time of finding and fixing bugs.

      This release is the first in a series of release candidates until we feel confident to finalize Wicket 1.3. This is called a release candidate because we strive for API freeze. This means only bug fixes will be done on the 1.3 release from now on.

      The API freeze should help speed along the final release so they can start working towards 1.4 and some new functionality that has been on hold to get 1.3 out the door.

      You can go check out the details at: Wicket 1.3.0 RC1 Details 

      Tags: , , , ,

      Comments No Comments »