Skip to main content.

Company

DWSystems LLC is a software consulting group primarily involved in the development of Web Applications written in Java.

We are designers and developers of robust, scalable, secure e-Business solutions for internet, intranet and extranet applications. We specialize in Java-J2EE Web applications running under Tomcat (sometimes WebLogic) using technologies developed in-house as well open source frameworks like Hibernate, Spring and Acegi Security, and various relational databases (mySQL, Oracle, SqlServer).

^ TOP

Technologies & Frameworks

Database

Our staff has considerable experience developing applications using Oracle and mySQL database servers. We prefer Oracle for its stability, crash recovery and versatility. It does have some non-standard idiosyncrasies (zero-length string is a null ???), but they have kept it fairly compatible across many versions. But mySQL is, however, not a bad choice when you consider the license fee and someday it will catch up with Oracle in terms of crash recovery etc. We don't mind working with MS SQLServer either, though we have seen it take up 100% of the CPU and no way to recover except to kill it. However, the jdbc driver for their newest version is a great improvement over older ones.

Object Relational Mapping

Hibernate is so widely used these days, that it has almost become an unofficial standard. The software has so many options for model definition, runtime operation, and caching (it will do your laundry if you can figure out the XML for it) that it is best to find just one way to use hibernate and stick with it. The learning curve is quite high as it is - we do not wish to spend all our time with Hibernate when there is still the application to build. Just when you think you have it all worked out, Hibernate will give you a runtime error saying the session has already closed, or the transaction already set to rollback, or that something has already hit the fan. Usually the cause of the error, if not obvious, is fixable. Sometimes the errors seem unnecessary - if you try to delete an object which has already been deleted, does Hibernate really need to rollback the transaction?

We wish EJB's (see below) were never invented, but we hear that the EJB 3.0 spec has tried to address the mess. For simple applications, we much prefer our own in-house ORM framework - there is not much to learn and you hardly notice it while using. But if you want us to use CocoBase(we have tried it) or something equally arcane, we will do so.

UI Framework

We have been pursuing the holy grail of 'separation' for the UI for many years - separation of HTML and Java, separation of presentation and business logic, separation of view and control, separation of model and view, separation of church and state, and are finally about to give up. As long as it works well, is maintainable, id easy to change, and is not a pain to program, any UI framework should suffice.

We tried Struts 1.x when it first came out - why would anyone make UI development even more tedious than it already is? JSTL was supposed to help, but when you add all the other tag libraries, it feels like yet another language to learn. Tapestry seemed so promising - complete separation - but not only is the learning curve steep, the stuff is weird (all abstract methods and JavaScript code inside Java etc) and slow to boot. Using Tapestry is really no fun, but it will make you feel clever and superior. And now we have JSF! We would rather not use any UI framework at all (but we can be bribed easily to change our minds).

Security

We thought that we had web application security all figured out, until a couple of years ago when a security expert cracked one of our systems and entered it as administrator. Of course, he cheated by looking at our code, but it showed us what can be done. We are wiser now. Defining security in the deployment descriptor or a similar configuration file is a useful thing. Both JAAS and Acegi Security with Spring are great at this, but will the endless XML trail ever end?

Text Search

The choice here is easy - Lucene works better than most commercial text search solutions. However, using a Google search box is not a bad idea either, if you don't mind some additional hardware and cost.

EJBs

We have not had the time to investigate EJB 3.0, but we categorically refuse to work with EJB 1 or 2 (unless of course you pay us a huge amount of money).

Application Server/Containers

We run our webapps mainly under Tomcat. Tomcat has been a stable and easy to use application server. With its clustering ability, it can support fairly large, complex web applications. Given the way we feel about EJBs, we have rarely felt the need to use a EJB container like Weblogic, WebSphere or even JBoss. Howevern, a few customers have asked us to use Weblogic or WebSphere since they did not feel comfortable with a open-source, 'non-commercial' product.

Of course, when you combine a framework like Spring with Tomcat, you often get most of the functionality provided by the major AppServer providers. The Spring framework is an interesting development in Java. They say we don't have to use all its different modules, that we can pick and choose; however, that leaves us a bit confused about which modules we should ignore. So far we have found the transaction management, the dependency injection features, and the integration with Hibernate very useful.

Application Framework or Development Platform

Developing a web application from scratch without a development framework or platform that provides basic application services is not advisable. Not only will you keep reinventing the wheel every time, but you will also be creating and fixing the same bugs each time around. It is far better to develop the general infrastructure or platform first and then build the application specific functionality on top of it. The platform can then be reused for your next application. We have been involved in creating and maintaining several such application development platforms, most of which we can not mention here because the software and license belong to our customers. The only open source platform that we have used (and can recommend) is AppFuse (we tried and gave up on OFBiz which is actually a full application in itself).

AppFuse does a great job of integrating several basic opensource solutions and frameworks that you would need when developing a web application. When you first install it, you already have a complete application, so you can hit the ground running. You just need to add your own specific functionality - database model, business logic and UI to it. Basic stuff like ORM, security, UI framework, user management, login/authentication, and menu structure are already there.

For relatively small applications (about few hundred total users), we prefer to use our own application development platform that we have developed in house - you can download and try it (no license required to use it for any purpose). It also comes with ORM, user management, login/authentication, menus and security structure.

^ TOP

Applications

We have developed many different types of web applications, but they mainly fall under the following categories:

Document Management

File management systems with check-in/check-out, file security and version management.

Business Process Management

Workflow systems for managing processes in a business or office environment.

Product Management

Part and BOM management systems for engineering/manufacturing operrations. Again, version control and security management are major features.

Web Portals

Corporate intranet or extranet systems centralizing functions and communications in medium to large corporations.

Process Control and SCADA

These are not really web applications because they usually have some hard-wired consoles for user interaction (mainly for the use by system operators). The database is more memory-resident and hierarchical rather than relational. However, most of the system functions are accessible through a web interface. ^ TOP

Development Approach & Methodology

TBD