Looking at the latest trends in enterprise software development, I see a number of emerging patterns. Many organizations are aggressively pursuing a policy of employing lower-cost labor. Simultaneously, enterprise development is becoming ever more complex. These two forces are in direct opposition.
Not only is development complexity increasing, but another element is at work—what might be called convergent software. In a sense, the layers of development technology are merging. For an example of this trend, you need look no further than technologies such as JPA, Hibernate, and EJB3. Each of these technologies represents a confluence of what were previously separate disciplines:
- The Java Persistence API (JPA) uses an annotation-rich environment to conjoin Java and persistence coding.
- Native Hibernate provides much of the same capability as JPA, while also facilitating direct database interaction.
- Enterprise JavaBeans 3.0 (EJB3) provides an incredibly simple but powerful unified model for bean modeling, persistence support, web services, etc.
In my opinion, these trends are welcome because they help to flatten the hierarchy of developers. If Developer X has previously focused on an area such as web services development, for example, it's feasible for Developer X to master persistence development.
Such skill diversification is no longer a choice—as developers, we all must strive to move up the value chain. The good news is that these emerging technologies are finally beginning to provide a platform for autonomous learning. To see how this is true for JPA and Hibernate, let's look at how to build a program with this interesting technology.