Java--Meets Eclipse - An IDE for Teaching Java Following the Object-later Approach

Lorenzo Bettini, Pierluigi Crescenzi


In this paper, we introduce a new Eclipse-based IDE for teaching Java following the object-later approach. In particular, this IDE allows the programmer to write code in Java--, a smaller version of the Java language that does not include object-oriented features. For the implementation of this language we used Xtext, an Eclipse framework for implementing Domain Specific Languages; besides the compiler mechanisms, Xtext also allows to easily implement all the IDE tooling mechanisms in Eclipse. By using Xtext we were able to provide an implementation of Java-- with all the powerful features available when using an IDE like Eclipse (including debugging, automatic building, and project wizards). With our implementation, it is also straightforward to create self-assessment exercises for students, which are integrated in Eclipse and JUnit.


  1. Barnes, D. and K ölling, M. (2011). Objects First with Java: A Practical Introduction Using BlueJ, 5/E. Prentice Hall.
  2. Beck, K. (2003). Test Driven Development: By Example. Addison-Wesley.
  3. Benz, S. and Engelmann, B. (2014). Jnario, Executable Specifications for Java.
  4. Bettini, L. (2013). Implementing Domain-Specific Languages with Xtext and Xtend. Packt Publishing.
  5. Bettini, L., Crescenzi, P., Innocenti, G., Loreti, M., and Cecchi, L. (2004). An Environment for Self-Assessing Java Programming Skills in Undergraduate First Programming Courses. In Proceedings of the IEEE International Conference on Advanced Learning Technologies, pages 161-165.
  6. Bettini, L. and Damiani, F. (2014). Generic Traits for the Java Platform. In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools, pages 5-16. ACM. C. (2014). Sirius + Xtext: Love.
  8. Cecchi, L., Crescenzi, P., and Innocenti, G. (2003). C : C++ = JavaMM: Java. In Proceedings of the 2nd International Conference on Principles and Practice of Programming in Java, pages 75-78.
  9. Charles, P., Fuhrer, R., Sutton Jr., S., Duesterwald, E., and Vinju, J. (2009). Accelerating the creation of customized, language-Specific IDEs in Eclipse. In OOPSLA, pages 191-206. ACM.
  10. Crescenzi, P. (2015). Gocce di Java. Un'introduzione alla programmazione procedurale ed orientata agli oggetti (nuova edizione). Franco Angeli Edizioni.
  11. Crescenzi, P., Loreti, M., and Pugliese, R. (2006). Assessing CS1 Java skills: A three-year experience. SIGCSE Bull., 38(3):348.
  12. Dann, W. P., Cooper, S., and Pausch, R. (2011). Learning to Program with Alice. Prentice Hall.
  13. Diehl, S. (2003). The java old-style diehl/JOSH/.
  14. Efftinge, S., Eysholdt, M., Köhnlein, J., Zarnekow, S., von Massow, R., Hasselbring, W., and Hanus, M. (2012). Xbase: Implementing Domain-Specific Languages for Java. In GPCE, pages 112-121. ACM.
  15. Eysholdt, M. (2014). Xpect.
  16. Eysholdt, M. and Behrens, H. (2010). Xtext: implement your language faster than the quick and dirty way. In SPLASH/OOPSLA Companion, pages 307-309.
  17. Farooq, M. S., Khan, S. A., Ahmad, F., Islam, S., and Abid, A. (2014). An evaluation framework and comparative analysis of the widely used first programming languages. PLoS ONE, 9(2):e88941.
  18. Gibbons, J. (1998). Structured programming in Java. ACM SIGPLAN Notices, 33(4):40-43.
  19. Goldberg, A. (1984). Smalltalk-80: The Interactive Programming Environment. Addison-Wesley.
  20. Gronback, R. (2009). Eclipse Modeling Project: A DomainSpecific Language (DSL) Toolkit. Addison-Wesley.
  21. Guo, P. (2014). Python is now the most popular introductory teaching language at top u.s. universities. python-is-now-the-most-popular-introductoryteaching-language-at-top-us-universities/fulltext.
  22. Heidenreich, F., Johannes, J., Karol, S., Seifert, M., and Wende, C. (2009). Derivation and Refinement of Textual Syntax for Models. In ECMDA-FA, volume 5562 of LNCS, pages 114-129. Springer.
  23. Itemis (2015). Xtext.
  24. Jouault, F., Bézivin, J., and Kurtev, I. (2006). TCS: a DSL for the specification of textual concrete syntaxes in model engineering. In GPCE, pages 249-254. ACM.
  25. Kats, L. C. L. and Visser, E. (2010). The Spoofax language workbench. Rules for declarative specification of languages and IDEs. In OOPSLA, pages 444-463.
  26. Kelleher, C. and Pausch, R. (2005). Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. ACM Comput. Surv., 37(2):83-137.
  27. Koehnlein, J. (2014). Graphical Views for Xtext. eclipse newsletter/2014/august/article4.php.
  28. Koulouri, T., Lauria, S., and Macredie, R. D. (2014). Teaching introductory programming: A quantitative evaluation of different approaches. ACM Trans. Comp. Educ., 14(4):Article 26.
  29. Leping, V., Lepp, M., Niitsoo, M., To˜nisson, E., Vene, V., and Villems, A. (2009). Python prevails. In Proceedings of the International Conference on Computer Systems and Technologies and Workshop for PhD Students in Computing, pages 87:1-87:5.
  30. Levy, R. B.-B., Ben-Ari, M., and Uronen, P. A. (2003). The Jeliot 2000 program animation system. Computers & Education, 40(1):1-15.
  31. Lewis, J. (2000). Myths about object-orientation and its pedagogy. SIGCSE Bull., 32(1):245-249.
  32. MacDonald, B. (2014). To IDE or not to IDE?
  33. Martin, R. C. (2003). Agile Software Development: Principles, Patterns, and Practices. Prentice Hall.
  34. Mason, R. and Cooper, G. (2014). Introductory Programming Courses in Australia and New Zealand in 2013 - Trends and Reasons. In Proceedings of the Sixteenth Australasian Computing Education Conference - Volume 148, pages 139-147.
  35. Nisen, M. (2014). These programming skills will earn you the most money.
  36. Parlante, N. (2011). Codingbat code practice.
  37. Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., Devlin, M., and Paterson, J. (2007). A survey of literature on the teaching of introductory programming. In Working Group Reports on ITiCSE on Innovation and Technology in Computer Science Education, pages 204-223.
  38. Pfeiffer, M. and Pichler, J. (2008). A comparison of tool support for textual domain-specific languages. In Proc. DSM, pages 1-7.
  39. Reas, C. and Fry, B. (2014). Processing: A Programming Handbook for Visual Designers. MIT Press, 2nd edition.
  40. Steinberg, D., Budinsky, F., Paternostro, M., and Merks, E. (2008). EMF: Eclipse Modeling Framework. Addison-Wesley, 2nd edition.
  41. Voelter, M. (2011). Language and IDE Modularization and Composition with MPS. In GTTSE, volume 7680 of LNCS, pages 383-430. Springer.
  42. Westfall, R. (2001). Technical opinion: Hello, world considered harmful. Commun. ACM, 44(10):129-130.

Paper Citation

in Harvard Style

Bettini L. and Crescenzi P. (2015). Java--Meets Eclipse - An IDE for Teaching Java Following the Object-later Approach . In Proceedings of the 10th International Conference on Software Paradigm Trends - Volume 1: ICSOFT-PT, (ICSOFT 2015) ISBN 978-989-758-115-1, pages 31-42. DOI: 10.5220/0005512600310042

in Bibtex Style

author={Lorenzo Bettini and Pierluigi Crescenzi},
title={Java--Meets Eclipse - An IDE for Teaching Java Following the Object-later Approach},
booktitle={Proceedings of the 10th International Conference on Software Paradigm Trends - Volume 1: ICSOFT-PT, (ICSOFT 2015)},

in EndNote Style

JO - Proceedings of the 10th International Conference on Software Paradigm Trends - Volume 1: ICSOFT-PT, (ICSOFT 2015)
TI - Java--Meets Eclipse - An IDE for Teaching Java Following the Object-later Approach
SN - 978-989-758-115-1
AU - Bettini L.
AU - Crescenzi P.
PY - 2015
SP - 31
EP - 42
DO - 10.5220/0005512600310042