LANGUAGE-NEUTRAL SUPPORT OF DYNAMIC INHERITANCE

Jose Manuel Redondo, Francisco Ortin, J. Baltasar Garcia Perez-Schofield

Abstract

Virtual machines have been successfully applied in diverse scenarios to obtain several benefits. Application interoperability and distribution, code portability, and improving the runtime performance of programs are examples of these benefits. Techniques like JIT compilation have improved virtual machine runtime performance, becoming an adequate alternative to develop different types of software products. We have extended a production JIT-based virtual machine so they offer low-level support for structural reflection, in order to obtain the aforementioned advantages in dynamic languages implementation. As various dynamic languages offer support for dynamic inheritance, the next step in our research work is to enable this support in the aforementioned JIT-based virtual machine. Our approach enables dynamic inheritance in a language-neutral way, supporting both static and dynamic languages, so no language specification have to be modified to enable these features. It also enables static and dynamic languages to interoperate, since both types are now low-level supported by our machine.

References

  1. Borning, A. H. (1986). Classes versus prototypes in objectoriented languages. In ACM/IEEE Fall Joint Computer Conference, pages 36-40.
  2. Bracha, G. and Griswold, D. (1993). Strongtalk: Typechecking Smalltalk in a production environment. In OOPSLA 93, ACM SIGPLAN Notices, volume 28, pages 215-230.
  3. Cazzola, W., Chiba, S., and Saake, G. (2004). Evolvable pattern implementations need generic aspects. In ECOOP'04 Workshop on Reflection, AOP, and MetaData for Software Evolution, pages 111-126.
  4. Chambers, C. and Ungar, D. (1989). Customization: Optimizing compiler technology for Self, a dynamicallytyped object-oriented programming language. In ACM PLDI Conference.
  5. Chiles, B. (2008). CLR inside out: IronPython and the Dynamic Lang. Runtime. http://msdn2.microsoft.com /en-us/magazine/cc163344.aspx.
  6. CodeHaus (2008). Boo. a wrist friendly language for the CLI. http://boo.codehaus.org/.
  7. Cutsem, T. V., Mostinckx, S., Boix, E. G., Dedecker, J., and Meuter, W. D. (2007). AmbientTalk: Objectoriented event-driven programming in mobile ad hoc networks. In XXVI International Conference of the Chilean Computer Science Society, SCCC 2007.
  8. Diehl, S., Hartel, P., and Sestoft, P. (2000). Abstract machines for programming language implementation. In Future Generation Computer Systems, page 739.
  9. Ernst, E. (1999). Dynamic inheritance in a statically typed language. Nordic Journal of Computing, 6(1):72-92.
  10. Golm, M. and Kleinder, J. (1997). MetaJava - a platform for adaptable operating system mechanisms. In LNCS 1357, page 507.
  11. Grogan, M. (2008). JSR 223. scripting for the Java platform. http://www.jcp.org/en/jsr/detail?id=223.
  12. Kleinder, J. and Golm, G. (1996). MetaJava: An efficient run-time meta architecture for Java. In International Workshop on Object Orientation in Operating Systems, pages 420-427.
  13. Lucas, C., Mens, K., and Steyaert, P. (1995). Typing dynamic inheritance: A trade-off between substitutability and extensibility. Technical Report vub-prog-tr-95- 03, Vrije Universiteit Brussel.
  14. Maes, P. (1987). Computational Reflection. PhD thesis, Vrije Universiteit.
  15. Meijer, E. and Drayton, P. (2004). Static typing where possible, dynamic typing when needed: The end of the cold war between programming languages. In OOPSLA Workshop on Revival of Dynamic Languages.
  16. Meijer, E. and Gough, J. (2000). Technical overview of the CLR. Technical report, Microsoft.
  17. MetaSlash (2008). PyChecker: a Python source code checking tool. http://pychecker.sourceforge.net/.
  18. Nierstrasz, O., Bergel, A., Denker, M., Ducasse, S., Gaelli, M., and Wuyts, R. (2005). On the revival of dynamic languages. In Software Composition 2005, LNCS.
  19. OpenJDK (2008). The Da Vinci machine. http://openjdk. java.net/projects/mlvm/.
  20. Ortin, F. (2008). The StaDyn programming language. http://www.reflection.uniovi.es/stadyn/.
  21. Ortin, F. and Cueva, J. M. (2004). Dynamic adaptation of application aspects. In Journal of Systems and Software. Elsevier.
  22. Ortin, F., Lopez, B., and Perez-Schofield, J. B. (2004). Separating adaptable persistence attributes through computational reflection. In IEEE Soft., Vol. 21, Issue 6.
  23. Ortin, F., Redondo, J. M., Vinuesa, L., and Cueva, J. M. (2005). Adding structural reflection to the SSCLI. In Journal of .Net Technologies, pages 151-162.
  24. Pierce, B. P. (2002). Types and Programming Languages. The MIT Press.
  25. Project, T. (2008). The Tunes project. http://slate.tunes.org/.
  26. Redondo, J. M., Ortin, F., and Cueva, J. M. (2006a). Disen˜o de primitivas de reflexión estructural eficientes integradas en SSCLI. In Proceedings of the JISBD 06.
  27. Redondo, J. M., Ortin, F., and Cueva, J. M. (2006b). Optimización de las primitivas de reflexión ofrecidas por los lenguajes dinámicos. In Proceedings of the PROLE 06, pages 53-64.
  28. Redondo, J. M., Ortin, F., and Cueva, J. M. (2008). Optimizing reflective primitives of dynamic languages. In Int. Journal of Soft. Engineering and Knowledge Engineering. World Scientific.
  29. Rose, J. (2008). JSR 292. supporting dynamically typed languages on the Java platform. http://www.jcp.org/ en/jsr/detail?id=292.
  30. Rossum, G. V. and Drake, F. L. (2003). The Python Language Reference Manual. Network Theory.
  31. Singer, J. (2003). JVM versus CLR: a comparative study. In ACM Proceedings of the 2nd international conference on principles and practice of programming in Java.
  32. Stutz, D., Neward, T., and Shilling, G. (2003). Shared Source CLI Essentials. O'Reilly.
  33. Taivalsaari, A. (1992). Kevo: A prototype-based OO language based on concatenation and module operations. Technical report, U. of Victoria, British Columbia.
  34. Thomas, D., Fowler, C., and Hunt, A. (2004). Programming Ruby. Addison-Wesley Professional, 2nd edition.
  35. Thomas, D., Hansson, D. H., Schwarz, A., Fuchs, T., Breed, L., and Clark, M. (2005). Agile Web Development with Rails. A Pragmatic Guide. Pragmatic Bookshelf.
  36. Udell, J. (2003). D. languages and v. machines. Infoworld.
  37. Ungar, D., Chambers, G., Chang, B. W., and Holzl, U. (1991). Organizing programs without classes. In Lisp and Symbolic Computation.
  38. Wolczko, M., Agesen, O., and Ungar, D. (1996). Towards a universal implementation substrate for object-oriented languages. Sun Microsystems Laboratories.
Download


Paper Citation


in Harvard Style

Manuel Redondo J., Ortin F. and Baltasar Garcia Perez-Schofield J. (2008). LANGUAGE-NEUTRAL SUPPORT OF DYNAMIC INHERITANCE . In Proceedings of the Third International Conference on Software and Data Technologies - Volume 1: ICSOFT, ISBN 978-989-8111-51-7, pages 5-12. DOI: 10.5220/0001870400050012


in Bibtex Style

@conference{icsoft08,
author={Jose Manuel Redondo and Francisco Ortin and J. Baltasar Garcia Perez-Schofield},
title={LANGUAGE-NEUTRAL SUPPORT OF DYNAMIC INHERITANCE},
booktitle={Proceedings of the Third International Conference on Software and Data Technologies - Volume 1: ICSOFT,},
year={2008},
pages={5-12},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0001870400050012},
isbn={978-989-8111-51-7},
}


in EndNote Style

TY - CONF
JO - Proceedings of the Third International Conference on Software and Data Technologies - Volume 1: ICSOFT,
TI - LANGUAGE-NEUTRAL SUPPORT OF DYNAMIC INHERITANCE
SN - 978-989-8111-51-7
AU - Manuel Redondo J.
AU - Ortin F.
AU - Baltasar Garcia Perez-Schofield J.
PY - 2008
SP - 5
EP - 12
DO - 10.5220/0001870400050012