Abstract
One of the most important design decisions about a server program is regarding its concurrency mechanisms. However, good concurrency models for general-purpose server programs are increasingly difficult to conceive as the runtime conditions are hard to predict. In this work, we advocate that the concurrency code is to be decoupled from server programs. To enable such separation, we propose and evaluate CAL, — the Concurrency Aspect Library. CAL provides uniform concurrency programming abstractions and mediates the intrinsic differences among concurrency models. Through CAL, a server program is not tied to any particular concurrency model and framework. CAL can be configured without modifications to use concurrency frameworks of fundamentally different natures. The concurrency code based on CAL is simpler and looks closer to the design. Leveraging the customizability of CAL, we show that a commercial middleware server, refactored to use CAL, outperforms its original version by as much as 10 times.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Agha, G.: ACTORS: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge (1986)
Buschmann, F., Meunier, R.: A System of Patterns. John Wiley, Chichester (1997)
Castro, M., Liskov, B.: Practical byzantine fault tolerance. In: USENIX OSDI, Berkeley, CA, USA, pp. 173–186. USENIX Association (1999)
Kiczales, G., Lopes, C.V.D.: A Language Framework for Distributed Programming. TR SPL97-010, P9710047 Xerox PARC
Cunha, C.A., Sobral Jo, a.L., Monteiro, M.P.: Reusable aspect-oriented implementations of concurrency patterns and mechanisms. In: AOSD, ACM, New York (2006)
Douence, R., Botlan, D.L., Noyé, J., Südholt, M.: Concurrent aspects. In: GPCE, pp. 79–88. ACM Press, New York (2006)
Hannemann, J., Kiczales, G.: Design Pattern Implementation in Java and AspectJ. In: ACM OOPSLA, pp. 161–173. ACM Press, New York (2002)
Haustein, M., Löhr, K.-P.: JAC: Declarative Java Concurrency. Concurrurrent Computing: Practice & Experience 18(5), 519–546 (2006)
Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs (1985)
Kendall, E.A.: Role model designs and implementations with aspect-oriented programming. In: ACM OOPSLA, pp. 353–369. ACM Press, New York (1999)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–355. Springer, Heidelberg (2001)
Kiczales, G., Lamping, J., Lopes, C.V., Maeda, C., Mendhekar, A., Murphy, G.C.: Open implementation design guidelines. In: IEEE ICSE, pp. 481–490 (1997)
Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Kienzle, J., Guerraoui, R.: AoP – does it make sense? the case of concurrency and failures. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 37–54. Springer, Heidelberg (2002)
Lamport, L.: Proving the correctness of multiprocess programs. IEEE Transaction of Software Engineering 3(2), 125–143 (1977)
Meyer, B.: Design by contract. In: Advances in Object-Oriented Software Engineering, pp. 1–50 (1991)
Parnas, D.L.: On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM 15(12), 1053–1058 (1972)
Schmidt, D., Stal, M., Rohnert, H., Buschmann, F.: Pattern-Oriented Software Architecture Patterns for Concurrent and Networked Objects, 1st edn. Software Design Patterns, vol. 2. John Wiley, Chichester (1999)
Welch, P.H., Brown, N.C., Moores, J., Chalmers, K., Sputh, B.: Integrating and Extending JCSP. In: McEwan, A.A., Ifill, W., Welch, P.H. (eds.) CPA, July 2007, pp. 349–369 (2007)
Welsh, M., Culler, D., Brewer, E.: Seda: an architecture for well-conditioned, scalable internet services. In: ACM SOSP, pp. 230–243. ACM Press, New York (2001)
Welsh, M., Gribble, S.D., Brewer, E.A., Culler, D.: A design framework for highly concurrent systems. UC Berkeley Technical Report UCB/CSD-00-1108
Zhang, C., Jacobsen, H.-A.: Refactoring Middleware with Aspects. IEEE Transactions on Parallel and Distributed Systems 14(11), 1058–1073 (2003)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Zhang, C., Jacobsen, HA. (2008). Externalizing Java Server Concurrency with CAL . In: Vitek, J. (eds) ECOOP 2008 – Object-Oriented Programming. ECOOP 2008. Lecture Notes in Computer Science, vol 5142. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-70592-5_16
Download citation
DOI: https://doi.org/10.1007/978-3-540-70592-5_16
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-70591-8
Online ISBN: 978-3-540-70592-5
eBook Packages: Computer ScienceComputer Science (R0)