Welcome!

Java Authors: PagerDuty Blog, Sematext Blog, Pat Romanski, Jayaram Krishnaswamy, Liz McMillan

Related Topics: Java, Linux, SYS-CON MEDIA, IT SOLUTIONS GUIDE

Java: Article

i-Technology Viewpoint: "Spring Good!"

Rick Hightower Gives New Year's Thumbs-Up To Java/J2EE Application Framework

If you have not looked into Spring yet, it is time. Here is why you should!

Grady Booch once said that the great thing about objects is that they can be replaced. The great thing about Spring is it helps you replace them. With Spring, you simply inject collaborating objects called dependencies using JavaBeans properties and configuration files. Then it's easy enough to switch out collaborating objects when you need to. Spring allows you to dynamically add services to objects called aspects. This is similar to the Decorator Design pattern, but does not require you to recompile your code base to apply these services. This allows you to replace objects with objects that enhance the originals.

The ability to inject collaborating objects is often called IoC (inversion of control). Thus, Spring is an IoC container. If you follow the latest developer buzz then you've likely heard of IoC (Inversion of Control) containers and AOP (aspect-oriented programming). Like many developers, however, you may not see where these technologies fit into your development efforts. As the word inversion implies, IoC is like JNDI turned inside out. Instead of using a tangle of abstract factories, service locators, singletons, and straight construction, each object is constructed with its collaborating objects. Thus, the container manages the collaborators. (Collaborators are objects that an object needs to fullfill its role.)

The ability to dynamically add services to objects is called AOP. AOP allows developers to create non-domain concerns, called crosscutting concerns, and insert them in their application code. With AOP, common services like logging, persistence, transactions, and the like can be factored into aspects and applied to domain objects without complicating the object model of the domain objects.

Thus, Spring is an IoC/AOP container. There are many IoC containers. There are also many AOP frameworks. If Spring was only an IoC/AOP container, it would be worth your attention and interest since it seems to be the most mature. Spring is a lot more than an IoC/AOP container.

What makes Spring different than the other frameworks and containers, is Spring goes beyond just being an IoC container or an AOP framework. The other containers are academic interests, and some are quite good. They provide good support of IoC and AOP.

Spring goes one step further by eating its own dog food. It uses IoC and AOP to provide a comprehensive library for simplifying J2EE development. This comprehensive library is written with aspects, dependency injection and OOP best practices.

Spring makes J2EE development easier. It does this with a variety of mechanisms. One common mechanism is its use of templates. A template is a cross between a utility class and execution environment. Spring Templates are an embellishment and extention of the Template design pattern (GOF).

At first glance templates appear to be well written utility classes. However, templates provide a lot more than just utility functions. Templates provide and execution environment. When using a template you first endeavor to use one of its it utility method. If the template doesn't have a utility method you need, you implement a callback object. The callback object has a method that executes a method in the environment of the template. The template therefore takes care of things like exception handling and resource management in a consistent manner. This means your code base will not be littered with try/catch/finally blocks, and it is easier to ensure that resources and exception are handled correctly.

Spring promotes good programming practices. It does this by providing great examples how to use IoC and AOP in a consistent manner. It also does this by showing how to build things like templates to manage resources and exceptions in the consistent manner. It goes even further by building sets of frameworks on top of  IoC, AOP and templates that are the embodiment of good OO programming.

The IoC capabilities allowing injection of dependent objects turns out to be a great mechanism for testing your code. It is easy now to inject mock objects (object for testing), and test your classes in an isolated manner. For example, you can test you business delegates without relying on the DAO (Data access objects) objects talking to the database. Essentially Spring took back development from the design pattern hacks deemed necessary to program J2EE. As Rod Johnson once put it: Spring puts the OO back in J2EE development.

Spring provides portability through abstraction of common services. For example, Spring provides a common interface object relational management (ORM) systems like Hibernate, JDO, Cayenne, Spring JDBC and iBatis. It provides a mechanism for building DAO objects that divorces the client code from the underlying implementation. it does this by providing a common set of exceptions like object not found exception, and making these exception runtime exceptions.

Spring provides a easy on-ramp for many industry-standard projects. And not just industry-standard projects but the de facto industry-standard projects. The projects that people actually use to get their daily work done. For example, Spring provides support for JDO, Hibernate, Quartz, Tapestry, JavaServer faces, and many more frameworks. Its been said that Spring simplifies J2EE development, and that is a primary focus of Spring. However,Spring provides utilities to work with all tiers of an n-tier application. For an MVC application, there are utilities for working with View technologies (Struts, Spring, Rich Client etc.), Model (EJB, AOP based transaction, AOP based security, etc.), etc. You can use Spring to build Swing and SWT applications.

If you have not looked into Spring yet, it is time.

------------------------------------------------
The above started as a reply to Cameron Purdy's prediction list, which I really liked. Then I got carried away and it became a full blown plug for Spring. (Darn Caffiene!)

What is Spring?

Spring is a popular AOP/IoC framework that was developed by Rod Johnson, Juergen Hoeller et al. Spring simplifies J2EE and Java development. Rod Johnson is the famed author who wrote Expert One-on-One J2EE Design and Development.

Spring makes J2EE development easier. Spring is a J2EE framework that simplifies commons tasks and encourages good design based on programming to interfaces. Springs makes your application easier to configure and reduces the need for many J2EE design patterns (quite a few J2EE design patterns are really glorified hacks that clutter your code base). Spring puts the OO design back into your J2EE application.

More Stories By Rick Hightower

Rick Hightower serves as chief technology officer for ArcMind Inc. He is coauthor of the popular book Java Tools for Extreme Programming, which covers applying XP to J2EE development, and also recently co-authored Professional Struts. He has been working with J2EE since the very early days and lately has been working mostly with Maven, Spring, JSF and Hibernate. Rick is a big JSF and Spring fan. Rick has taught several workshops and training courses involving the Spring framework as well as worked on several projects consulting, mentoring and developing with the Spring framework. He blogs at http://jroller.com/page/RickHigh.

Comments (4) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Rick Hightower 01/08/05 06:26:10 PM EST

The article (like the last one I wrote) started out as being a blog entry (http://jroller.com/page/RickHigh/20050107#spring_plug).

It is nice when the JDJ picks it up and gives it more exposure. The last blog entry turned article I wrote was read quite a bit according to the JDJ folks.

I've written some follow up ideas at:

http://www.arc-mind.com/papers/springIsGood.html

Rick Hightower 01/08/05 05:53:57 PM EST

I've used Spring on a half dozen different projects now (most if not all of them in production).

The first time I used Spring I was amazed how much it helped to simplify the code base.

Once you get rid of all of the service locators, and dynamic creation of implementations, and singletons, etc. then the code base gets a bit smaller.

Also using the Spring templates really helps to keep things simple and yet manage resources well.

I much prefer using Hibernate with Spring then without it. It really simplifies things.

Agreed 01/08/05 05:20:08 AM EST

Spring manages your mappings and helps maintain consistency across your data connections and helps you abstract your business logic, keeping it out of the actual pages. Best of all it also integrates with Struts.

Spring has sprung 01/08/05 05:04:16 AM EST

Wasn't it Purdy who said it's imposible to resist saying the word Spring. ("Yup, it's like trying not to think of pink elephants - impossible once you get that in your head. Spring, spring, spring, spring. La tee dah, spring spring spring.")

What's in a name?

@ThingsExpo Stories

ARMONK, N.Y., Nov. 20, 2014 /PRNewswire/ --  IBM (NYSE: IBM) today announced that it is bringing a greater level of control, security and flexibility to cloud-based application development and delivery with a single-tenant version of Bluemix, IBM's platform-as-a-service. The new platform enables developers to build ap...

Building low-cost wearable devices can enhance the quality of our lives. In his session at Internet of @ThingsExpo, Sai Yamanoor, Embedded Software Engineer at Altschool, provided an example of putting together a small keychain within a $50 budget that educates the user about the air quality in their surroundings. He also provided examples such as building a wearable device that provides transit or recreational information. He then reviewed the resources available to build wearable devices at home including open source hardware, the raw materials required and the options available to power s...
The Internet of Things promises to transform businesses (and lives), but navigating the business and technical path to success can be difficult to understand. In his session at @ThingsExpo, Sean Lorenz, Technical Product Manager for Xively at LogMeIn, demonstrated how to approach creating broadly successful connected customer solutions using real world business transformation studies including New England BioLabs and more.
Since 2008 and for the first time in history, more than half of humans live in urban areas, urging cities to become “smart.” Today, cities can leverage the wide availability of smartphones combined with new technologies such as Beacons or NFC to connect their urban furniture and environment to create citizen-first services that improve transportation, way-finding and information delivery. In her session at @ThingsExpo, Laetitia Gazel-Anthoine, CEO of Connecthings, will focus on successful use cases.
Enthusiasm for the Internet of Things has reached an all-time high. In 2013 alone, venture capitalists spent more than $1 billion dollars investing in the IoT space. With "smart" appliances and devices, IoT covers wearable smart devices, cloud services to hardware companies. Nest, a Google company, detects temperatures inside homes and automatically adjusts it by tracking its user's habit. These technologies are quickly developing and with it come challenges such as bridging infrastructure gaps, abiding by privacy concerns and making the concept a reality. These challenges can't be addressed w...
The Domain Name Service (DNS) is one of the most important components in networking infrastructure, enabling users and services to access applications by translating URLs (names) into IP addresses (numbers). Because every icon and URL and all embedded content on a website requires a DNS lookup loading complex sites necessitates hundreds of DNS queries. In addition, as more internet-enabled ‘Things' get connected, people will rely on DNS to name and find their fridges, toasters and toilets. According to a recent IDG Research Services Survey this rate of traffic will only grow. What's driving t...
The Internet of Things is a misnomer. That implies that everything is on the Internet, and that simply should not be - especially for things that are blurring the line between medical devices that stimulate like a pacemaker and quantified self-sensors like a pedometer or pulse tracker. The mesh of things that we manage must be segmented into zones of trust for sensing data, transmitting data, receiving command and control administrative changes, and peer-to-peer mesh messaging. In his session at @ThingsExpo, Ryan Bagnulo, Solution Architect / Software Engineer at SOA Software, focused on desi...
"For over 25 years we have been working with a lot of enterprise customers and we have seen how companies create applications. And now that we have moved to cloud computing, mobile, social and the Internet of Things, we see that the market needs a new way of creating applications," stated Jesse Shiah, CEO, President and Co-Founder of AgilePoint Inc., in this SYS-CON.tv interview at 15th Cloud Expo, held Nov 4–6, 2014, at the Santa Clara Convention Center in Santa Clara, CA.
The Industrial Internet revolution is now underway, enabled by connected machines and billions of devices that communicate and collaborate. The massive amounts of Big Data requiring real-time analysis is flooding legacy IT systems and giving way to cloud environments that can handle the unpredictable workloads. Yet many barriers remain until we can fully realize the opportunities and benefits from the convergence of machines and devices with Big Data and the cloud, including interoperability, data security and privacy.
The Internet of Things is tied together with a thin strand that is known as time. Coincidentally, at the core of nearly all data analytics is a timestamp. When working with time series data there are a few core principles that everyone should consider, especially across datasets where time is the common boundary. In his session at Internet of @ThingsExpo, Jim Scott, Director of Enterprise Strategy & Architecture at MapR Technologies, discussed single-value, geo-spatial, and log time series data. By focusing on enterprise applications and the data center, he will use OpenTSDB as an example t...
The industrial software market has treated data with the mentality of “collect everything now, worry about how to use it later.” We now find ourselves buried in data, with the pervasive connectivity of the (Industrial) Internet of Things only piling on more numbers. There’s too much data and not enough information. In his session at @ThingsExpo, Bob Gates, Global Marketing Director, GE’s Intelligent Platforms business, to discuss how realizing the power of IoT, software developers are now focused on understanding how industrial data can create intelligence for industrial operations. Imagine ...
Cultural, regulatory, environmental, political and economic (CREPE) conditions over the past decade are creating cross-industry solution spaces that require processes and technologies from both the Internet of Things (IoT), and Data Management and Analytics (DMA). These solution spaces are evolving into Sensor Analytics Ecosystems (SAE) that represent significant new opportunities for organizations of all types. Public Utilities throughout the world, providing electricity, natural gas and water, are pursuing SmartGrid initiatives that represent one of the more mature examples of SAE. We have s...
There is no doubt that Big Data is here and getting bigger every day. Building a Big Data infrastructure today is no easy task. There are an enormous number of choices for database engines and technologies. To make things even more challenging, requirements are getting more sophisticated, and the standard paradigm of supporting historical analytics queries is often just one facet of what is needed. As Big Data growth continues, organizations are demanding real-time access to data, allowing immediate and actionable interpretation of events as they happen. Another aspect concerns how to deliver ...
Scott Jenson leads a project called The Physical Web within the Chrome team at Google. Project members are working to take the scalability and openness of the web and use it to talk to the exponentially exploding range of smart devices. Nearly every company today working on the IoT comes up with the same basic solution: use my server and you'll be fine. But if we really believe there will be trillions of these devices, that just can't scale. We need a system that is open a scalable and by using the URL as a basic building block, we open this up and get the same resilience that the web enjoys.
The Internet of Things will greatly expand the opportunities for data collection and new business models driven off of that data. In her session at @ThingsExpo, Esmeralda Swartz, CMO of MetraTech, discussed how for this to be effective you not only need to have infrastructure and operational models capable of utilizing this new phenomenon, but increasingly service providers will need to convince a skeptical public to participate. Get ready to show them the money!
The 3rd International Internet of @ThingsExpo, co-located with the 16th International Cloud Expo - to be held June 9-11, 2015, at the Javits Center in New York City, NY - announces that its Call for Papers is now open. The Internet of Things (IoT) is the biggest idea since the creation of the Worldwide Web more than 20 years ago.
Cloud Expo 2014 TV commercials will feature @ThingsExpo, which was launched in June, 2014 at New York City's Javits Center as the largest 'Internet of Things' event in the world.
"People are a lot more knowledgeable about APIs now. There are two types of people who work with APIs - IT people who want to use APIs for something internal and the product managers who want to do something outside APIs for people to connect to them," explained Roberto Medrano, Executive Vice President at SOA Software, in this SYS-CON.tv interview at Cloud Expo, held Nov 4–6, 2014, at the Santa Clara Convention Center in Santa Clara, CA.
SYS-CON Media announced that Splunk, a provider of the leading software platform for real-time Operational Intelligence, has launched an ad campaign on Big Data Journal. Splunk software and cloud services enable organizations to search, monitor, analyze and visualize machine-generated big data coming from websites, applications, servers, networks, sensors and mobile devices. The ads focus on delivering ROI - how improved uptime delivered $6M in annual ROI, improving customer operations by mining large volumes of unstructured data, and how data tracking delivers uptime when it matters most.
DevOps Summit 2015 New York, co-located with the 16th International Cloud Expo - to be held June 9-11, 2015, at the Javits Center in New York City, NY - announces that it is now accepting Keynote Proposals. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait for long development cycles that produce software that is obsolete at launch. DevOps may be disruptive, but it is essential.