Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX


An Introduction to Antipatterns in Java Applications : Page 2

Just as design patterns provide a way to communicate concisely about desired software practices, antipatterns provide the equivalent advantages for communicating undesirable practices—and here's a set of common antipatterns to get you started.

Architecture Antipatterns
These patterns apply broadly to application architecture. Reinventing the Wheel
This term doesn't need any description. When developing software, you usually have two choices—build on top of an existing technology or start from scratch. While both can be applicable in different situations, it is nevertheless useful to analyze existing technology before reinventing the wheel to develop functionality that already exists and can satisfy the requirements. This saves time, money as well as leveraging knowledge that developers already might have.

Vendor lock-in
This occurs when the software is either partly or wholly dependent on a specific vendor,. One advantage of J2EE is its portability, but it still gives vendors the opportunity to provide rich proprietary features. Assuredly, such features can aid during development, but they can also have a reverse impact at times. One such problem is loss of control. You're probably familiar with the feeling that the feature you need is always six months away. Another such problem is when vendor changes to the product break your software, degrade interoperability, force constant upgrades, etc. One solution is to provide an isolation layer on top of the proprietary stuff. For example, Commons Logging allows you to plug in any logging framework such as Log4J or Java Logging.

J2EE-specific Antipatterns
Table 2 lists few antipatterns for common application layers. To obtain a more complete list of antipatterns in each layer, refer to AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Table 2. Common J2EE Antipatterns: The table lists antipatterns commonly found in the various layers of J2EE applications.

Layer Antipattern
Persistence Dredge
JSP Too much session data
Embedded Navigational Information
Servlet Common Functionality in Every Servlet
Accessing Fine-grained EJB Interfaces
EJBs Large Transactions
Overloading queues in JMS
Web services Assuming SOA = Web service
J2EE Hardcoded JNDI lookups
Not leveraging EJB container

The next page of this article describes the antipatterns listed in Table 2 for each application layer.

Comment and Contribute








