In this CTO Power Panel at the 10th International Cloud Expo, moderated by Cloud Expo Conference Chair Jeremy Geelan, industry-leading CTOs & VPs of Technology will discuss such topics as:
Which do you think is the most important cloud computing standard still to tackle?
Who should and shouldn’t be using a PaaS product today, and why?
Can a public cloud ever be truly secure?
How important is open source to cloud computing and Big Data?
"Mission-critical apps are now safe in the cloud." Tr...| By Bill Burke | Article Rating: |
|
| December 4, 2003 12:00 AM EST | Reads: |
41,065 |
Aspect-oriented programming (AOP) is a promising new paradigm that came out of Xerox PARC a few years ago and is just now becoming mature and mainstream. A natural complement to object-oriented programming, it has the promise of easing the management of complex systems and making their organization much more intuitive, extendable, and flexible. AOP makes OOP multidimensional.
What is an Aspect? An Aspect is a common functionality that's scattered across methods, classes, object hierarchies, or object models. Functionality that your class or object model shouldn't be concerned about, functionality that doesn't belong as it's not what the object is all about. The AOP-ites like to call this type of functionality crosscutting concerns, as the behavior is cutting across multiple points in your object models, and yet is distinctly different from the classes it's crosscutting. AOP allows you to abstract and seamlessly componentize these concerns and apply them to your applications in a unique way that regular object-oriented programs cannot achieve very easily.
A simple example of a crosscutting concern is timing and metrics. Let's say you wanted to add code similar to Listing 1 to your application that would measure the amount of time it would take to invoke a particular method.
There are a few problems with this approach:
1. You have to manually add this code to multiple different files, methods, and classes, which is a pain; if you want to change which methods are profiled you have to manually edit those files. In other words, this is hard to turn off and on and difficult to maintain.
2. The profiling code really doesn't belong sprinkled throughout your application code. It makes your code bloated and harder to read as you have to enclose the timings within a try-finally block.
3. If you want to add other metrics like a method count or a failure count, you would have to modify all the files where you manually inserted the profiling code. It's very difficult to maintain, expand, and extend your metrics functionality as it's dispersed throughout your entire code base.
This is a tiny example of how you can have common code that is sprinkled across many unrelated modules of your application; code that intrudes on the overall purpose of the Java class you're implementing. Aspect-oriented programming provides a way to pull together these common behaviors into a manageable unit and apply them to your code base. Let's look at how AOP would implement and solve this problem.
Defining an Aspect
The first thing that should be done to aspectize the metrics functionality would be to create an Aspect. The try-finally block that we originally had within the BankAccount.withdraw method should be extracted and encapsulated into its own object. Having this code within its own object enables us to easily expand and maintain any additional metrics we may want to calculate later on in the development cycle. For this object to work, it must be able to wrap around and obtain contextual information about the particular method you want to add profiling to so that metrics can be displayed. There are a few AOP frameworks out there, so rather than picking one framework to give an example in, let's look at some pseudo code that could be easily translated into a real framework later on (see Listing 2).
The MetricsAspect class pulls together the metrics functionality into one maintainable, extendable unit. The invoke method at line 3 should be called in place of the actual method you want to provide metrics for. All AOP frameworks should provide some form of abstraction for wrapping/intercepting a method call. Line 8 wraps and delegates to the actual method. Line 13 assumes that you can obtain contextual information about the method call from the AOP framework you are using.
Applying an Aspect
Now that we have extracted out the metrics functionality into a componentized Aspect, how can we apply it? This is where a pointcut comes in. A pointcut defines an entry point within your code base. It describes an event. An entry point could be a field access, a method call, or a constructor call. An event could be an exception being thrown. A pointcut is a way for you to define where you want your aspects applied. Let's look at some pseudo XML configuration for a pointcut that any AOP framework should be able to do in some form or another.
1. <method-pointcut expr="com.mc.BankAccount.withdraw(double amount)">
2. <attach-aspectclass="com.mc.MetricsAspect"/>
3. </method-pointcut>
4. <method-pointcut expr="com.mc.billing.*">
5. <attach-aspectclass="com.mc.MetricsAspect"/>
6. </method-pointcut>
Lines 1-3 define a pointcut that applies the metrics aspect to the specific method BankAccount.withdraw. Lines 4-6 define a general pointcut to apply the metrics aspect on all methods in all classes under the com.mc. billing package name. Most AOP frameworks have a rich set of pointcut expressions that you can use to apply your aspects. You can attach your aspects on an individual one-on-one basis to each Java class in your application, or you can use a more complex pointcut to specify a wide range of classes with one expression.
What this example shows is that with AOP, you're able to pull together crosscutting behavior into one object and sprinkle it easily and simply throughout your code base without making code unreadable or polluted with functionality that doesn't belong with the business logic you are implementing. Common crosscutting functionality can be maintained and extended in one place.
Another thing to notice is that the code within the BankAccount class has no idea that it's being profiled. The application developer was allowed to focus on writing business logic rather than being distracted with writing the code candy and syntactic sugar of profiling. Needed orthogonal behavior could be snapped on after the fact quite easily without even touching this existing code base. This is a very subtle significant part of AOP as this complete obliviousness allows aspects to be layered on top of or below the functionality they are crosscutting. A layered design allows you, as a system designer, to more easily snap on or remove functionality or behavior that you need. For instance, maybe you only snap on the metrics functionality when you're doing some benchmarks but want to remove this within production. Or, if the AOP framework allows for it, maybe you want to turn on metrics in production to determine where bottlenecks are.
Real-World AOP
In the early days of object-oriented programming, it was user-interface applications that helped to scope and discover object-oriented patterns and techniques. If you look at the Gang of Four's Design Patterns book (the bible of object-oriented programming), you'll see that GUIs are used in many of the coding examples that describe the patterns in the book. As GUIs helped formulate the early patterns of OO, middleware is shaping up to be the killer app for aspect-oriented programming.
Middleware, by nature, is crosscutting. It has functionality that's common across object hierarchies that really should not be mingled with business logic. The evolution of middleware has always been to abstract out how it is applied to regular simple objects. AOP completes this evolution as middleware functionality can be applied after the fact without changing the code or design of the existing business model. Packaging up middleware into a set of aspects frees developers to focus on writing the plain Java objects that make up their application's specific behavior rather than forcing them to work under an API dictated to them by their system architecture.
Take J2EE, for instance. It can be sliced and diced and served à la carte to your object model rather than going through the sometimes cumbersome and unnecessary process of implementing an EJB. For instance, let's say you were using EJB solely for the purpose of defining transactions. Transaction demarcation lines could be drawn within any class at any point using AOP. Instead of extending SessionBean and writing home, remote, and local interfaces; deciding on a JNDI binding; and defining all your <ejb-ref>s in XML; all you would have to do is define a pointcut for the method of the class you want a transaction started from and attach the transactional aspect to trigger the desired behavior.
1. <method-pointcut expr="com.mc.BankAccount.withdraw(double amount)">
2. <attach-aspect class="org.vendor.transaction.RequiredAspect"/>
3. </method-pointcut>
You can apply these same techniques to a multitude of middleware technology like remoteness, ACID, replicated caching, oneway, simple asynchronous invocations, role-based security, and persistence. AOP prevents system programming from intruding into your object model. It has the potential to completely separate the concern of middleware from your application logic. This can make your code easier to maintain and read, and more flexible as you can make system architecture decisions later on in the development process. It's a pure layered approach to applying middleware.
Conclusion
AOP is a new paradigm for expanding code reuse and easing the maintainability of your code base. It provides mechanisms to easily componentize code that is scattered throughout your object model and really needs to be organized centrally into one set of objects. When combined with something like middleware, it has the ability to isolate your business logic from the confines of system architecture, thus making your applications even more resistant to change as the landscape of APIs and public specifications changes over time. As framework developers focus on providing their functionality through aspects, the term pointcut will be morphed into pointclick as aspects are applied to an object model through the point-and-click interfaces of an IDE.
Published December 4, 2003 Reads 41,065
Copyright © 2003 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Bill Burke
Bill Burke is chief architect of JBoss Inc., member of the EJB3 expert group, and co-author of the JBoss 4.0 Workbook in O'Reilly's Enterprise JavaBeans, 4th Edition.
![]() |
Mike Jozwiak 12/29/03 08:37:57 AM EST | |||
Hi All, I have not looked into this, other than skimming this article. Maybe I am missing something. Why can''t/shouldn''t this be done with simmple objects? Thanks, Mike |
||||
![]() |
Magesh Narayanan 12/22/03 04:35:04 PM EST | |||
Excellent article... |
||||
![]() |
Irene 12/14/03 08:39:36 PM EST | |||
Very clear explanation of Aspect Programming! |
||||
![]() |
V 12/10/03 11:36:52 AM EST | |||
Look for the link at the bottom of the articles that says: Source Code. |
||||
![]() |
mARK 12/09/03 04:36:04 PM EST | |||
where does one find the "listing 1" mentioned in the article? |
||||
In this CTO Power Panel at the 10th International Cloud Expo, moderated by Cloud Expo Conference Chair Jeremy Geelan, industry-leading CTOs & VPs of Technology will discuss such topics as:
Which do you think is the most important cloud computing standard still to tackle?
Who should and shouldn’t be using a PaaS product today, and why?
Can a public cloud ever be truly secure?
How important is open source to cloud computing and Big Data?
"Mission-critical apps are now safe in the cloud." Tr...May. 21, 2012 09:15 AM EDT Reads: 1,221 |
By Liz McMillan For many of the same reasons that Software-as-a-Service is catching on with enterprise buyers, delivering web services on top of Infrastructure-as-a-Service architectures is appealing to the SaaS developers. Operational agility, lower CapEx, and a broad array of tools and services are on tap that make both public and private IaaS clouds a great platform to build on. But how do you do this securely, especially in the public cloud where you have no access to the network or hypervisor your servers ...May. 21, 2012 09:00 AM EDT Reads: 1,465 |
By Liz McMillan “Big Data eliminates the data silos that formerly existed, improving the depth and quality of analysis that can take place,” observed Scott Kinka, Chief Technology Officer at Evolve IP, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “Without these barriers, Kinka continued, “we gain access to information that was never before available. We can see where there are underserved markets, opportunities, problems that need to be addressed.”
Agree or disagree? – "While the IT sa...May. 21, 2012 09:00 AM EDT Reads: 1,191 |
By Jeremy Geelan With Cloud Expo 2012 New York (10th Cloud Expo) now just three weeks away, what better time to introduce you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference...May. 21, 2012 08:45 AM EDT Reads: 2,626 |
By Liz McMillan In this CEO Power Panel at the 10th International Cloud Expo, moderated by Cloud Expo Conference Chair Jeremy Geelan, leading executives in the Cloud Computing and Big Data space will be discussing such topics as:
Is it just wishful thinking to depict the Cloud as more than just a technology solution? If not, then what concrete examples best demonstrate cloud computing as an engine of business value?
Big Data has existed since the early days of computing; why, then, do you think there is such...May. 21, 2012 08:30 AM EDT Reads: 1,340 |
By Liz McMillan If your organization already uses virtualized infrastructure, you are well on your way to providing IT as a Service. But as businesses demand faster results in today’s competitive market, organizations look to gain more benefits from cloud computing than just virtualized infrastructure. Learn how to extend & ensure your private cloud investment with a private Platform as a Service (PaaS) and provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your deve...May. 21, 2012 08:00 AM EDT Reads: 1,722 |
By Carmen Gonzalez May. 21, 2012 07:45 AM EDT Reads: 1,607 |
By Pat Romanski “Big data represents a sea change of capabilities in IT” notes Matt McLarty, Vice President, Client Solutions at Layer 7, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. McLarty continued: “In conjunction with mobile and cloud, I think Big Data will provide a technological makeover to the typical enterprise infrastructure, drawing a hard API border in front of core business services while blurring the line between logic and data services.”
Cloud Computing Journal: Agree or...May. 21, 2012 07:45 AM EDT Reads: 4,868 Replies: 1 |
By Jeremy Geelan With Cloud Expo 2012 New York (10th Cloud Expo) now just three weeks away, what better time to start introducing you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference...May. 21, 2012 07:45 AM EDT Reads: 2,326 |
By Jeremy Geelan With Cloud Expo 2012 New York (10th Cloud Expo) now just three weeks away, what better time to introduce you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference...May. 21, 2012 07:30 AM EDT Reads: 5,063 |
- Cloud Expo New York: Why PostgreSQL is the Database for the Cloud
- Cloud Expo New York Speaker Profile: Dave Asprey – Trend Micro
- Cloud Expo New York Speaker Profile: Jill T. Singer – NRO
- The Business Value of Cloud Computing
- Cloud Expo New York Speaker Profile: Greg O'Connor – AppZero
- Cloud Expo New York Speaker Profile: Dave Linthicum – Blue Mountain Labs
- Cloud Expo New York Speaker Profile: Mårten Mickos – Eucalyptus Systems
- iPad3 vs Windows 8 - and the Winner Is...Cloud
- Cloud Expo New York Speaker Profile: George Gerchow – VMware
- Cloud Expo New York Speaker Profile: Bernard Golden – HyperStratus
- Cloud Expo New York Speaker Profile: James Weir – UShareSoft
- Cloud Expo New York: The Java EE 7 Platform - Developing for the Cloud
- Cloud Expo New York: Why PostgreSQL is the Database for the Cloud
- Cloud Expo New York Speaker Profile: Dave Asprey – Trend Micro
- Cloud Expo New York Speaker Profile: Jill T. Singer – NRO
- The Business Value of Cloud Computing
- Cloud Expo New York Speaker Profile: Greg O'Connor – AppZero
- Cloud Expo New York Speaker Profile: Dave Linthicum – Blue Mountain Labs
- Cloud Expo New York Speaker Profile: Mårten Mickos – Eucalyptus Systems
- iPad3 vs Windows 8 - and the Winner Is...Cloud
- Cloud Expo New York Speaker Profile: George Gerchow – VMware
- Cloud Expo New York Speaker Profile: Bernard Golden – HyperStratus
- Cloud Expo New York Speaker Profile: James Weir – UShareSoft
- Red Hat Executive Appointed to Technology Services Industry Association (TSIA) Support Services Advisory Board
- What is Cloud Computing?
- The Top 150 Players in Cloud Computing
- Six Benefits of Cloud Computing
- Virtualization Conference Keynote Webcast Live on SYS-CON.TV
- What's the Difference Between Cloud Computing and SaaS?
- Twenty-One Experts Define Cloud Computing
- GDS International: Global Warming Scam?
- The Top 250 Players in the Cloud Computing Ecosystem
- The Future of Cloud Computing
- A Brief History of Cloud Computing: Is the Cloud There Yet?
- Cloud Expo Europe 2009 in Prague: Themes & Topics
- SOA 2 Point Oh No!









For many of the same reasons that Software-as-a-Service is catching on with enterprise buyers, delivering web services on top of Infrastructure-as-a-Service architectures is appealing to the SaaS developers. Operational agility, lower CapEx, and a broad array of tools and services are on tap that make both public and private IaaS clouds a great platform to build on. But how do you do this securely, especially in the public cloud where you have no access to the network or hypervisor your servers ...
“Big Data eliminates the data silos that formerly existed, improving the depth and quality of analysis that can take place,” observed Scott Kinka, Chief Technology Officer at Evolve IP, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “Without these barriers, Kinka continued, “we gain access to information that was never before available. We can see where there are underserved markets, opportunities, problems that need to be addressed.”
Agree or disagree? – "While the IT sa...
With Cloud Expo 2012 New York (10th Cloud Expo) now just three weeks away, what better time to introduce you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference...
In this CEO Power Panel at the 10th International Cloud Expo, moderated by Cloud Expo Conference Chair Jeremy Geelan, leading executives in the Cloud Computing and Big Data space will be discussing such topics as:
Is it just wishful thinking to depict the Cloud as more than just a technology solution? If not, then what concrete examples best demonstrate cloud computing as an engine of business value?
Big Data has existed since the early days of computing; why, then, do you think there is such...
If your organization already uses virtualized infrastructure, you are well on your way to providing IT as a Service. But as businesses demand faster results in today’s competitive market, organizations look to gain more benefits from cloud computing than just virtualized infrastructure. Learn how to extend & ensure your private cloud investment with a private Platform as a Service (PaaS) and provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your deve...
“Big data represents a sea change of capabilities in IT” notes Matt McLarty, Vice President, Client Solutions at Layer 7, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. McLarty continued: “In conjunction with mobile and cloud, I think Big Data will provide a technological makeover to the typical enterprise infrastructure, drawing a hard API border in front of core business services while blurring the line between logic and data services.”
Cloud Computing Journal: Agree or...
With Cloud Expo 2012 New York (10th Cloud Expo) now just three weeks away, what better time to start introducing you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference...
With Cloud Expo 2012 New York (10th Cloud Expo) now just three weeks away, what better time to introduce you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference...
Rapid deployment capability is table stakes when we are talking about a PaaS solution. Every vendor touts it, and to be frank, every user simply expects it to be there. While I think it is interesting to talk about rapid deployment and perhaps compare speed of one solution to that of another, I thin...
Are large storage arrays dead at the hands of SSD? Short answer NO not yet.
There is still a place for traditional storage arrays or appliances particular those with extensive features, functionality and reliability availability serviceability (RAS). In other words, there is still a place for large...
In our previous articles, Introduction to SQL Server 2012 and Windows Azure Overview, we made references to Microsoft’s SQL Azure service. In this article we will take a closer look at its main features in more detail.
SQL Azure is a relational database solution with the capability to support both ...
It’s really easy to quantify some of the costs associated with a security breach. Number of customers impacted times the cost of a first class stamp plus the cost of a sheet of paper plus the cost of ink divided by … you get the picture. Some of the costs are easier than others to calculate. Some of...
It’s been an interesting day of contrasts in the world of storage, one that shows storage is a diverse and wide ranging segment of IT.
Tape has been part of the discussion on the twitterverse and despite everyone’s best attempts, is not dead yet. Tape and backup may not be seen as cool - but data...
As part of our cloud strategy, we’ve recently released a VMware version of our cloud security offering. It allows cloud providers using VMware, as well as the cloud users themselves, to create an encrypted environment within minutes, while eliminating the complexity around encryption key management ...
Okay – this is easy… or is it?
Lots of people continue to perpetuate the idea that the AWS APIs are a de facto standard, so we should just all move on about it. At the same time, everybody seems to acknowledge the fact that Amazon has never ever indicated that they want to be a true standard. Are...
As I mentioned in my last blog post, the promise of cost reduction is compelling many enterprises to move their workloads into the Cloud but many IT leaders are reluctant to do so, for fear of compromising the security and availability of their services. These concerns are well-founded but the benef...
Throughout history there has been a cycle that ebbs and flows where new technology makes production more efficient and reduces the need for manpower in a particular space, thus forcing those in charge into the difficult position of deciding who stays and who goes. This is normally replaced by an u...
It was at Netscape, in the early days of the internet, when co-founders Lou Montulli and Jeff Whitehead first worked together and began to notice how the amount of their data was constantly growing, but the process for adding storage and protecting that data wasn't improving over time.
"Zetta is a ...







