SRJRCFrames Overview

History

This framework arised from the project VdrAssistant, and as the number of applications, that used SR-JRC-Framework, growed up it was time for the framework to become a toplevel project.

VdrAssistant was born by the desire to have a graphical designer for DVD-menuepages and to migrate the project to java from a small perl/Tk script. I evaluated several JRC-frameworks, but none of them offered the freedom and ease of usage, I was looking for. Therefor I made up my mind to build the whole application from scratch. Many people asked me - why don't you use ...
All will use that ...

So - first of all, I'm not attracted to the chinese principle - and I don't care, who or how many like my ideas. On the other side I wanted to research, wether it was possbile to create database oriented applications without having to care about database syntax as application developer. But most of all I'm bugged by existing database abstraction layers by having to edit the same thing at different places without assistance for synchronization ...
So I wanted to see, if I could do different ...

The other questions are not that simple to answer, so I'd like to list the major topics, that guided my design:

Design-Requirements

  • I wanted to use a database, whithout having to care about database variant or syntax as application developer
  • I wanted to use inheritance for database objects, even if the derived class is unknown at application creation time.
  • I wanted to support different window manager, that coule be choosen by users configuration without any dependency to application development.
  • I wanted applications independant of the used services - like webapplications and application servers.
  • I wanted applications, that could be extended without rebuilding
  • I wanted to support user extensions for applications
  • applications should be enabled to synchronize without dependency

What is different?

Surely, there are lots of simmilar frameworks. The main difference to this one is that I wanted to create an application. So I first asked myself, how I would like to use certain class as an app-developer. Then I started to make things work.

So this framework is not designed by an theorizer, but build and verified by an application developer and the framework and its design is proven every day.

Therefore I can state: SRJRCFrames is usable.

If you're interested in the internals of SRJRCFrames, take a look at the userguide.

Development

That leaded to a service oriented architecture with a central servicemanager, where services can be added, requested and/or changed at any time. So a dynamically loadded application can offer a service, that another application can use without knowing anything about the application that offered the service.

The persistence layer works transaction based, which means, that there exists read and write operations, that can be attached to a transation. When all operations are attached, the transaction can be executed and the application does not know and does not need to know, which resource is responsable for certain operation. That increases independance of components.

I started with springframework, but very soon I reduced the used parts of that framework to a minimum, as I had to realize, that springframework locks you more, than its usage helps reducing development time. Opposed to springframework, JGoodies convinced me from first touch and the happiness with that libraries did not disappear. So JGoodies is the grounding of SRJRCFrames. Same saying is true even more for glazedlists - the best I ever got in touch with from javaworld.

Finally I succeeded in loading the database-driver at runtime - based on user configurations and integration of postgreSQL is nearly completed.

Samples

At First steps the basics of SRJRCFrames are explained. If you're looking for a high sophisticated sample, take a look at the Project VdrAssistant. There you'll find several loadable applications, synchronizing applications, master-detail-synchronization and several system services, that heavily interact with operating system and external non-java tools. Finally there's an installer wizzard, that shows the usage of extended validation.

Status

Most design requirements have already been implemented, or at least prepared for implementation. VdrAssistant is in production usage, but the framework is not ready at all. There's stil a lot to do ...
Meanwhile the JDBC-driver of postgresql works, so currently mysql and postgresql are supported databases. Others will follow, as soon I have time to dedicate to that job.