Robert C.Martin wrote an interesting article about a set of metrics that can
be used to measure the quality of an object-oriented design in terms of the
interdependence between the subsystems of that design.
Here's from the article what he said about the interdependence between
What is it that makes a design rigid, fragile and difficult to reuse. It is
the interdependence of the subsystems within that design. A design is rigid
if it cannot be easily changed. Such rigidity is due to the fact that a
single change to heavily interdependent software begins a cascade of changes
in dependent modules. When the extent of that cascade of change cannot be
predicted by the designers or maintainers the impact of the change cannot be
estimated. This makes the cost of the change impossible to estimate.
Managers, faced with such unpredictability, become reluctant to autho... (more)
Hibernate is an open source Java persistence framework project. Perform
powerful object relational mapping and query databases using HQL and SQL.
In general the widely used libraries are well designed and implemented, and
it's very interesting to learn from them some coding best practices. Let's
take a look inside the hibernate core library and discover some of its design
keys. In this post Hibernate Core is analyzed by JArchitect to go deep inside
its design and implementation.
Package by Feature
Package-by-feature uses packages to reflect the feature set. It places all
items re... (more)
Many Java static analysis tools exist right here, each one focusing on a
specific area and each one has its advantages, we can enumerate:
Pmd which is a static rule-set based Java source code analyzer that
identifies potential problems like: Possible bugs—Empty
try/catch/finally/switch blocks. Dead code—Unused local variables,
parameters and private methods. Empty if/while statements. Overcomplicated
expressions—Unnecessary if statements, for loops that could be while loops.
Suboptimal code—Wasteful String/StringBuffer usage. FindBugs which looks
for bugs in Java code. It uses s... (more)
Relational database management systems are the most commonly used system to
store and use data, but for extremely large amounts of data, this kind of
system doesn’t scale up properly.
The concept of "NoSQL"(Not Only SQL) has been spreading due to the growing
demand for relational database alternatives. The biggest motivation behind
NoSQL is scalability. NoSQL solutions can offer a way to store and use
extremely large amounts of data, but with less overhead, less work, better
performance, and less downtime.
Apache Cassandra implements the “NoSQL” concept. It was developed at
JRE 6 was released in 2006, five years after a major JRE version was
released. For the past few years Java was looking stagnant, and many Java
developers began to worry; this concern was amplified when Oracle purchased
We will try to discover if there's a big refactoring or maybe many features
were added that can explain the time span between these two releases. In this
first part we will focus on design and implementation changes, and the second
part will focus on added features and breaking changes.
With JavaDepend we can compare two versions and detect any modifications ... (more)