Hi Shazin,

Some comments inline...

Shazin Sadakath wrote:
Hi Dag/Rick

Thanks for the very descriptive information on the advantages of Java Routines. I am a huge fan of derby and I really appreciate the work you guys have put in to bring derby where it is now.

But I would like to list some cons of Java Routines. Correct me if I am wrong.

1. Java Routine is not really stored procedures.
I'm not following you. Java routines are defined in part 13 of the ANSI/ISO SQL spec. As such they are full-fledged functions and routines according to the standard.
2. A Change in Java Routine code implementation requires recompilation
3. A Change in Java Routine code implementation requires repackaging (Jar)
4. A Change in Java Routine code implementation requires replacing of the old jar with the new one
using sqlj.replace_jar
Yes except for (4). If you put the user-coded jar alongside the derby jar on the application classpath then you don't need to use the sqlj procedures to load and replace your user-code.
5. Requires extensive knowledge of Java. For server database this is a disadvantage because in the future if you are hoping to support other languages (PHP, C++, .NET) to access derby server, those developers have to know Java to create Java Routines.
Yes, this is a weakness for developers who don't know Java.

Note that Java routines give you good integration with other languages, including more dynamic languages, which run on the Java VM.
6. Database servers such as Oracle, Sybase also support Java Routines along with their own SQL Stored Procedures (SQL/PSM) whereas derby only supports Java Routines.
That's right. In simple cases, SQL/PSM can be a productive language. But for even a modestly complicated routine, Java has significant advantages in terms of its expressiveness, safety, pluggability, libraries, and tooling.



I am in no means against derby database. In fact I am a Java Developer myself and I am currently studying the derby database for academic reasons.
As you can tell, I am a Java enthusiast. I regard Java as a well designed, expressive, and productive language. And I regard the Java platform as a very secure computing environment.

Regards,
-Rick

Regards,
Shazin



On Tue, Sep 8, 2009 at 6:56 PM, Rick Hillegas <[email protected] <mailto:[email protected]>> wrote:

    Hi Shazin,

    In addition to what Dag said, I would say this:

    1) Writing your procedural code in Java (rather than SQL/PSM)
    makes it possible to factor your code so that pieces (like
    integrity and validation logic) can be shared across all tiers of
    your application. As you tune your application, you can move that
    code up and down the call-stack to the tier where you get the best
    performance. The same code can run in your client, in the middle
    tier, and in the database itself.

    2) Writing your procedural code in Java (rather than SQL/PSM)
    gives you access to a large ecosystem of development tools,
    including debuggers. You can debug your application in embedded
    mode--here the same debugger is responsible for your procedural
    code and your client code.

    3) Writing your procedural code in Java gives your database
    procedures access to all the advantages of the Java language
    itself, including:

    a) a large ecosystem of off-the shelf freeware
    b) compilers which do half of your debugging for you
    c) powerful exception handling

    The "Java in the Database" presentation (from Apache Con USA 2006)
    may be useful: http://db.apache.org/derby/papers/ApacheCon.html

    Hope this helps,
    -Rick


    Shazin Sadakath wrote:

        Hi,

        Recently I have been going through the Wiki
        http://wiki.apache.org/db-derby/DerbySQLroutines

        And it states I quote " The advantage of Java procedures is
        that the same procedure will run on any database that supports
        the standard, such as Derby, IBM's DB2 and Oracle"

        Apart from this single advantage there aren't much to
        registering Java Procedures in derby database, so why doesn't
        derby database support standard SQL Stored Procedures (Such as
        Oracle PL/SQL..) without registering public static void
        methods as Stored Procedure. Any particular reason to this?

        Thanks in advance,

        Shazin




Reply via email to