<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: JavaDB and Glassfish v3 : to embed or not to embed</title>
	<atom:link href="http://number9.hellooperator.net/articles/2008/05/15/javadb-and-glassfish-v3-to-embed-or-not-to-embed/feed" rel="self" type="application/rss+xml" />
	<link>http://number9.hellooperator.net/articles/2008/05/15/javadb-and-glassfish-v3-to-embed-or-not-to-embed</link>
	<description>a bird to bring my message home</description>
	<pubDate>Wed, 07 Jan 2009 01:11:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
		<item>
		<title>By: Dick Davies</title>
		<link>http://number9.hellooperator.net/articles/2008/05/15/javadb-and-glassfish-v3-to-embed-or-not-to-embed#comment-61249</link>
		<dc:creator>Dick Davies</dc:creator>
		<pubDate>Sat, 08 Nov 2008 08:04:03 +0000</pubDate>
		<guid isPermaLink="false">http://number9.hellooperator.net/?p=133#comment-61249</guid>
		<description>@Francois think we still have our wires crossed. 

I never said JavaDB was a toy; I'm sure it's robust, I just personally found it awkward to use for development. I don't think I'm your target audience :) 

The CLI I'm talking about is ij . I often need a way to run SQL by hand against the database, and ij is really basic compared to psql, mysql or 'sqlite file.db'.

'Java only' is an issue for me. Learning a DB is a big time investment and I'd like to be able to apply that knowledge to all the languages I code in.

Bundling a DB with Java is a great idea, but I found a lot of apps I wanted to use had quirks with it (usually because most of their testers use mysql, I get the same trouble with postgres).

The only JavaDB feature that I see as a flaw (as opposed to just a design decision that doesn't fit how I work) is the process locking issue. Can you explain your last point about locking a bit further? You're probably the best person to confirm this :)

With SQLite, I *can* have 2 db 'engines' (the sqlite CLI and my Rails or Merb webapp) using the same DBfile. I don't think that's true for ij and a Glassfish webapp, and that's my problem with it.</description>
		<content:encoded><![CDATA[<p>@Francois think we still have our wires crossed. </p>
<p>I never said JavaDB was a toy; I&#8217;m sure it&#8217;s robust, I just personally found it awkward to use for development. I don&#8217;t think I&#8217;m your target audience <img src='http://number9.hellooperator.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The CLI I&#8217;m talking about is ij . I often need a way to run SQL by hand against the database, and ij is really basic compared to psql, mysql or &#8217;sqlite file.db&#8217;.</p>
<p>&#8216;Java only&#8217; is an issue for me. Learning a DB is a big time investment and I&#8217;d like to be able to apply that knowledge to all the languages I code in.</p>
<p>Bundling a DB with Java is a great idea, but I found a lot of apps I wanted to use had quirks with it (usually because most of their testers use mysql, I get the same trouble with postgres).</p>
<p>The only JavaDB feature that I see as a flaw (as opposed to just a design decision that doesn&#8217;t fit how I work) is the process locking issue. Can you explain your last point about locking a bit further? You&#8217;re probably the best person to confirm this <img src='http://number9.hellooperator.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>With SQLite, I *can* have 2 db &#8216;engines&#8217; (the sqlite CLI and my Rails or Merb webapp) using the same DBfile. I don&#8217;t think that&#8217;s true for ij and a Glassfish webapp, and that&#8217;s my problem with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Francois Orsini</title>
		<link>http://number9.hellooperator.net/articles/2008/05/15/javadb-and-glassfish-v3-to-embed-or-not-to-embed#comment-61195</link>
		<dc:creator>Francois Orsini</dc:creator>
		<pubDate>Sat, 08 Nov 2008 02:11:56 +0000</pubDate>
		<guid isPermaLink="false">http://number9.hellooperator.net/?p=133#comment-61195</guid>
		<description>@Dick, Java DB (Apache Derby) is a 100% Java database that can run embedded or standalone and I'm not why you're making Java a big case or issue when it is on the contrary a big advantage in the embedded case. Java DB is not bundled with Java 6, it is bundled with 'Sun' JDK 6 (not the JRE).

Java DB is a 'real' Database and not a toy one. Like I said it is not an Enterprise DB but it is robust and can stand a lot of concurrent users, running embedded or in server mode. SQLite is a great database but it does not scale as good as Java DB when running embedded and was not developed to serve that purpose either.

Java DB client interface is JDBC which is a standard Java interface used by other databases as well. Not sure why you're saying it is clunky and cryptic. It is not perfect and has its issues like other CLIs found in other databases.

Again, I don't understand your issue with 1 process at a time. You can have one embedded Java DB instance / engine serving several databases in one JVM - you can connect to this embedded DB using the embedded driver or the client one (TCP stack) by enabling remote access as Java DB is running embedded.

There is a protection lock file to prevent 2 Java DB instances from accessing the same database and causing corruptions (are you talking about this lock file?). If a database could be accessed by 2 different DB 'engine' instances, it would have to be a cluster topology and Java DB does not support a shared-disk clustering topology (e.g. like Oracle RAC), again it is not meant to be enterprise.

You can still access a Java DB database through different applications / connections via the client driver, even when Java DB is running embedded.</description>
		<content:encoded><![CDATA[<p>@Dick, Java DB (Apache Derby) is a 100% Java database that can run embedded or standalone and I&#8217;m not why you&#8217;re making Java a big case or issue when it is on the contrary a big advantage in the embedded case. Java DB is not bundled with Java 6, it is bundled with &#8216;Sun&#8217; JDK 6 (not the JRE).</p>
<p>Java DB is a &#8216;real&#8217; Database and not a toy one. Like I said it is not an Enterprise DB but it is robust and can stand a lot of concurrent users, running embedded or in server mode. SQLite is a great database but it does not scale as good as Java DB when running embedded and was not developed to serve that purpose either.</p>
<p>Java DB client interface is JDBC which is a standard Java interface used by other databases as well. Not sure why you&#8217;re saying it is clunky and cryptic. It is not perfect and has its issues like other CLIs found in other databases.</p>
<p>Again, I don&#8217;t understand your issue with 1 process at a time. You can have one embedded Java DB instance / engine serving several databases in one JVM - you can connect to this embedded DB using the embedded driver or the client one (TCP stack) by enabling remote access as Java DB is running embedded.</p>
<p>There is a protection lock file to prevent 2 Java DB instances from accessing the same database and causing corruptions (are you talking about this lock file?). If a database could be accessed by 2 different DB &#8216;engine&#8217; instances, it would have to be a cluster topology and Java DB does not support a shared-disk clustering topology (e.g. like Oracle RAC), again it is not meant to be enterprise.</p>
<p>You can still access a Java DB database through different applications / connections via the client driver, even when Java DB is running embedded.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dick</title>
		<link>http://number9.hellooperator.net/articles/2008/05/15/javadb-and-glassfish-v3-to-embed-or-not-to-embed#comment-61040</link>
		<dc:creator>Dick</dc:creator>
		<pubDate>Fri, 07 Nov 2008 10:22:41 +0000</pubDate>
		<guid isPermaLink="false">http://number9.hellooperator.net/?p=133#comment-61040</guid>
		<description>@Francois having used JavaDB I can't recommend it, and I updated the post to make that very clear. I don't set out to offend and of course, my opinion is worth exactly what you paid for it :)
 
JavaDB bundles with Java6, but filing bugs and googling fixes for issues it had with NetBeans and Glassfish wasted more of my time than it would have taken to drop in a JDBC jar for a 'real' database.

I expected both^W most of my readers to know the difference between a process and a thread (if not, then thanks for clarifying). Processes 'locking' JavaDBs doesn't hurt scalability, but it does impact servicability - I want to be able to open a CLI session to a running DB.
 
Yes, for standalone databases that's not an issue, but I'd use PostgreSQL for that (or ideally Oracle, run by someone else!)u.

I'm a big fan of embedded databases, but JavaDBs CLI is a bit clunky and cryptic, it's Java only, and the '1 process at a time' option is a *big* irritation. SQLite is a better fit for me.
Hope that clears things up a bit.</description>
		<content:encoded><![CDATA[<p>@Francois having used JavaDB I can&#8217;t recommend it, and I updated the post to make that very clear. I don&#8217;t set out to offend and of course, my opinion is worth exactly what you paid for it <img src='http://number9.hellooperator.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>JavaDB bundles with Java6, but filing bugs and googling fixes for issues it had with NetBeans and Glassfish wasted more of my time than it would have taken to drop in a JDBC jar for a &#8216;real&#8217; database.</p>
<p>I expected both^W most of my readers to know the difference between a process and a thread (if not, then thanks for clarifying). Processes &#8216;locking&#8217; JavaDBs doesn&#8217;t hurt scalability, but it does impact servicability - I want to be able to open a CLI session to a running DB.</p>
<p>Yes, for standalone databases that&#8217;s not an issue, but I&#8217;d use PostgreSQL for that (or ideally Oracle, run by someone else!)u.</p>
<p>I&#8217;m a big fan of embedded databases, but JavaDBs CLI is a bit clunky and cryptic, it&#8217;s Java only, and the &#8216;1 process at a time&#8217; option is a *big* irritation. SQLite is a better fit for me.<br />
Hope that clears things up a bit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Francois Orsini</title>
		<link>http://number9.hellooperator.net/articles/2008/05/15/javadb-and-glassfish-v3-to-embed-or-not-to-embed#comment-60978</link>
		<dc:creator>Francois Orsini</dc:creator>
		<pubDate>Fri, 07 Nov 2008 04:52:21 +0000</pubDate>
		<guid isPermaLink="false">http://number9.hellooperator.net/?p=133#comment-60978</guid>
		<description>Originally I like your blog entry which was very informative and to the point and then I noticed that you added a mention of Java DB being pretty CRAP. Not sure why you added this without developing about it.

In your blog entry you mention that only 1 process can access a Java DB database - well this statement can be very confusing as to people thinking it is a single-user database, where it is NOT. Java DB is a multi-threaded engine which can run many user connections concurrently and in a multi-processor enviroment as well (since the JVM supports this).

It is not a multi-process database architecture which means only 1 process will server lots of concurrent user connections (like GlassFish does for instance).

Java DB has always been multi-threaded since its inception 10 years ago at Cloudscape.

Several glassfish instances can for instance access a Java DB instance running as a standalone server and in parallel. Java DB / Apache Derby is a robust and mature database with an active users and developers community.

It is not an Enterprise DB and never meant to be. On the other hands it can sustain lots of concurrent users in an embedded (server or not) and as a plain standalone server (as other multi-user databases). Thanks.</description>
		<content:encoded><![CDATA[<p>Originally I like your blog entry which was very informative and to the point and then I noticed that you added a mention of Java DB being pretty CRAP. Not sure why you added this without developing about it.</p>
<p>In your blog entry you mention that only 1 process can access a Java DB database - well this statement can be very confusing as to people thinking it is a single-user database, where it is NOT. Java DB is a multi-threaded engine which can run many user connections concurrently and in a multi-processor enviroment as well (since the JVM supports this).</p>
<p>It is not a multi-process database architecture which means only 1 process will server lots of concurrent user connections (like GlassFish does for instance).</p>
<p>Java DB has always been multi-threaded since its inception 10 years ago at Cloudscape.</p>
<p>Several glassfish instances can for instance access a Java DB instance running as a standalone server and in parallel. Java DB / Apache Derby is a robust and mature database with an active users and developers community.</p>
<p>It is not an Enterprise DB and never meant to be. On the other hands it can sustain lots of concurrent users in an embedded (server or not) and as a plain standalone server (as other multi-user databases). Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
