Home   |    Products   |    Services   |    Company Profile  |    Client Profiles  |    News 

HorizonJ:
Overview
Design Philosophy
Core Feature List
Application Characteristics
FAQ
 
HorizonJ

Frequently Asked Questions
Application Architecture
1) What is an Application Architecture?
2) How does an application architecture compare to a technical architecture?
3) Why is an application architecture important?
HorizonJ Overview
4) How does HorizonJ simplify Java application development?
5) What built-in application components does HorizonJ provide?
6) What application servers can I use with HorizonJ?
7) What databases management systems can I use with HorizonJ?
Developer Questions
8) How does HorizonJ help me build better object-oriented applications?
9) How does HorizonJ support object-relational mapping?
10) Does HorizonJ support the Model-View-Controller (MVC) design pattern for developing Java Server Pages (JSP) applications?

Application Architecture

1) What is an Application Architecture?

An application architecture describes a consistent approach for building a software application. It is both design patterns and software frameworks that ensure that all code for a software development project is of high quality and consistent. Good application architectures package several useful features and functions to solve recurring software development challenges and to insulate the developers from the technical architecture, allowing developers to focus on solving business problems, not technical problems.

2) How does an application architecture compare to a technical architecture?

An application server vender such as IBM or BEA supplies a technical architecture. A technical architecture provides a scalable environment in which applications can be deployed. Technical architectures, however, do not provide specifics on how to build an application. An application architecture, like HorizonJ, is used to hide the complex interactions with the technical architecture in a way that easy for application developers to understand.

3) Why is an application architecture important?

If it is your goal to build applications that will be easily extensible and maintainable, a solid application framework is critical.

Simply buying a Java application server isn't enough. Software development projects that don't define an application framework end up with code that is inconsistent and takes longer to develop. Quite often, it becomes an unwanted challenge for one developer to maintain and integrate with code developed by another developer. By the time management recognizes the need for a consistent approach, it is too late -- the project is over budget and the software is riddled with defects.

HorizonJ Overview

4) How does HorizonJ simplify Java application development?

HorizonJ simplifies Java application development by defining the parameters to which an application should be built. HorizonJ simplifies such tasks as object oriented programming, designing and interacting with relational databases, developing user interfaces, controlling application flow, and distributed object design. Because HorizonJ uses no proprietary application server or database features, applications built with HorizonJ can be deployed on several application servers and databases.

5) What built-in application components does HorizonJ provide?

HorizonJ provides a number of built-in application components, intended to make application development easier. Extensions include User/Role based authorizations, application integration components, auditing/personalization, and a rules engine. All extensions are built using the HorizonJ base application framework.

6) What application servers can I use with HorizonJ?

HorizonJ applications can be deployed in any J2EE application server. It has been tested with Weblogic, JRun, Resin, Tomcat, and Websphere. For applications where scalability is less of a concern, HorizonJ can be used without an application server.

7) What databases management systems can I use with HorizonJ?

HorizonJ has been tested with MS SQL Server, Oracle, IBM DB2, and MySQL.

Developer Questions

8) How does HorizonJ help me build better object-oriented applications?

HorizonJ provides a framework for defining business objects, attributes, and relationships, allowing an intuitive path from UML diagrams to Java code. Smart attributes ensure that business rules are encapsulated in the business objects and relationships let you easily traverse a network of objects.

9) How does HorizonJ support object-relational mapping?

HorizonJ has a built-in persistence manager that dynamically generates SQL to add, update, delete and retrieve business objects from a relational database. With HorizonJ, there are no mapping tools, no SQL code generators, and no awkward database mapping configuration files. Developing your objects is all you need to do. The HorizonJ persistence manager can even do complex tasks such as multi-table joins. See the HorizonJ feature list for more details.

10) Does HorizonJ support the Model-View-Controller (MVC) design pattern for developing Java Server Pages (JSP) applications?

A common complaint about JSP technology is that it is very easy to ignore the well-known Model-View-Controller (MVC) design pattern and create applications that are unmanageable. HorizonJ solves this problem by providing components and frameworks for each logical tier.

Model

The model tier defines the business logic. All object behavior and relationships are defined in the model tier. With HorizonJ, the model tier is defined using persistent entities and smart data types, forcing all business rule validation to be defined in the business objects.

View

The view tier defines how information is displayed to an end user. HorizonJ provides JSP tag libraries and patterns for developing JSP files without coding business logic.

Controller

The controller tier controls the flow of the application. HorizonJ supports the controller tier by providing out-of-box servlets to handle entity controller functions as search, add, update, and delete. In addition, the HorizonJ page container classes provide a solid framework for defining custom application control handlers.