SCALA AND ASPECTJ. Approaching Modularizing of Crosscutting. Ramnivas Laddad. Concerns. ramnivas

Size: px
Start display at page:

Download "SCALA AND ASPECTJ. Approaching Modularizing of Crosscutting. Ramnivas Laddad. Concerns. ramnivas"

Transcription

1 SCALA AND ASPECTJ Approaching Modularizing of Crosscutting Concerns Ramnivas Laddad ramnivas Copyright Ramnivas Laddad. All rights reserved.

2 @ramnivas Spring framework committer Cloud Foundry committer Main interests Aspect-oriented programming Cloud computing Scala and functional programming Author of books and articles AspectJ in Action (1 st and 2 nd edition) Speaker at many professional conferences JavaOne, JavaPolis, SpringOne, Software Development, No Fluff Just Stuff, EclipseCon, O Reilly OSCON etc. Active involvement in AspectJ since its early form

3 AspectJ and Scala connection Both statically typed

4 AspectJ and Scala connection Both compiled to JVM-compatible byte code

5 AspectJ and Scala connection AspectJ advice shares some characteristics of higher order functions

6 AspectJ and Scala connection AspectJ static crosscutting shares some characteristics of traits

7 AspectJ and Scala connection AspectJ weaving used in Scala IDE

8 A QUICK INTRO TO AOP Copyright Ramnivas Laddad. All rights reserved.

9 Crosscutting concern Functionality whose implementation spans multiple modules Many examples Logging and tracing Transaction management Concurrency control Security Error handling Business rules Auditing Performance monitoring!

10 Dealing with crosscutting concerns AOP A programming methodology AspectJ A prominent language to support AOP for Java

11 Core AOP concepts Join point An identifiable point in the execution of a program. Central, distinguishing concept in AOP Pointcut Program construct that selects join points and collects context at those points. Advice Code to be executed at a join point that has been selected by a pointcut Inter-type declaration Additional data or method to existing types, implementing new interfaces

12 AspectJ weaving Java and aspect source files (.java/.aj) Weaver Java and aspect byte-code files (.jar/.class) Compiler, linker, or load-time Woven system (.class files or.jar file)

13 ASPECTJ IN PRACTICE Lessons learned over years Copyright Ramnivas Laddad. All rights reserved.

14 Aspects come in all sizes Locally scoped concerns Cross-unit concerns Widely applied concerns Caching, read-write lock, retry failures Transaction, security Monitoring, auditing, policy enforcement, concurrency control*

15 AOP and annotations Annotation use very pervasive " Annotations as marker for advice here Obliviousness not considered critical " Explicit annotations not frowned upon

16 Pervasive annotations Object around() public class OrderService public void process()

17 Scala way of addressing crosscutting functionality Implement higher order function encapsulating the crosscutting logic Apply the function to all places that need the functionality

18 Higher order functions def retry[t](maxretry: Int)(thunk: => T) = { def retry(thunk: => T, attempt: Int): T = { try { thunk catch { case ex if (attempt < maxretry) => retry(thunk, attempt + 1) def process() : Unit = { retry(5) {

19 LOCALLY APPLIED FUNCTIONALITY Copyright Ramnivas Laddad. All rights reserved.

20 Caching using keyscript="#stock.ticker + ':' + #days") public byte[] getquotegraph(stock stock, int days) { Expensive calculation External language

21 Caching aspect public aspect CacheAspect { public pointcut cached(cachable cachable) : execution(@cachable * *(..)) Object around(cachable cachable) : cached(cachable) { String key = evaluate(cachable.keyscript(), thisjoinpoint); if (cache.containskey(key)) { return cache.get(key) else { Object value = proceed(cacheble); cache.put(key, value); return value;

22 Caching using Scala def getquotegraph(stock: Stock,!! days: Int) : Array[Byte] = { cached("chart", stock.ticker + ":" + days) { Expensive calculation!

23 Caching higher-order function abstract class Caching(val cachemanager: CacheManager) { def cached[t](region: String, key: Any) val cache = (thunk: => T): T = { if (cache.containskey(key)) { cache.get(key).asinstanceof[t] else { val thunkval: T = thunk cache.put(key, thunkval) thunkval

24 Comparing caching solutions AspectJ Scala Every cached element needs an annotation Every cached element needs wrapping in the HOF Uses external language (dynamically typed) Use the native language

25 Thought! Is retry or caching even a crosscutting functionality?

26 CROSS-UNIT CROSSCUTTING FUNCTIONALITY Copyright Ramnivas Laddad. All rights reserved.

27 Annotating for transaction management public class OrderServiceImpl implements OrderService public Order findorder(long orderid) public void updateorder(order order) public void addproduct(order order, Product product, int quantity) public void removeproduct(order order, Product product, int quantity) public void cancelorder(order order) {

28 Transaction management with Scala class OrderServiceImpl extends OrderService { def findorder(orderid: Long) : Order = { transactional(readonly=true) { def updateorder(order: Order) { transactional() { def addproduct(order: Order, product: Product, quantity: Int) { transactional() { def removeproduct(order: Order, product: Product, quantity: Int) { transactional() { def cancelorder(order: Order) { transactional() {

29 Transaction management aspect public aspect TransactionManagementAspect { private TransactionManager txmanager; pointcut transactionalop() : Object around() : transactionalop() { TransactionAttribute ta = TransactionStatus ts = txmanager.gettransaction(ta); try { Object ret = proceed(); transactionmanager.commit(ts); return ret; catch (Throwable ex) { rollback throw ex;

30 Transaction management function def transactional[t](propgation: Propagation = Propagation.REQUIRED, isolation: Isolation = Isolation.DEFAULT, readonly: Boolean = false, timeout: Int =TransactionDefinition.TIMEOUT_DEFAULT, rollbackfor: List[Throwable] = List(), norollbackfor: List[Throwable] = List()) (thunk: => T) : T

31 Transaction management implementation abstract class TransactionManagement(val txmanager: PlatformTransactionManager) { def transactional[t]()(thunk: => T) : T = { val txattribute = new TransactionAttributeWithRollbackRules() val status = txmanager.gettransaction(txattribute) try { val ret = thunk txmanager.commit(status) ret catch { case ex => { if (txattribute.rollbackon(ex)) { txmanager.rollback(status) else { txmanager.commit(status) throw ex

32 But! Transaction management often applies to all methods of a class Often with generic selection: public methods only " Class-level annotation suffices Transaction management often applies to all classes of certain * Special attributes can be derived using convention over configuration * (@Transactional *).find*(..)

33 Class-level public class OrderServiceImpl implements OrderService public Order findorder(long orderid) { public void updateorder(order order) { public void addproduct(order order, Product product, int quantity) { public void removeproduct(order order, Product product, int quantity) { public void cancelorder(order order) {

34 However! Scala can apply transaction management to smaller unit than the whole method Little practical value, since refactoring to extract method that need transaction is a good idea anyway

35 Comparing transaction management solutions! AspectJ Scala Not every element needs a marker (annotation) Every transactional logic wrapped in HOF Method-level granularity Any desired granularity possible

36 WIDELY APPLIED CROSSCUTTING Copyright Ramnivas Laddad. All rights reserved.

37 Classic crosscutting concerns Monitoring Tracing Profiling First failure data capture Policy enforcement Concurrency control Swing, SWT, Android Auditing

38 FFDC: Base aspect public abstract aspect FFDC { public abstract pointcut ffdcop(); after() throwing(exception ex) : ffdcop() { Signature sig = thisjoinpointstaticpart.getsignature(); logffdc(sig.getdeclaringtype().getname(), sig.getname(), ex, thisjoinpoint.getthis(), thisjoinpoint.getargs()); public void logffdc(string classname, String methodname, Exception ex, Object thiz, Object[] args) {

39 FFDC: Derived aspect public aspect DaoFFDC extends FFDC { public pointcut ffdcop() : execution(* com.acme..dao.*.*(..)); No annotation or other marker in advised code

40 FFDC through Scala Possible through higher-order function But! Tedious to wrap every function There are just too many of those Error prone Missed functions diminishing value in data captured Hard to reason at system level All classic crosscutting symptoms

41 Solution for Scala programs: Use AspectJ Compile Scala program as usual Weave aspects using binary weaving (build-time or load-time)

42 Conclusion With every element carrying a marker annotation, higherorder function offer a simpler and powerful solution Often not really crosscutting concerns to begin with Annotation used as a crutch to have aspects apply HOF Cross-unit crosscutting functionality Aspects have an edge Not all lost by staying with Scala-only Wide crosscutting concerns AspectJ is only game in town You can apply aspects to Scala-compiled code

43 Q&A Ramnivas Laddad ramnivas

Advances in Aspect-oriented Programming

Advances in Aspect-oriented Programming Advances in Aspect-oriented Programming Ramnivas Laddad Principal, Interface21 Author, AspectJ in Action ramnivas.laddad@interface21.com About Speaker Principal at Interface21 Specializing in aspect-oriented

More information

AJDT: Getting started with Aspect-Oriented Programming in Eclipse

AJDT: Getting started with Aspect-Oriented Programming in Eclipse AJDT: Getting started with Aspect-Oriented Programming in Eclipse Matt Chapman IBM Java Technology Hursley, UK AJDT Committer Andy Clement IBM Java Technology Hursley, UK AJDT & AspectJ Committer Mik Kersten

More information

AOP 101: Intro to Aspect Oriented Programming. Ernest Hill

AOP 101: Intro to Aspect Oriented Programming. Ernest Hill AOP 101: Intro to Aspect Oriented Programming ernesthill@earthlink.net AOP 101-1 AOP 101: Aspect Oriented Programming Goal of Software History of Programming Methodology Remaining Problem AOP to the Rescue

More information

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003 Programming AspectJ with Eclipse and AJDT, By Example Chien-Tsun Chen Sep. 21, 2003 ctchen@ctchen.idv.tw References R. Laddad, I want my AOP!, Part 1-Part3, JavaWorld, 2002. R. Laddad, AspectJ in Action,

More information

JML and Aspects: The Benefits of

JML and Aspects: The Benefits of JML and Aspects: The Benefits of Instrumenting JML Features with AspectJ Henrique Rebêlo Sérgio Soares Ricardo Lima Paulo Borba Márcio Cornélio Java Modeling Language Formal specification language for

More information

Course 6 7 November Adrian Iftene

Course 6 7 November Adrian Iftene Course 6 7 November 2016 Adrian Iftene adiftene@info.uaic.ro 1 Recapitulation course 5 BPMN AOP AOP Cross cutting concerns pointcuts advice AspectJ Examples In C#: NKalore 2 BPMN Elements Examples AOP

More information

Introduction to. Bruno Harbulot. ESNW, the University of Manchester.

Introduction to. Bruno Harbulot. ESNW, the University of Manchester. Introduction to Aspect-Oriented Software Development Bruno Harbulot ESNW, the University of Manchester http://www.cs.man.ac.uk/~harbulob/ ELF Developers' Forum Manchester - October 2005 1/24 Presentation

More information

Information systems modeling. Tomasz Kubik

Information systems modeling. Tomasz Kubik Information systems modeling Tomasz Kubik Aspect-oriented programming, AOP Systems are composed of several components, each responsible for a specific piece of functionality. But often these components

More information

Using Aspect-Oriented Programming to extend Protégé. Henrik Eriksson Linköping University

Using Aspect-Oriented Programming to extend Protégé. Henrik Eriksson Linköping University Using Aspect-Oriented Programming to extend Protégé Henrik Eriksson Linköping University Questions about MOP and Protégé Original goal: Extending the JessTab plug-in What is the class precedence in Protégé?

More information

Chapitre 6 Programmation orientée aspect (AOP)

Chapitre 6 Programmation orientée aspect (AOP) 6 Programmation orientée aspect (AOP) 2I1AC3 : Génie logiciel et Patrons de conception Régis Clouard, ENSICAEN - GREYC «L'homme est le meilleur ordinateur que l'on puisse embarquer dans un engin spatial...

More information

Enterprise AOP with Spring Applications IN ACTION SAMPLE CHAPTER. Ramnivas Laddad FOREWORD BY ROD JOHNSON MANNING

Enterprise AOP with Spring Applications IN ACTION SAMPLE CHAPTER. Ramnivas Laddad FOREWORD BY ROD JOHNSON MANNING Enterprise AOP with Spring Applications IN ACTION SAMPLE CHAPTER Ramnivas Laddad FOREWORD BY ROD JOHNSON MANNING AspectJ in Action Second Edition by Ramnivas Laddad Chapter 1 Copyright 2010 Manning Publications

More information

Introduction to Aspect-Oriented Programming

Introduction to Aspect-Oriented Programming Introduction to Aspect-Oriented Programming Martin Giese Chalmers University of Technology Göteborg, Sweden AOP Course 2003 p.1/33 AspectJ Idioms and Patterns AOP Course 2003 p.2/33 Sources These idioms

More information

What is AOP? Business Logic Requirements Concern Identifier Security Logging (Laddad, 2003, p. 9) What is AOP? Non-AOP implementation of crosscutting

What is AOP? Business Logic Requirements Concern Identifier Security Logging (Laddad, 2003, p. 9) What is AOP? Non-AOP implementation of crosscutting Aspect Oriented Programming Todd A. Whittaker Franklin University whittakt@franklin.edu What is AOP? Addresses crosscutting concerns Requirements analysis leads to identification of concerns in a software

More information

So, What is an Aspect?

So, What is an Aspect? Introduction to AspectJ Aspect-oriented paradigm AspectJ constructs Types of Join Points Primitive Lexical designators Type designators Control flow Types of Advice Before After Around Receptions Join

More information

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming Based on the Example of AspectJ Prof. Harald Gall University of Zurich, Switzerland software evolution & architecture lab AOP is kind of a complicated one for me ( ) the idea

More information

An Aspect-Oriented Approach. Henrique Rebêlo Informatics Center

An Aspect-Oriented Approach. Henrique Rebêlo Informatics Center An Aspect-Oriented Approach to implement JML Features Henrique Rebêlo Informatics Center Federal University of Pernambuco Summary jmlc problems bigger code, slower code, no suppport for Java ME, and bad

More information

Manchester University Transactions for Scala

Manchester University Transactions for Scala Manchester University Transactions for Scala Salman Khan salman.khan@cs.man.ac.uk MMNet 2011 Transactional Memory Alternative to locks for handling concurrency Locks Prevent all other threads from accessing

More information

Ron Bodkin. New Aspects of Software Colorado Software Summit: October 22 27, 2006

Ron Bodkin. New Aspects of Software Colorado Software Summit: October 22 27, 2006 Using the Spring Framework for Aspect-Oriented Programming Ron Bodkin New Aspects of Software rbodkin@newaspects.com Rod Bodkin Using the Spring Framework for Aspect-Oriented Programming Page 1 This Talk

More information

Aspect-Oriented Programming and Aspect-J

Aspect-Oriented Programming and Aspect-J Aspect-Oriented Programming and Aspect-J TDDD05 Ola Leifer Most slides courtesy of Jens Gustafsson and Mikhail Chalabine Outline: Aspect-Oriented Programming New concepts introduced Crosscutting concern

More information

Language Oriented Modularity: From Theory to Practice

Language Oriented Modularity: From Theory to Practice Language Oriented Modularity: From Theory to Practice Arik Hadas Dept. of Mathematics and Computer Science The Open University of Israel Joint Work With: David H. Lorenz Language Oriented Modularity (LOM)

More information

A short introduction to INF329. Spring AOP

A short introduction to INF329. Spring AOP A short introduction to INF329 Spring AOP Introduction to AOP AOP is an abbreviation for aspectoriented programming Aspect-oriented programming is a new paradigm in programming, seperating functionality

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Aspect Oriented Programming

Aspect Oriented Programming 1 Aspect Oriented Programming Programming Languages Seminar Presenter: Barış Aktemur University of Illinois 18 Feb. 2004 Mostly taken from Bedir Tekinerdogan s slides Outline Introduction Problems Terminology

More information

Enterprise Informatization LECTURE

Enterprise Informatization LECTURE Enterprise Informatization LECTURE Piotr Zabawa, PhD. Eng. IBM/Rational Certified Consultant e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa/en 07.10.2011 Lecture 7 Aspect-Oriented Programming

More information

Java AOP in Spring 2.0 Rob Harrop, Interface21 Ltd.

Java AOP in Spring 2.0 Rob Harrop, Interface21 Ltd. Java AOP in Spring 2.0 Rob Harrop, Interface21 Ltd. Agenda What's new in Spring 2.0 Simplifying transaction configuration @AspectJ Aspects Writing pointcuts with AspectJ Using AspectJ aspects Aspects and

More information

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming Johan Östlund johano@dsv.su.se Why should you care? AOP sets out to manage complexity ~ Modularizing software AOP is being accepted/adopted in ever increasing numbers both in

More information

Aspect Oriented Java RMI Server

Aspect Oriented Java RMI Server Aspect Oriented Java RMI Server Inderjit Singh Dhanoa BIS College of Engineering & Tech., Moga inderp10@yahoo.co.in Er.Dalwinder Singh Salaria Lovely Professional University ds_salaria@yahoo.co.in ABSTRACT

More information

Motivation. Ability is what you're capable of doing. Motivation determines what you do. Attitude determines how well you do it.

Motivation. Ability is what you're capable of doing. Motivation determines what you do. Attitude determines how well you do it. Aspects in AspectJ Motivation Aspect Oriented Programming: a brief introduction to terminology Installation Experimentation AspectJ some details AspectJ things you should know about but we dont have time

More information

AOP Tutorial. Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan

AOP Tutorial. Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan AOP Tutorial Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan Table of Contents 1.0 INTRODUCTION... 3 2.0 SCOPE AND OBJECTIVE... 4 3.0 MOTIVATION... 5 4.0 HISTORY...

More information

Aspect-Oriented Programming and AspectJ

Aspect-Oriented Programming and AspectJ What is Aspect-Oriented Programming? Many possible answers: a fad Aspect-Oriented Programming and AspectJ Aspect-oriented programming is a common buzzword lately Papers from ECOOP 1997 (early overview

More information

A Brief Introduction to Aspect-Oriented Programming. Historical View Of Languages. Procedural language Functional language Object-Oriented language

A Brief Introduction to Aspect-Oriented Programming. Historical View Of Languages. Procedural language Functional language Object-Oriented language A Brief Introduction to Aspect-Oriented Programming Historical View Of Languages Procedural language Functional language Object-Oriented language 1 Acknowledgements Zhenxiao Yang Gregor Kiczales Procedural

More information

A Brief Introduction to Aspect-Oriented Programming" Historical View Of Languages"

A Brief Introduction to Aspect-Oriented Programming Historical View Of Languages A Brief Introduction to Aspect-Oriented Programming" Historical View Of Languages" Procedural language" Functional language" Object-Oriented language" 1 Acknowledgements" Zhenxiao Yang" Gregor Kiczales"

More information

Introduction to Aspect-Oriented Programming

Introduction to Aspect-Oriented Programming Introduction to Aspect-Oriented Programming Martin Giese Chalmers University of Technology Göteborg, Sweden AOP Course 2003 p.1/44 AspectJ Quick Tour AOP Course 2003 p.2/44 Reminder: Join Points A join

More information

APTE: Automated Pointcut Testing for AspectJ Programs

APTE: Automated Pointcut Testing for AspectJ Programs APTE: Automated Pointcut Testing for AspectJ Programs Prasanth Anbalagan Department of Computer Science North Carolina State University Raleigh, NC 27695 panbala@ncsu.edu Tao Xie Department of Computer

More information

DYNAMIC PROXY AND CLASSIC SPRING AOP

DYNAMIC PROXY AND CLASSIC SPRING AOP Module 8 DYNAMIC PROXY AND CLASSIC SPRING AOP Aspect-oriented programming (AOP) > Aspect-oriented programming (AOP) is a new methodology to complement traditional object-oriented programming (OOP). > The

More information

Take Control with AspectJ

Take Control with AspectJ Hermod Opstvedt Chief Architect DnB NOR ITUD Common components Hermod Opstvedt Slide 1 What is AspectJ? Aspect-oriented programming (AOP) is a technique for improving separation of concerns. Crosscutting

More information

Improving Software Modularity using AOP

Improving Software Modularity using AOP B Vasundhara 1 & KV Chalapati Rao 2 1 Dept. of Computer Science, AMS School of Informatics, Hyderabad, India 2 CVR College of Engineering, Ibrahimpatnam, India E-mail : vasu_venki@yahoo.com 1, chalapatiraokv@gmail.com

More information

A Model for Software Plans

A Model for Software Plans A Model for Software Plans Robert R. Painter and David Coppit Department of Computer Science The College of William and Mary private static Vector readdata() { BufferedReader stdin = new BufferedReader(

More information

Course 7 25 November Adrian Iftene

Course 7 25 November Adrian Iftene Course 7 25 November 2013 Adrian Iftene adiftene@info.uaic.ro 1 Recapitulation course 6 AOP AOP Profiler Tracing Pooling PostSharp Spring Framework Runtime Verification Model Checking MOP Java MOP 2 Concern

More information

Separation of Concerns. AspectJ. What if the concerns are Cross-Cutting? SoC: Programming Paradigms. Key theme: Modularity and Encapsulation

Separation of Concerns. AspectJ. What if the concerns are Cross-Cutting? SoC: Programming Paradigms. Key theme: Modularity and Encapsulation Separation of Concerns and AspectJ EEC 625 Lecture #16 April 3, 2006 EEC 625: Software Design & Architecture Separation of Concerns Breaking a program into pieces that overlap in functionality as little

More information

Aspect-Oriented Programming with C++ and AspectC++

Aspect-Oriented Programming with C++ and AspectC++ Aspect-Oriented Programming with C++ and AspectC++ AOSD 2007 Tutorial University of Erlangen-Nuremberg Computer Science 4 Presenters Daniel Lohmann dl@aspectc.org University of Erlangen-Nuremberg, Germany

More information

Language support for AOP

Language support for AOP Language support for AOP AspectJ and beyond Mario Südholt www.emn.fr/sudholt INRIA and École des Mines de Nantes OBASCO project, Nantes, France Language support for AOP ; Mario Südholt; INRIA/EMN; March

More information

CS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question)

CS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question) CS/B.TECH/CSE(New)/SEM-5/CS-504D/2013-14 2013 OBJECT ORIENTED PROGRAMMING Time Allotted : 3 Hours Full Marks : 70 The figures in the margin indicate full marks. Candidates are required to give their answers

More information

Bugdel: An Aspect-Oriented Debugging System

Bugdel: An Aspect-Oriented Debugging System Bugdel: An Aspect-Oriented Debugging System Yoshiyuki Usui and Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology 2-12-1-W8-50 Ohkayama, Meguro-ku Tokyo 152-8552,

More information

Aspects and Soar: A Behavior Development Model. Jacob Crossman

Aspects and Soar: A Behavior Development Model. Jacob Crossman Aspects and Soar: A Behavior Development Model Jacob Crossman jcrossman@soartech.com Motivation: Why is Soar Useful? Soar Systems are often complex Often require multiple processes Are built of hundreds/thousands

More information

Aspect Oriented Programming with AspectJ. Ted Leung Sauria Associates, LLC

Aspect Oriented Programming with AspectJ. Ted Leung Sauria Associates, LLC Aspect Oriented Programming with AspectJ Ted Leung Sauria Associates, LLC twl@sauria.com Overview Why do we need AOP? What is AOP AspectJ Why do we need AOP? Modular designs are not cut and dried Responsibilities

More information

Adapting applications to exploit virtualization management knowledge

Adapting applications to exploit virtualization management knowledge Adapting applications to exploit virtualization management knowledge DMTF SVM 2013 Outline Motivation Applications running on virtualized infrastructure suffer! 1 Example of suffering, by experiment 2

More information

An Advice for Advice Composition in AspectJ

An Advice for Advice Composition in AspectJ An Advice for Advice Composition in AspectJ Fuminobu Takeyama Shigeru Chiba Tokyo Institute of Technology, Japan 2010/07/01 Fuminobu Takeyama, Shigeru Chiba, An Advice for Advice Composition in AspectJ,

More information

Detecting Redundant Unit Tests for AspectJ Programs

Detecting Redundant Unit Tests for AspectJ Programs Detecting Redundant Unit Tests for AspectJ Programs Tao Xie 1 Jianjun Zhao 2 Darko Marinov 3 David Notkin 4 1 North Carolina State University 2 Shanghai Jiaotong University 3 University of Illinois at

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems JAGDISH LAKHANI lakhjag@iitedu Computer Science Dept Illinois Institute of Technology Chicago, IL 60616 FAISAL AKKAWI akkawif@iitedu Computer

More information

Method Slots: Supporting Methods, Events, and Advices by a Single Language Construct

Method Slots: Supporting Methods, Events, and Advices by a Single Language Construct Method Slots: Supporting Methods, Events, and Advices by a Single Language Construct YungYu Zhuang and Shigeru Chiba The University of Tokyo More and more paradigms are supported by dedicated constructs

More information

AOP Framed! Informatics Center Federal University of Pernambuco

AOP Framed! Informatics Center Federal University of Pernambuco AOP Framed! Henrique Rebêlo Informatics Center Federal University of Pernambuco Henrique Rebêlo 2009 Contacting Me Ph.D. student Henrique Rebêlo Specialist on AOSD, DbC, Static Metrics, JML Software Architecture,

More information

Profiler Instrumentation Using Metaprogramming Techniques

Profiler Instrumentation Using Metaprogramming Techniques Profiler Instrumentation Using Metaprogramming Techniques Ritu Arora, Yu Sun, Zekai Demirezen, Jeff Gray University of Alabama at Birmingham Department of Computer and Information Sciences Birmingham,

More information

Aspect-oriented programming with AspectJ

Aspect-oriented programming with AspectJ www.ijcsi.org 212 Aspect-oriented programming with AspectJ Daniela Gotseva 1 and Mario Pavlov 2 1 Computer Systems Department, Technical University of Sofia Sofia, Bulgaria 2 Computer Systems Department,

More information

What is Transaction? Why Transaction Management Required? JDBC Transaction Management in Java with Example. JDBC Transaction Management Example

What is Transaction? Why Transaction Management Required? JDBC Transaction Management in Java with Example. JDBC Transaction Management Example JDBC Transaction Management in Java with Example Here you will learn to implement JDBC transaction management in java. By default database is in auto commit mode. That means for any insert, update or delete

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

A Unit Testing Framework for Aspects without Weaving

A Unit Testing Framework for Aspects without Weaving A Unit Testing Framework for Aspects without Weaving Yudai Yamazaki l01104@sic.shibaura-it.ac.jp Kouhei Sakurai sakurai@komiya.ise.shibaura-it.ac.jp Saeko Matsuura matsuura@se.shibaura-it.ac.jp Hidehiko

More information

GenUTest: An Automatic Unit Test & Mock Aspect Generation Tool

GenUTest: An Automatic Unit Test & Mock Aspect Generation Tool Tel Aviv University The Raymond and Beverly Sackler Faculty of Exact Sciences GenUTest: An Automatic Unit Test & Mock Aspect Generation Tool Thesis submitted in partial fulfillment of the requirements

More information

Language Features for Software Evolution and Aspect-Oriented Interfaces: An Exploratory Study

Language Features for Software Evolution and Aspect-Oriented Interfaces: An Exploratory Study Computer Science Publications Computer Science 2013 Language Features for Software Evolution and Aspect-Oriented Interfaces: An Exploratory Study Robert Dyer Iowa State University Hridesh Rajan Iowa State

More information

Advanced Web Systems 10- Spring and AOP Transactions Ajax Introduction. A. Venturini

Advanced Web Systems 10- Spring and AOP Transactions Ajax Introduction. A. Venturini Advanced Web Systems 10- Spring and AOP Transactions Ajax Introduction A. Venturini Spring Architecture The seven modules of the Spring framework 2 Intro to Spring AOP In Spring, aspects are woven into

More information

Corso di Sviluppo di applicazioni Web

Corso di Sviluppo di applicazioni Web Corso di Sviluppo di applicazioni Web Docente: Giovanni Grasso - Transazionalità in Spring Pluggable Transaction Strategy Spring PlatformTransactionManager Transaction management provided by implemenation

More information

This tutorial will take you through simple and practical approaches while learning AOP framework provided by Spring.

This tutorial will take you through simple and practical approaches while learning AOP framework provided by Spring. About the Tutorial One of the key components of Spring Framework is the Aspect Oriented Programming (AOP) framework. Aspect Oriented Programming entails breaking down program logic into distinct parts

More information

Improving Incremental Development in AspectJ by Bounding Quantification

Improving Incremental Development in AspectJ by Bounding Quantification Improving Incremental Development in AspectJ by Bounding Quantification Roberto E. Lopez-Herrejon and Don Batory Department of Computer Sciences University of Texas at Austin Austin, Texas, 78712 U.S.A.

More information

The New Java Technology Memory Model

The New Java Technology Memory Model The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (

More information

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming Johan Östlund johano@dsv.su.se Why AOP on this Course? AOP sets out to manage complexity ~ Modularizing software AOP is being accepted/adopted in ever increasing numbers both

More information

Integration of Application Business Logic and Business Rules with DSL and AOP

Integration of Application Business Logic and Business Rules with DSL and AOP Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland Bogumila.Hnatkowska@pwr.wroc.pl

More information

Chapter 32. Aspect-Oriented Software Development (AOSD) Ian Sommerville 2006 Software Engineering. Chapter 32 Slide 1

Chapter 32. Aspect-Oriented Software Development (AOSD) Ian Sommerville 2006 Software Engineering. Chapter 32 Slide 1 Chapter 32 Aspect-Oriented Software Development (AOSD) Ian Sommerville 2006 Software Engineering. Chapter 32 Slide 1 Objectives To explain the principle of separation of concerns in software development

More information

Problems in Aspect Oriented Design: Facts and Thoughts

Problems in Aspect Oriented Design: Facts and Thoughts 552 Problems in Aspect Oriented Design: Facts and Thoughts Md. Asraful Haque Department of Computer Engineering, Aligarh Muslim University Aligarh,U.P.-202002,India Abstract: The classic challenge in writing

More information

Meta-Program and Meta-Programming

Meta-Program and Meta-Programming Meta-Program and Meta-Programming What is a Meta-Programming? The creation of procedures and programs that automatically construct the definitions of other procedures and programs. First example the Turing

More information

Refactoring Aspect Oriented Software

Refactoring Aspect Oriented Software Refactoring Aspect Oriented Software Jochem Rutgers rutgers@ewi.utwente.nl ABSTRACT Existing refactoring methods are able to rewrite object-oriented code to better object-oriented code or to aspect-oriented

More information

Copyright IBM Corporation 2004.All rights reserved.

Copyright IBM Corporation 2004.All rights reserved. Copyright IBM Corporation 2004.All rights reserved. http://www-106.ibm.com/developerworks/rational/library/2782.html Search help A look at aspect-oriented programming Gary Pollice Worcester Polytechnic

More information

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring Chapter 7 Modular Refactoring I n this chapter, the role of Unified Modeling Language (UML) diagrams and Object Constraint Language (OCL) expressions in modular refactoring have been explained. It has

More information

Mapping Features to Aspects

Mapping Features to Aspects Mapping Features to Aspects The Road from Crosscutting to Product Lines (Work in Progress) Roberto E. Lopez-Herrejon Computing Laboratory Oxford University 1 Motivation Features Feature Informally: A characteristic

More information

OS Customization versus OS Code Modularity

OS Customization versus OS Code Modularity OS Customization versus OS Code Modularity ECE 344 Fall 2006 Hans-Arno Jacobsen Thanks to Michael Gong, Vinod Muthusamy, and Charles Zhang for helping to find interesting examples et al. Possibly a Debugging

More information

Reactive Behavior in Object-oriented Applications: An Analysis and a Research Roadmap

Reactive Behavior in Object-oriented Applications: An Analysis and a Research Roadmap Reactive Behavior in Object-oriented Applications: An Analysis and a Research Roadmap Guido Salvaneschi Mira Mezini Software Technology Group, University of Darmstadt Outline Design space of OO reactive

More information

Problems with Concurrency. February 19, 2014

Problems with Concurrency. February 19, 2014 with Concurrency February 19, 2014 s with concurrency interleavings race conditions dead GUI source of s non-determinism deterministic execution model 2 / 30 General ideas Shared variable Access interleavings

More information

A Design Discipline and Language Features for Formal Modular Reasoning in Aspect-Oriented Programs

A Design Discipline and Language Features for Formal Modular Reasoning in Aspect-Oriented Programs Computer Science Technical Reports Computer Science 12-2005 A Design Discipline and Language Features for Formal Modular Reasoning in Aspect-Oriented Programs Curtis Clifton Iowa State University Gary

More information

An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces

An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces Robert Dyer Hridesh Rajan Iowa State University {rdyer,hridesh}@iastate.edu Yuanfang Cai Drexel University

More information

Homework 5: Aspect-Oriented Programming and AspectJ

Homework 5: Aspect-Oriented Programming and AspectJ Com S 541 Programming Languages 1 November 30, 2005 Homework 5: Aspect-Oriented Programming and AspectJ Due: Tuesday, December 6, 2005. This homework should all be done individually. Its purpose is to

More information

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE

More information

Using Aspect-Oriented Programming to Streamline Mobile Application Development

Using Aspect-Oriented Programming to Streamline Mobile Application Development Allen Lau TS-5363 Using Aspect-Oriented Programming to Streamline Mobile Application Development CTO and Co-Founder Tira Wireless tirawireless.com 2007 JavaOne SM Conference Session TS-5363 Goal of This

More information

Applying Aspect Oriented Programming on Security

Applying Aspect Oriented Programming on Security Original Article Applying Aspect Oriented Programming on Security Mohammad Khalid Pandit* 1, Azra Nazir 1 and Arutselvan M 2 1 Department of computer Science and engineering, National institute of technology

More information

injection, objects and aspects

injection, objects and aspects Improving code with dependency injection, objects and aspects Chris Richardson Chris Richardson Consulting, Inc http://www.chrisrichardson.net h h 9/21/2007 Copyright (c) 2007 Chris Richardson. All rights

More information

Using and Extending AspectJ for Separating Concerns in Parallel Java Code

Using and Extending AspectJ for Separating Concerns in Parallel Java Code Using and Extending AspectJ for Separating Concerns in Parallel Java Code Bruno Harbulot and John Gurd The University of Manchester POOSC 2005 Glasgow, July 2005 1/26 Presentation Outline Problem and Approach

More information

Unit-Testing Aspectual Behavior

Unit-Testing Aspectual Behavior Unit-Testing Aspectual Behavior [Position Paper] Cristina Videira Lopes and Trung Chi Ngo Donald Bren School of Information and Computer Sciences University of California, Irvine Irvine, CA 92697 {lopes,trungcn}@ics.uci.edu

More information

Learning objectives. The Java Environment. Java timeline (cont d) Java timeline. Understand the basic features of Java

Learning objectives. The Java Environment. Java timeline (cont d) Java timeline. Understand the basic features of Java Learning objectives The Java Environment Understand the basic features of Java What are portability and robustness? Understand the concepts of bytecode and interpreter What is the JVM? Learn few coding

More information

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Pavol PIDANIČ Slovak University of Technology in Bratislava Faculty of Informatics and Information Technologies

More information

Dependency Injection and Aspect- Oi Oriented Programming

Dependency Injection and Aspect- Oi Oriented Programming Improving Your Code with Dependency Injection and Aspect- Oi Oriented Programming Chris Richardson Author of POJOs in Action Chris Richardson Consulting, Inc http://www.chrisrichardson.net Slide 1 Overall

More information

Getting started with Java

Getting started with Java Getting started with Java by Vlad Costel Ungureanu for Learn Stuff Programming Languages A programming language is a formal constructed language designed to communicate instructions to a machine, particularly

More information

Mobile and Context-aware Interactive Systems

Mobile and Context-aware Interactive Systems Mobile and Context-aware Interactive Systems Gaëlle Calvary Grenoble INP Laboratoire d Informatique de Grenoble (LIG) Core concepts Principles Terminology For more information, see Sara Bouchenak s M1

More information

On the relationship between weavers and the build system

On the relationship between weavers and the build system On the relationship between weavers and the build system Bram Adams GH-SEL, Ghent University Kris De Schutter PROG, VUB 1 Everything has a Makefile! 2 How do you bring AOP into your build system? 3 How

More information

BIT Java Programming. Sem 1 Session 2011/12. Chapter 2 JAVA. basic

BIT Java Programming. Sem 1 Session 2011/12. Chapter 2 JAVA. basic BIT 3383 Java Programming Sem 1 Session 2011/12 Chapter 2 JAVA basic Objective: After this lesson, you should be able to: declare, initialize and use variables according to Java programming language guidelines

More information

Software Development & Education Center. Java Platform, Standard Edition 7 (JSE 7)

Software Development & Education Center. Java Platform, Standard Edition 7 (JSE 7) Software Development & Education Center Java Platform, Standard Edition 7 (JSE 7) Detailed Curriculum Getting Started What Is the Java Technology? Primary Goals of the Java Technology The Java Virtual

More information

Administration. Exceptions. Leftovers. Agenda. When Things Go Wrong. Handling Errors. CS 99 Summer 2000 Michael Clarkson Lecture 11

Administration. Exceptions. Leftovers. Agenda. When Things Go Wrong. Handling Errors. CS 99 Summer 2000 Michael Clarkson Lecture 11 Administration Exceptions CS 99 Summer 2000 Michael Clarkson Lecture 11 Lab 10 due tomorrow No lab tomorrow Work on final projects Remaining office hours Rick: today 2-3 Michael: Thursday 10-noon, Monday

More information

Programming Paradigms, Fall 06

Programming Paradigms, Fall 06 Programming Paradigms, Fall 06 Multiple Choice Exam January 29, 2007, 10:00 11:15 ID Name Each of the following questions has exactly one correct answer. For each question, you may select one or more answers

More information

CSCI 111 Midterm Spring 2014

CSCI 111 Midterm Spring 2014 CSCI 111 Midterm Spring 2014 Question Number Point Value 1 40 2 20 3 15 4 25 Total 100 Points Awarded Name Student Id Lab Section 50 Minutes If I can t read your handwriting I have to count it wrong Keep

More information

A Novel Approach to Unit Testing: The Aspect-Oriented Way

A Novel Approach to Unit Testing: The Aspect-Oriented Way A Novel Approach to Unit Testing: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab, Department of Computer Science East China Normal University 3663, North Zhongshan Rd., Shanghai

More information

What is it? CMSC 433 Programming Language Technologies and Paradigms Spring Approach 1. Disadvantage of Approach 1

What is it? CMSC 433 Programming Language Technologies and Paradigms Spring Approach 1. Disadvantage of Approach 1 CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Singleton Pattern Mar. 13, 2007 What is it? If you need to make sure that there can be one and only one instance of a class. For example,

More information

Shmuel Ur Shady Copty Software and Verification Technologies

Shmuel Ur Shady Copty Software and Verification Technologies Multi Threaded Testing with AOP is Easy And it Finds Bugs! Shmuel Ur (ur@il.ibm.com) Shady Copty (shady@il.ibm.com) Software and Verification Technologies IBM Labs in Haifa 2004 IBM Corporation Outline

More information

(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days

(800) Toll Free (804) Fax   Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days Course Description This course introduces the Java programming language and how to develop Java applications using Eclipse 3.0. Students learn the syntax of the Java programming language, object-oriented

More information